53 lines
1.4 KiB
TypeScript
Raw Normal View History

import supportedLocales from 'app/i18n';
const localeToCountryCode: Record<string, string> = {
2020-05-24 02:08:24 +03:00
en: 'gb',
be: 'by',
pt: 'br',
uk: 'ua',
vi: 'vn',
sl: 'si',
sr: 'rs',
zh: 'cn',
2020-06-15 01:04:41 +03:00
cs: 'cz',
};
2019-12-07 13:28:52 +02:00
const SUPPORTED_LANGUAGES: string[] = Object.keys(supportedLocales);
export default {
2020-05-24 02:08:24 +03:00
getCountryList(): string[] {
return SUPPORTED_LANGUAGES.map((locale) => localeToCountryCode[locale] || locale);
},
2020-05-24 02:08:24 +03:00
/**
* Возвращает для указанной локали её флаг с учётом всех нюансов загрузки флага
* и подбора соответствующего локали флага.
*
* @param {string} locale
*
* @returns {string}
*/
getIconUrl(locale: string): string {
let mod;
try {
mod = require(`./flags/${locale}.svg`);
} catch (err1) {
if (!err1.message.startsWith('Cannot find module')) {
throw err1;
}
try {
mod = require(`flag-icon-css/flags/4x3/${localeToCountryCode[locale] || locale}.svg`);
} catch (err2) {
if (!err2.message.startsWith('Cannot find module')) {
throw err2;
}
mod = require('./flags/unknown.svg');
}
}
2019-12-25 13:30:47 +02:00
2020-05-24 02:08:24 +03:00
return mod.default || mod;
},
};