Система транслитерации русского письма на латиницу


Автор: Андрей Владимирович Лукьянов // © 2008 // e-mail: land@long.yar.ru


Опубликовано: 2008-02-01
Последняя правка: 2008-02-19

◄ К оглавлению сайта ◄


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

Основы

Предлагаемая система транслитерации построена на следующих принципах:

1) Принцип обратимости: при круговом преобразовании кириллица → латиница → кириллица русский текст в точности восстанавливается (причём не только обычный русский текст, но и вообще любая последовательность русских букв). Вследствие этого, если мы печатаем латиницей с целью её последующей конвертации в кириллицу, то можно изначально задать точную последовательность русских букв, которая должна в итоге получиться.

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

2) Используется только базовая латиница (без каких-либо диакритических знаков). Использование диакритики сразу лишает латиницу главного преимущества — её «вездеходности». Ведь на латиницу приходится переходить там, где русские буквы недоступны; а если русские буквы недоступны, то, скорее всего, и латинские буквы с диакритикой тоже недоступны.

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

3) Система организована таким образом, чтобы написания латиницей не были слишком уж непривычными и были достаточно близки к распространённым в Интернете вариантам «транслита» (за исключением небольшого числа маргинальных случаев); также была принята во внимание структура русской фонетики. Это приводит к некоторому усложнению и запутыванию системы.

Правила перехода от кириллицы к латинице и от латиницы к кириллице описаны в нижеприведённых таблицах; кроме того, приведены перекодирующие программы (скрипты) на языке sed (см. Википедия:sed).

Применение

Описание

H (аш)

Буква H в латинице используется только в составе неразделимых сочетаний CH NH SH XH ZH EH IH JH YH  (можно даже считать их едиными буквами).

CH SH XH ZH взаимно однозначно соответствуют русским буквам Ч Ш Щ Ж.

EH IH JH YH обозначают русские буквы Э Й Ь Ы  (но чаще эти русские буквы обозначаются по-другому).

NH всегда обозначает № (знак номера).

J и Y

Несколько запутанным является использование букв J и Y  (не в составе сочетаний JH YH).

J обозначает либо звук [й] (перед гласной или на конце слова после гласной: pjanyj пьяный, vorobji воробьи), либо смягчение предшествующей согласной (после согласной — на конце слова или перед другой согласной: ugolj уголь, konjki коньки, Jaroslavlj Ярославль).

Y обозначает либо смягчение предыдущей согласной (после согласной перед гласной: dyadya дядя), либо звук [ы] (перед согласной, перед I J Y, на конце слова: lyzhi лыжи, sny сны), либо звук [й] (после гласной или в начале слова — перед A E O U: yod йод (не jod ёд), rayon район (не rajon раён), Mayami Майами (не Majami Маями или Majjami Майями), Nju-York Нью-Йорк (не Nju-Jork Нью-Ёрк), Yemen Йемен (не Jemen Емен)).

Перед гласными — в начале слова или после другой гласной — звук [й] обозначается либо J, либо Y, в зависимости от русского написания: написания ЙА ЙЕ ЙО ЙУ передаются как YA YE YO YU, а Я Е Ё Ю — как JA JE JO JU  (однако сочетания ЙИ ЙЫ ЙЭ всегда записываются JI JY JEH).

Чтобы однозначно передать русские буквы Й Ь Ы вне зависимости от контекста, используются сочетания IH JH YH  (buljhon бульон, не buljon бульён, vyhuchitj выучить, не vyuchitj вючить).

Другие буквы

Русская буква Э передаётся как латинская E в начале слова и после гласных, и как EH после согласных: eto это, poet поэт, sehr сэр.

Русская буква И всегда передаётся как латинская I, и латинская I (не в составе сочетания IH) всегда обозначает И.

Использование или неиспользование буквы Ё влияет и на транслитерацию, например: черный → chernyj, чёрный → chyornyj  (не chornyj чорный).

Твёрдый знак обозначается буквой Q: podqjom подъём (не podjom подьём), razqjezd разъезд (не razjezd разьезд), adqjutant адъютант (не adjutant адьютант)

Пример текста

