2012-07-16 36 views
1

我在我的项目中有工作本地化。工作意味着我的项目被翻译成locale/sk文件夹中的任何语言,sk为slovak作为我的默认系统语言。Setlocale返回false(WAMP)

设置为其他语言不起作用。我试过$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'输出false也是如此'cze'

在列表中的所有这些都提到:

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

回答

1

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

您可以将语言环境通过在阵列发送到setLocale的,如获得挪威月份名称和时间格式的列表:

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

Windows可能会然而,在另一种编码返回字符串不是UTF-8,所以你可能想要手动处理(从cpXXXX转换为UTF-8)。

+0

感谢您的反馈。我编辑我的问题,报告进度(仍然无法弄清楚,现在我开始感到困惑) – 2012-07-16 13:15:22

+0

也,甚至认为我不会得到错误,没有文件夹中的翻译“否”,“也”,或者'no_NO'被采用,但仍然是'sk'文件夹中的一个。 – 2012-07-16 13:21:10

+0

如果没有粘贴这些信息,也无法说出寻找翻译的逻辑是什么。对于我们所知道的,可能甚至不依赖于setlocale的值。 – MatsLindh 2012-07-16 13:22:19