В настоящее время я внедряю несколько языков в веб-приложение, использующее ember-i18n, и ищу способ, с помощью которого посетители и пользователи могут в любое время выбрать нужный язык.
Я следую учебному пособию, найденному здесь , создавая раскрывающееся меню, которое переключает язык содержимого на веб-странице, на которой это меню включено. Он позволяет переключать язык страницы без обновления.
Однако, когда я перехожу на новую страницу или обновляю текущую, язык возвращается к значению по умолчанию.
Как настроить веб-приложение таким образом, чтобы выбранный язык оставался активным при навигации по сайту? Нужно ли добавлять что-то еще, например, печенье?
Меню и текущая среда настроены следующим образом:
конфиг / environment.js
module.exports = function(environment) {
var ENV = {
...
i18n: {
defaultLocale: 'en'}
};
...
}
}
приложение / app.js
App = Ember.Application.extend({
locale: 'es',
...
});
приложение / компоненты / language.js
import Ember from 'ember';
export default Ember.Component.extend({
i18n: Ember.inject.service(),
classNames: ['language-select'],
locales: Ember.computed('i18n.locale', 'i18n.locales', function() {
const i18n = this.get('i18n');
return this.get('i18n.locales').map(function (loc) {
return { id: loc, text: i18n.t('language-select.language.' + loc) };
});
}),
actions: {
setLocale() {
this.set('i18n.locale', this.$('select').val());
}
}
});
приложение / шаблоны / Компоненты / язык select.hbs
<select {{action 'setLocale' on='change'}}>
{{#each locales as |loc|}}
<option value="{{loc.id}}" selected={{is-equal loc.id i18n.locale}}>
{{loc.text}}
</option>
{{/each}}
</select>
приложение / хелперы / есть-equal.js
import Ember from "ember";
export default Ember.Helper.helper(function([leftSide, rightSide]) {
return leftSide === rightSide;
});
приложение / index.hbs
...
<p>{{language-select}}</p>
...
Кроме того, у меня есть свои локали.