Ippolit Matvejevich prosnulsya po privychke v polovine vosjmogo, prorokotal «gut morgen» i napravilsya k otlivu, naxodivshemusya tut zhe v dvornickoj. On umyvalsya s naslazhdenijem, otplevyvalsya, prichital i tryas golovoj, chtoby izbavitjsya ot vody, nabezhavshej v ushi. Vytiratjsya bylo prijatno, no, otnyav ot lica polotence, Ippolit Matvejevich uvidel, chto ono ispachkano tem radikaljno-chernym cvetom, kotorym s pozavcherashnego dnya byli okrasheny jego gorizontaljnyje usy. Serdce Ippolita Matvejevicha srazu potuxlo. On brosilsya k svojemu karmannomu zerkaljcu, kotoroje lezhalo na stule. V zerkaljce otrazilsya boljshoj nos i zelenyj, kak molodaja travka, levyj us. Ippolit Matvejevich pospeshno peredvinul zerkaljce napravo. Pravyj us byl togo zhe omerziteljnogo cveta. Nagnuv golovu, slovno zhelaja zabodatj zerkaljce, neschastnyj uvidel, chto radikaljnyj chernyj cvet jexhe gospodstvoval v centre kare, no po krajam byl obsazhen toju zhe travyanistoj kajmoj. Vse suxhestvo Ippolita Matvejevicha izdalo takoj gromkij ston, chto Ostap Bender otkryl svoi chistyje golubyje glaza. (Iljf+Petrov, «Dvenadcatj stuljev»)

Возможная модификация

Если данная система используется как метод ввода русского текста, то можно применить букву W для набора значка ударения, ставя её после ударной буквы, например: печатаем zawmok → получаем за́мок, печатаем zamowk → получаем замо́к.

(В немодифицированной системе буква W не используется; при преобразовании латиница → кириллица заменяется на русскую В.)

Таблицы

Кириллица → латиница

Гласные: А Е Ё И О У Ы Э Ю Я
Согласные: Б В Г Д Ж З К Л М Н П Р С Т Ф Х Ц Ч Ш Щ
Прочие: Й Ъ Ь

рус.лат.примечание
Аa
Бb
Вv
Гg
Дd
Еje, e«e» после согласных и Й (если Й идёт не после согласной); «je» во всех остальных случаях
Ёjo, yo«yo» после согласных; «jo» во всех остальных случаях
Жzh
Зz
Иi
Йj, y, ih«y» после гласных и Й Ъ Ь или в начале слова — перед А, Е, О, У;  «ih» после согласных;  «j» во всех остальных случаях
Кk
Лl
Мm
Нn
Оo
Пp
Рr
Сs
Тt
Уu
Фf
Хx
Цc
Чch
Шsh
Щxh
Ъq
Ыy, yh«yh» перед А, О, У, Э;  «y» во всех остальных случаях
Ь—, j, jh«пусто» после согласных перед Е Ё Ю Я; «j» после согласной — перед согласной, перед И Й, в конце слова; «jh» во всех остальных случаях
Эe, eh«eh» после согласных и Й;  «e» во всех остальных случаях
Юju, yu«yu» после согласных;  «ju» во всех остальных случаях
Яja, ya«ya» после согласных;  «ja» во всех остальных случаях

Латиница → кириллица

Согласные: B C CH D F G (H) K L M N P R S SH T V W X XH Z ZH
(H не в составе сочетаний EH, IH, JH, YH)

В первую очередь обрабатываются буквосочетания, затем все оставшиеся буквы:

лат.рус.примечание
EHэ
IHй
JHь
YHы
CHч
SHш
XHщ
ZHж
NH
JAья, я«ья» после согласных, «я» во всех остальных случаях
JEье, е«ье» после согласных, «е» во всех остальных случаях
JIьи, йи«ьи» после согласных, «йи» во всех остальных случаях
JOьё, ё«ьё» после согласных, «ё» во всех остальных случаях
JUью, ю«ью» после согласных, «ю» во всех остальных случаях
YAя, йа«я» после согласных, «йа» во всех остальных случаях
YEе, йе«е» после согласных, «йе» во всех остальных случаях
YOё, йо«ё» после согласных, «йо» во всех остальных случаях
YUю, йу«ю» после согласных, «йу» во всех остальных случаях
Aа
Bб
Cц
Dд
Eе, э«е» после согласных, «э» во всех остальных случаях
Fф
Gг
Hхдля совместимости; обычно русская «х» обозначается латинской «x»
Iи
Jй, ь«ь» после согласных, «й» во всех остальных случаях
Kк
Lл
Mм
Nн
Oо
Pп
Qъ
Rр
Sс
Tт
Uу
Vв
Wвдля совместимости; обычно русская «в» обозначается латинской «v»
Xх
Yы
Zз

