我的应用程序使用ember-i18n插件。出于搜索引擎优化的目的,我想在URL中添加/ [lang-code] /。
更改语言时,history.pushState可以更改URL,但是,即使router.rootURL已更改,页面上的链接也不会更改为新语言。
到目前为止,我只能更改window.location.pathname,但是正在进行新的网络请求。
我尝试重写href-to helper(从ember-href到addon)并添加了这个:
_recomputeOnLocaleChange: Ember.observer('i18n.locale', function() {
console.log("here?");
this.recompute();
})
它在区域设置更改时执行,但显然重新计算不执行任何操作。即使使用setTimeout(因为rootURL可能还没有改变)。链接都是一样的。
你能提出什么建议吗?非常感谢!谢谢!!
答案 0 :(得分:0)
在didTransition
文件的router.js
挂钩中,检查区域设置是否已更改,并将服务上的属性设置为新区域设置(如果有)。然后在你的助手中,你可以检查那个属性。
在router.js
:
oldI18nLocale: null,
didTransition() {
this._super(...arguments);
// ...
let i18nLocale = this.get('locale.i18n');
if (i18nLocale !== this.get('oldI18nLocale')) {
this.set('someService.i18nlocale', this.get('locale.i18n');
}
this.set('oldI18nLocale', i18nLocale));
}
在你的帮手中:
recomputeOnLocaleChange: Ember.observer('someService.i18nLocale', function() {
this.recompute();
})
希望这有效。