2012-08-15 48 views
6

我目前正在開發一個PHP網頁應用程序,需要提供法語和英語。我環顧四周,發現Gettext()功能提供了最佳性能。使用Gettext()的PHP web應用程序國際化;

我產生我.POT文件,命令

xgettext PhpFileToTranslate.php -o NameOfTemplateFile.pot 

和successfuly產生.POT文件。 我曾經向PoEdit軟件生成messages.po文件和messages.mo創建

這裏是我的服務器上的文件:

/app 
    /locale 
     /en_US 
       /LC_MESSAGES 
       messages.po 
       messages.mo 
     /fr_FR 
       /LC_MESSAGES 
       messages.po 
       messages.mo 
     template.pot 

而且我這樣設置在PHP文件的語言環境:

$language = $_SESSION['language']; //session contains 'fr_FR.UTF-8' or 'en_US.UTF-8' 
setlocale(LC_ALL, $language); 
bindtextdomain('messages', './locale'); 
textdomain('messages'); 

,但我只看到標籤,而不是翻譯... 我試着把'fr_FR'而不是'fr_FR.UTF-8'和各種字符串,但它不工作。

我錯過了什麼嗎? 我的服務器是使用Apache和php5的Ubuntu 12.04服務器

回答

7

要在Linux上編譯您的.mo文件,您需要在服務器和編譯它的計算機上安裝語言環境。語言環境是您的操作系統支持的語言。

在本教程中指出:http://dev.jimdo.com/archive-old-blog/tutorial-for-the-easy-use-of-gettext-for-internationalization-of-php-apps/ 確認您已經在Linux的安裝語言環境

確保您想要的語言環境使用安裝在你的Linux和使用.UTF-8(你要國際化,所以請使用UTF):

# Example for debian 
dpkg-reconfigure locales 

- 在Linux上安裝新的語言環境

列表中的語言其實你的系統上安裝:

locale -a 

的例子來安裝fr_FR目錄:

#List the available i18n locales 
less /usr/share/i18n/SUPPORTED 

安裝區域(這裏fr_FR.utf8)

locale-gen fr_FR.utf8 

重新配置系統的語言環境

sudo dpkg-reconfigure locales 

重新編譯.mo文件與PoEdit,應該做的招。 確保在服務器和計算機上安裝語言環境編譯.mo文件。

希望幫助

+1

確實我沒有fr_FR.utf8安裝在我的電腦和我的服務器上... 它現在的作品!非常感謝您的幫助。 – 2012-08-15 17:47:35

0

除了什麼布魯諾說,不要忘了重裝Apache的配置(例如,服務的Apache2重裝)。我浪費了一些時間,發現爲什麼它不起作用,只是發現一旦安裝了新的語言/語言環境後,必須重新加載Apache配置。