2016-05-09 6 views
1

私はAngularJS 1.4.xを使用してWebアプリケーションを作成していますが、ローカライズライブラリとして "angular-translate"を使用しています。Angular-translate:異なる言語のページの異なる部分を翻訳する

アプリは、英語とフランス語の2言語をサポートしています。

ユーザーはこれら2つの言語を切り替えることができ、アプリケーションはローカライズされています。

私は以下の要望を持っています:すべてのアプリケーションを「メイン言語」でローカライズする必要がありますが、英語を言いましょうが、他の言語(フランス語)でアプリケーションの一部をローカライズする必要があります。

enter image description here

どのようにすることができます:例えばアプリケーションのヘッダは英語ですが、ページの内容がフランス語であるので

二つの言語が共存しなければならない、添付画像を参照してください。私がする?このライブラリで可能ですか?

答えて

1

これを行う1つの方法は、角度変換をラップする独自の翻訳フィルタを作成することです。

app.filter('mytranslation', ['$translate', '$filter', function($translate, $filter) { 
return function(input, lang) { 
    input = input || ''; 
    var currentLanguage = $translate.use(); 
    $translate.use(lang); 
    var result = $filter("translate")(input); 
    $translate.use(currentLanguage); 
    return result; 

} }])

し、HTMLページに、あなたはとしてそれを使用することができます。

<p>German section</p> 

{{ 'ハロー' | mytranslation:「デ・」}}

ここでは、実施例である:https://plnkr.co/edit/pYFo3Wapz12Q6686zrqn?p=preview

+0

それは私の問題を解決するために、私はあなたの答えを受け入れます。私は '$ translate.use(lang);'が非同期操作であり、しばらく時間がかかることを強調したいだけです。したがって、次の行 'var result = $ filter(" translate ")(input);は言語が変更される前に*実行されます。これを解決するために、 '$ translate.use(lang);メソッドは、言語が正常に変更されたことを知るために使用できる約束を返します。 – Andrea

関連する問題