2017-02-27 6 views
2

내가 응용 프로그램에서 어떤 경로를 생성/ember-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' }); 
    }); 
}); 

을 router.js 그러나 국제화는 처음으로 변환합니다.

어떻게 이러한 경로를 변경 언어로 번역 할 수 있습니까?

내가 사용 :

엠버을-CLI : 2.11.1

노드 : 7.4.0

ember-i18n : 5.0.0

+1

에서 봐 주시기 바랍니다. 당신이하고있는 일은 매우 잘못되었습니다. 따라서 목표 달성을위한 의도 된 접근 방식이 아니라 원래 목표를 듣고 싶습니다. –

+0

URL에서 경로 이름을 번역 하시겠습니까? 그렇다면하지 마십시오! 이것은 * 정말로 * 나쁜 생각입니다. – Lux

+0

@Lux, 경로 경로를 번역하려고합니다. –

답변

0

라우트 한 번 생성 당신은 할 수 없습니다 경로 이름을 변경하십시오.

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

이제 루트의 당신의 URL을 기반으로 변경 :

//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) –