0

JavaScript ファイルで翻訳を使用するには?

私はformatter.jsファイルを持っています:

function xyz(id)
{
    if(confirm("Vill du radera ?")){
        location.href = "/student/files/delete/" + id;
    }
}

ここで、「vill du radera?」の翻訳を使用したいと思います。

私のview.phtmlファイルでは、次のようなものを使用しています。

<?=$this->translate->_("Select Template")?> 

それは正常に動作しています...

4

3 に答える 3

1

*.js インクルード ファイルでほとんど翻訳を行わない場合、使用されるキーがわかっている場合は、ビューに JS 変数を設定するだけで済みます。次に例を示します。

//viewscript:
<script ...>
    var translation = <?php echo Zend_Json::encode($this->translate->_("Select Template")) ?>;
</script>

必要になる前に、変数が使用可能であることを確認する必要があります。

しかし、多くの翻訳を行う必要がある場合、1 つの方法はtranslate(key)*.js ファイルに関数を追加することです。この関数は、AJAX 呼び出しを実行して、単一のキー翻訳、または (できれば) 多数/すべての翻訳を取得して変数に格納し、サーバーへのラウンドトリップが最初の翻訳で 1 回だけ行われるようにします。

//*.js
var translations = null;
function translate(key) {
    if (translations !== null) {
        return translations[key];
    }
    else {
        //use AJAX to get translations from server: /translations/serve-json
        // ...
        translations = ajaxData;
        return translations[key];
    }
}

そして、ここにコントローラーがあります:

//TranslationsController (for example)
public function serveJsonAction() {
    //get translations first
    // ...
    $this->_helper->json($translations);
}

最終的な用途は次のとおりです。

function xyz(id)
{
    if(confirm(translate("VILL_DU_RADERA"))){
        location.href = "/student/files/delete/" + id;
    }
}
于 2012-07-13T07:38:44.170 に答える
1

あなたがこれを使用しているように:

function xyz(id)
{
    if(confirm("Vill du radera ?")){
        location.href = "/student/files/delete/" + id;
    }
}

.phtml ファイルから呼び出す必要があります。

あなたは一つのことをすることができます:

関数 xyz() を 2 つのパラメーター (1) id と (2) 変換変数で呼び出すことができます

.phtml ファイル内

xyz("<?php echo id;?>","<?php echo $this->translate->_("Select Template")?>");

.js ファイルで

function xyz(id,translate)
{
    if(confirm(translate)){
        location.href = "/student/files/delete/" + id;
    }
}

それを試してみてください。

于 2012-07-13T09:45:32.050 に答える
0

js ファイルを .php として保存し、それをビューに含めることも考えられます。もちろん、javascript をタグでラップする必要があります。しかし、最良の部分は、たとえば次のように使用すると機能することです。

     <script>
     var text = '<?php echo $this->translate('string that would be in JavaScript');?>';
     </script>

この方法の利点は、すべての翻訳を 1 か所にまとめられることです。

于 2013-03-06T00:17:02.300 に答える