Программы

Эти скрипты для sed. Их нужно сохранить в отдельные файлы, преобразовать к кодировке, используемой в вашей системе, и установить бит исполняемости.

RUSLAT перекодирует кириллицу в латиницу.

LATRUS перекодирует латиницу в кириллицу.

Круговое преобразование RUSLAT+LATRUS восстанавливает исходный русский текст, причём в любом случае полностью восстанавливается также распределение заглавных и строчных букв.

Однако преобразование LATRUS+RUSLAT не обязательно восстанавливает исходный текст в латинице.

Скрипт RUSLAT не рассчитан на обработку текста, в котором перепутаны русские и латинские буквы (например: а/a, с/c, р/p, у/y и т. п.); в этом случае надо предварительно пропустить текст через скрипт LCORRECT.

CASECORRECT исправляет в латинице регистр букв в словах, которые целиком должны быть написаны заглавными буквами (например, АЛЁША → ALYoShA → ALYOSHA). Обычно применяется преобразование RUSLAT+CASECORRECT. Следует учитывать, что изменяется регистр не только в том тексте, который изначально был написан русскими буквами, но и там, где изначально была латиница, поэтому CASECORRECT не следует применять к текстам программ. Кроме того, при круговом преобразовании RUSLAT+CASECORRECT+LATRUS исходный русский текст не полностью восстанавливается (состав букв будет полностью совпадать, но регистр букв может поменяться). CASECORRECT рассчитан на GNU sed, в других вариантах sed он может не работать.

Если в вашей системе используется кодировка, в которой нет значка номера (например, КОИ-8), то надо закомментировать или удалить последнюю строку в RUSLAT и первую строку замены в LATRUS (т. е. те строки, где есть №/Nh).

Не забудьте правильно установить переменные среды (LANG и т. п.).

Лицензия: разрешается использовать нижеприведённые скрипты для любой цели, без каких-либо условий.

License: I grant anyone the right to use these scripts for any purpose, without any conditions.

ruslat

#!/bin/sed -f

# Russian to Latin script converter

# (c) 2008 Andrey V. Lukyanov (e-mail: land@long.yar.ru)
# License: I grant anyone the right to use this program
# for any purpose, without any conditions.

s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ьй\([аоуАОУ]\)/\1jy\2/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)Ьй\([аоуАОУ]\)/\1Jy\2/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ьЙ\([аоуАОУ]\)/\1jY\2/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ЬЙ\([аоуАОУ]\)/\1JY\2/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ьйе/\1jye/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ьЙе/\1jYe/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ьйЕ/\1jyE/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ьЙЕ/\1jYE/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)Ьйе/\1Jye/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ЬЙе/\1JYe/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ЬйЕ/\1JyE/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ЬЙЕ/\1JYE/g

s/\([аеёийоуъыьэюяАЕЁИЙОУЪЫЬЭЮЯEe]\)й\([аоуАОУ]\)/\1y\2/g
s/\([аеёийоуъыьэюяАЕЁИЙОУЪЫЬЭЮЯEe]\)й\([аоуАОУ]\)/\1y\2/g
s/\([аеёийоуъыьэюяАЕЁИЙОУЪЫЬЭЮЯEe]\)Й\([аоуАОУ]\)/\1Y\2/g
s/\([аеёийоуъыьэюяАЕЁИЙОУЪЫЬЭЮЯEe]\)Й\([аоуАОУ]\)/\1Y\2/g

