UNPKG

cyrillic-romanization

Version:

Convert Cyrillic characters to Latin characters (transliteration)

67 lines (66 loc) 2.54 kB
import { mappingAlphabet } from './mapping.js'; export default function cyrillicToLatin(input, language) { let newString = ''; if (language === 'bul') { input = input.replace(/ия(?=$|[\s.,])/gi, 'ia'); } if (language === 'ukr') { input = input.replace(/(?<!\S)Є/g, 'Ye'); input = input.replace(/(?<!\S)є/g, 'ye'); input = input.replace(/(?<!\S)Ї/g, 'Yi'); input = input.replace(/(?<!\S)i/g, 'yi'); input = input.replace(/(?<!\S)Й/g, 'Y'); input = input.replace(/(?<!\S)й/g, 'y'); input = input.replace(/(?<!\S)Ю/g, 'Yu'); input = input.replace(/(?<!\S)ю/g, 'yu'); input = input.replace(/(?<!\S)Я/g, 'Ya'); input = input.replace(/(?<!\S)я/g, 'ya'); input = input.replace(/Зг/g, 'Zgh'); input = input.replace(/зг/g, 'zgh'); } if (language === 'uzb') { input = input.replace(/(?<!\S)Е/g, 'Ye'); input = input.replace(/(?<!\S)е/g, 'ye'); } for (let i = 0; i < input.length; i++) { const char = input[i]; if (language === 'alalc') { newString += mappingAlphabet.alalc[char] || char; } else if (language === 'bul') { newString += mappingAlphabet.bulgarian[char] || char; } else if (language === 'cnr') { newString += mappingAlphabet.montenegrin[char] || char; } else if (language === 'kaz') { newString += mappingAlphabet.kazakh[char] || char; } else if (language === 'mkd') { newString += mappingAlphabet.macedonian[char] || char; } else if (language === 'mon') { newString += mappingAlphabet.mongolian[char] || char; } else if (language === 'rus' || language === 'bel') { newString += mappingAlphabet.russian[char] || char; } else if (language === 'srp') { newString += mappingAlphabet.serbian[char] || char; } else if (language === 'ukr') { newString += mappingAlphabet.ukrainian[char] || char; } else if (language === 'uzb') { newString += mappingAlphabet.uzbek[char] || char; } else { newString += mappingAlphabet.iso9[char] || char; } } if (language === 'rus' || language === 'bel') { newString = newString.replace(/[C]z([ieyj])/g, `C${'$1'}`); newString = newString.replace(/[c]z([ieyj])/g, `c${'$1'}`); } return newString; }