ResourceBundle 类

(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL intl >= 2.0.0)

简介

本地化软件产品通常需要根据当前区域设置进行定制的数据集,例如:消息、标签、格式化模式。ICU 资源机制允许定义应用程序可以在区域设置基础上加载的一组资源,同时以统一的区域设置无关的方式访问它们。

此类实现对 ICU 资源数据文件的访问。这些文件是 ICU 用来存储本地化数据的二进制数据数组。

ICU 资源包可以包含简单资源和复杂资源。复杂资源是容器,可以是整数索引的或字符串索引的(就像 PHP 数组一样)。简单资源可以是以下类型:字符串、整数、二进制数据字段或整数数组。

ResourceBundle 支持通过数组访问模式直接访问数据,并通过 foreach 进行迭代,以及通过类方法进行访问。结果将是简单资源的 PHP 值,以及复杂资源的 ResourceBundle 对象。所有资源都是只读的。

类概要

class ResourceBundle implements IteratorAggregate, Countable {
/* 方法 */
public __construct(?string $locale, ?string $bundle, bool $fallback = true)
public count(): int
public static create(?string $locale, ?string $bundle, bool $fallback = true): ?ResourceBundle
public get(string|int $index, bool $fallback = true): mixed
public getErrorCode(): int
public static getLocales(string $bundle): array|false
}

变更日志

版本 描述
8.0.0 ResourceBundle 现在实现 IteratorAggregate。以前,实现了 Traversable
7.4.0 ResourceBundle 现在实现 Countable

目录

添加笔记

用户贡献的笔记 1 笔记

2
maiseralves at gmail dot com
13 年前
<?php
/*
* 资源包文件结构
* 文件 root.txt
* root:table {
* usage:string { "Usage: genrb [Options] files" }
* version:int { 122 }
* errorcodes:array {
* :string { "Invalid argument" }
* :string { "File not found" }
* }
* }
* 使用:$genrb root.txt 生成资源包文件 (root.res)
*/

// 递归函数,使用 ResourceBundle 对象 ( ) 引用列出资源包文件结构
function t($rb) {
foreach(
$rb as $k => $v) {
if(
is_object($v)) {
print_r($v);
var_dump($k);
t($v);
} else {
var_dump($k . " " . $v);
}
}
}
// 从 locale 文件夹打开 root.res
$rb = new ResourceBundle('root', "./locale");

t($rb);// 调用函数

/* root 表的输出如下:
* |- string(34) "usage Usage: genrb [Options] files"
* |- string(11) "version 122"
* |- ResourceBundle 对象 ( ) string(10) "errorcodes"
* |- string(18) "0 Invalid argument"
* |- string(16) "1 File not found"
*/
?>
To Top