我正在使用语言环境,我在PHP中处理现代标准阿拉伯语时遇到了问题。
当我执行print_r(ResourceBundle::getLocales(''))
时,我会收到以下列表http://pastebin.com/raw/qhBawQ5C
我可以在列表中看到区域设置ar
,因此我假设它在我的计算机上可用。
现在,当我运行echo Locale::getRegion('ar');
时,我得到一个空值。但是当我运行echo Locale::getRegion('ar_BH');
时,我得到BH
。
为什么这样以及如何使ar语言环境有效?
提前致谢
答案 0 :(得分:1)
两者都写在php.net上。请仔细阅读。
函数getLocales
返回类ResourceBundle
支持的所有语言环境(在ICU库中可用,通过intl扩展名),如果缺少参数。
功能getRegion
会为区域设置返回区域子标签,如果不存在,则返回NULL
。如果你写ar_BH
作为这个函数的参数,你就得到BH。
在php.net上用不同的例子编写了例子,但它是一样的。
Locale::getRegion('de-CH-1901');
output: CH
Locale::getRegion('ar_BH');
output: BH
getRegion()
如果设置了ar
则没有返回任何内容,那么这是因为它在参数中没有看到任何区域子标签 - 因为所有本地化代码都是从两个(或可能是三个,如第一个例子所说)部分。
如果这些部分严格按顺序排列,如果只设置ar
,则无法显示任何区域。但为了给你更精确的回答,我应该知道它是如何编写的(ICU库)。
Buit我做了一些小测试。
我的母语的本地化代码是cs_CZ
。
Locale::getRegion(`cs_CZ`);
output: CZ
Locale::getRegion(`cs`);
output: /* nothing */
Locale::getRegion(`CZ_cs`);
output: cs
现在,代码为您
Locale::getRegion(`BH_ar`);
output: ar