2009-11-21 34 views
1

我似乎無法得到gettext的工作,在這裏。PHP:Gettext問題

我使用MAMP Pro和phpinfo();表示gettext已啓用。

我跟着這個教程:http://zez.org/article/articleview/42/1/

  1. 我在我的代碼中聲明這樣我的琴絃:_('test string');
  2. 然後我跑xgettest -L PHP test.php,即生成我messages.po文件。
  3. 我在poedit打開這個文件並翻譯了我的字符串,然後保存了這個文件,這個文件製作了一個messages.mo文件。
  4. 我把.po.mo文件都和他們搬到[webroot]/locale/es/LC_MESSAGES/(在這種情況下,我的翻譯是西班牙語)
  5. 在我的代碼,我設置如下:

    $lang = $_SESSION['lang']; // available to all views that include this file

    putenv('LC_ALL='.$lang);

    bindtextdomain('messages','./locale');

    textdomain('messages');

    ...其中$_SESSION['lang']我可以很容易地在enes之間切換。

  6. 我重新加載我的頁面,然後點擊我的鏈接切換到es,但我的字符串仍顯示爲英文版本而不是西班牙文版本。切換回en顯示沒有變化;它總是英文版本。

我沒有收到任何錯誤消息,所以我有點失落,爲什麼我有這個問題。任何人都可以給我一些指導/幫助嗎?我錯過了什麼?

+0

嘗試硬編碼「es」,然後我們就會知道這是i18n的問題還是隻是一個會話messup。 – 2009-11-21 18:07:43

+0

或嘗試修改英文翻譯。 – erenon 2009-11-21 18:10:54

+0

「es」硬編碼效果不變。 – neezer 2009-11-21 18:11:40

回答

0

似乎問題可能與poedit。最初,我所有的西班牙語翻譯都被標記爲「模糊」。如果我從他們那裏刪除「模糊」,他們就像他們應該出現在我的網頁上。

我不認爲這是正常的行爲,但嘿,至少它的作品。

1

您還需要爲使​​您的服務器上安裝相應的語言文件:

cat /usr/share/i18n/SUPPORTED |grep -i "es_ES" > /var/lib/locales/supported.d/es 
cat /usr/share/i18n/SUPPORTED |grep -i "nl_NL" > /var/lib/locales/supported.d/nl 
cat /usr/share/i18n/SUPPORTED |grep -i "de_DE" > /var/lib/locales/supported.d/de 

現在你所安裝的語言西班牙語,荷蘭語和德語。完成後,運行dpkg-reconfigure locales即可完成。 =)

+0

OP正在使用MAMP PRO,所以在OS X上。'dpkg-reconfigure'不會在那裏工作。 – drewm 2011-06-06 16:24:35

+0

可愛的是,您正在使用不區分大小寫的開關來grep一個完整的搜索字符串。 – Tim 2012-05-01 14:49:54