我正在与地区和我有一个问题处理在PHP的现代标准阿拉伯语。
当我执行print_r(ResourceBundle::getLocales(''))时,我会得到以下列表http://pastebin.com/raw/qhBawQ5C
我可以在列表中看到区域设置ar,所以我假设它在我的机器上可用。
现在,当我运行echo Locale::getRegion('ar');时,我得到一个空值。但是当我运行echo Locale::getRegion('ar_BH');时,我得到的是BH。
为什么会这样?我如何才能使ar语言环境正常工作?
提前感谢
发布于 2016-02-12 23:29:37
两者都是用php.net编写的。仔细读一下就行了。
如果参数为missing.
getLocales将返回ResourceBundle类支持的所有区域设置(在ICU库中,通过intl扩展);如果参数为getRegion,则返回区域设置的区域子标记;如果不存在,则返回NULL。因此,如果您将ar_BH作为此函数的参数编写,则会得到BH。在php.net上是用不同的例子写的例子,但它是相同的。
Locale::getRegion('de-CH-1901');
output: CH
Locale::getRegion('ar_BH');
output: BH如果设置了ar,则getRegion()不返回任何内容,这是因为它在参数中看不到任何region子标记-因为所有本地化代码都是由两个(或者像第一个示例所说的可能是三个)部分组装而成的。
如果这些部分严格地给出了顺序,那么如果只设置了ar,它就不能显示任何区域。但为了给你更准确的答案,我应该知道它(ICU库)是如何编写的。
但我给你做了个小测试。
我的母语的本地化代码是cs_CZ。
Locale::getRegion(`cs_CZ`);
output: CZ
Locale::getRegion(`cs`);
output: /* nothing */
Locale::getRegion(`CZ_cs`);
output: cs现在,为您编写代码
Locale::getRegion(`BH_ar`);
output: arhttps://stackoverflow.com/questions/35362619
复制相似问题