Files
accounts-frontend/src/services/i18n.js

34 lines
1.1 KiB
JavaScript

import { addLocaleData } from 'react-intl';
import enLocaleData from 'react-intl/locale-data/en';
import ruLocaleData from 'react-intl/locale-data/ru';
const SUPPORTED_LANGUAGES = ['ru', 'en'];
const DEFAULT_LANGUAGE = 'en';
function getUserLanguages(userSelectedLang = []) {
return [].concat(userSelectedLang || [])
.concat(navigator.languages || [])
.concat(navigator.language || []);
}
function detectLanguage(userLanguages, availableLanguages, defaultLanguage) {
return (userLanguages || [])
.concat(defaultLanguage)
.map((lang) => lang.split('-').shift().toLowerCase())
.find((lang) => availableLanguages.indexOf(lang) !== -1);
}
export default {
detectLanguage(lang) {
return detectLanguage(getUserLanguages(lang), SUPPORTED_LANGUAGES, DEFAULT_LANGUAGE);
},
require(locale) {
// till we have not so many locales, we can require their data at once
addLocaleData(enLocaleData);
addLocaleData(ruLocaleData);
return new Promise(require(`bundle!i18n/${locale}.json`))
.then((messages) => ({locale, messages}));
}
};