s/\([^абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯeEyY]\)й\([аоуАОУ]\)/\1y\2/g
s/\([^абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯeEyY]\)Й\([аоуАОУ]\)/\1Y\2/g
s/^й\([аоуАОУ]\)/y\1/g
s/^Й\([аоуАОУ]\)/Y\1/g

s/\([аеёийоуъыьэюяАЕЁИЙОУЪЫЬЭЮЯEe]\)йе/\1ye/g
s/\([аеёийоуъыьэюяАЕЁИЙОУЪЫЬЭЮЯEe]\)Йе/\1Ye/g
s/\([аеёийоуъыьэюяАЕЁИЙОУЪЫЬЭЮЯEe]\)йЕ/\1yE/g
s/\([аеёийоуъыьэюяАЕЁИЙОУЪЫЬЭЮЯEe]\)ЙЕ/\1YE/g

s/\([^абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯeEyY]\)йе/\1ye/g
s/\([^абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯeEyY]\)Йе/\1Ye/g
s/\([^абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯeEyY]\)йЕ/\1yE/g
s/\([^абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯeEyY]\)ЙЕ/\1YE/g
s/^йе/ye/g
s/^Йе/Ye/g
s/^йЕ/yE/g
s/^ЙЕ/YE/g

s/йэ/йeh/g
s/Йэ/Йeh/g
s/йЭ/йEh/g
s/ЙЭ/ЙEH/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)й/\1ih/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)Й/\1Ih/g

s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ье/\1je/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)Ье/\1Je/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ьЕ/\1jE/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ЬЕ/\1JE/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ьё/\1jo/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)Ьё/\1Jo/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ьЁ/\1jO/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ЬЁ/\1JO/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ью/\1ju/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)Ью/\1Ju/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ьЮ/\1jU/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ЬЮ/\1JU/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ья/\1ja/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)Ья/\1Ja/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ьЯ/\1jA/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ЬЯ/\1JA/g

s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ь\([бвгджзийклмнпрстфхцчшщБВГДЖЗИЙКЛМНПРСТФХЦЧШЩ]\)/\1j\2/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)Ь\([бвгджзийклмнпрстфхцчшщБВГДЖЗИЙКЛМНПРСТФХЦЧШЩ]\)/\1J\2/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ь$/\1j/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)Ь$/\1J/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ь\([^абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯeEyY]\)/\1j\2/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)Ь\([^абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯeEyY]\)/\1J\2/g
s/ь/jh/g
s/Ь/Jh/g

s/й/j/g
s/Й/J/g

s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)е/\1e/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)Е/\1E/g
s/е/je/g
s/Е/Je/g

s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ё/\1yo/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)Ё/\1Yo/g
s/ё/jo/g
s/Ё/Jo/g

s/ы\([аоуэАОУЭ]\)/yh\1/g
s/Ы\([аоуэАОУЭ]\)/Yh\1/g
s/ы/y/g
s/Ы/Y/g

s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)э/\1eh/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)Э/\1Eh/g
s/э/e/g
s/Э/E/g

s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)ю/\1yu/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)Ю/\1Yu/g
s/ю/ju/g
s/Ю/Ju/g

s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)я/\1ya/g
s/\([бвгджзклмнпрстфхцчшщБВГДЖЗКЛМНПРСТФХЦЧШЩ]\)Я/\1Ya/g
s/я/ja/g
s/Я/Ja/g

s/ж/zh/g
s/ч/ch/g
s/ш/sh/g
s/щ/xh/g
s/Ж/Zh/g
s/Ч/Ch/g
s/Ш/Sh/g
s/Щ/Xh/g

y/абвгдзиклмнопрстуфхцъАБВГДЗИКЛМНОПРСТУФХЦЪ/abvgdziklmnoprstufxcqABVGDZIKLMNOPRSTUFXCQ/

s/№/Nh/g

latrus

#!/bin/sed -f

# Latin to Russian script converter

# (c) 2008 Andrey V. Lukyanov (e-mail: land@long.yar.ru)
# License: I grant anyone the right to use this program
# for any purpose, without any conditions.

