Setlocale返回false(WAMP)

时间:2012-07-16 11:38:46

标签: php localization gettext setlocale

我在我的项目中工作本地化。工作意味着我的项目被翻译成我在locale/sk文件夹中的任何语言,sk,因为斯洛伐克语是我的默认系统语言。

设置为任何其他语言不起作用。我尝试过$lang = 'cs''cz''en''en_UK''en_UK.utf8'等。但是,只有'sk'文件夹中的翻译仍然被setlocale()函数返回false。我试图在浏览器中更改默认语言 - 没有效果。

这是我的代码:

putenv("LANG=$lang"); 
setlocale(LC_ALL, $lang); 
bindtextdomain("messages", realpath("../localem")); 
textdomain("messages");
...
_("Welcome!")

我也试过这些:

putenv("LANGUAGE=$lang"); 
putenv('LC_ALL=$lang');

欢迎任何建议。

编辑:

$loc = array('nor');
if (setlocale(LC_ALL, $loc)==false) print ' false'; else print setlocale(LC_ALL, $loc);

'nor'打印Norwegian (Bokmĺl)_Norway.1252'rus'俄语,但'svk'打印错误,'cze'也打印错误。

在列表中提到所有这些:

http://msdn.microsoft.com/en-us/library/cdax410z%28v=vs.80%29.aspx

1 个答案:

答案 0 :(得分:1)

Windows使用其他格式设置区域设置,请参阅MSDN: List of Country/Region Strings

您可以通过发送数组来向loclocale发送语言环境列表,例如获取挪威月份名称和时间格式:

setlocale(LC_TIME, array('nb_NO.UTF-8', 'no_NO.UTF-8', 'nor'));

然而,Windows可能会返回UTF-8以外的其他编码字符串,因此您可能需要手动处理(从cpXXXX转换为UTF-8)。