2012-09-30 93 views
1

這是我的./locale/fr/LC_MESSAGES/messages.po文件:PHP Gettext的不工作

msgid "NO GOOD" 
msgstr "IT WORKED!" 

命令用於生成的.mo文件:

$ msgfmt -o locale/fr/LC_MESSAGES/messages.mo locale/fr/LC_MESSAGES/messages.po 

我的PHP文件(通過CLI中運行,用於測試目的,如根)。

<?php 
    bindtextdomain('messages','./locale'); 
    textdomain('messages'); 
    setlocale(LC_MESSAGES, 'fr'); 
    echo gettext("NO GOOD"); 

這裏是我的輸出:

$ NO GOOD 

PHPINFO:

GetText Support => enabled 

任何想法,爲什麼這可能無法正常工作?

+0

提示使用gettext時,總是檢查函數的返回值。 –

回答

8

原因是它不工作是我選擇的區域必須是系統認可的區域。

在我而言,fr是不是一個有效的語言環境,我不得不選擇fr_FR.UTF-8該系統識別...

+3

僅供參考,如果您指定的語言環境未被識別,'setlocale()'函數將返回'false'。 '返回新的當前語言環境,如果語言環境功能未在您的平臺上實現,則指定的語言環境不存在或類別名稱無效,則返回FALSE。 – Gavin

1
  1. 確保語言支持
  2. 安裝gettext和在php.ini中啓用寶
  3. 檢查正確的格式(它應該有頭)
  4. 確保mbstring.internalcoding設置爲UTF-8()取消註釋在php.ini UTF8)
  5. RESTAR t php和web服務器