Транслитерация кириллицы в URL на JS

Приведённая ниже функция транслитерации на Javascript преобразует строку таким образом, что остаются только допустимые в URL символы. Это латинские буквы, дефис и цифры. Конечно в URI можно использовать что угодно, хоть русские буквы, но я решил для порядка ограничиться. Останутся латинские буквы, цифры и знак «-«. Кириллические буквы заменятся на аналоги(в конце поста приведена таблица транслитерации).

Данную функцию использую для составления URI из названия страницы. Насчёт соответствия какому либо ГОСТ-у не проверял, но вроде бы Яндекс понимает данную транслитерацию. Думаю код можно написать и попроще.

Если у кого нибудь есть примеры транлитерации  по ГОСТу и тем более по фен-шую Яндекса, прошу поделиться. Данный код писался на скорую руку.

И в догонку.

Таблица транслитерации

Типичные соответствия знаков в транслите
(более распространенные варианты даны первыми)
Буква Транслит Буква Транслит Буква Транслит
а a к k, c ч ch, č, 4
б b л l ш sh, š, w, 6
в v, w м m щ sh, sch, shch, šč,
shh, w
г g н n
д d, g о o ъ ‘, y, j, », #,
опускается
е e, ye, je п p
ё yo, jo, io, e р r ы y, i
ж zh, ž, j, z, g с s ь ‘, y, j,
опускается
з z, 3 т t
и i у u э e, e’, je, eh, ye
й y, j, i,
опускается;
-ий/ый → y, i
ф f
х h, x, kh ю yu, ju, iu, u
ц c, ts, z я ya, ja, ia, a

Давно искал такую таблицу, где всё описано, в частности замена в зависимости от положения буквы в слове.

Рубрики: JavaScript
Понравилось? Поделись с другими плз












Комментарии ВКонтакте





Комментарии с сайта
  1. Отличная функция, установил себе на сайт в админку! А то раньше на php транслитерировалось причем если вдруг с локалью не угадаешь то пустоту вместо транслита получишь. JS в этом плане облегчает работу.
    Кому надо в добавок написал JQuery код для удобного использования функции:

    $(function() {
    $(‘#inName’).change(function () {
    $(‘#outName’).val(cyr2lat($(this).val()));
    }
    );
    });

    Использовать соответственно так:

  2. (В ПРЕДЫДУЩЕМ КОММЕНТАРИИ html был вырезан случайно, поэтому дополняю тут)
    Использовать соответственно так: вставляете в input id=inName (сюда вводятся исходные данные на русском)
    А в input id=outName (текст в транслите на выходе)


Ответить Алексей

*