Как перевести массивы элементов контроллера в Ember-i18n?
В моем контроллере клиента я определил несколько постоянных массивов, которые используются для заполнения опций выбора входа (выпадающий список).
import Ember from 'ember';
export default Ember.Controller.extend({
occupations: [
{code: 'student', name: "Student"},
{code: 'worker', name: "Worker"},
{code: 'retired', name: "Retired"},
{code: 'other', name: "Other"}
]
});
Нормальным решением будет использование функции translationMacro t() или this.get('i18n'). T () вокруг ключа перевода, но их нельзя использовать в такой ситуации, так как "this" внутри объекта или массива не будет ссылаться на контроллер,
Какова лучшая практика для решения такой ситуации?
1 ответ
Решение
Ты можешь сделать occupations
недвижимость:
import Ember from 'ember';
export default Ember.Controller.extend({
i18n: Ember.inject.service(),
occupations: function() {
var i18n = this.get('i18n');
return [
{code: 'student', name: i18n.t('occupations.student') },
{code: 'worker', name: "Worker"},
{code: 'retired', name: "Retired"},
{code: 'other', name: "Other"}
];
}.property()
});