2009-08-01 6 views
12

JQueryを使ってローカライズを処理する方法がわかりません。 innerHTMLにドイツ語のテキストを設定したいが、ブラウザが英語を使用するように設定されている場合は、英語のテキストを設定したい。JQueryによるローカライゼーション?

PHPでは、私はそのようなものにはgettextを使用しますが、JavaScript/jQueryでそれを行う方法は?

答えて

15

簡単な解決策はありません。私がおそらくやることは、すべての言語の言語テキストを含むスクリプトをいくつか作成し、PHPに適切なものを組み込むことです。だから、誰かがあなたのサイトの英語版を使用している場合、誰かがドイツ語版を使用している場合は、英語のみのファイルが含まれますあなたはドイツ語の言語ファイルが含まれるなど

例:

// your script logic 
myscript.js 

// language texts 
myscript.en.js 
myscript.de.js 
myscript.it.js 
... 

あなたはすべての言語ファイルを定義することができますそのように:

LANG = { 
    txt1: 'English text1', 
    txt2: 'English text2' 
    ... 
}; 

<script type="text/javascript" src="myscript.de.js"></script> 
<script type="text/javascript" src="myscript.js"></script> 
すなわち、一つだけ、あなたのHTMLのものを含むと最初の言語ファイルが含まれていることを確認してくださいしていることを確認します

次にあなたがたとえば、あなたのメインのスクリプトでこれらのローカライズされたテキストを使用することができます。

$(document).ready(function() { 
    alert(LANG.txt1); 
}); 

何それについての最もよいのですが、あなたのロジック(この例ではmyscript.js)がローカライズを心配する必要はありません、あなたは」勝ったということです新しい言語ファイルを追加する場合は、変更する必要があります。

3

実際にはJQueryはまったく必要ありません。

javascript(http://www.comptechdoc.org/independent/web/cgi/javamanual/javanavigator.html)のナビゲータオブジェクトには、ブラウザの現在のロケールによって設定されるuserLanguage(IE)および言語(Netscape/Firefox)プロパティが含まれています。

あなたの例を解決するには、次のようなものを使用できます。

 
    
    var textToSet = null; 
    var userLang = null; 

    /* 
    -if userLanguage exists they're in IE, else firefox 
    -get the first two letters in lowercase to guarantee 
    an easily evaluated base language 
    */ 
    if(navigator.userLanguage) baseLang = substring(navigator.userLanguage,0,2).toLowerCase(); 
    else baseLang = substring(navigator.language,0,2).toLowerCase(); 

    //check languages 
    switch(baseLang) 
    { 
    case "de": 
     //German 
     textToSet = "german text"; 
     break; 
    default: 
     textToSet = "english text"; 
    } 
    document.getElementById('elementToSetTextInto').innerHTML = textToSet; 


「EN-US」を、「脱・デ」のため、その場合の外観に..あなたが別のテキストベースの言語とロケールのオフに基づいて必要かもしれませんが、覚えておいてください。文化コードのサイトは簡単に検索されます(最初の投稿のみに1リンク))

yaのためにうまくいきます。

0

これを試してください。 TranslateThisボタンは、軽量のJavaScript変換ウィジェットです。 AJAXとGoogle Language APIを使用して、あらゆるページをすばやく翻訳します。

Here...

7

私はまだそれを使用していませんでしたが、私はプロジェクトのためにjquery-localizeを使用して考えています。あなたの要素に定義されている 'rel'属性の翻訳に基づいていれば、良い選択肢のように見えます。 READMEから

例:

HTML

<p rel="localize[title]">Tracker Pro XT Deluxe</p> 
<p rel="localize[search.placeholder]">Search...</p> 
<p rel="localize[search.button]">Go!</p> 
<p rel="localize[footer.disclaimer]">Use at your own risk.</p> 
<p rel="localize[menu.dashboard]">Dashboard</p> 
<p rel="localize[menu.list]">Bug List</p> 
<p rel="localize[menu.logout]">Logout</p> 

アプリケーション-ES。JSON

{ 
    title: "Tracker Pro XT Deluxo", 
    search: { 
    placeholder: "Searcho...", 
    button: "Vamos!" 
    }, 
    footer: { 
    disclaimer: "Bewaro." 
    }, 
    menu: { 
    dashboard: "Dashboardo", 
    list: "Bug Listo", 
    logout: "Exito" 
    } 
} 

それをローカライズ!

$("rel*=localize").localize("application", { language: "es" }) 
0

あなたに見ることができる別のオプションは、Microsoftがjquery-global pluginを提案しています。それはまだベータマインドです。

1

すでにPHPアプリケーションでgettextを使用しているので、あなたはそれが.moのコンパイルされたファイルを使用していません。このjavascript implementation of gettext

を使用してになりますが、それはあなたが既に持っているあなたの.poファイルを使用します。

この方法は、すべての翻訳を1か所で管理できるという利点があります。

関連する問題