我怎样才能翻译ember-cli中的路线?

时间:2017-02-27 15:44:58

标签: ember.js internationalization ember-cli translate

我在app / router.js

中创建了一些路线
Router.map(function () {
    let i18n = this.service('i18n');
    this.route("lang", { path: '/:lang' }, function () {
        this.route('home', { path: '/', template: 'home' });
        this.route('about', { path: '/' + i18n.t('router.about'), template: 'about' });
        this.route('locales', { path: '/' + i18n.t('router.locations'), template: 'locales' });
    });
});

但是i18n只是第一次翻译。

如何通过更改语言翻译这些路线?

我正在使用:

ember-cli:2.11.1

节点:7.4.0

ember-i18n:5.0.0

1 个答案:

答案 0 :(得分:0)

路线创建一次,您无法更改路线名称。

为了您的目标,您可以这样做:

//router.js

this.route("lang", {path: '/:lang'}, function() {
    this.route('register', {path: ':path'});
  });

在模板中:

//index.hbs
{{#link-to "lang.register" locale path}}{{t "routes.register"}}{{/link-to}}

并在相应的控制器中:

//controllers/index.js
i18n: Ember.inject.service(),

  locale: Ember.computed.readOnly('i18n.locale'),

  path: Ember.computed('locale', function() {
    return {
      path: this.get('i18n').t('routes.register')
    };
  }),

现在,根据i18n区域设置更改,您的路线网址已更改。

请查看this twiddle