JavaScript | Транслитерация с русского на английский

JavaScript | Транслитерация с русского на английский

Рабочий пример

Функция транслитерации с русского на английский на JavaScript

В одну строку:

function translitRuEn(str){ var magic = function(lit){ var arrayLits = [ ["а","a"], ["б","b"], ["в","v"], ["г","g"], ["д","d"], ["е","e"], ["ё","yo"], ["ж","zh"], ["з","z"], ["и","i"], ["й","j"], ["к","k"], ["л","l"], ["м","m"], ["н","n"], ["о","o"], ["п","p"], ["р","r"], ["с","s"], ["т","t"], ["у","u"], ["ф","f"], ["х","h"], ["ц","c"], ["ч","ch"], ["ш","w"], ["щ","shh"], ["ъ","''"], ["ы","y"], ["ь","'"], ["э","e"], ["ю","yu"], ["я","ya"], ["А","A"], ["Б","B"], ["В","V"], ["Г","G"], ["Д","D"], ["Е","E"], ["Ё","YO"], ["Ж","ZH"], ["З","Z"], ["И","I"], ["Й","J"], ["К","K"], ["Л","L"], ["М","M"], ["Н","N"], ["О","O"], ["П","P"], ["Р","R"], ["С","S"], ["Т","T"], ["У","U"], ["Ф","F"], ["Х","H"], ["Ц","C"], ["Ч","CH"], ["Ш","W"], ["Щ","SHH"], ["Ъ",""], ["Ы","Y"], ["Ь",""], ["Э","E"], ["Ю","YU"], ["Я","YA"], ["0","0"], ["1","1"], ["2","2"], ["3","3"], ["4","4"], ["5","5"], ["6","6"], ["7","7"], ["8","8"], ["9","9"], ["a", "a"], ["b", "b"], ["c", "c"], ["d", "d"], ["e", "e"], ["f", "f"], ["g", "g"], ["h", "h"], ["i", "i"], ["j", "j"], ["k", "k"], ["l", "l"], ["m", "m"], ["n", "n"], ["o", "o"], ["p", "p"], ["q", "q"], ["r", "r"], ["s", "s"], ["t", "t"], ["u", "u"], ["v", "v"], ["w", "w"], ["x", "x"], ["y", "y"], ["z", "z"], ["A", "A"], ["B", "B"], ["C", "C"], ["D", "D"], ["E", "E"], ["F", "F"], ["G", "G"], ["H", "H"], ["I", "I"], ["J", "J"], ["K", "K"], ["L", "L"], ["M", "M"], ["N", "N"], ["O", "O"], ["P", "P"], ["Q", "Q"], ["R", "R"], ["S", "S"], ["T", "T"], ["U", "U"], ["V", "V"], ["W", "W"], ["X", "X"], ["Y", "Y"], ["Z", "Z"] ]; var efim360ru = arrayLits.map(i=>{if (i[0]===lit){return i[1]}else{return undefined}}).filter(i=>i!=undefined); if (efim360ru.length>0){return efim360ru[0]} else{return "-"} }; return Array.from(str).map(i=>magic(i)).join("") }

 

Зачем нужна транслитерация?

Транислитерация распространяется на порядок передачи средствами базового латинского алфавита отдельных русских букв, слов, выражений и связных текстов на русском языке и устанавливает правила передачи для тех случаев, когда не требуется обеспечивать алгоритмического восстановления исходного русского текста, но требуется дать возможность приемлемого звучания текста при чтении его лицами, не владеющими в достаточной мере русским языком.

Основной смысл трансилтерации — это дать схожее звучание слов твоего языка, для носителей другого языка буквами их алфавита.

В английском алфавите нет буквы «Ё» или «Ы», тем более нет схожих по звучанию букв. Если иностранец не знает русского алфавита, то он не поймёт как звучат эти буквы. Именно для этого и нужна транслитерция, чтобы дать понять иностранцу, как звучит слово русского языка при помощи букв его собственного языка.

 

Как автоматически писать русские слова английскими буквами?

Для начала необходимо подготовить таблицу соответствий букв русского языка с буквами английского языка. Проще всего это сделать в виде массивов, где первым элементом будет буква русского алфавита, а вторым — английского.

У любого языка существуют строчные и заглавные буквы, поэтому символьные наборы будут в два раза больше, чем количество букв в алфавите.

Ещё стоит отметить, что «переходы» из языка в язык могут быть четырёх видов:

  1. один знак в один знак (идеальный вариант, не изменяет длины строки)
  2. один знак в последовательность знаков (увеличивает длину строки)
  3. последовательность нескольких знаков в один знак (уменьшает длину строки)
  4. последовательность нескольких знаков в последовательность нескольких знаков (может иметь разную длину)

 

