2016-04-25 11 views
1

Ich habe eine Direktive erstellt, die eckig-translate umschließt und kann auch in Eingabefelder für die einfache Übersetzung für Admin-Benutzer verwandelt werden.eckig translate update translationstabelle

Wenn ich eine einzelne Übersetzung aktualisiere, möchte ich nach dem Aktualisieren von 1 Zeile in der DB nicht wirklich eine ganze Übersetzungstabelle aus meiner Datenbank laden, weil sie unglaublich ineffizient erscheint.

Mein Problem ist, dass ich nichts in der API angle-translate finden kann, die mir Zugriff auf den Front-End-Cache ermöglicht. Ich möchte die Übersetzungskarte direkt ändern, ohne die DB für eine komplette Zuordnung meiner Übersetzungen zu stören, nachdem ich 1 Zeile erfolgreich aktualisiert habe.

Dinge, die ich ausprobiert habe: $ translationCache, $ translateLocalStorage, $ translateCookieStorage.

Kann mir bitte jemand aufklären.

Auch als Bonus, ich frage mich, ob jemand herausgefunden, wo sie die Übersetzung Zuordnung in eckigen übersetzen können. Hinweis: Ich möchte nicht, dass die übersetzten Werte von $ in den Controller übersetzt werden, da dies bereits interpoliert ist.

Antwort

3

Ein kurzer Blick in die Quelle bietet dafür keinen einfachen Weg. Ich löste es schließlich einen Verweis von $ translateProvider.translations Caching eines eigenen Provider:

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

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

In Ihrer App do

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

und es wie Alternativ Sie

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'; 
    }] 
}); 

später verwenden, kann die eckige Übersetzungsquelle modifizieren und "Übersetzungen" vom Anbieter über seine $ get-Methode zugänglich machen.

+0

In der Konfig du hast translationHelperProvider.translations = $ translateProvider.translations(); Aktualisiert es unsere translationHelper.translations, wenn die Übersetzungen durch Lazy Loading aktualisiert werden? –