ホームページ >ウェブフロントエンド >jsチュートリアル >PHP MVCフレームワークにJavaScript文字列をローカライズします

PHP MVCフレームワークにJavaScript文字列をローカライズします

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌オリジナル
2025-02-22 10:18:10630ブラウズ

PHP MVCフレームワークの効率的なJavaScript文字列ローカリゼーションメソッド

Localizing JavaScript Strings in a PHP MVC Framework この記事では、PHPフレームワークでJavaScript文字列を効率的にローカライズする方法を示します。このチュートリアルの実装をここからダウンロードできます。

PHP環境にJavaScript文字列をローカライズする方法はいくつかあります。技術的には、JavaScriptファイルはターゲット言語に従ってコピーして名前を付けることができ、ユーザーがWebサイトで新しい言語を選択するたびに必要なバージョンがロードされます。しかし、それは確かに、それが「機能している」としても、それをベストプラクティスと呼ぶのが難しい方法です。

このアプローチの主な欠点は、JavaScriptコードを変更する必要があるたびに、各言語の変更を実行する必要があることです。これは、エラーが発生しやすいだけでなく、不必要なワークロードを増加させます。

別の方法は、JavaScriptコードに埋め込まれたPHP変数を介してリテラル文字列を直接呼び出すことですが、フレームワークアーキテクチャに依存し、常に利用可能なオプションではありません。

それで、確かに効果的で維持が簡単な方法を紹介します。

ここから実行可能な例をダウンロードできることを忘れないでください。

始めましょう...

このチュートリアルに付属する例では、trigger_msg():

という名前のJavaScript関数をトリガーするボタンを設定しました。

trigger_msg()関数は/public/js/main.js:

にあります

<code class="language-php">echo '';</code>

/languages /translate.jsにある翻訳()関数を呼び出し、ローカリゼーションという名前の配列に含まれる目的の要素の名前をパラメーターとして渡します。

function trigger_msg(){ return alert(translate(LOCALIZATION.here_is_how_it_works)); }
    パラメーターが引用符で囲まれている場合、パラメーターはもちろんテキストになります。
  • のどのように見えるかを次に示します。
  • 配列要素定義では、「%s」が使用されていることがわかります。これは、追加のパラメーターを保存するために使用する式です。ただし、これについては後で説明します。 カスタムダイアログを使用すると、
  • などの配列要素定義にHTMLスタイルのタグを挿入でき、正常に機能することに注意してください。

翻訳()関数:
<code class="language-javascript">var LOCALIZATION = {
    here_is_how_it_works :  'Voici comment cela fonctionne.\nAppuyez sur le bouton suivant afin de voir comment ça se passe avec des paramètres.',
    who_does_not_know_are_and_that_the_sky_is :  'Qui ne sait pas que %s x %s font %s,\net que le ciel est %s?',
    blue : 'bleu'
  };</code>
に従う時が来ました

次の関数は、JavaScriptローカリゼーションソリューションのコアを形成します。

基本的に、stringという名前の変数で、trigger_msg()関数からキャプチャされたパラメーターを保存し、ループについて最初にそれらを解析し、regという名前の変数に保存された正規表現を使用してそれらをフィルタリングし、結果部分をプッシュしますパーツと呼ばれる配列[]。次に、これらの部分をHTML []と呼ばれる配列に再結合し、関数はその配列を返します。

regという名前の変数は、単純な正規表現 '/%s/'を保持します。%sは、パラメーターを定義するために上記のように選択した構文です。
<code class="language-javascript">(function () {

    if (!window.translate){

      window.translate = function(){
        var html = [ ]; 
        var arguments = arguments;
        var string = arguments[0];

        var objIndex = 0;
        var reg = /%s/;
        var parts = [ ];

        for ( var m = reg.exec(string); m; m = reg.exec(string) ) {  
          parts.push(string.substr(0, m.index));
          parts.push("%s");
          string = string.substr( m.index+m[0].length );
        }
        parts.push(string);

        for (var i = 0; i < parts.length; ++i){
            var part = parts[i];
            if (part && part == "%s"){
              var object = arguments[++objIndex];
              if (object == undefined) {
                html.push("%s");
              }else{
                html.push(object);
              };
            }else{
              html.push(part);
            }            
        }

        return html.join('');
      }
    };
  })();</code>
trigger_msg_with_params()関数

/public/js/main.jsは、文字列をローカライズするときにパラメーターを使用する方法を示します。実際、システムでは、翻訳する必要がある文字通り文字列にはユーザー入力に依存する値が含まれる場合があり、この関数はコードの再利用頻度を頻繁に許可することで非常に便利になります。

<code class="language-php">echo '';</code>
var param1などの各定義されたパラメーターを見ることができます。または、関数呼び出しに渡されたパラメーターも表示されます。定義されたパラメーターは、翻訳()関数の実際の呼び出しでもあります。これはすべて、再び非常に有用であることが証明されています。

これがすべてです。このシステムは、PHPフレームワーク全体にJavaScript文字列を翻訳する効率的で信頼できる方法を表し、高度な柔軟性を可能にします。

コメントや質問を残していただけます。より多くのチュートリアルをお楽しみに。

の変更手順:元のテキストは調整され、語彙の置き換えがスムーズで自然になり、元のテキストは変わらないままです。 また、コードスニペットで潜在的なIEブラウザ互換性の問題を修正しました(

はIEでm[0][0]を返す場合があります)。 残りの写真は同じままです。 undefined

以上がPHP MVCフレームワークにJavaScript文字列をローカライズしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。