s/[nN][hH]/№/g
s/e[hH]/э/g
s/E[hH]/Э/g
s/i[hH]/й/g
s/I[hH]/Й/g
s/j[hH]/ь/g
s/J[hH]/Ь/g
s/y[hH]/ы/g
s/Y[hH]/Ы/g

s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)ja/\1ья/g
s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)jA/\1ьЯ/g
s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)Ja/\1Ья/g
s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)JA/\1ЬЯ/g
s/j[aA]/я/g
s/J[aA]/Я/g

s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)je/\1ье/g
s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)jE/\1ьЕ/g
s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)Je/\1Ье/g
s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)JE/\1ЬЕ/g
s/j[eE]/е/g
s/J[eE]/Е/g

s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)ji/\1ьи/g
s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)jI/\1ьИ/g
s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)Ji/\1Ьи/g
s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)JI/\1ЬИ/g
s/ji/йи/g
s/jI/йИ/g
s/Ji/Йи/g
s/JI/ЙИ/g

s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)jo/\1ьё/g
s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)jO/\1ьЁ/g
s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)Jo/\1Ьё/g
s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)JO/\1ЬЁ/g
s/j[oO]/ё/g
s/J[oO]/Ё/g

s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)ju/\1ью/g
s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)jU/\1ьЮ/g
s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)Ju/\1Ью/g
s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)JU/\1ЬЮ/g
s/j[uU]/ю/g
s/J[uU]/Ю/g

s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)y[aA]/\1я/g
s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)Y[aA]/\1Я/g
s/ya/йа/g
s/yA/йА/g
s/Ya/Йа/g
s/YA/ЙА/g

s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)y[eE]/\1е/g
s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)Y[eE]/\1Е/g
s/ye/йе/g
s/yE/йЕ/g
s/Ye/Йе/g
s/YE/ЙЕ/g

s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)y[oO]/\1ё/g
s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)Y[oO]/\1Ё/g
s/yo/йо/g
s/yO/йО/g
s/Yo/Йо/g
s/YO/ЙО/g

s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)y[uU]/\1ю/g
s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)Y[uU]/\1Ю/g
s/yu/йу/g
s/yU/йУ/g
s/Yu/Йу/g
s/YU/ЙУ/g

s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)e/\1е/g
s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)E/\1Е/g
s/e/э/g
s/E/Э/g

s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)j/\1ь/g
s/\([bcdfghklmnprstvwxzBCDFGHKLMNPRSTVWXZ]\)J/\1Ь/g
s/j/й/g
s/J/Й/g

s/c[hH]/ч/g
s/s[hH]/ш/g
s/x[hH]/щ/g
s/z[hH]/ж/g

s/C[hH]/Ч/g
s/S[hH]/Ш/g
s/X[hH]/Щ/g
s/Z[hH]/Ж/g

y/abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/абцдэфгхийклмнопърстуввхызАБЦДЭФГХИЙКЛМНОПЪРСТУВВХЫЗ/

casecorrect

#!/bin/sed -f

# (c) 2008 Andrey V. Lukyanov (e-mail: land@long.yar.ru)
# License: I grant anyone the right to use this program
# for any purpose, without any conditions.

s/\([A-Z]\)h\([A-Z]\)/\1H\2/g
s/J\([aeou]\)\([A-Z]\)/J\u\1\2/g

s/\([A-Z]\)\([A-Z]\)h/\1\2H/g
s/\([A-Z]\)J\([aeou]\)/\1J\u\2/g
s/\([BCDFGHKLMNPRSTVWXZ]\)Y\([aeou]\)/\1Y\u\2/g

s/\([A-Z]\)h \([A-Z][A-Z]\)/\1H \2/g
s/J\([aeou]\) \([A-Z][A-Z]\)/J\u\1 \2/g
s/\([BCDFGHKLMNPRSTVWXZ]\)Y\([aeou]\) \([A-Z][A-Z]\)/\1Y\u\2 \3/g

lcorrect

#!/bin/sed -f

# (c) 2008 Andrey V. Lukyanov (e-mail: land@long.yar.ru)
# License: I grant anyone the right to use this program
# for any purpose, without any conditions.

y/acekopuxyABCEHKMOPTXY/асекорихуАВСЕНКМОРТХУ/