2016-04-12 6 views
1

私はPHPプロジェクトの国際化を行っています。 PHPの 私はgetttext()関数とpoeditプログラムを使用します。 例: それはすべての作品:JQueryのhtml関数内での国際化

<?php 
    echo gettext("Hello world"); 
?> 

のHello Worldは、関連付けられた訳語で鍵となるでしょう。 JQueryのhtml関数を使用して.jsファイルをどのように翻訳するかはわかりません。例えば

は: ジャバスクリプトファイル内に、私は

if(exchange=='mo'){ 
    $(#hopen.title).html("NEW WORD"); 
} 

を持っている質問は:どのように私はpoeditプログラムでそれを使用し、「NEW WORD」へのgettext関数を呼び出すとことができますか?

答えて

1

翻訳が必要になるたびに、javascriptファイルからgettext/phpを呼び出す必要はありません。これは、各テキストに対してサーバーにajaxリクエストを行う必要があることを意味します。

代わりに、必要なすべてのキーと翻訳を含むオブジェクトをphpで生成し、それをブラウザに送信し、javascriptでグローバル変数として利用できるようにすることができます。

<?php 
... 
$needed_translations = array(
    'Hello world' => gettext("Hello world") 
    ... 
); 
?> 
<script> 
var needed_translations = <?php echo json_encode($needed_translations); ?>; 
// or 
window.needed_translations = <?php echo json_encode($needed_translations); ?>; 
</script> 

JavaScriptのファイルは、この後にロードされているか、あなたのコードは、文書準備ブロックに位置している場合は、このグローバル変数にアクセスする必要がありますし、あなたが好きな場所にそれを使用することができます。

if(exchange=='mo'){ 
    $(#hopen.title).html(needed_translations['Hello world']); 
} 
+0

おかげで、 解決策は、 ですが、gettextをjavascriptで直接呼び出す方法がありますか? 例: if(exchange == 'mo'){ $(#hopen.title).html(gettext( "NEW WORD")); } 以降、私はファイルmoを生成するためにlinuxでxgettextを実行できますか? – raoen

+0

@raoen phpはjavascriptがブラウザで起動するまでにすでに処理を終了しているので、これを行う唯一の方法はajax呼び出しを行い、正しい値を返すPHPスクリプトを作成することです。しかし、それはたくさんのリクエストと余分な作業ですので、私はそれをお勧めしません。 – jeroen

+0

ああ! OK! ありがとうございます! – raoen