2016-07-01 2 views
1

При использовании angular-translate я могу фильтровать строки так:углового перевод вложенной JSON и фильтр

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

Это очень хорошо работает со следующей плоской JSON:

{ 
    TRANSLATION_ID: 'A value', 
}; 

Однако, я не могу» т выяснить, как заставить его работать, используя вложенные переводы:

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

И вложенную JSON:

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

Я успешно загружая перевод с помощью $translateProvider.useStaticFilesLoader({prefix: 'i18n/locale-', suffix: '.json'});, и я использую другие функции провайдера, такого как $translateProvider.addInterpolation('$translateMessageFormatInterpolation');.

documentation показывает примеры вложенных переводов, используя service, но не filter.

I found a possibly related issue here. Прежде всего, с помощью кода в JSFifddle нарушает $translateProvider функции (я как-то фиксируется за счет расширения заменяющего переменную следующим образом: $TranslateProvider = angular.extend(m, $TranslateProvider); после введения $translateProvider в m и добавить pascalprecht.translate в качестве модуля зависимости, и добавить var декларации, чтобы иметь возможность до 'use strict') - так что с самого начала это не похоже на твердое решение.

С этим JSFiddle кодом, я получил директиву работать, по крайней мере, для невложенных случаев (которые хорошо и все, но не то, что нужно здесь, так что я не стал испытывать вложенные случаи), но а не фильтр (который мне нужен для вложенных и не вложенных переводов).

Мне кажется, что переводы с именами должны быть довольно сложными, и поэтому должны быть доступны для всех трех методов перевода (служба, директива и фильтр).

Метод «службы» довольно ограничен (услуга $ translate не обеспечивает двустороннюю привязку данных, что означает больше кода для прослушивания событий - see doc - и, ну, тот факт, что загрузка всего перевода строки интерфейса в диспетчер/служба приложения выглядит довольно плохой практикой: для этого нужны представления/шаблоны, если я не ошибаюсь).

Кто-нибудь нашел решение для этого, или это угловой перевод вложенных JSON работает только для службы?

+0

Похоже, я нашел, как заставить его работать без использования дополнительного кода. Что расстраивает то, что я не знаю, как ... –

ответ

0

Я знаю, где перепутались сейчас - ужасный конец запятая в моем вложенном перевод:

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

Так что, да, совершенно не связаны.

Смежные вопросы