簡體   English   中英

我該如何調試php gettext?

[英]How can I debug php gettext?

一些gettext鍵對我來說不起作用 - 它們顯示鍵而不是翻譯,盡管有一個。 我正在使用PHP File_Gettext Pear庫制作.mo文件,它似乎工作正常,所以我已經嘗試了以下腳本,哪些鍵不能正常工作:

$locale = 'en_GB';
$domain = 'messages';

setlocale(LC_ALL, $locale);
putenv("LC_ALL=".$locale);
bindtextdomain($domain, "D:/_gt");
bind_textdomain_codeset($domain, 'UTF-8');
textdomain($domain);

$mocreator = new File_Gettext_MO();
$mocreator->load('D:/_gt/en_GB/LC_MESSAGES/messages.mo');

foreach ($mocreator->strings as $key => $value) {
    if ($value == gettext($key)) {
        var_dump("ok");
    } else {
        var_dump($key, $value, gettext($key));
    }
}

從上面的輸出我看到一些鍵工作 - 我看到很多ok - 有些沒有,產生以下:

string 'Cancelled' (length=9)
string 'Storniert' (length=9)
string 'Cancelled' (length=9)

所以文件中有翻譯,但gettext由於某種原因無法使用它們。

現在這是一個相當古老的問題,我必須指出,我不是那么精通gettext特定問題。 但我對數組鍵有一些問題,如字符串和編碼。

D:/_gt給我的印象是你正在使用某種類型的Windows,如果我沒有弄錯,所有Windows版本都使用latin-1-“with-special-locale”作為默認值。 我認為問題可能是編碼相關的,因為您將文件指定為utf8但是如果沒有.mo文件我無法幫助您。 但是嘗試切換putenvsetlocale語句的位置。

還是缺少空格? 正確的密鑰可以" Cancelled"嗎?

但正如有人在評論中所說,這只是沒有.mo文件的猜測。

如果您已找到自己的答案,請添加它以幫助其他互聯網! :d

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM