From 47af3f09fcde27fc3ebe86c31e485249394c3390 Mon Sep 17 00:00:00 2001 From: Hung Nguyen Date: Tue, 17 Apr 2018 09:59:30 +0700 Subject: [PATCH 1/2] Centralized languages into 1 file --- browser/lib/Languages.js | 65 +++++++++++++++++++ browser/lib/i18n.js | 8 ++- browser/main/Main.js | 23 ++----- browser/main/modals/PreferencesModal/UiTab.js | 21 ++---- 4 files changed, 84 insertions(+), 33 deletions(-) create mode 100644 browser/lib/Languages.js diff --git a/browser/lib/Languages.js b/browser/lib/Languages.js new file mode 100644 index 00000000..f5262810 --- /dev/null +++ b/browser/lib/Languages.js @@ -0,0 +1,65 @@ +module.exports = { + languages: [ + { + name: 'Albanian', + locale: 'sq' + }, + { + name: 'Chinese (zh-CN)', + locale: 'zh-CN' + }, + { + name: 'Chinese (zh-TW)', + locale: 'zh-TW' + }, + { + name: 'Danish', + locale: 'da' + }, + { + name: 'English', + locale: 'en' + }, + { + name: 'French', + locale: 'fr' + }, + { + name: 'German', + locale: 'de' + }, + { + name: 'Hungarian', + locale: 'hu' + }, + { + name: 'Japanese', + locale: 'ja' + }, + { + name: 'Korean', + locale: 'ko' + }, + { + name: 'Norwegian', + locale: 'no' + }, + { + name: 'Polish', + locale: 'pl' + }, + { + name: 'Portuguese', + locale: 'pt' + }, + { + name: 'Russian', + locale: 'ru' + }, + { + name: 'Spanish', + locale: 'es-ES' + } + ] +} + diff --git a/browser/lib/i18n.js b/browser/lib/i18n.js index 0da1dd25..ce94dfee 100644 --- a/browser/lib/i18n.js +++ b/browser/lib/i18n.js @@ -1,11 +1,17 @@ const path = require('path') const { remote } = require('electron') const { app } = remote +const { languages } = require('./Languages.js') + +let locales = languages.reduce(function (localeList, locale) { + localeList.push(locale.locale) + return localeList +}, []) // load package for localization const i18n = new (require('i18n-2'))({ // setup some locales - other locales default to the first locale - locales: ['en', 'sq', 'zh-CN', 'zh-TW', 'da', 'fr', 'de', 'hu', 'ja', 'ko', 'no', 'pl', 'pt', 'es-ES'], + locales: locales, extension: '.json', directory: process.env.NODE_ENV === 'production' ? path.join(app.getAppPath(), './locales') diff --git a/browser/main/Main.js b/browser/main/Main.js index 14a56225..1fa5ba2b 100644 --- a/browser/main/Main.js +++ b/browser/main/Main.js @@ -15,6 +15,7 @@ import eventEmitter from 'browser/main/lib/eventEmitter' import { hashHistory } from 'react-router' import store from 'browser/main/store' import i18n from 'browser/lib/i18n' +import { languages } from 'browser/lib/Languages' const path = require('path') const electron = require('electron') const { remote } = electron @@ -152,24 +153,12 @@ class Main extends React.Component { document.body.setAttribute('data-theme', 'default') } - const supportedLanguages = [ - 'sq', - 'zh-CN', - 'zh-TW', - 'da', - 'fr', - 'de', - 'hu', - 'ja', - 'ko', - 'no', - 'pl', - 'pt', - 'ru', - 'es-ES' - ] + let locales = languages.reduce(function (localeList, locale) { + localeList.push(locale.locale) + return localeList + }, []) - if (supportedLanguages.indexOf(config.ui.language) !== -1) { + if (locales.indexOf(config.ui.language) !== -1) { i18n.setLocale(config.ui.language) } else { i18n.setLocale('en') diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js index 748c3914..189b1064 100644 --- a/browser/main/modals/PreferencesModal/UiTab.js +++ b/browser/main/modals/PreferencesModal/UiTab.js @@ -10,6 +10,7 @@ import CodeMirror from 'codemirror' import 'codemirror-mode-elixir' import _ from 'lodash' import i18n from 'browser/lib/i18n' +import { languages } from 'browser/lib/Languages' const OSX = global.process.platform === 'darwin' @@ -182,21 +183,11 @@ class UiTab extends React.Component { onChange={(e) => this.handleUIChange(e)} ref='uiLanguage' > - - - - - - - - - - - - - - - + { + languages.map((language) => { + return () + }) + } From d76db726c4fc656ebb2a1e5ecb5845fc03adc173 Mon Sep 17 00:00:00 2001 From: Hung Nguyen Date: Tue, 24 Apr 2018 18:06:10 +0700 Subject: [PATCH 2/2] refactored code according to review --- browser/lib/Languages.js | 134 ++++++++++-------- browser/lib/i18n.js | 9 +- browser/main/Main.js | 9 +- browser/main/modals/PreferencesModal/UiTab.js | 6 +- 4 files changed, 78 insertions(+), 80 deletions(-) diff --git a/browser/lib/Languages.js b/browser/lib/Languages.js index f5262810..09a1614e 100644 --- a/browser/lib/Languages.js +++ b/browser/lib/Languages.js @@ -1,65 +1,75 @@ +const languages = [ + { + name: 'Albanian', + locale: 'sq' + }, + { + name: 'Chinese (zh-CN)', + locale: 'zh-CN' + }, + { + name: 'Chinese (zh-TW)', + locale: 'zh-TW' + }, + { + name: 'Danish', + locale: 'da' + }, + { + name: 'English', + locale: 'en' + }, + { + name: 'French', + locale: 'fr' + }, + { + name: 'German', + locale: 'de' + }, + { + name: 'Hungarian', + locale: 'hu' + }, + { + name: 'Japanese', + locale: 'ja' + }, + { + name: 'Korean', + locale: 'ko' + }, + { + name: 'Norwegian', + locale: 'no' + }, + { + name: 'Polish', + locale: 'pl' + }, + { + name: 'Portuguese', + locale: 'pt' + }, + { + name: 'Russian', + locale: 'ru' + }, + { + name: 'Spanish', + locale: 'es-ES' + } +] + module.exports = { - languages: [ - { - name: 'Albanian', - locale: 'sq' - }, - { - name: 'Chinese (zh-CN)', - locale: 'zh-CN' - }, - { - name: 'Chinese (zh-TW)', - locale: 'zh-TW' - }, - { - name: 'Danish', - locale: 'da' - }, - { - name: 'English', - locale: 'en' - }, - { - name: 'French', - locale: 'fr' - }, - { - name: 'German', - locale: 'de' - }, - { - name: 'Hungarian', - locale: 'hu' - }, - { - name: 'Japanese', - locale: 'ja' - }, - { - name: 'Korean', - locale: 'ko' - }, - { - name: 'Norwegian', - locale: 'no' - }, - { - name: 'Polish', - locale: 'pl' - }, - { - name: 'Portuguese', - locale: 'pt' - }, - { - name: 'Russian', - locale: 'ru' - }, - { - name: 'Spanish', - locale: 'es-ES' - } - ] + getLocales () { + return languages.reduce(function (localeList, locale) { + localeList.push(locale.locale) + return localeList + }, []) + }, + getLanguages () { + return languages + } } diff --git a/browser/lib/i18n.js b/browser/lib/i18n.js index ce94dfee..e12e2aa6 100644 --- a/browser/lib/i18n.js +++ b/browser/lib/i18n.js @@ -1,17 +1,12 @@ const path = require('path') const { remote } = require('electron') const { app } = remote -const { languages } = require('./Languages.js') - -let locales = languages.reduce(function (localeList, locale) { - localeList.push(locale.locale) - return localeList -}, []) +const { getLocales } = require('./Languages.js') // load package for localization const i18n = new (require('i18n-2'))({ // setup some locales - other locales default to the first locale - locales: locales, + locales: getLocales(), extension: '.json', directory: process.env.NODE_ENV === 'production' ? path.join(app.getAppPath(), './locales') diff --git a/browser/main/Main.js b/browser/main/Main.js index 1fa5ba2b..9f1c06e7 100644 --- a/browser/main/Main.js +++ b/browser/main/Main.js @@ -15,7 +15,7 @@ import eventEmitter from 'browser/main/lib/eventEmitter' import { hashHistory } from 'react-router' import store from 'browser/main/store' import i18n from 'browser/lib/i18n' -import { languages } from 'browser/lib/Languages' +import { getLocales } from 'browser/lib/Languages' const path = require('path') const electron = require('electron') const { remote } = electron @@ -153,12 +153,7 @@ class Main extends React.Component { document.body.setAttribute('data-theme', 'default') } - let locales = languages.reduce(function (localeList, locale) { - localeList.push(locale.locale) - return localeList - }, []) - - if (locales.indexOf(config.ui.language) !== -1) { + if (getLocales().indexOf(config.ui.language) !== -1) { i18n.setLocale(config.ui.language) } else { i18n.setLocale('en') diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js index 189b1064..9c74255d 100644 --- a/browser/main/modals/PreferencesModal/UiTab.js +++ b/browser/main/modals/PreferencesModal/UiTab.js @@ -10,7 +10,7 @@ import CodeMirror from 'codemirror' import 'codemirror-mode-elixir' import _ from 'lodash' import i18n from 'browser/lib/i18n' -import { languages } from 'browser/lib/Languages' +import { getLanguages } from 'browser/lib/Languages' const OSX = global.process.platform === 'darwin' @@ -184,9 +184,7 @@ class UiTab extends React.Component { ref='uiLanguage' > { - languages.map((language) => { - return () - }) + getLanguages().map((language) => ) }