2015-08-03 63 views
1

我嘗試在我的應用程序中使用「gettext」,但沒有成功。gettext不起作用

這裏是我的文件,我初始化出頭:

//methode gettext 
switch (Input::get('langue')) { 
    case 'fr_FR': $boo_retour_putenv = putenv("LANG=fr_FR"); 
    break; 

    case 'en_GB': $boo_retour_putenv = putenv("LANG=en_GB"); 
    break; 

    case 'de_DE': $boo_retour_putenv = putenv("LANG=de_DE"); 
    break; 
} 
// comment s'appelle le fichier contenant les traductions ? 
$stg_retour_textdomain = textdomain("messages"); 

// où se trouve le fichier contenant les traductions ? 
$stg_retour_bindtextdomain = bindtextdomain("messages", app_path().DIRECTORY_SEPARATOR."lang"); 

// préciser ici que le fichier des traductions est en codage UTF-8 
$stg_retour_bind_textdomain_codeset = bind_textdomain_codeset("messages", "UTF-8"); 

此腳本後,一切似乎OK進入瓦爾。

我有這個目錄的翻譯:

enter image description here

到這些信息的文件,我可以看到正確的翻譯。但是當我嘗試一個:

<?php echo gettext('something') ?> 

它沒有被翻譯。

我不能遠離解決方案,但我將不勝感激任何幫助。

注: 它使用LARAVEL 4.2 我使用poEdit的構建messages.mo

感謝

多米尼克

回答

0

嘗試textdomainbindtextdomain電話後setlocale設置地方:

$locale = 'fr_FR'; 
setlocale(LC_ALL, "$locale.utf8"); 
setlocale(LC_NUMERIC, "en_US.utf8"); // for sprintf() etc. 

這是非常重要的th在選定的語言環境中出現在系統上,名稱與您傳遞給setlocale的字符串完全相同。對於上述示例,這意味着fr_FR.utf8區域設置必須存在。您可以檢查哪些語言環境可用於

locale -a 

在命令行上。

+0

locale -a是什麼意思?它是一個DOS CMD嗎?一個PHP CMD?如何使用它 ?謝謝。 Dom – Dom

+0

這是一個shell命令。在Unix或Linux機器上,您將打開終端或SSH連接並輸入命令。 – lxg

+0

如果你在Windows上,'setlocale'和gettext一般都是「越野車」......閱讀php.net/manual/function.setlocale.php上的警告。長話短說,區域設置可以隨機切換。所以,當你想使用gettext時,最好使用Linux服務器(或VM)。 – lxg