1

$translateProvider.translationメインモジュールで外部モジュールを変更しようとしています。これを私のアプリの「翻訳プラグイン」と見なしてください。

$translateサービスから翻訳を変更することはできないようです。

mymodule.service('MyService', function ($translateProvider) {
    var lib = function () {
    //EDITED FOR BREVITY
        this._registerTranslations = function (ctrl) {
            if (!ctrl.i18n) return;
            for (var name in ctrl.i18n) {
            /////////////////////////////
            // THIS IS THE PLACE, OBVIOUSLY PROVIDER IS NOT AVAILABLE!!!!
               $translateProvider.translations(name, ctrl.i18n[name]);
            //////////////////////////////
            }
        };
    //EDITED FOR BREVITY
    };
    return new lib();
});

明るいアイデアを持っている人はいますか?

4

3 に答える 3

1

非同期読み込みページを見てください。どこからでも翻訳をロードするファクトリを作成できます。

新しい翻訳を保持する Angular 定数を作成しました。新しい翻訳を追加したい場合は、それを定数に追加します。次に、カスタム ローダーで、最初に定数をチェックして、翻訳が存在するかどうかを確認します (新しいものか更新されたものか)。もしそうなら、定数からロードします。そうでない場合は、.json ファイル (または最初の翻訳をロードした場所) からロードします。$translate.refresh()翻訳の再読み込みと再評価を強制するために使用します。

デモはこちら

デモはとてもシンプルです。翻訳のサブセットだけを変更したい場合は、もう少し作業を行う必要がありますが、一般的なアイデアは理解できます。

于 2014-06-21T00:18:43.340 に答える