我对ember-i18n有以下问题:
Error: Attempting to inject an unknown injection: 'service:i18n'
at Registry.validateInjections (ember.debug.js:2303)
at ember.debug.js:1538
at runInDebug (ember.debug.js:5813)
at Object.runInDebug (ember.debug.js:17396)
at instantiate (ember.debug.js:1532)
at lookup (ember.debug.js:1385)
at Container.lookup (ember.debug.js:1304)
at Class.lookup (ember.debug.js:32564)
at Class._internalGetHandler (router-ext.js:107)
at Class._getHandlerForEngine (router-ext.js:84)
我在ember引擎中使用了ember-i18n插件。我的i18n初始值设定项addon/instance-initializers/i18n.js
:
export default {
name: 'i18n',
initialize: function(applicationInstance) {
const i18nService = applicationInstance.lookup('service:i18n');
i18nService.set('defaultLocale', window.I18n.defaultLocale);
i18nService.set('locale', window.I18n.locale);
}
};
在我的索引路由(routes/index.js
)中,我有以下代码:
import Ember from 'ember';
export default Ember.Route.extend({
i18n: Ember.inject.service(),
actions: {
didTransition() {
Ember.run.scheduleOnce('afterRender', this, function() {
console.log(this.get('i18n').t('error_empty_user_data'));
// ....
});
}
}
});
如何申报i18n服务?
我使用的是ember-18n 4.5.0版本和2.10.0 ember-cli版本。
答案 0 :(得分:1)
初始值设定项应在i18n
之后运行。
export default {
name: 'i18n',
after: ['ember-i18n'],
initialize: function(applicationInstance) {
const i18nService = applicationInstance.lookup('service:i18n');
i18nService.set('defaultLocale', window.I18n.defaultLocale);
i18nService.set('locale', window.I18n.locale);
}
};