在PHP中使用现代标准阿拉伯语语言环境

时间:2016-02-12 12:25:00

标签: php localization

我正在使用语言环境,我在PHP中处理现代标准阿拉伯语时遇到了问题。

当我执行print_r(ResourceBundle::getLocales(''))时,我会收到以下列表http://pastebin.com/raw/qhBawQ5C

我可以在列表中看到区域设置ar,因此我假设它在我的计算机上可用。

现在,当我运行echo Locale::getRegion('ar');时,我得到一个空值。但是当我运行echo Locale::getRegion('ar_BH');时,我得到BH

为什么这样以及如何使ar语言环境有效?

提前致谢

1 个答案:

答案 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