2017-02-27 4 views
2

私はアプリ/ router.jsember-cliでルートをどのように翻訳できますか?

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' }); 
    }); 
}); 

にいくつかのルートを作成した。しかし国際化は、初回のみを変換します。

どのようにこれらのルートを変更言語で翻訳できますか?

エンバー-CLI:2.11.1

ノード:7.4.0

ember-i18n:5.0.0

+1

をご覧ください。あなたがやっていることは非常に間違っているので、私はあなたの元の目標を聞きたいと思っています。 –

+0

URLのルート名を翻訳しますか?はいの場合は、しないでください!これは本当に悪い考えです。 – Lux

+0

@Lux、私はルートパスを翻訳しようとしています。 –

答えて

0

一度作成したルートを、あなたができない私が使用している

ルート名を変更してください。今、ルートのあなたのURLはに基づいて変更

//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') 
    }; 
    }), 

//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}} 

とコントローラを対応であなたのような操作を行うことができ、あなたの目標のために

i18nロケールが変更されます。その後、慎重にあなたが達成するために喜んでいるものを説明し、http://xyproblem.info:

このページをお読みくださいthis twiddle

+0

しかし、どのようにして同じ時間に現在のURIを変更できますか? –

+0

@BrunoSalgado私は自分のひねりを更新しました。 'changeLang'アクション –

+0

Ebrahimを見てください。これはうまくいきます。しかし、複数のルートを使用する場合、Emberは常に最初に定義されたルートを呼び出します。パスが動的であるためです(パス: '/:パス')。私を助けてくれますか? [twiddle](https://ember-twiddle.com/307a4a1e767d6feee843a10c87c443d8?openFiles=controllers.application.js%2C&route=%2Fen%2Fhome) –

関連する問題