簡體   English   中英

php-gettext在生產服務器中不起作用。 (Ubuntu)

[英]php-gettext don't work in production server. (Ubuntu)

我在PHP中遇到gettext問題; 我有兩台服務器,一台是Windows(使用vs.php)在本地(我在其中開發)並可以工作,另一台是在Amazon EC2(已更新Ubuntu 12.04)中,這是生產服務器,在該服務器中,相同的代碼不找不到。

這是我的代碼:

我以此來初始化gettext。

function initialize_i18n($locale) {
    $locales_root = "./librerias/noAuto/locale";
    putenv('LANG='.$locale);
    putenv("LC_ALL=" . $locale);
    setlocale(LC_ALL,$locale);
    $domains = glob($locales_root.'/'.$locale.'/LC_MESSAGES/messages*.mo');
    if (count ($domains) > 0)
    {
        $current = basename($domains[0],'.mo');
        $timestamp = preg_replace('{messages-}i','',$current);
        bindtextdomain($current,$locales_root);
        bind_textdomain_codeset( $current, "UTF-8" );
        textdomain($current);
        if ($locale == "en_US")
        {
            if( _("Modificar") === "Modify" ) {
                $system->setDebug( "Translated correctly");
            } else {
                $system->setDebug( "Gettext don't working");
            }
        }
    }
}
initialize_i18n("en_US");

我項目中的所有文件均以UTF-8(西班牙語)編碼,.mo和.po是使用poedit生成的。

我嘗試重新加載apache服務,但是沒有用。

任何想法?

新的一天新的想法! 我有解決辦法!

如果您遇到相同的問題,則需要檢查此步驟。

1-您的Linux是否已安裝此語言?

您可以通過以下方式進行檢查:

 locale -a

如果未列出您的語言,請安裝該語言,例如,您可以使用以下方法安裝englsh本地化:

 # aptitude install language-pack-en

並在完成后重新啟動apache。

2-您的語言代碼在PHP中正確嗎?

如果您使用語言環境-a列出了語言代碼列表,您將看到可以使用的語言代碼,例如,列出了我的系統的英語版本:[...] en_NG.utf8 en_NZ.utf8 en_PH.utf8 en_SG.utf8 en_US .utf8 [...]我的錯誤之一是,我使用“ en_US”而不是“ en_US.utf8”。

3-文件夾具有相同的名稱作為語言代碼。 (我的第二個錯誤)

PD>對不起,我的英語不好

如果它不能在其他環境中運行,則最好檢查關鍵功能是否已成功處理。

我建議您首先檢查bindtextdomain()和bind_textdomain_codeset()的返回值。 如果它們返回空白,則意味着PHP找不到消息資源文件(僅在Ubuntu上),然后您可以從運行Web服務器和PHP的Unix用戶檢查文件夾和文件的權限。

暫無
暫無

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

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