2016-04-25 6 views
1

私はangle-translateをラップする指示文を作成しました。また、入力フィールドに変わって管理者のために簡単に翻訳することもできます。angle translate update translation table

私はそれが非常に非効率ですので、私は本当に、DB内の1行を更新した後、私のDBから全体の変換テーブルをロードしたくない、単一の翻訳を更新します。

私の問題は、フロントエンドキャッシュへのアクセスを可能にする角度変換APIで何かを見つけることができないということです。私は正常に1行を更新した後、私の翻訳のマッピング全体のDBを気にすることなく、翻訳マップを直接修正したい。

私が試したことは:$ translationCache、$ translateLocalStorage、$ translateCookieStorageです。

誰かが私を啓発できますか?

また、ボーナスとして、私は、彼らが翻訳した角度で​​の変換マッピングを公開することができる場所誰が考え出しましたかしら。 注:既に変換されているので、私は$ translateの変換された値をコントローラには入れません。

答えて

3

ソースを短く見ても簡単な方法はありません。私はそれが最終的に自分のプロバイダを使用して$ translateProvider.translationsからの参照をキャッシュ解決:あなたのアプリで

app.provider('translationHelper', function() { 
    this.translations = {}; 

    this.$get = function() { 
     return { 
      translations: this.translations 
     } 
    }; 
}); 

app.config([ 
    '$translateProvider', 
    'translationHelperProvider', 
function (
    $translateProvider, 
    translationHelperProvider 
) { 
    translationHelperProvider.translations = $translateProvider.translations(); 
}]); 

を行い、また後で

app.component('myComponent', { 
    templateUrl: 'views/components/myComponent.html', 
    controller: [ 
     'translationHelper', 
    function (
     translationHelper 
    ) { 
     // query translation 
     var translation = translationHelper.translations['de']["Your.Key.Here"]; 
     // modify translation 
     translationHelper.translations['de']["Your.Key.Here"] = 'A new value'; 
    }] 
}); 

ようにそれを使用し、あなたを角翻訳ソースを変更し、その$ getメソッドを通してプロバイダからアクセス可能な '翻訳'を作成できます。あなたは translationHelperProvider.translations = $ translateProvider.translations()やった設定で

+0

。 遅延ロードによってトランジションが更新されると、translationHelper.translationsが更新されますか? –