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 () + }) + }