mirror of
				https://github.com/elyby/accounts-frontend.git
				synced 2025-05-31 14:11:58 +05:30 
			
		
		
		
	
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import supportedLocales from 'app/i18n';
 | 
						||
 | 
						||
const localeToCountryCode: Record<string, string> = {
 | 
						||
    en: 'gb',
 | 
						||
    be: 'by',
 | 
						||
    pt: 'br',
 | 
						||
    uk: 'ua',
 | 
						||
    vi: 'vn',
 | 
						||
    sl: 'si',
 | 
						||
    sr: 'rs',
 | 
						||
    zh: 'cn',
 | 
						||
    cs: 'cz',
 | 
						||
};
 | 
						||
const SUPPORTED_LANGUAGES: ReadonlyArray<string> = Object.keys(supportedLocales);
 | 
						||
 | 
						||
export function getCountriesList(): string[] {
 | 
						||
    return SUPPORTED_LANGUAGES.map((locale) => localeToCountryCode[locale] || locale);
 | 
						||
}
 | 
						||
 | 
						||
const flagIconLoadingChain: ReadonlyArray<(locale: string) => { default: string }> = [
 | 
						||
    (locale) => require(`./flags/${locale}.svg`),
 | 
						||
    (locale) => require(`flag-icon-css/flags/4x3/${localeToCountryCode[locale] || locale}.svg`),
 | 
						||
];
 | 
						||
 | 
						||
/**
 | 
						||
 * Возвращает для указанной локали её флаг с учётом всех нюансов загрузки флага
 | 
						||
 * и подбора соответствующего локали флага.
 | 
						||
 *
 | 
						||
 * @param {string} locale
 | 
						||
 *
 | 
						||
 * @returns {string}
 | 
						||
 */
 | 
						||
export function getLocaleIconUrl(locale: string): string {
 | 
						||
    for (const flagIconLoadingChainElement of flagIconLoadingChain) {
 | 
						||
        try {
 | 
						||
            return flagIconLoadingChainElement(locale).default;
 | 
						||
        } catch (err) {
 | 
						||
            if (!err.message.startsWith('Cannot find module')) {
 | 
						||
                throw err;
 | 
						||
            }
 | 
						||
        }
 | 
						||
    }
 | 
						||
 | 
						||
    return require('./flags/unknown.svg').default;
 | 
						||
}
 |