キリル文字をラテン文字に変換

Pocket

ソチ冬季五輪が始まります。開会式は明日2月7日ですが競技は既に始まっているそうです。
ソチは黒海の畔にある街でロシア語では「Сочи」と表記されます。アルファベットの一種でキリル文字と呼ぶそうです。
英語のアルファベットはラテン文字です。
下に対比表を示します。
С→S
о→o
ч→ch
и→i
このように変換できるので英語では「Sochi」と表記されます。

JavaScriptで変換する関数を作ってみました。Text2Whatで試せます。

cyrillic2latin

function cyrillic2latin(text) {
  var cyrillic, latin, cyrillic_length, i, re;
  cyrillic = ["А", "Б", "В", "Г", "Д", "Е", "Ё", "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Ъ", "Ы", "Ь", "Э", "Ю", "Я", "а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я"];
  latin = ["A", "B", "V", "G", "D", "Je", "Jo", "Zh", "Z", "I", "J", "K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "F", "X", "C", "Ch", "Sh", "Q", "", "Y", "", "E", "Ju", "Ja", "a", "b", "v", "g", "d", "je", "jo", "zh", "z", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f", "x", "c", "ch", "sh", "q", "", "y", "", "e", "ju", "ja"];
  cyrillic_length = cyrillic.length;
  for (i = 0; i < cyrillic_length; i++) {
    re = new RegExp(cyrillic[i], "g");
    text = text.replace(re, latin[i]);
  }
  return text;
}

対比表

大文字 小文字
キリル文字 ラテン文字 キリル文字 ラテン文字
А A а a
Б B б b
В V в v
Г G г g
Д D д d
Е Je е je
Ё Jo ё jo
Ж Zh ж zh
З Z з z
И I и i
Й J й j
К K к k
Л L л l
М M м m
Н N н n
О O о o
П P п p
Р R р r
С S с s
Т T т t
У U у u
Ф F ф f
Х X х x
Ц C ц c
Ч Ch ч ch
Ш Sh ш sh
Щ Q щ q
Ъ 分離記号 ъ 分離記号
Ы Y ы y
Ь 軟音記号 ь 軟音記号
Э E э e
Ю Ju ю ju
Я Ja я ja

[ 2014年2月6日 | カテゴリー: JavaScript | タグ: , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報