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