由于我在深入研究 libicu 源代码后花了 4 个多小时才找到这个方法,我认为在这里发布它是个好主意。要访问除默认“locale”数据之外的其他数据(可以通过将 NULL 作为 $bundlename 传递来获取),可以使用以下一些神奇的字符串来获取其他资源包
ICUDATA-curr
ICUDATA-lang
ICUDATA-region
ICUDATA-zone
(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL intl >= 2.0.0)
ResourceBundle::create -- resourcebundle_create -- ResourceBundle::__construct — 创建资源包
面向对象风格 (方法)
$locale
, ?string $bundle
, bool $fallback
= true
): ?ResourceBundle过程式风格
面向对象风格 (构造函数)
创建资源包。
locale
应加载资源的区域设置 (区域设置名称,例如 en_CA)。
bundle
存储数据的目录或 .dat 文件的名称。
fallback
区域设置是否应该完全匹配,或者是否允许回退到父区域设置。
返回 ResourceBundle 对象或在错误时返回 null
。
示例 #1 resourcebundle_create() 示例
<?php
$r = resourcebundle_create( 'es', "/usr/share/data/myapp");
echo $r['teststring'];
?>
示例 #2 ResourceBundle::create() 示例
<?php
$r = ResourceBundle::create( 'es', "/usr/share/data/myapp");
echo $r['teststring'];
?>
以上示例将输出
¡Hola, mundo!
由于我在深入研究 libicu 源代码后花了 4 个多小时才找到这个方法,我认为在这里发布它是个好主意。要访问除默认“locale”数据之外的其他数据(可以通过将 NULL 作为 $bundlename 传递来获取),可以使用以下一些神奇的字符串来获取其他资源包
ICUDATA-curr
ICUDATA-lang
ICUDATA-region
ICUDATA-zone
根据您要加载的数据,您可能需要将 'root' 或其他内容作为 $locale 传递。
以下是示例列表以及相应的加载文件链接
ResourceBundle::create('de', 'ICUDATA-brkitr', false)
https://github.com/unicode-org/icu/blob/release-65-1/icu4c/source/data/brkitr/de.txt
ResourceBundle::create('root', 'ICUDATA-curr', false)
https://github.com/unicode-org/icu/blob/release-65-1/icu4c/source/data/curr/root.txt
ResourceBundle::create('root', 'ICUDATA-translit', false)
https://github.com/unicode-org/icu/blob/release-65-1/icu4c/source/data/translit/root.txt
ResourceBundle::create('likelySubtags', 'ICUDATA', false)
https://github.com/unicode-org/icu/blob/release-65-1/icu4c/source/data/misc/likelySubtags.txt