2016-06-06 4 views
1

Когда я установил такой язык gettextCatalog.setCurrentLanguage(langString);, он не работает в моем боковом навигационном меню. Мое боковое меню может находиться в одном из двух состояний: расширенном или свернутом, поэтому я использую ng-include для бокового меню и изменяю его при переключении состояний.Angular-gettext не обновляет строки, сгенерированные в коде

Когда я использую setCurrentLanguage, строки внутри меню не меняются. Он будет изменен только после перезагрузки страницы (я сохраняю текущий язык в localStorage). Таким образом, setCurrentLanguage может быть применен при запуске приложения к моему боковому меню, но он не работает динамически.

Edit:

Вероятно, это связано с тем фактом, что я генерировать имена пунктов меню с помощью gettextCatalog.getString('somestring'), поэтому имена будут созданы с правильными языками при запуске, но я не могу обновлять их при изменении языков , потому что результат `gettextCatalog.getString ('somestring') теперь просто сохраняется в переменной. Таким образом, никаких угловых наблюдателей там больше нет.

Итак, как обновить строки, созданные из кода?

ответ

1

Не используйте gettextCatalog.getString(), используйте gettext() вместо:

$scope.myVar = gettext("Something"); 

А на ваш взгляд, использовать translate фильтр:

{{ myVar | translate}} 

Это будет правильно обновляться при изменении языка.

Дополнительная информация здесь: https://angular-gettext.rocketeer.be/dev-guide/annotate-js/