鉴于我有一个目录/locales
,其文件root.res
和es.res
已经从文本文件中生成(使用genrb
),如下所示:
档案:root.txt
root:table {
test:string { "My test text" }
}
档案:es.txt
es:table {
test:string { "Mi texto de prueba" }
}
当我运行以下代码时:
<?php
$bundleName = 'locale';
$resourceBundle = new ResourceBundle('es', $bundleName);
echo join("\n", $resourceBundle->getLocales($bundleName));
我应该看到:
es
root
然而,代码产生:
Warning: join(): Invalid arguments passed...
这是因为$resourceBundle ->getLocales($bundleName)
返回bool(false)
,但运行以下代码用于区域设置 es :
<?php
$bundleName = 'locale';
$resourceBundle = new ResourceBundle('es', $bundleName);
echo ($resourceBundle->get('test') . "\n");
正确输出:
Mi texto de prueba
运行locale root :
<?php
$bundleName = 'locale';
$resourceBundle = new ResourceBundle('root', $bundleName);
echo ($resourceBundle->get('test') . "\n");
正确输出:
My test text
要使getLocales()
有效,我需要做些什么?
答案 0 :(得分:0)
因此,像往常一样,PHP手册对此并不清楚。但是,ICU Web site是:
资源包是一组提供从键到值的映射的对。给定的程序可以有不同的资源包集合;一组用于错误消息,一组用于菜单,等等。但是,可以组织程序以将其所有资源包组合成单个相关集。
该组被组织成一个树,其中包含&#34; root&#34;在顶部,第一级语言,第二级国家,以及低于这些级别的其他变体。该集必须包含一个根,该根具有访问资源包的程序可以使用的所有密钥。
我会在测试时返回更新。