3

ローカリゼーションが必要な JavaScript コードがあります。

function js_proc() {
    var some_data = 'this text needs to be translated dynamically at runtime';
}

そこで、次のように書き直しました。

function js_proc() {
    var some_data = <?php echo $this->lang->line('some_data_id'); ?>;
}

ビューでは、js リンクを次のように記述しました。

<script type="text/javascript" src="www.domain.com/codeigniter/get_js/file-1/"></script>

コントローラーで関数 get_js() を呼び出します。アイデアは、get_js() 関数に js ファイルを読み取らせ、言語文字列を翻訳させることです...

変換するjs文字列が多すぎるためevery string、変数として渡すことができません。理想的には、これを codeigniter 言語ファイルで機能させたいと思っています。

私の質問は: js ファイル内の php 部分を解析して実行 (= 翻訳) する方法はありますか? すなわち。

class App extends CI_Controller
{
    function get_js {
        $content = file_get_contents($js_file);
        echo parse_php($content);
    }
    ...
}

ありがとう!

4

3 に答える 3

2

「翻訳するjs文字列が多すぎるため、すべての文字列を変数として渡すことはできません」という意味がよくわかりませんが、自動解析を探している場合、これは役に立ちません.

しかし、これは他の人を助けるかもしれないので、ここに行きます.

理想からは、次のようなシステムを使用します。

私の見解では、codeigniter 言語サポートを使用して、ローカライズを JavaScript グローバル変数として追加します。何かのようなもの:

<script type="text/javascript">
    var noEmailError = "<?php echo $this->lang->line('enter_your_email'); ?>";
</script>

その後、通常はその直後に、グローバルを参照するスクリプトを含めます。

<script type="text/javascript" src="/scripts/validate.js"></script>

スクリプト内:

alert(noEmailError);

ローカライズされたテキストが問題なく表示されます。

于 2013-09-04T11:49:43.580 に答える
0

JavaScript 文字列のページ出力のグローバル スコープで json オブジェクトを作成します。

<script>
    var oGlobalStrings = {
            some_data : '<?=$this->lang->line('some_data_language_key');?>'
        }
</script>

次に、構文を使用して Javascript アプリ全体で使用できます。

oGlobalStrings.some_data

非常にうまく機能し、アプリ全体で非常に簡単に処理できます。

于 2012-10-16T04:05:44.020 に答える