diff --git a/browser/lib/Languages.js b/browser/lib/Languages.js
new file mode 100644
index 00000000..09a1614e
--- /dev/null
+++ b/browser/lib/Languages.js
@@ -0,0 +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 = {
+ 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 f7bd96e9..e12e2aa6 100644
--- a/browser/lib/i18n.js
+++ b/browser/lib/i18n.js
@@ -1,11 +1,12 @@
const path = require('path')
const { remote } = require('electron')
const { app } = remote
+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: [ 'da', 'de', 'en', 'es-ES', 'fr', 'hu', 'ja', 'ko', 'pl', 'pt-BR', 'pt-PT', 'ru', 'sq', 'zh-CN', 'zh-TW' ],
+ 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 14a56225..9f1c06e7 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 { getLocales } from 'browser/lib/Languages'
const path = require('path')
const electron = require('electron')
const { remote } = electron
@@ -152,24 +153,7 @@ 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'
- ]
-
- if (supportedLanguages.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 a092129a..9c74255d 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 { getLanguages } from 'browser/lib/Languages'
const OSX = global.process.platform === 'darwin'
@@ -182,22 +183,9 @@ class UiTab extends React.Component {
onChange={(e) => this.handleUIChange(e)}
ref='uiLanguage'
>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ {
+ getLanguages().map((language) => )
+ }