PHP gettext() - putenv和setlocale

时间:2014-06-16 16:08:17

标签: php localization internationalization locale gettext

我看到大多数例子都使用了类似的东西:

putenv('LC_ALL=de_DE');
setlocale(LC_ALL, 'de_DE');

bindtextdomain("myPHPApp", "./locale");
echo gettext("Welcome to My PHP Application");

如果我只想完成消息翻译,我已经尝试过只需要putenv,而且我不需要setlocale提供的功能,例如时间,MONETARY等。

那么,忽略setlocale

是安全的

2 个答案:

答案 0 :(得分:2)

不需要。

你当然可以像其他答案所建议的那样做setlocale(LC_ALL, '');,但这只会让它回到上面一行putenv设置的环境变量。

实际上删除的是putenv电话。至少对我来说,以下片段仍然会返回德语翻译:

putenv('LC_ALL=en_US');
setlocale(LC_ALL, 'de_DE');

bindtextdomain("myPHPApp", "./locale");
echo gettext("Welcome to My PHP Application");

您可以使用setlocale的另一个好处是检查系统中是否实际安装了给定的区域设置。 E.g:

if (false === setlocale(LC_ALL, $localeCode)) {
    throw new LocaleNotSupportedException(sprintf('Locale "%s" is not installed in the system.', $localeCode));
}

echo gettext("Welcome to My PHP Application");

并且在绑定域之前也不需要设置区域设置。您也可以随时进行。

答案 1 :(得分:0)

看起来你不安全就可以安全。

  

如果locale为NULL或空字符串"",则将设置区域设置名称   来自环境变量的值与   以上类别,或来自" LANG"。

信息:http://us2.php.net//manual/en/function.setlocale.php