diff --git a/src/components/views/elements/LanguageDropdown.js b/src/components/views/elements/LanguageDropdown.js index 49f89aa469..25a920d2e0 100644 --- a/src/components/views/elements/LanguageDropdown.js +++ b/src/components/views/elements/LanguageDropdown.js @@ -40,7 +40,14 @@ export default class LanguageDropdown extends React.Component { } componentWillMount() { - languageHandler.getAllLanguagesFromJson().then((langs) => { + languageHandler.getAllLanguageKeysFromJson().then((langKeys) => { + const langs = []; + langKeys.forEach((languageKey) => { + langs.push({ + value: languageKey, + label: _t(languageKey) + }); + }); langs.sort(function(a, b){ if(a.label < b.label) return -1; if(a.label > b.label) return 1; diff --git a/src/languageHandler.js b/src/languageHandler.js index ab29dd926e..1c3acab082 100644 --- a/src/languageHandler.js +++ b/src/languageHandler.js @@ -133,7 +133,7 @@ export function setLanguage(preferredLangs) { throw new Error("Unable to find an appropriate language"); } - return getLanguage(i18nFolder + availLangs[langToUse].fileName); + return getLanguage(i18nFolder + availLangs[langToUse]); }).then((langData) => { counterpart.registerTranslations(langToUse, langData); counterpart.setLocale(langToUse); @@ -142,25 +142,16 @@ export function setLanguage(preferredLangs) { // Set 'en' as fallback language: if (langToUse != "en") { - return getLanguage(i18nFolder + availLangs['en'].fileName); + return getLanguage(i18nFolder + availLangs['en']); } }).then((langData) => { if (langData) counterpart.registerTranslations('en', langData); }); }; -export function getAllLanguagesFromJson() { - return getLangsJson().then((langsObject) => { - var langs = []; - for (var langKey in langsObject) { - if (langsObject.hasOwnProperty(langKey)) { - langs.push({ - 'value': langKey, - 'label': langsObject[langKey].label - }); - } - } - return langs; +export function getAllLanguageKeysFromJson() { + return getLangsJson().then((langs) => { + return Object.keys(langs); }); }