2016-07-01 19 views
1

Wenn angular-translate ich mit meiner Strings wie so filtern:verschachtelte JSON Winkel übersetzen und filtern

<ANY>{{'TRANSLATION_ID' | translate}}</ANY> 

Es funktioniert sehr gut mit der folgenden flachen JSON:

{ 
    TRANSLATION_ID: 'A value', 
}; 

aber ich kann‘ t herauszufinden, wie es zu bekommen mit verschachtelten Übersetzungen zu arbeiten:

<ANY>{{'NAMESPACE.TRANSLATION_ID' | translate}}</ANY> 

Und das verschachtelte JSON:

{ 
    "NAMESPACE": { 
     "TRANSLATION_ID": "A value" 
    } 
}; 

Ich bin Laden erfolgreich die Übersetzung $translateProvider.useStaticFilesLoader({prefix: 'i18n/locale-', suffix: '.json'}); verwenden, und ich Verwendung anderer Funktionen des Anbieters wie $translateProvider.addInterpolation('$translateMessageFormatInterpolation'); machen.

Die documentation zeigt Beispiele für verschachtelte Übersetzung mit der service direkt, aber nicht die filter.

I found a possibly related issue here. Zunächst einmal mit dem Code in der JSFifddle bricht die $translateProvider Funktionen (ich habe es irgendwie durch die Verlängerung der ersetzen Variable festgelegt wie folgt: $TranslateProvider = angular.extend(m, $TranslateProvider); nach $translateProvider als m Injektion und fügen pascalprecht.translate als Modul Abhängigkeit, und fügen Sie var Erklärungen der Lage sein, zu 'use strict') - so auf Anhieb scheint es keine feste Lösung zu sein.

Mit diesem JSFiddle Code, ich habe die Richtlinie, zumindest für nicht verschachtelte Fälle zu arbeiten (was in Ordnung und alle sind, aber nicht, was hier gebraucht wird, so dass ich nicht die Mühe, die verschachtelten Fälle Prüfung), aber nicht der Filter (den ich für verschachtelte und nicht verschachtelte Übersetzungen benötige).

Es scheint mir, namespace Übersetzungen sollte eine ziemlich große Sache sein, und sollte daher für alle 3 Übersetzungsmethoden (Service, Richtlinie und Filter) zur Verfügung stehen.

"Service" -Methode ist eher begrenzt ($ translate Service bietet keine Zwei-Wege-Datenbindung, die mehr Code zum Abhören von Ereignissen bedeutet - see doc - und, nun ja, die Tatsache, dass alle String-Übersetzung der Schnittstelle in der Controller/Dienst der App scheint eine ziemlich schlechte Praxis zu sein; Ansichten/Vorlagen sind dafür da, wenn ich mich nicht irre).

Hat jemand eine Lösung gefunden, oder ist angular-translate geschachtelte JSON nur für den Dienst?

+0

Scheint wie ich fand, wie es funktioniert, ohne zusätzlichen Code zu verwenden. Was frustrierend ist, dass ich nicht weiß, wie ... –

Antwort

0

Ich weiß, wo ich jetzt vermasselte - das schreckliche Ende Komma in meiner verschachtelten Übersetzung:

{ 
    "NAMESPACE": { 
     "TRANSLATION_ID": "A value", 
     "ANOTHER_ID": "Another value", 
    } 
}; 

Also, ja, völlig unabhängig.