Автор: Андрей Владимирович Лукьянов // © 2008 // e-mail: land@long.yar.ru
Опубликовано: 2008-02-01
Последняя правка: 2008-02-19
В данной статье предлагается система транслитерации русского письма латиницей, включающая формальные преобразования «кириллица → латиница» и «латиница → кириллица».
Предлагаемая система транслитерации построена на следующих принципах:
1) Принцип обратимости: при круговом преобразовании кириллица → латиница → кириллица русский текст в точности восстанавливается (причём не только обычный русский текст, но и вообще любая последовательность русских букв). Вследствие этого, если мы печатаем латиницей с целью её последующей конвертации в кириллицу, то можно изначально задать точную последовательность русских букв, которая должна в итоге получиться.
Обратное преобразование (латиница → кириллица) не является обратимым; при преобразовании латиница → кириллица → латиница может получиться текст, отличающийся от исходного.
2) Используется только базовая латиница (без каких-либо диакритических знаков). Использование диакритики сразу лишает латиницу главного преимущества — её «вездеходности». Ведь на латиницу приходится переходить там, где русские буквы недоступны; а если русские буквы недоступны, то, скорее всего, и латинские буквы с диакритикой тоже недоступны.
Также не используются апостроф, гравис и тому подобные знаки — у них есть своё применение (в том числе и в языках программирования), которое может быть несовместимым с их использованием в качестве букв.
3) Система организована таким образом, чтобы написания латиницей не были слишком уж непривычными и были достаточно близки к распространённым в Интернете вариантам «транслита» (за исключением небольшого числа маргинальных случаев); также была принята во внимание структура русской фонетики. Это приводит к некоторому усложнению и запутыванию системы.
Правила перехода от кириллицы к латинице и от латиницы к кириллице описаны в нижеприведённых таблицах; кроме того, приведены перекодирующие программы (скрипты) на языке sed (см. Википедия:sed).
Буква H в латинице используется только в составе неразделимых сочетаний CH NH SH XH ZH EH IH JH YH (можно даже считать их едиными буквами).
CH SH XH ZH взаимно однозначно соответствуют русским буквам Ч Ш Щ Ж.
EH IH JH YH обозначают русские буквы Э Й Ь Ы (но чаще эти русские буквы обозначаются по-другому).
NH всегда обозначает № (знак номера).
Несколько запутанным является использование букв 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.
#!/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
#!/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/абцдэфгхийклмнопърстуввхызАБЦДЭФГХИЙКЛМНОПЪРСТУВВХЫЗ/
#!/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
#!/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/асекорихуАВСЕНКМОРТХУ/