2012-07-16 124 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