我看到大多数例子都使用了类似的东西:
putenv('LC_ALL=de_DE');
setlocale(LC_ALL, 'de_DE');
bindtextdomain("myPHPApp", "./locale");
echo gettext("Welcome to My PHP Application");
如果我只想完成消息翻译,我已经尝试过只需要putenv
,而且我不需要setlocale
提供的功能,例如时间,MONETARY等。
那么,忽略setlocale
?
答案 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"。