2012-02-07 8 views
1

私はApacheを実行しているUbuntuにいます。問題は(動作していない)私のStrato Webサーバーで発生します。PHP gettextは動作を停止しました

私のPHPはgettextをサポートしていますが、文字列は.moファイルに翻訳されていますが、何も翻訳しません。

これは私のコードです:

if (function_exists('bindtextdomain')) { 
    $domain = 'address_db'; 
    echo putenv('LC_MESSAGES='.$lang); 
    echo '<br />'; 
    echo setlocale(LC_MESSAGES, $lang); 
    echo '<br />'; 
    $path = bindtextdomain($domain, "../locale/"); 
    echo $path; 
    echo '<br />'; 
    echo file_exists($path.'/'.$lang.'/LC_MESSAGES/'.$domain.'.mo') ? 'yes' : 'no'; 
    echo '<br />'; 
    echo bind_textdomain_codeset($domain, "iso-8859-1"); 
    echo '<br />'; 
    echo textdomain($domain); 
    echo '<br />'; 

    $available_languages = array(
     array('de_DE', _('German')), 
     array('en', _('English')), 
     array('nl', _('Dutch')), 
     array('tr', _('Turkish')) 
    ); 

    echo _('Cancer'); 
} 

出力は一種の有望である:

1 

/home/mu/Branches/address_db/locale 
yes 
iso-8859-1 
address_db 
Cancer 

だから、ファイルを見つけ、それはまだ「がん」に変換されません。

何ができますか?


更新

それは私のテストサーバー上の私の運用サーバー上で動作しますが、ありません。非常に奇妙な...

答えて

2

Gettextの翻訳はキャッシュされているので、.moファイルの変更を取り込むためにサーバーを再起動する必要があります。

+0

私はそれを試みましたが、それは何も変化しませんでした。 –

0

setlocaleがfalseを返すかのように見えます。正しく動作する場合は、新しいロケール名を返す必要があります。

$langの値がlocale -aの出力にありますか。一般的な間違いは、例えばde_DE.utf8またはde_DE.iso88591ではなくde_DEを使用してください。

+0

私は 'de_DE'を使います。それは明らかに変わらない: 'Lang:de_DE.iso88591 Setlocale:'。 Apacheの再起動は変更されませんでした。他のブラウザは動作しません。 –

関連する問題