2014-06-10 48 views
0

鉴于我有一个目录/locales与文件root.reses.res,已经产生(使用genrb)从文本文件内容如下:如何使用ResourceBundle :: getLocales()?

文件: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 

而对于区域运行:

<?php 
$bundleName = 'locale'; 
$resourceBundle = new ResourceBundle('root', $bundleName); 
echo ($resourceBundle->get('test') . "\n"); 

正确输出:

My test text 

什么我需要做的,使getLocales()工作?

回答

0

所以,像往常一样,PHP手册并不清楚这一点。但是,ICU Web site是:

资源束是一组对,提供从键到值的映射。一个给定的程序可以有不同的资源包集合;一个设置为错误消息,一个设置为菜单,等等。但是,该程序可以组织成将其所有资源包合并为一个相关集合。

该集合被组织成一棵树,顶部有“root”,第一级是语言,第二级是国家,还有这些级别以下的其他变体。该集合必须包含一个具有访问资源包的程序可以使用的所有密钥的根。

我会在测试时返回一个更新。