webapp/src/utils/ru2en.ts

81 lines
985 B
TypeScript
Raw Normal View History

2022-09-09 11:53:35 +00:00
const ru2en: { [key: string]: string } = {
А: 'A',
а: 'a',
Б: 'B',
б: 'b',
В: 'V',
в: 'v',
Г: 'G',
г: 'g',
Д: 'D',
д: 'd',
Е: 'E',
е: 'e',
Ё: 'E',
ё: 'e',
Ж: 'Zh',
ж: 'zh',
З: 'Z',
з: 'z',
И: 'I',
и: 'i',
Й: 'Y',
й: 'y',
К: 'K',
к: 'k',
Л: 'L',
л: 'l',
М: 'M',
м: 'm',
Н: 'N',
н: 'n',
О: 'O',
о: 'o',
П: 'P',
п: 'p',
Р: 'R',
р: 'r',
С: 'S',
с: 's',
Т: 'T',
т: 't',
У: 'U',
у: 'u',
Ф: 'F',
ф: 'f',
Х: 'Kh',
х: 'kh',
Ц: 'Ts',
ц: 'ts',
Ч: 'Ch',
ч: 'ch',
Ш: 'Sh',
ш: 'sh',
Щ: 'Sch',
щ: 'sch',
ь: 'i',
Ы: 'Y',
ы: 'y',
2022-10-05 08:55:26 +00:00
ъ: 'j',
2022-09-09 11:53:35 +00:00
Э: 'E',
э: 'e',
Ю: 'Yu',
ю: 'yu',
Я: 'Ya',
я: 'ya'
}
export const translit = (str: string) => {
if (!str) {
return ''
}
2022-09-09 11:53:35 +00:00
const isCyrillic = /[ЁА-яё]/.test(str)
2022-09-09 11:53:35 +00:00
if (!isCyrillic) {
return str
}
2022-09-09 11:53:35 +00:00
return [...str].map((c) => ru2en[c] || c).join('')
2022-09-09 11:53:35 +00:00
}