mirror of
				https://github.com/elyby/accounts-frontend.git
				synced 2025-05-31 14:11:58 +05:30 
			
		
		
		
	
		
			
				
	
	
		
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			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}));
 | 
						|
    }
 | 
						|
};
 |