2013-05-04 74 views
1

我想將網頁翻譯成多種語言。但是,我只能讓西班牙語的gettext工作。在php項目中使用gettext - 只有一種語言翻譯

我使用這個代碼:

$lang = "de_DE"; 
if (isset($_GET['lang'])) $lang = $_GET['lang']; 
putenv("LC_ALL=$lang"); 
setlocale(LC_ALL, $lang); 
bindtextdomain("messages", "locale"); 
bind_textdomain_codeset('messages', 'UTF-8'); 
textdomain("messages"); 

如果我設置$ LANG =「es_ES」琴絃翻譯成西班牙語,但如果我設置$ LANG =「de_DE這個」翻譯不工作,我只看到默認的英文版本。

我認爲這可能是關於我的電腦語言環境(我用西班牙語Windows)。我正在使用Windows(使用Wamp本地主機),我不知道是否必須安裝更多的東西,如果是的話,如何去做。

如果我必須這樣做,它會在我的在線託管中工作,而不安裝任何東西嗎?

謝謝! :)

回答

1

的setlocale()具有一個PHP的官方文檔本身中提到的Windows中的問題:

區域設置信息每個進程維持,而不是每個線程。如果 正在Windows上的多線程服務器API(如IIS或Apache )上運行PHP,則在運行腳本的 腳本運行時,雖然腳本本身從未稱爲 setlocale(),但您可能會遇到區域設置突然更改。發生這種情況是由於其他腳本同時在同一進程的不同 線程中運行,並使用setlocale()更改了進程範圍的語言環境。

Windows用戶將在 微軟的MSDN網站上找到有關區域設置字符串的有用信息。支持的語言字符串可在 »language strings documentation和支持的國家/地區 字符串中找到»country/region strings documentation

主要是你需要實現的是許多PHP函數都是* ix OS程序API的封裝。所以他們會在Linux和其他兼容的操作系統中運行良好 - 在Windows中不太好。