translit-ru 1.9
Translit russian cyrillic and slugify phrases
Requires Python: >=3.10

Латинизация русской кириллицы
=============================

Используется следующее соответствие:
- *а* —  *a*;
- *б* —  *b*;
- *в* —  *v*;
- *г* —  *g*;
- *д* —  *d*;
- *е* —  *e*;
- *ё* — *yo*, если стоит в начале слов, после гласных, *ь*, *ъ*;
- *ё* —  *o*, если стоит после непарных согласных;
- *ё* — *ho*, во всех остальных случаях;
- *ж* —  *j*;
- *з* —  *z*;
- *и* —  *i*;
- *й* —  *y*;
- *к* —  *k*;
- *л* —  *l*;
- *м* —  *m*;
- *н* —  *n*;
- *о* —  *o*;
- *п* —  *p*;
- *р* —  *r*;
- *с* —  *s*;
- *т* —  *t*;
- *у* —  *u*;
- *ф* —  *f*;
- *х* —  *x*;
- *ц* —  *c*;
- *ч* — *ch*;
- *ш* —  *w*;
- *щ* — *wh*;
- *ъ* —  *h*, кроме разделительного твёрдого знака после шипящих и *ц* (тогда он не требуется), не может использоваться для имитации старой орфографии;
- *ы* —  *y*;
- *ь* —  *h*, кроме разделительного мягкого знака после шипящих и *ц* (тогда он не требуется);
- *э* —  *q*;
- *ю* — *yu*, если стоит в начале слов, после гласных, *ь*, *ъ*;
- *ю* —  *u*, если стоит после непарных согласных;
- *ю* — *hu*, во всех остальных случаях;
- *я* — *ya*, если стоит в начале слов, после гласных, *ь*, *ъ*;
- *я* — *a*, если стоит после непарных согласных;
- *я* — *ha*, во всех остальных случаях.

Соответствие интуитивное, но несколько пояснений сделать нужно:
- Буквосочетание *ьо*, например, после *л* или *н*, встречающееся часто в заимствованных словах и произносящееся с йотирование, передается как *hyo*, иначе было бы *лё*, *нё*. Тоже в отношении реже встречающихся *ьа*, *ьу*.
- Если на письме, особенно в заимствованных словах, пишется *е*, но смягчение соответствующей согласной не происходит, это допускается отражать отходом при транслитерации от кириллического написания с заменой *e* на латинскую *q*.
- В словах *веешь*, *смеешь*, *вошь* и подобных, там где мягкий знак не несёт орфоэпической функции он не транслитерируется, иначе проставление *h* меняло бы букву, например, с *ш* (*w*) на *щ* (*wh*).
- Допускается для обозначения мягкой *ж* использовать латинские *jh*, например, в записи просторечного *podojhi*, вместо точной транслитерации нормативного *подожди*.
- В словах с *ъ* на конце, имитирующих старую орфографию, твёрдый знак опускается.
- Латинская буква *y* обозначает кроме *й*, также и *ы*, что путаницы почти не вносит, так как после согласных (кроме шипящих и *ц*) она всегда *ы*, а в начале слова, после гласных (в том числе латинской *y*, обозначающей *ы*), шипящих согласных и *ц* и разделительных знаков (*h*) всегда *й* (в том числе как часть йотированных гласных).
- *Ы* в начале слова чрезвычайно редка, но если необходимо может быть обозначена удвоением латинских *yy*.
- Из-за того, что *ч* обозначается как латинские *ch*, то чрезвычайно редко встречающаяся мягкая *ц*, например, в украинских именах, как-то *Грицько*, не может быть передана и в таких случаях мягкий знак *ь* опускается.
- Единственная крупная неоднозначность предлагаемой латинизации это невозможность различения разделительных *ь* и *ъ*, что не очень сильно мешает, так как оппозиция разделительных знаков никогда не является смыслоразличительной в русском языке и мотивирована в основном фонетически. Например, при отделении приставок от корня, начинающегося с йотированной гласной, ставится *ъ* и соответствующая согласная является твёрдой, а в остальных местах в незаимствованных словах почти всегда стоит *ь*. В заимствованных же словах даже там, где стоит разделительный *ъ*, одним из вариантов произношения почти всегда является смягчение соответствующей согласной. При строгой необходимости показать эту оппозицию всегда можно прибегнуть, например, к удвоению латинской *hh* на месте разделительного *ъ*, либо использовать апостроф, как часто делали в раннесоветской типографике, или же дефис.

Примеры:

- авдотья - avdothya;
- авдотьи - avdothi;
- авдотье - avdothe;
- отъявленный - othyavlennyy, либо, при строгой необходимости сохранить обозначение твёрдости согласной, othhyavlennyy;
- бактерицидные - baktqricidnye или baktericidnye;
- Артек - Artqk или Artek;
- кафе - kafq или kafe;
- вьюга - vhyuga;
- вьётся - vhyotsha;
- выёживаться - vyyojivathsha;
- выиграть - vyigrath;
- выучить - vyuchith;
- юг - yug;
- эра - qra;
- эон - qon;
- мэон - mqon;
- цирк - cirk;
- жюри - juri;
- щебетать - whebetath;
- парашют - parawut;
- аллофон - allofon;
- съезд - shyezd или shhyezd;
- метр - metr;
- мэтр - mqtr;
- лук - luk;
- люк - lhuk;
- клык - klyk;
- клик - klik;
- клён - klhon;
- клон - klon;
- раса - rasa;
- ряса - rhasa;
- пот - pot;
- под - pod;
- топ - top;
- топь - toph;
- йод - yod;
- яд - yad;
- чёрт - chort;
- чьорт - chyort;
- ыфкуиль - yyfkuilh
- подыграть - podygrath;
- вожжи - vojji;
- жужжать - jujjath;
- объём - obhyom;
- бельё - belhyo;
- подъезд - podhyezd, или podhhyezd;
- отребье - otrebhe;
- выемка - vyemka;
- гальюн - galhyun;
- веет - veet;
- веешь - veew;
- епархия - yeparxiya;
- ералаш - eralaw;
- красивые - krasivye;
- коммерсантъ - kommersant;
- тэер - tqer;
- гэй - gqy;
- гей - gey;
- МЭИ - MQI.
- чей - chey;
- чьи - chyi;
- шью - wyu;
- удушье - uduwye;
- увечье - uvechye;
- ружьё - rujyo;
- лье - lhe;
- каньон - kanhyon;

Примеры использования кода:
===========================

При транслитерации выполняется нормализация юникода, делать её вручную не нужно. См. пример 2.


```python3
from ayum.translit import to_latin, slugify

# 1
print(to_latin('Объёмом 5 литров')) # prints 'Оbhyomom 5 litrov'

# 2
print(to_latin('\u0435\u0308')) # prints 'yo'
print(to_latin('\u0451'))       # prints 'yo'

# 3
print(slugify('Объёмом 5 литров')) # prints 'obhyomom-5-litrov'

```