diff --git a/www/app/controllers/application.js b/www/app/controllers/application.js index b5a7ab3..6d6ccdc 100644 --- a/www/app/controllers/application.js +++ b/www/app/controllers/application.js @@ -1,4 +1,6 @@ -import Ember from 'ember'; + +import { computed } from '@ember/object'; +import $ from 'jquery'; import config from '../config/environment'; export default Ember.Controller.extend({ @@ -34,16 +36,16 @@ export default Ember.Controller.extend({ ethinr: Ember.computed('stats', { get() { - return parseFloat(this.get('model.exchangedata.price_inr')); + return parseFloat(this.get('model.exchangedata.price_inr')); } }), - ethusd: Ember.computed('stats', { + ethusd: Ember.computed('stats', { get() { - return parseFloat(this.get('model.exchangedata.current_price')); + return parseFloat(this.get('model.exchangedata.current_price')); } }), - + blockTime: Ember.computed('model.nodes', { get() { var node = this.get('bestNode'); @@ -53,10 +55,10 @@ export default Ember.Controller.extend({ return config.APP.BlockTime; } }), - + hashrate: Ember.computed('difficulty', { get() { - var blockTime = this.get('blockTime'); + var blockTime = this.get('blockTime'); return this.getWithDefault('difficulty', 0) / blockTime; } }), @@ -103,5 +105,23 @@ export default Ember.Controller.extend({ var epochOffset = (60000 - (this.getWithDefault('height', 1) % 30000)) * 1000 * this.get('blockTime'); return Date.now() + epochOffset; } + }), + languages: computed('model', { + get() { + return this.get('model.languages'); + } + }), + + selectedLanguage: computed({ + get() { + var langs = this.get('languages'); + var lang = $.cookie('lang'); + for (var i = 0; i < langs.length; i++) { + if (langs[i].value == lang) { + return langs[i].name; + } + } + return lang; + } }) }); diff --git a/www/app/index.html b/www/app/index.html index 4089090..3a2fa6a 100644 --- a/www/app/index.html +++ b/www/app/index.html @@ -8,7 +8,6 @@ ETC Mining Pool - {{content-for "head"}} = 0) { + if (locale === 'en') { + locale = 'en-us'; + } + } else { + locale = 'en-us'; + } + return locale; +} + + export default Ember.Route.extend({ intl: Ember.inject.service(), - + selectedLanguage: null, + languages: null, beforeModel() { - this.get('intl').setLocale('en-us'); + let locale = this.get('selectedLanguage'); + if (!locale) { + // read cookie + locale = Ember.$.cookie('lang'); + // pick a locale + locale = selectLocale(locale); + + this.get('intl').setLocale(locale); + Ember.$.cookie('lang', locale); + console.log('INFO: locale selected - ' + locale); + this.set('selectedLanguage', locale); + } + let intl = this.get('intl'); + this.set('languages', [ + { name: intl.t('lang.english'), value: 'en-us' }, + { name: intl.t('lang.arabic'), value: 'ar-sa' } + ]); + }, + + actions: { + selectLanguage: function (lang) { + let selected = lang; + if (typeof selected === 'undefined') { + return true; + } + let locale = selectLocale(selected); + this.get('intl').setLocale(locale); + this.set('selectedLanguage', locale); + Ember.$.cookie('lang', locale); + let languages = this.get('languages'); + for (var i = 0; i < languages.length; i++) { + if (languages[i].value == locale) { + Ember.$('#selectedLanguage').html(languages[i].name + ''); + break; + } + } + + + return true; + } }, - model: function() { + model: function () { var url = config.APP.ApiUrl + 'api/stats'; - return Ember.$.getJSON(url).then(function(data) { + return Ember.$.getJSON(url).then(function (data) { return Ember.Object.create(data); }); - }, + }, - setupController: function(controller, model) { + setupController: function (controller, model) { this._super(controller, model); Ember.run.later(this, this.refresh, 5000); + model.languages = this.get('languages'); } -}); +}); \ No newline at end of file diff --git a/www/translations/ar-sa.yaml b/www/translations/ar-sa.yaml new file mode 100644 index 0000000..0b9f1e6 --- /dev/null +++ b/www/translations/ar-sa.yaml @@ -0,0 +1,5 @@ +lang: + arabic: عربي + english: English +menu: + home: الرئيسية \ No newline at end of file diff --git a/www/translations/en-us.yaml b/www/translations/en-us.yaml index 8d7a308..203d223 100644 --- a/www/translations/en-us.yaml +++ b/www/translations/en-us.yaml @@ -1,4 +1,3 @@ - errors: header: Stats API Temporarily Down message: Usually it's just a temporal issue and mining is not affected. @@ -25,6 +24,7 @@ menu: language: language lang: + arabic: عربي english: English home: