2017-02-27 1 views
2

ich einige Routen in App erstellt/router.jsWie kann ich Routen in ember-cli übersetzen?

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

Aber die i18n übersetzt nur das erste Mal.

Wie kann ich diese Routen übersetzen, indem ich die Sprache ändere?

Ich verwende:

glut-cli: 2.11.1

Knoten: 7.4.0

ember-i18n: 5.0.0

+1

Bitte lesen Sie diese Seite: http://xyproblem.info, dann sorgfältig beschreiben, was Sie zu erreichen bereit sind, zu. Was du tust, ist sehr falsch, also möchte ich dein ursprüngliches Ziel hören, nicht deinen beabsichtigten Ansatz, es zu erreichen. –

+0

Möchten Sie die Routennamen in der URL übersetzen? Wenn ja, nicht! Das ist eine * wirklich * schlechte Idee. – Lux

+0

@Lux, ich versuche den Routenpfad zu übersetzen. –

Antwort

0

Die Routen einmal erstellt und Sie können nicht Ändern Sie die Routennamen.

Für Ihr Ziel können Sie tun:

//router.js 

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

Und in Vorlage:

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

und in entsprechenden Controller:

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

Jetzt Ihre URL von Routen geändert basierend auf i18n Gebietsschema ändern.

Bitte nehmen Sie sich einen Blick auf this twiddle

+0

Aber wie kann ich den aktuellen URI in der gleichen Zeit ändern? –

+0

@BrunoSalgado Ich aktualisierte meine Twiddle. Bitte schauen Sie sich 'ChangeLang' Aktion –

+0

Ebrahim, das funktioniert gut. Aber wenn ich mehr als eine Route nutze, ruft Ember immer die erste definierte Route an. Der Pfad ist dynamisch (Pfad: '/: Pfad'). Kannst du mir bitte helfen? [Twiddle] (https://ember-twiddle.com/307a4a1e767d6feee843a10c87c443d8?openFiles=controllers.application.js%2C&route=%2Fen%2Fhome) –

Verwandte Themen