
Предположим, вы захотели приукрасить в UI своего сайта опцию выбора страны/языка симпатичными эмодзи флагов. Превосходно! Это создаст дополнительный визуальный ориентир, который поможет пользователям быстро находить нужную страну, да и в целом это просто красиво.
Более того, вы даже можете легко реализовать динамическое определение иконок на основе кода региона:
// Смещение для корректировки кода ASCII каждого символа в строке кода ISO страны для определения соответствующего флага.
const EMOJI_CHARACTER_OFFSET = 127397;
const getEmojiForCountryCode = (countryCode: string) =>
String.fromCodePoint(
...countryCode
.toUpperCase()
.split('')
.map((char) => char.charCodeAt(0) + EMOJI_CHARACTER_OFFSET),
);
// "en-US"
const currentLanguageCode = navigator.language;
// "US"
const currentCountryCode = currentLanguageCode.split("-")[1];
// "🇺🇸"
getEmojiForCountryCode(currentCountryCode);
// "🇫🇷"
getEmojiForCountryCode("FR");
// "🇸🇪"
getEmojiForCountryCode("SE");
Всё идёт шикарно!
Как вдруг…