2012-02-09 10 views
3

hogan.jsを使用して、ブラウザにテンプレートを作成してください。私はホーガンがi18nをサポートしていると読んだが、これがどのように機能するかの例は見つからない。どのように翻訳されたテキストをhoganに渡し、どのタグをテンプレートに入れたら、{{_i}}と{{i18n}}の両方が見えましたか?Hogan.jsの国際化はどのように設定されていますか?

+0

twitterでダスティン・ディアス(@ded)が好んでいるようです。 – Deeptechtons

答えて

3

older forkMustache.jsがTwitterから混乱していたようですが、Hoganと別のひげっこコンパイラーからもtwitterからです。フォークは、国際化のための{{_i}}タグをサポートしています。これは、_という名前のグローバル関数を呼び出します。この関数では、変換された値を検索する独自のメソッドを提供します。例えば。

translatedStrings = { 
    name: "Nom"; 
} 

function _(i18nKey) { 
    return translatedStrings[i18nKey]; 
} 

var template = "{{_i}}Name{{/i}}: {{username}}", 
    context = {username: "Jean Luc"}; 

Mustache.to_html(template, context); 

"Nom:Jean Luc"を返します。例えば、ホーガンの国際化は、通常の口ひげのラムダで達成されたとのに対し:

translatedStrings = { 
    name: "Nom"; 
} 

var template = "{{#i18n}}Name{{/i18n}}: {{username}}", 
    context = { 
     username: "Jean Luc", 
     i18n: function (i18nKey) {return translatedStrings[i18nKey];} 
    }; 

Hogan.compile(template).render(context); 

はラムダを提供するの詳細についてはhttp://mustache.github.com/mustache.5.htmlを参照してください。したがって、主な違いは、Hoganでレンダリングするときは翻訳をルックアップする関数を常に提供しなければならないのに対して、mustache forkはグローバルメソッドを検索する点です。

1

これを実際に他の国際化アプローチと組み合わせるのは簡単です。 jquery-i18n-propertiesは、Javaと互換性のある.propertiesファイル( )の使用をサポートするjQueryプラグインです。

フレームワークは、Messages.propertiesというファイルをダウンロードしようとします。ブラウザの言語に応じて、 Messages_en.propertiesおよびMessages_en_US.propertiesをダウンロードします。これにより、翻訳の階層を非常に迅速に構築することができます。

では多少私が書き、slashnickの例を変更し、ホーガン/口ひげを使用して:

var template = "{{#i18n}}Name{{/i18n}}: {{username}}", 
    context = { 
     username: "Jean Luc", 
     i18n: function (i18nKey) {return jQuery.i18n.prop(key);} 
    }; 

// Init i18n 
jQuery.i18n.properties(
{ 
name:'Messages', 
path:'some/path', 
mode : 'map' 
}); 

Hogan.compile(template).render(context); 

Messages.propertiesファイル:

Name = Name 

Messages_fr.propertiesファイル:

Name = nom 

私は本当にグロブをルックアップと特別なくそバージョンを使用する利点を参照してくださいアル機能(パフォーマンスはおそらく?)。

+0

「jQuery.i18n.prop(key)」は「jQuery.i18n.prop(i18nKey) –

関連する問題