From db038b1e57909c37c6235d11d963abcfa7a85eec Mon Sep 17 00:00:00 2001 From: jelhan Date: Mon, 7 Dec 2015 22:21:38 +0100 Subject: [PATCH] fix locale storage in cookie --- app/components/language-select.js | 11 +++++++---- app/controllers/application.js | 14 -------------- app/instance-initializers/i18n.js | 15 +++++++++++++-- app/templates/components/language-select.hbs | 2 +- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/app/components/language-select.js b/app/components/language-select.js index b1fe62d..50ca66c 100644 --- a/app/components/language-select.js +++ b/app/components/language-select.js @@ -1,5 +1,4 @@ import Ember from 'ember'; -/* global webshim */ export default Ember.Component.extend({ tagName: 'select', @@ -9,15 +8,19 @@ export default Ember.Component.extend({ current: Ember.computed.readOnly('i18n.locale'), locales: Ember.computed('i18n.locales', function() { + var currentLocale = this.get('i18n.locale'); + return this.get('i18n.locales').map(function (locale) { - return { id: locale, text: locale }; + return { + id: locale, + selected: locale === currentLocale, + text: locale + }; }); }), change() { var locale = this.$().val(); this.get('i18n').set('locale', locale); - this.get('moment').changeLocale(locale); - webshim.activeLang(locale); } }); diff --git a/app/controllers/application.js b/app/controllers/application.js index e69223e..033c675 100644 --- a/app/controllers/application.js +++ b/app/controllers/application.js @@ -1,18 +1,4 @@ import Ember from "ember"; -/* global moment */ export default Ember.Controller.extend({ - i18n: Ember.inject.service(), - - languageChanged: function() { - // change language - var language = this.get('i18n.locale'); - - // save language in cookie - document.cookie="language=" + language + ";" + - // give cookie a lifetime of one year - "max-age=" + 60*60*24*356 + ";"; - - moment.locale(language); - }.observes('i18n.locale') }); diff --git a/app/instance-initializers/i18n.js b/app/instance-initializers/i18n.js index d61f9cd..cdd2c5c 100644 --- a/app/instance-initializers/i18n.js +++ b/app/instance-initializers/i18n.js @@ -11,13 +11,24 @@ export default { i18n.set('locale', locale); moment.changeLocale(locale); webshim.activeLang(locale); + + i18n.addObserver('locale', i18n, function() { + var locale = this.get('locale'); + moment.changeLocale(locale); + webshim.activeLang(locale); + + // save selected locale in cookie + document.cookie="language=" + locale + ";" + + // give cookie a lifetime of one year + "max-age=" + 60*60*24*356 + ";"; + }); } }; function getLocale(availableLocales) { var methods = [ - getLocaleByBrowser, - getLocaleFromCookie + getLocaleFromCookie, + getLocaleByBrowser ]; var locale; diff --git a/app/templates/components/language-select.hbs b/app/templates/components/language-select.hbs index 0d012ae..de1d044 100644 --- a/app/templates/components/language-select.hbs +++ b/app/templates/components/language-select.hbs @@ -1,3 +1,3 @@ {{#each locales as |locale|}} - + {{/each}}