Функция для строчных букв русского алфавита

function translitRuEnLowercase (lit) {
   var lower_case = [
      ["а","a"],
      ["б","b"],
      ["в","v"],
      ["г","g"],
      ["д","d"],
      ["е","e"],
      ["ё","yo"],
      ["ж","zh"],
      ["з","z"],
      ["и","i"],
      ["й","j"],
      ["к","k"],
      ["л","l"],
      ["м","m"],
      ["н","n"],
      ["о","o"],
      ["п","p"],
      ["р","r"],
      ["с","s"],
      ["т","t"],
      ["у","u"],
      ["ф","f"],
      ["х","h"],
      ["ц","c"],
      ["ч","ch"],
      ["ш","sh"],
      ["щ","shh"],
      ["ъ",""],
      ["ы","y"],
      ["ь",""],
      ["э","e"],
      ["ю","yu"],
      ["я","ya"]
   ]
   return lower_case.filter(i=>i[0]===lit)[0][1]    
}

 

Функция для заглавных букв русского алфавита

function translitRuEnUppercase (lit) {
   var upper_case = [
      ["А","A"],
      ["Б","B"],
      ["В","V"],
      ["Г","G"],
      ["Д","D"],
      ["Е","E"],
      ["Ё","YO"],
      ["Ж","ZH"],
      ["З","Z"],
      ["И","I"],
      ["Й","J"],
      ["К","K"],
      ["Л","L"],
      ["М","M"],
      ["Н","N"],
      ["О","O"],
      ["П","P"],
      ["Р","R"],
      ["С","S"],
      ["Т","T"],
      ["У","U"],
      ["Ф","F"],
      ["Х","H"],
      ["Ц","C"],
      ["Ч","CH"],
      ["Ш","SH"],
      ["Щ","SHH"],
      ["Ъ",""],
      ["Ы","Y"],
      ["Ь",""],
      ["Э","E"],
      ["Ю","YU"],
      ["Я","YA"]
   ]
   return upper_case.filter(i=>i[0]===lit)[0][1]
}

 

Функция для строчных букв английского алфавита

function translitEnEnLowercase (lit) {
   var lower_case = [
      ["a", "a"],
      ["b", "b"],
      ["c", "c"],
      ["d", "d"],
      ["e", "e"],
      ["f", "f"],
      ["g", "g"],
      ["h", "h"],
      ["i", "i"],
      ["j", "j"],
      ["k", "k"],
      ["l", "l"],
      ["m", "m"],
      ["n", "n"],
      ["o", "o"],
      ["p", "p"],
      ["q", "q"],
      ["r", "r"],
      ["s", "s"],
      ["t", "t"],
      ["u", "u"],
      ["v", "v"],
      ["w", "w"],
      ["x", "x"],
      ["y", "y"],
      ["z", "z"]
   ]
   return lower_case.filter(i=>i[0]===lit)[0][1]    
}

Функция для заглавных букв английского алфавита

function translitEnEnUppercase (lit) {
   var upper_case = [
      ["A", "A"],
      ["B", "B"],
      ["C", "C"],
      ["D", "D"],
      ["E", "E"],
      ["F", "F"],
      ["G", "G"],
      ["H", "H"],
      ["I", "I"],
      ["J", "J"],
      ["K", "K"],
      ["L", "L"],
      ["M", "M"],
      ["N", "N"],
      ["O", "O"],
      ["P", "P"],
      ["Q", "Q"],
      ["R", "R"],
      ["S", "S"],
      ["T", "T"],
      ["U", "U"],
      ["V", "V"],
      ["W", "W"],
      ["X", "X"],
      ["Y", "Y"],
      ["Z", "Z"]
   ]
   return upper_case.filter(i=>i[0]===lit)[0][1]    
}

 

Функция для цифр

function translitNUM (lit) {
   var num = [
      [0,"0"],
      [1,"1"],
      [2,"2"],
      [3,"3"],
      [4,"4"],
      [5,"5"],
      [6,"6"],
      [7,"7"],
      [8,"8"],
      [9,"9"],
      ["0","0"],
      ["1","1"],
      ["2","2"],
      ["3","3"],
      ["4","4"],
      ["5","5"],
      ["6","6"],
      ["7","7"],
      ["8","8"],
      ["9","9"]
   ]
   return num.filter(i=>i[0]===lit)[0][1]    
}

 

 

Информационные ссылки

JavaScript | Русский алфавит

JavaScript | Массивы (Array)

JavaScript | Строки (String)