Spaces:
Runtime error
Runtime error
| # -*- coding: utf-8 -*- | |
| import re | |
| import sys | |
| LATIN_TO_CYRILLIC = { | |
| "a": "а", | |
| "A": "А", | |
| "b": "б", | |
| "B": "Б", | |
| "d": "д", | |
| "D": "Д", | |
| "e": "е", | |
| "E": "Е", | |
| "f": "ф", | |
| "F": "Ф", | |
| "g": "г", | |
| "G": "Г", | |
| "h": "ҳ", | |
| "H": "Ҳ", | |
| "i": "и", | |
| "I": "И", | |
| "j": "ж", | |
| "J": "Ж", | |
| "k": "к", | |
| "K": "К", | |
| "l": "л", | |
| "L": "Л", | |
| "m": "м", | |
| "M": "М", | |
| "n": "н", | |
| "N": "Н", | |
| "o": "о", | |
| "O": "О", | |
| "p": "п", | |
| "P": "П", | |
| "q": "қ", | |
| "Q": "Қ", | |
| "r": "р", | |
| "R": "Р", | |
| "s": "с", | |
| "S": "С", | |
| "t": "т", | |
| "T": "Т", | |
| "u": "у", | |
| "U": "У", | |
| "v": "в", | |
| "V": "В", | |
| "x": "х", | |
| "X": "Х", | |
| "y": "й", | |
| "Y": "Й", | |
| "z": "з", | |
| "Z": "З", | |
| "ʼ": "ъ", # TODO: case? | |
| } | |
| LATIN_VOWELS = ("a", "A", "e", "E", "i", "I", "o", "O", "u", "U", "o‘", "O‘") | |
| # These words cannot be reliably converted to cyrillic because of the lossy | |
| # nature of the to_latin converter. | |
| TS_WORDS = { | |
| "aberra(ts)ion": "аберрацион", | |
| "aberra(ts)iya": "аберрация", | |
| "abza(ts)": "абзац", | |
| "aboli(ts)iya": "аболиция", | |
| "absorb(s)iya": "абсорбция", | |
| "abstrak(s)ionizm": "абстракционизм", | |
| "abstrak(s)ionist": "абстракционист", | |
| "abstrak(s)iya": "абстракция", | |
| "abs(s)ess": "абсцесс", | |
| "avianose(ts)": "авианосец", | |
| "avia(ts)iya": "авиация", | |
| "avtoinspek(s)iya": "автоинспекция", | |
| "avtopr(s)ep": "автопрцеп", | |
| "avtostan(s)iya": "автостанция", | |
| "agglyutina(ts)iya": "агглютинация", | |
| "agita(ts)ion": "агитацион", | |
| "agita(ts)iya": "агитация", | |
| "aglomera(ts)iya": "агломерация", | |
| "agnosti(ts)izm": "агностицизм", | |
| "agromeliora(ts)iya": "агромелиорация", | |
| "adapta(ts)iya": "адаптация", | |
| "administra(ts)iya": "администрация", | |
| "adsorb(s)iya": "адсорбция", | |
| "aka(ts)iya": "акация", | |
| "akklimatiza(ts)iya": "акклиматизация", | |
| "akkomoda(ts)iya": "аккомодация", | |
| "akkredita(ts)iya": "аккредитация", | |
| "ak(s)ent": "акцент", | |
| "ak(s)iz": "акциз", | |
| "ak(s)ioner": "акционер", | |
| "ak(s)ionerlik": "акционерлик", | |
| "ak(s)iya": "акция", | |
| "ak(s)iyadorlik": "акциядорлик", | |
| "allitera(ts)iya": "аллитерация", | |
| "amortiza(ts)iya": "амортизация", | |
| "amputa(ts)iya": "ампутация", | |
| "annota(ts)iya": "аннотация", | |
| "annulya(ts)iya": "аннуляция", | |
| "anti(ts)iklon": "антициклон", | |
| "antra(ts)it": "антрацит", | |
| "apellya(ts)iya": "апелляция", | |
| "appendi(ts)it": "аппендицит", | |
| "applika(ts)iya": "аппликация", | |
| "aproba(ts)iya": "апробация", | |
| "argumenta(ts)iya": "аргументация", | |
| "assimilya(ts)iya": "ассимиляция", | |
| "asso(ts)ia(ts)iya": "ассоциация", | |
| "attesta(ts)ion": "аттестацион", | |
| "attesta(ts)iya": "аттестация", | |
| "attrak(s)ion": "аттракцион", | |
| "auk(s)ion": "аукцион", | |
| "a(ts)etilen": "ацетилен", | |
| "a(ts)eton": "ацетон", | |
| "aeronaviga(ts)iya": "аэронавигация", | |
| "bakteri(ts)id": "бактерицид", | |
| "ba(ts)illar": "бациллар", | |
| "bioloka(ts)iya": "биолокация", | |
| "biolyumines(s)en(s)iya": "биолюминесценция", | |
| "bo(ts)man": "боцман", | |
| "bronenose(ts)": "броненосец", | |
| "bru(ts)ellyoz": "бруцеллёз", | |
| "vak(s)ina": "вакцина", | |
| "valva(ts)iya": "вальвация", | |
| "vegeta(ts)ion": "вегетацион", | |
| "vegeta(ts)iya": "вегетация", | |
| "venepunk(s)iya": "венепункция", | |
| "ventilya(ts)ion": "вентиляцион", | |
| "ventilya(ts)iya": "вентиляция", | |
| "vibra(ts)iya": "вибрация", | |
| "vibroizolya(ts)iya": "виброизоляция", | |
| "vi(ts)e-": "вице-", | |
| "vi(ts)e-admiral": "вице-адмирал", | |
| "vi(ts)e-prezident": "вице-президент", | |
| "vulkaniza(ts)iya": "вулканизация", | |
| "galli(ts)izm": "галлицизм", | |
| "gallyu(ts)ina(ts)iya": "галлюцинация", | |
| "galvaniza(ts)iya": "гальванизация", | |
| "gastrol-kon(s)ert": "гастроль-концерт", | |
| "gaubi(ts)a": "гаубица", | |
| "gelio(ts)entrik": "гелиоцентрик", | |
| "geno(ts)id": "геноцид", | |
| "geo(ts)entrik": "геоцентрик", | |
| "gerbi(ts)idlar": "гербицидлар", | |
| "ger(s)": "герц", | |
| "ger(s)og": "герцог", | |
| "gia(ts)int": "гиацинт", | |
| "gidromeliora(ts)iya": "гидромелиорация", | |
| "gidromexaniza(ts)iya": "гидромеханизация", | |
| "gidrostan(s)iya": "гидростанция", | |
| "gidroelektrostan(s)iya": "гидроэлектростанция", | |
| "giperinflya(ts)iya": "гиперинфляция", | |
| "gipo(ts)entr": "гипоцентр", | |
| "gli(ts)erin": "глицерин", | |
| "glya(ts)iolog": "гляциолог", | |
| "glya(ts)iologiya": "гляциология", | |
| "gorchi(ts)a": "горчица", | |
| "gravita(ts)iya": "гравитация", | |
| "grada(ts)iya": "градация", | |
| "guseni(ts)a": "гусеница", | |
| "devalva(ts)iya": "девальвация", | |
| "degaza(ts)iya": "дегазация", | |
| "degenera(ts)iya": "дегенерация", | |
| "degustat(s)iya": "дегустатция", | |
| "deduk(s)iya": "дедукция", | |
| "dezaktiva(ts)iya": "дезактивация", | |
| "dezinsek(s)iya": "дезинсекция", | |
| "dezinfek(s)iya": "дезинфекция", | |
| "dezinfek(s)iyalamoq": "дезинфекцияламоқ", | |
| "deklama(ts)iya": "декламация", | |
| "deklama(ts)iyachi": "декламациячи", | |
| "deklara(ts)iya": "декларация", | |
| "dekora(ts)iya": "декорация", | |
| "delega(ts)iya": "делегация", | |
| "delimita(ts)iya": "делимитация", | |
| "demarka(ts)iya": "демаркация", | |
| "demilitariza(ts)iya": "демилитаризация", | |
| "demobiliza(ts)iya": "демобилизация", | |
| "denaturaliza(ts)iya": "денатурализация", | |
| "denomina(ts)iya": "деноминация", | |
| "denonsa(ts)iya": "денонсация", | |
| "depilya(ts)iya": "депиляция", | |
| "deporta(ts)iya": "депортация", | |
| "deratiza(ts)iya": "дератизация", | |
| "deriva(ts)ion": "деривацион", | |
| "deriva(ts)iya": "деривация", | |
| "desika(ts)iya": "десикация", | |
| "detona(ts)iya": "детонация", | |
| "defini(ts)iya": "дефиниция", | |
| "defi(ts)it": "дефицит", | |
| "deflya(ts)iya": "дефляция", | |
| "defolia(ts)iya": "дефолиация", | |
| "deforma(ts)iya": "деформация", | |
| "de(ts)igramm": "дециграмм", | |
| "de(ts)ilitr": "децилитр", | |
| "de(ts)imetr": "дециметр", | |
| "dik(s)iya": "дикция", | |
| "direk(s)iya": "дирекция", | |
| "diskvalifika(ts)iya": "дисквалификация", | |
| "diskrimina(ts)iya": "дискриминация", | |
| "disloka(ts)iya": "дислокация", | |
| "dispropor(s)iya": "диспропорция", | |
| "disserta(ts)iya": "диссертация", | |
| "dissimilya(ts)iya": "диссимиляция", | |
| "disso(ts)ia(ts)iya": "диссоциация", | |
| "distan(s)ion": "дистанцион", | |
| "distan(s)iya": "дистанция", | |
| "distillya(ts)iya": "дистилляция", | |
| "differen(s)ial": "дифференциал", | |
| "differen(s)ia(ts)iya": "дифференциация", | |
| "differen(s)iyalamoq": "дифференцияламоқ", | |
| "dota(ts)iya": "дотация", | |
| "do(ts)ent": "доцент", | |
| "jinoiy-pro(ts)essual": "жиноий-процессуал", | |
| "identifika(ts)iya": "идентификация", | |
| "izolya(ts)ion": "изоляцион", | |
| "izolya(ts)iya": "изоляция", | |
| "izolya(ts)iyalamoq": "изоляцияламоқ", | |
| "illyumina(ts)iya": "иллюминация", | |
| "illyustra(ts)iya": "иллюстрация", | |
| "immigra(ts)iya": "иммиграция", | |
| "immobiliza(ts)iya": "иммобилизация", | |
| "impoten(s)iya": "импотенция", | |
| "improviza(ts)iya": "импровизация", | |
| "inaugura(ts)iya": "инаугурация", | |
| "inventariza(ts)iya": "инвентаризация", | |
| "investi(ts)iya": "инвестиция", | |
| "ingalya(ts)iya": "ингаляция", | |
| "indeksa(ts)iya": "индексация", | |
| "induk(s)ion": "индукцион", | |
| "induk(s)iya": "индукция", | |
| "iner(s)iya": "инерция", | |
| "iner(s)iyali": "инерцияли", | |
| "inkvizi(ts)iya": "инквизиция", | |
| "inkorpora(ts)iya": "инкорпорация", | |
| "inkuba(ts)iya": "инкубация", | |
| "innova(ts)iya": "инновация", | |
| "inspek(s)iya": "инспекция", | |
| "instar(s)iya": "инстарция", | |
| "instruk(s)iya": "инструкция", | |
| "ins(s)enirovka": "инсценировка", | |
| "integra(ts)iya": "интеграция", | |
| "intelligen(s)iya": "интеллигенция", | |
| "interven(s)iya": "интервенция", | |
| "interven(s)iyachi": "интервенциячи", | |
| "interna(ts)ional": "интернационал", | |
| "interna(ts)ionalizm": "интернационализм", | |
| "interna(ts)ionalist": "интернационалист", | |
| "intoksika(ts)iya": "интоксикация", | |
| "intona(ts)ion": "интонацион", | |
| "intona(ts)iya": "интонация", | |
| "intui(ts)iya": "интуиция", | |
| "infek(s)ion": "инфекцион", | |
| "infek(s)iya": "инфекция", | |
| "inflya(ts)iya": "инфляция", | |
| "informa(ts)ion": "информацион", | |
| "informa(ts)iya": "информация", | |
| "inʼek(s)iya": "инъекция", | |
| "irra(ts)ional": "иррационал", | |
| "irriga(ts)ion": "ирригацион", | |
| "irriga(ts)iya": "ирригация", | |
| "kalkulya(ts)iya": "калькуляция", | |
| "kal(s)iy": "кальций", | |
| "kanaliza(ts)iya": "канализация", | |
| "kan(s)eliyariya": "канцелиярия", | |
| "kan(s)erogen": "канцероген", | |
| "kan(s)ler": "канцлер", | |
| "kapitaliza(ts)iya": "капитализация", | |
| "kapitulya(ts)iya": "капитуляция", | |
| "kassa(ts)iya": "кассация", | |
| "katol(s)izm": "католцизм", | |
| "kvalifika(ts)iya": "квалификация", | |
| "kvar(s)": "кварц", | |
| "kvar(s)it": "кварцит", | |
| "kvitan(s)iya": "квитанция", | |
| "kinokon(s)ert": "киноконцерт", | |
| "kinos(s)enariy": "киносценарий", | |
| "klassifika(ts)iya": "классификация", | |
| "klassi(ts)izm": "классицизм", | |
| "koali(ts)ion": "коалицион", | |
| "koali(ts)iya": "коалиция", | |
| "kodifika(ts)iya": "кодификация", | |
| "kollek(s)ioner": "коллекционер", | |
| "kollek(s)iya": "коллекция", | |
| "kollek(s)iyachchi": "коллекцияччи", | |
| "kolon(s)ifra": "колонцифра", | |
| "kombina(ts)iya": "комбинация", | |
| "kommer(s)iya": "коммерция", | |
| "kommunika(ts)iya": "коммуникация", | |
| "kommuta(ts)iya": "коммутация", | |
| "kompensa(ts)iya": "компенсация", | |
| "kompeten(s)iya": "компетенция", | |
| "kompilya(ts)iya": "компиляция", | |
| "kompozi(ts)ion": "композицион", | |
| "kompozi(ts)iya": "композиция", | |
| "konvek(s)iya": "конвекция", | |
| "konven(s)iya": "конвенция", | |
| "konverta(ts)iya": "конвертация", | |
| "kondensa(ts)iya": "конденсация", | |
| "kondi(ts)iya": "кондиция", | |
| "kondi(ts)ioner": "кондиционер", | |
| "konkuren(s)iya": "конкуренция", | |
| "konserva(ts)iya": "консервация", | |
| "konsigna(ts)iya": "консигнация", | |
| "konsolida(ts)iya": "консолидация", | |
| "konsor(s)ium": "консорциум", | |
| "konspira(ts)iya": "конспирация", | |
| "konstitu(ts)ion": "конституцион", | |
| "konstitu(ts)iya": "конституция", | |
| "konstitu(ts)iyaviy": "конституциявий", | |
| "konstruk(s)iya": "конструкция", | |
| "konsulta(ts)iya": "консультация", | |
| "kontrakta(ts)iya": "контрактация", | |
| "kontribu(ts)iya": "контрибуция", | |
| "kontrrevolyu(ts)ion": "контрреволюцион", | |
| "kontrrevolyu(ts)ioner": "контрреволюционер", | |
| "kontrrevolyu(ts)iya": "контрреволюция", | |
| "konfedera(ts)iya": "конфедерация", | |
| "konferen(s)-zal": "конференц-зал", | |
| "konferen(s)iya": "конференция", | |
| "konfiska(ts)iya": "конфискация", | |
| "konfronta(ts)iya": "конфронтация", | |
| "konfu(ts)iylik": "конфуцийлик", | |
| "konfu(ts)iychilik": "конфуцийчилик", | |
| "kon(s)entrat": "концентрат", | |
| "kon(s)entratli": "концентратли", | |
| "kon(s)entra(ts)ion": "концентрацион", | |
| "kon(s)entra(ts)iya": "концентрация", | |
| "kon(s)entra(ts)iyalashmoq": "концентрациялашмоқ", | |
| "kon(s)entrik": "концентрик", | |
| "kon(s)ep(s)iya": "концепция", | |
| "kon(s)ern": "концерн", | |
| "kon(s)ert": "концерт", | |
| "kon(s)ertmeyster": "концертмейстер", | |
| "kon(s)essiya": "концессия", | |
| "kon(s)lager": "концлагерь", | |
| "koopera(ts)iya": "кооперация", | |
| "koopta(ts)iya": "кооптация", | |
| "koordina(ts)ion": "координацион", | |
| "koordina(ts)iya": "координация", | |
| "korpora(ts)iya": "корпорация", | |
| "korrelya(ts)iya": "корреляция", | |
| "korresponden(s)iya": "корреспонденция", | |
| "korrup(s)iya": "коррупция", | |
| "koeffi(ts)iyent": "коэффициент", | |
| "krema(ts)iya": "кремация", | |
| "kristalliza(ts)iya": "кристаллизация", | |
| "kulmina(ts)ion": "кульминацион", | |
| "kulmina(ts)iya": "кульминация", | |
| "kultiva(ts)iya": "культивация", | |
| "lakta(ts)iya": "лактация", | |
| "lamina(ts)iya": "ламинация", | |
| "lan(s)et": "ланцет", | |
| "levomi(ts)etin": "левомицетин", | |
| "legitima(ts)iya": "легитимация", | |
| "leyko(ts)itlar": "лейкоцитлар", | |
| "leyko(ts)itoz": "лейкоцитоз", | |
| "lek(s)iya": "лекция", | |
| "liberaliza(ts)iya": "либерализация", | |
| "li(ts)ey": "лицей", | |
| "li(ts)enziya": "лицензия", | |
| "lokaliza(ts)iya": "локализация", | |
| "loka(ts)iya": "локация", | |
| "lo(ts)man": "лоцман", | |
| "lyumenis(s)en(s)iya": "люменисценция", | |
| "lyute(ts)iy": "лютеций", | |
| "manipulya(ts)iya": "манипуляция", | |
| "margane(ts)": "марганец", | |
| "matri(ts)a": "матрица", | |
| "medi(ts)ina": "медицина", | |
| "meliora(ts)iya": "мелиорация", | |
| "menstrua(ts)iya": "менструация", | |
| "metalliza(ts)iya": "металлизация", | |
| "metiza(ts)iya": "метизация", | |
| "mexaniza(ts)iya": "механизация", | |
| "mexaniza(ts)iyalash": "механизациялаш", | |
| "mexaniza(ts)iyalashmoq": "механизациялашмоқ", | |
| "mexani(ts)izm": "механицизм", | |
| "migra(ts)iya": "миграция", | |
| "mizans(s)ena": "мизансцена", | |
| "militariza(ts)iya": "милитаризация", | |
| "mili(ts)ioner": "милиционер", | |
| "mili(ts)iya": "милиция", | |
| "mili(ts)iyaxona": "милицияхона", | |
| "mineraliza(ts)iya": "минерализация", | |
| "minonose(ts)": "миноносец", | |
| "misti(ts)izm": "мистицизм", | |
| "mobiliza(ts)iya": "мобилизация", | |
| "moderniza(ts)iya": "модернизация", | |
| "moderniza(ts)iyalamoq": "модернизацияламоқ", | |
| "modifika(ts)iya": "модификация", | |
| "moto(ts)ikl": "мотоцикл", | |
| "moto(ts)iklet": "мотоциклет", | |
| "moto(ts)ikletchi": "мотоциклетчи", | |
| "moto(ts)iklli": "мотоциклли", | |
| "moto(ts)iklchi": "мотоциклчи", | |
| "multiplika(ts)ion": "мультипликацион", | |
| "multiplika(ts)iya": "мультипликация", | |
| "muni(ts)ipaliza(ts)iya": "муниципализация", | |
| "muni(ts)ipalitet": "муниципалитет", | |
| "naviga(ts)iya": "навигация", | |
| "naturaliza(ts)iya": "натурализация", | |
| "na(ts)ionaliza(ts)iya": "национализация", | |
| "nene(ts)": "ненец", | |
| "nene(ts)lar": "ненецлар", | |
| "nitrogli(ts)erin": "нитроглицерин", | |
| "nomina(ts)iya": "номинация", | |
| "nostrifika(ts)iya": "нострификация", | |
| "nullifika(ts)iya": "нуллификация", | |
| "obliga(ts)iya": "облигация", | |
| "obroga(ts)iya": "оброгация", | |
| "observa(ts)iya": "обсервация", | |
| "okkupa(ts)ion": "оккупацион", | |
| "okkupa(ts)iya": "оккупация", | |
| "okkupa(ts)iyachi": "оккупациячи", | |
| "opera(ts)iya": "операция", | |
| "opera(ts)iyaviy": "операциявий", | |
| "oppozo(ts)ion": "оппозоцион", | |
| "oppozi(ts)iya": "оппозиция", | |
| "oppozi(ts)iyachi": "оппозициячи", | |
| "op(s)ion": "опцион", | |
| "ordinare(ts)": "ординарец", | |
| "oriyenta(ts)iya": "ориентация", | |
| "osteomalya(ts)iya": "остеомаляция", | |
| "ofi(ts)er": "офицер", | |
| "ofi(ts)iant": "официант", | |
| "ofi(ts)iantka": "официантка", | |
| "palpa(ts)iya": "пальпация", | |
| "pa(ts)iyent": "пациент", | |
| "pa(ts)ifizm": "пацифизм", | |
| "pa(ts)ifist": "пацифист", | |
| "peni(ts)(s)ilin": "пениццилин", | |
| "pesti(ts)idlar": "пестицидлар", | |
| "peti(ts)iya": "петиция", | |
| "petli(ts)a": "петлица", | |
| "pigmenta(ts)iya": "пигментация", | |
| "pin(s)et": "пинцет", | |
| "pi(ts)(s)a": "пицца", | |
| "planta(ts)iya": "плантация", | |
| "pla(ts)darm": "плацдарм", | |
| "pla(ts)kart": "плацкарт", | |
| "pla(ts)karta": "плацкарта", | |
| "pla(ts)kartali": "плацкартали", | |
| "plebis(s)it": "плебисцит", | |
| "podstan(s)iya": "подстанция", | |
| "pozi(ts)ion": "позицион", | |
| "pozi(ts)iya": "позиция", | |
| "poli(ts)iya": "полиция", | |
| "poli(ts)iyachi": "полициячи", | |
| "poli(ts)meyster": "полицмейстер", | |
| "pollyu(ts)iya": "поллюция", | |
| "populya(ts)iya": "популяция", | |
| "por(s)iya": "порция", | |
| "poten(s)ial": "потенциал", | |
| "prezenta(ts)iya": "презентация", | |
| "press-konferen(s)iya": "пресс-конференция", | |
| "preferen(s)iya": "преференция", | |
| "privatiza(ts)iya": "приватизация", | |
| "prin(s)ip": "принцип", | |
| "prin(s)ipial": "принципиал", | |
| "prin(s)ipiallik": "принципиаллик", | |
| "prin(s)ipli": "принципли", | |
| "prin(s)ipsiz": "принципсиз", | |
| "pri(ts)ep": "прицеп", | |
| "provin(s)ializm": "провинциализм", | |
| "provin(s)iya": "провинция", | |
| "provoka(ts)iya": "провокация", | |
| "proyek(s)iya": "проекция", | |
| "proyek(s)iyalamoq": "проекцияламоқ", | |
| "proklama(ts)iya": "прокламация", | |
| "prolonga(ts)iya": "пролонгация", | |
| "propor(s)ional": "пропорционал", | |
| "propor(s)ionallik": "пропорционаллик", | |
| "propor(s)iya": "пропорция", | |
| "protek(s)ionizm": "протекционизм", | |
| "pro(ts)ent": "процент", | |
| "pro(ts)entli": "процентли", | |
| "pro(ts)entchi": "процентчи", | |
| "pro(ts)ess": "процесс", | |
| "pro(ts)essor": "процессор", | |
| "pro(ts)essual": "процессуал", | |
| "publi(ts)ist": "публицист", | |
| "publi(ts)istik": "публицистик", | |
| "publi(ts)istika": "публицистика", | |
| "punktua(ts)ion": "пунктуацион", | |
| "punktua(ts)iya": "пунктуация", | |
| "punk(s)iya": "пункция", | |
| "radia(ts)ion": "радиацион", | |
| "radia(ts)iya": "радиация", | |
| "radioloka(ts)iya": "радиолокация", | |
| "radionaviga(ts)iya": "радионавигация", | |
| "radiostan(s)iya": "радиостанция", | |
| "rane(ts)": "ранец", | |
| "ratifika(ts)iya": "ратификация", | |
| "rafina(ts)iya": "рафинация", | |
| "rafina(ts)iyalash": "рафинациялаш", | |
| "ra(ts)ion": "рацион", | |
| "ra(ts)ional": "рационал", | |
| "ra(ts)ionalizator": "рационализатор", | |
| "ra(ts)ionalizatorlik": "рационализаторлик", | |
| "ra(ts)ionaliza(ts)iya": "рационализация", | |
| "ra(ts)ionalizm": "рационализм", | |
| "ra(ts)ionalist": "рационалист", | |
| "ra(ts)ionlallashmoq": "рационлаллашмоқ", | |
| "ra(ts)iya": "рация", | |
| "reabilita(ts)iya": "реабилитация", | |
| "reak(s)ion": "реакцион", | |
| "reak(s)ioner": "реакционер", | |
| "reak(s)iya": "реакция", | |
| "reak(s)iyachi": "реакциячи", | |
| "realiza(ts)iya": "реализация", | |
| "reanima(ts)iya": "реанимация", | |
| "revalva(ts)iya": "ревальвация", | |
| "revolyu(ts)ion": "революцион", | |
| "revolyu(ts)ioner": "революционер", | |
| "revolyu(ts)iya": "революция", | |
| "regenera(ts)iya": "регенерация", | |
| "registra(ts)iya": "регистрация", | |
| "redak(s)ion": "редакцион", | |
| "redak(s)iya": "редакция", | |
| "reduk(s)iya": "редукция", | |
| "reduplika(ts)iya": "редупликация", | |
| "rezek(s)iya": "резекция", | |
| "reziden(s)iya": "резиденция", | |
| "rezolyu(ts)iya": "резолюция", | |
| "reinvesti(ts)iya": "реинвестиция", | |
| "rekvizi(ts)iya": "реквизиция", | |
| "reklama(ts)iya": "рекламация", | |
| "rekognos(s)irovka": "рекогносцировка", | |
| "rekomenda(ts)iya": "рекомендация", | |
| "rekonstruk(s)iya": "реконструкция", | |
| "rekonstruk(s)iyalamoq": "реконструкцияламоқ", | |
| "remilitariza(ts)iya": "ремилитаризация", | |
| "repara(ts)iya": "репарация", | |
| "repatri(ts)iya": "репатриция", | |
| "repeti(ts)iya": "репетиция", | |
| "reprivatiza(ts)iya": "реприватизация", | |
| "reproduk(s)iya": "репродукция", | |
| "restavra(ts)iya": "реставрация", | |
| "retranslya(ts)iya": "ретрансляция", | |
| "reforma(ts)iya": "реформация", | |
| "refrak(s)iya": "рефракция", | |
| "re(ts)enzent": "рецензент", | |
| "re(ts)enziya": "рецензия", | |
| "re(ts)ept": "рецепт", | |
| "re(ts)eptorlar": "рецепторлар", | |
| "re(ts)idiv": "рецидив", | |
| "re(ts)idivist": "рецидивист", | |
| "re(ts)ipiyent": "реципиент", | |
| "reevakua(ts)iya": "реэвакуация", | |
| "reemigra(ts)iya": "реэмиграция", | |
| "ri(ts)arlik": "рицарлик", | |
| "ri(ts)ar": "рицарь", | |
| "rota(ts)ion": "ротацион", | |
| "sana(ts)iya": "санация", | |
| "sana(ts)iyalash": "санациялаш", | |
| "sank(s)iya": "санкция", | |
| "sekre(ts)iya": "секреция", | |
| "sek(s)iya": "секция", | |
| "selek(s)ion": "селекцион", | |
| "selek(s)iya": "селекция", | |
| "selek(s)iyachi": "селекциячи", | |
| "selek(s)iyachilik": "селекциячилик", | |
| "sensa(ts)ion": "сенсацион", | |
| "sensa(ts)iya": "сенсация", | |
| "signaliza(ts)iya": "сигнализация", | |
| "sili(ts)iy": "силиций", | |
| "situa(ts)iya": "ситуация", | |
| "skepti(ts)izm": "скептицизм", | |
| "slane(ts)": "сланец", | |
| "so(ts)ial": "социал", | |
| "so(ts)ial-demokrat": "социал-демократ", | |
| "so(ts)ial-demokratik": "социал-демократик", | |
| "so(ts)ial-demokratiya": "социал-демократия", | |
| "so(ts)ializa(ts)iya": "социализация", | |
| "so(ts)ializm": "социализм", | |
| "so(ts)ialist": "социалист", | |
| "so(ts)ialistik": "социалистик", | |
| "so(ts)iolingvistika": "социолингвистика", | |
| "so(ts)iolog": "социолог", | |
| "so(ts)iologik": "социологик", | |
| "so(ts)iologiya": "социология", | |
| "spekulya(ts)iya": "спекуляция", | |
| "spe(ts)ifik": "специфик", | |
| "spe(ts)ifika": "специфика", | |
| "spe(ts)ifika(ts)iya": "спецификация", | |
| "stabiliza(ts)iya": "стабилизация", | |
| "stan(s)iya": "станция", | |
| "sta(ts)ionar": "стационар", | |
| "steriliza(ts)iya": "стерилизация", | |
| "stoi(ts)izm": "стоицизм", | |
| "stron(s)iy": "стронций", | |
| "substan(s)iya": "субстанция", | |
| "s(s)enariy": "сценарий", | |
| "s(s)enariychi": "сценарийчи", | |
| "s(s)enarist": "сценарист", | |
| "tabli(ts)a": "таблица", | |
| "tan(s)a": "танца", | |
| "teleins(s)enirovka": "телеинсценировка", | |
| "telekommunika(ts)iya": "телекоммуникация", | |
| "telemexaniza(ts)iya": "телемеханизация", | |
| "tenden(s)ioz": "тенденциоз", | |
| "tenden(s)iozlik": "тенденциозлик", | |
| "tenden(s)iya": "тенденция", | |
| "tepli(ts)a": "теплица", | |
| "teploizolya(ts)iya": "теплоизоляция", | |
| "termoizolya(ts)iya": "термоизоляция", | |
| "ter(s)et": "терцет", | |
| "ter(s)iya": "терция", | |
| "texne(ts)iy": "технеций", | |
| "tradi(ts)ion": "традицион", | |
| "tradi(ts)iya": "традиция", | |
| "transkrip(s)ion": "транскрипцион", | |
| "transkrip(s)iya": "транскрипция", | |
| "transkrip(s)iyalamoq": "транскрипцияламоқ", | |
| "translitera(ts)iya": "транслитерация", | |
| "translya(ts)ion": "трансляцион", | |
| "translya(ts)iya": "трансляция", | |
| "transplanta(ts)iya": "трансплантация", | |
| "transforma(ts)iya": "трансформация", | |
| "transforma(ts)iyalamoq": "трансформацияламоқ", | |
| "trape(ts)iya": "трапеция", | |
| "trepana(ts)iya": "трепанация", | |
| "uborshi(ts)a": "уборшица", | |
| "uzurpa(ts)iya": "узурпация", | |
| "unifika(ts)iya": "унификация", | |
| "unifika(ts)iyalashtirmoq": "унификациялаштирмоқ", | |
| "unter-ofi(ts)er": "унтер-офицер", | |
| "urbaniza(ts)iya": "урбанизация", | |
| "fago(ts)it": "фагоцит", | |
| "falsifika(ts)iya": "фальсификация", | |
| "farma(ts)evt": "фармацевт", | |
| "farma(ts)evtika": "фармацевтика", | |
| "farma(ts)iya": "фармация", | |
| "federa(ts)iya": "федерация", | |
| "fermenta(ts)iya": "ферментация", | |
| "film-kon(s)ert": "фильм-концерт", | |
| "filtra(ts)iya": "фильтрация", | |
| "fiton(s)id": "фитонцид", | |
| "forma(ts)iya": "формация", | |
| "frak(s)ion": "фракцион", | |
| "frak(s)iooner": "фракциоонер", | |
| "frak(s)iya": "фракция", | |
| "fran(s)iya": "франция", | |
| "fran(s)uz": "француз", | |
| "fran(s)uzlar": "французлар", | |
| "fran(s)uzcha": "французча", | |
| "fri(ts)": "фриц", | |
| "funk(s)ional": "функционал", | |
| "funk(s)iya": "функция", | |
| "xemosorb(s)iya": "хемосорбция", | |
| "xole(ts)istit": "холецистит", | |
| "(s)anga": "цанга", | |
| "(s)apfa": "цапфа", | |
| "(s)edra": "цедра", | |
| "(s)eziy": "цезий", | |
| "(s)eytnot": "цейтнот", | |
| "(s)ellofan": "целлофан", | |
| "(s)elluloid": "целлулоид", | |
| "(s)ellyuloza": "целлюлоза", | |
| "(s)elsiy": "цельсий", | |
| "(s)ement": "цемент", | |
| "(s)ementlamoq": "цементламоқ", | |
| "(s)enz": "ценз", | |
| "(s)enzor": "цензор", | |
| "(s)enzura": "цензура", | |
| "(s)ent": "цент", | |
| "(s)entner": "центнер", | |
| "(s)entnerli": "центнерли", | |
| "(s)entnerchi": "центнерчи", | |
| "(s)entralizm": "централизм", | |
| "(s)entrizm": "центризм", | |
| "(s)entrist": "центрист", | |
| "(s)entrifuga": "центрифуга", | |
| "(s)eriy": "церий", | |
| "(s)esarka": "цесарка", | |
| "(s)ex": "цех", | |
| "(s)ian": "циан", | |
| "(s)ianli": "цианли", | |
| "(s)iviliza(ts)iya": "цивилизация", | |
| "(s)igara": "цигара", | |
| "(s)ikl": "цикл", | |
| "(s)iklik": "циклик", | |
| "(s)ikllashtirmoq": "цикллаштирмоқ", | |
| "(s)iklli": "циклли", | |
| "(s)iklon": "циклон", | |
| "(s)iklotron": "циклотрон", | |
| "(s)ilindr": "цилиндр", | |
| "(s)ilindrik": "цилиндрик", | |
| "(s)ilindrli": "цилиндрли", | |
| "(s)inga": "цинга", | |
| "(s)ink": "цинк", | |
| "(s)inkograf": "цинкограф", | |
| "(s)inkografiya": "цинкография", | |
| "(s)irk": "цирк", | |
| "(s)irkoniy": "цирконий", | |
| "(s)irkul": "циркуль", | |
| "(s)irkulyar": "циркуляр", | |
| "(s)irkchi": "циркчи", | |
| "(s)irroz": "цирроз", | |
| "(s)isterna": "цистерна", | |
| "(s)isternali": "цистернали", | |
| "(s)istit": "цистит", | |
| "(s)itata": "цитата", | |
| "(s)itatabozlik": "цитатабозлик", | |
| "(s)ito-": "цито-", | |
| "(s)itodiagnostika": "цитодиагностика", | |
| "(s)itokimyo": "цитокимё", | |
| "(s)itoliz": "цитолиз", | |
| "(s)itologiya": "цитология", | |
| "(s)itrus": "цитрус", | |
| "(s)iferblat": "циферблат", | |
| "(s)iferblatli": "циферблатли", | |
| "(s)okol": "цоколь", | |
| "(s)unami": "цунами", | |
| "cherepi(ts)a": "черепица", | |
| "shvey(s)ar": "швейцар", | |
| "shmu(ts)titul": "шмуцтитул", | |
| "shni(ts)el": "шницель", | |
| "shpri(ts)": "шприц", | |
| "shtangen(s)irkul": "штангенциркуль", | |
| "evakua(ts)iya": "эвакуация", | |
| "evolyu(ts)ion": "эволюцион", | |
| "evolyu(ts)iya": "эволюция", | |
| "ego(ts)entrizm": "эгоцентризм", | |
| "eksguma(ts)iya": "эксгумация", | |
| "ekspedi(ts)ion": "экспедицион", | |
| "ekspedi(ts)iya": "экспедиция", | |
| "ekspedi(ts)iyachi": "экспедициячи", | |
| "ekspluata(ts)iya": "эксплуатация", | |
| "ekspluata(ts)iyachi": "эксплуатациячи", | |
| "ekspozi(ts)iya": "экспозиция", | |
| "ekspropria(ts)iya": "экспроприация", | |
| "ekstradi(ts)iya": "экстрадиция", | |
| "ekstrak(s)iya": "экстракция", | |
| "elektrifika(ts)iya": "электрификация", | |
| "elektrostan(s)iya": "электростанция", | |
| "emansipa(ts)iya": "эмансипация", | |
| "emigra(ts)iya": "эмиграция", | |
| "emo(ts)ional": "эмоционал", | |
| "emo(ts)ionallik": "эмоционаллик", | |
| "emo(ts)iya": "эмоция", | |
| "empiriokriti(ts)izm": "эмпириокритицизм", | |
| "en(s)efalit": "энцефалит", | |
| "en(s)efalogramma": "энцефалограмма", | |
| "en(s)iklopedik": "энциклопедик", | |
| "en(s)iklopedist": "энциклопедист", | |
| "en(s)iklopediya": "энциклопедия", | |
| "en(s)iklopediyachi": "энциклопедиячи", | |
| "epi(ts)entr": "эпицентр", | |
| "eritro(ts)itlar": "эритроцитлар", | |
| "erudi(ts)iya": "эрудиция", | |
| "eskala(ts)iya": "эскалация", | |
| "esmine(ts)": "эсминец", | |
| "essen(s)iya": "эссенция", | |
| "yurisdik(s)iya": "юрисдикция", | |
| "yurispruden(s)iya": "юриспруденция", | |
| "yusti(ts)iya": "юстиция", | |
| } | |
| # These words cannot be reliably transliterated into cyrillic | |
| E_WORDS = { | |
| "bel(e)taj": "бельэтаж", | |
| "bugun-(e)rta": "бугун-эрта", | |
| "diqqat-(e)ʼtibor": "диққат-эътибор", | |
| "ich-(e)t": "ич-эт", | |
| "karat(e)": "каратэ", | |
| "m(e)r": "мэр", | |
| "obroʻ-(e)ʼtiborli": "обрў-эътиборли", | |
| "omon-(e)son": "омон-эсон", | |
| "r(e)ket": "рэкет", | |
| "sut(e)mizuvchilar": "сутэмизувчилар", | |
| "upa-(e)lik": "упа-элик", | |
| "xayr-(e)hson": "хайр-эҳсон", | |
| "qayn(e)gachi": "қайнэгачи", | |
| } | |
| # Not to confuse with ш | |
| SH_WORDS = {"a(sh)ob": "асҳоб", "mu(sh)af": "мусҳаф"} | |
| # Not to confuse with ё | |
| YO_WORDS = { | |
| "general-ma(yo)r": "генерал-майор", | |
| "(yo)g": "йог", | |
| "(yo)ga": "йога", | |
| "(yo)gurt": "йогурт", | |
| "(yo)d": "йод", | |
| "(yo)dlamoq": "йодламоқ", | |
| "(yo)dli": "йодли", | |
| "ma(yo)nez": "майонез", | |
| "mikrorayon": "микрорайон", | |
| "ma(yo)r": "майор", | |
| "ra(yo)n": "район", | |
| } | |
| YU_WORDS = {"mo(yu)pa": "мойупа", "po(yu)stun": "пойустун"} | |
| YA_WORDS = { | |
| "po(ya)bzal": "пойабзал", | |
| "po(ya)ndoz": "пойандоз", | |
| "po(ya)fzal": "пойафзал", | |
| } | |
| YE_WORDS = { | |
| "i(ye)": "ийе", | |
| "konve(ye)r": "конвейер", | |
| "ple(ye)r": "плейер", | |
| "sta(ye)r": "стайер", | |
| "fo(ye)": "фойе", | |
| } | |
| SOFT_SIGN_WORDS = { | |
| "aviamodel": "авиамодель", | |
| "avtomagistralavtomat": "автомагистральавтомат", | |
| "avtomobil": "автомобиль", | |
| "akvarel": "акварель", | |
| "alkogol": "алкоголь", | |
| "albatros": "альбатрос", | |
| "albom": "альбом", | |
| "alpinizm": "альпинизм", | |
| "alpinist": "альпинист", | |
| "alt": "альт", | |
| "alternativ": "альтернатив", | |
| "alternativa": "альтернатива", | |
| "altimetr": "альтиметр", | |
| "altchi": "альтчи", | |
| "alfa": "альфа", | |
| "alfa-zarralar": "альфа-зарралар", | |
| "alma-terapiya": "альма-терапия", | |
| "alyans": "альянс", | |
| "amalgama": "амальгама", | |
| "ansambl": "ансамбль", | |
| "apelsin": "апельсин", | |
| "aprel": "апрель", | |
| "artel": "артель", | |
| "artikl": "артикль", | |
| "arergard": "арьергард", | |
| "asfalt": "асфальт", | |
| "asfaltlamoq": "асфальтламоқ", | |
| "asfaltli": "асфальтли", | |
| "atele": "ателье", | |
| "bazalt": "базальт", | |
| "balzam": "бальзам", | |
| "balzamlash": "бальзамлаш", | |
| "balneolog": "бальнеолог", | |
| "balneologik": "бальнеологик", | |
| "balneologiya": "бальнеология", | |
| "balneoterapiya": "бальнеотерапия", | |
| "balneotexnika": "бальнеотехника", | |
| "banderol": "бандероль", | |
| "barelef": "барельеф", | |
| "barrel": "баррель", | |
| "barer": "барьер", | |
| "batalon": "батальон", | |
| "belveder": "бельведер", | |
| "belgiyalik": "бельгиялик", | |
| "belting": "бельтинг", | |
| "beletaj": "бельэтаж", | |
| "bilyard": "бильярд", | |
| "binokl": "бинокль", | |
| "biofiltr": "биофильтр", | |
| "bolonya": "болонья", | |
| "bolshevizm": "большевизм", | |
| "bolshevik": "большевик", | |
| "brakonerlik": "браконьерлик", | |
| "broneavtomobil": "бронеавтомобиль", | |
| "bron": "бронь", | |
| "budilnik": "будильник", | |
| "bulvar": "бульвар", | |
| "buldenej": "бульденеж", | |
| "buldog": "бульдог", | |
| "buldozer": "бульдозер", | |
| "buldozerchi": "бульдозерчи", | |
| "bulon": "бульон", | |
| "byulleten": "бюллетень", | |
| "valeryanka": "валерьянка", | |
| "valvatsiya": "вальвация", | |
| "vals": "вальс", | |
| "vanil": "ваниль", | |
| "varete": "варьете", | |
| "vedomost": "ведомость", | |
| "veksel": "вексель", | |
| "ventil": "вентиль", | |
| "vermishel": "вермишель", | |
| "verner": "верньер", | |
| "verf": "верфь", | |
| "vestibyul": "вестибюль", | |
| "videofilm": "видеофильм", | |
| "viklyuchatel": "виключатель", | |
| "vinetka": "виньетка", | |
| "violonchel": "виолончель", | |
| "vklyuchatel": "включатель", | |
| "vodevil": "водевиль", | |
| "volost": "волость", | |
| "volt": "вольт", | |
| "volta": "вольта", | |
| "voltli": "вольтли", | |
| "voltmetr": "вольтметр", | |
| "volfram": "вольфрам", | |
| "vulgar": "вульгар", | |
| "vulgarizm": "вульгаризм", | |
| "vulgarlashtirmoq": "вульгарлаштирмоқ", | |
| "gavan": "гавань", | |
| "galvanizatsiya": "гальванизация", | |
| "galvanik": "гальваник", | |
| "galvanometr": "гальванометр", | |
| "gantel": "гантель", | |
| "garmon": "гармонь", | |
| "gastrol": "гастроль", | |
| "gastrol-konsert": "гастроль-концерт", | |
| "gelmint": "гельминт", | |
| "gelmintoz": "гельминтоз", | |
| "gelmintologiya": "гельминтология", | |
| "geraldika": "геральдика", | |
| "gilza": "гильза", | |
| "giposulfit": "гипосульфит", | |
| "golf": "гольф", | |
| "gorelef": "горельеф", | |
| "gorizontal": "горизонталь", | |
| "gospital": "госпиталь", | |
| "grifel": "грифель", | |
| "guash": "гуашь", | |
| "daltonizm": "дальтонизм", | |
| "dvigatel": "двигатель", | |
| "devalvatsiya": "девальвация", | |
| "dekabr": "декабрь", | |
| "delta": "дельта", | |
| "delfin": "дельфин", | |
| "delfinariy": "дельфинарий", | |
| "delfinsimonlar": "дельфинсимонлар", | |
| "detal": "деталь", | |
| "diagonal": "диагональ", | |
| "diafilm": "диафильм", | |
| "dizel": "дизель", | |
| "dizel-motor": "дизель-мотор", | |
| "dirijabl": "дирижабль", | |
| "drel": "дрель", | |
| "duel": "дуэль", | |
| "jenshen": "женьшень", | |
| "impuls": "импульс", | |
| "inventar": "инвентарь", | |
| "insult": "инсульт", | |
| "intervyu": "интервью", | |
| "interer": "интерьер", | |
| "italyan": "итальян", | |
| "italyanlar": "итальянлар", | |
| "italyancha": "итальянча", | |
| "iyul": "июль", | |
| "iyun": "июнь", | |
| "kabel": "кабель", | |
| "kalendar": "календарь", | |
| "kalka": "калька", | |
| "kalkalamoq": "калькаламоқ", | |
| "kalkulyator": "калькулятор", | |
| "kalkulyatsiya": "калькуляция", | |
| "kalsiy": "кальций", | |
| "kanifol": "канифоль", | |
| "kapelmeyster": "капельмейстер", | |
| "kapsyul": "капсюль", | |
| "karamel": "карамель", | |
| "kartel": "картель", | |
| "kartech": "картечь", | |
| "karusel": "карусель", | |
| "karer": "карьер", | |
| "kastryul": "кастрюль", | |
| "kastryulka": "кастрюлька", | |
| "katapulta": "катапульта", | |
| "kafel": "кафель", | |
| "kinofestival": "кинофестиваль", | |
| "kinofilm": "кинофильм", | |
| "kisel": "кисель", | |
| "kitel": "китель", | |
| "knyaz": "князь", | |
| "kobalt": "кобальт", | |
| "kokil": "кокиль", | |
| "kokteyl": "коктейль", | |
| "kompyuter": "компьютер", | |
| "kompyuterlashtirmoq": "компьютерлаштирмоқ", | |
| "konsultant": "консультант", | |
| "konsultativ": "консультатив", | |
| "konsultatsiya": "консультация", | |
| "kontrol": "контроль", | |
| "konferanse": "конферансье", | |
| "konslager": "концлагерь", | |
| "kon": "конь", | |
| "konki": "коньки", | |
| "konkichi": "конькичи", | |
| "konyunktiva": "коньюнктива", | |
| "konyunktivit": "коньюнктивит", | |
| "konyunktura": "коньюнктура", | |
| "konyak": "коньяк", | |
| "korol": "король", | |
| "kreml": "кремль", | |
| "krovat": "кровать", | |
| "kulminatsion": "кульминацион", | |
| "kulminatsiya": "кульминация", | |
| "kultivator": "культиватор", | |
| "kultivatsiya": "культивация", | |
| "kulturizm": "культуризм", | |
| "kurer": "курьер", | |
| "kyat": "кьят", | |
| "lager": "лагерь", | |
| "latun": "латунь", | |
| "losos": "лосось", | |
| "loson": "лосьон", | |
| "magistral": "магистраль", | |
| "marseleza": "марсельеза", | |
| "mebel": "мебель", | |
| "medal": "медаль", | |
| "medalon": "медальон", | |
| "melxior": "мельхиор", | |
| "menshevizm": "меньшевизм", | |
| "menshevik": "меньшевик", | |
| "migren": "мигрень", | |
| "mikroinsult": "микроинсульт", | |
| "mikrofilm": "микрофильм", | |
| "model": "модель", | |
| "modeler": "модельер", | |
| "molbert": "мольберт", | |
| "monastir": "монастирь", | |
| "monokultoura": "монокультоура", | |
| "motel": "мотель", | |
| "multi-": "мульти-", | |
| "multimediya": "мультимедия", | |
| "multimillioner": "мультимиллионер", | |
| "multiplikatsion": "мультипликацион", | |
| "multiplikator": "мультипликатор", | |
| "multiplikatsiya": "мультипликация", | |
| "neft": "нефть", | |
| "nikel": "никель", | |
| "nimpalto": "нимпальто", | |
| "nippel": "ниппель", | |
| "nol": "ноль", | |
| "normal": "нормаль", | |
| "noyabr": "ноябрь", | |
| "oblast": "область", | |
| "okkultizm": "оккультизм", | |
| "oktabr": "октябрь", | |
| "otel": "отель", | |
| "oftalmologiya": "офтальмология", | |
| "ochered": "очередь", | |
| "pavilon": "павильон", | |
| "palma": "пальма", | |
| "palmazor": "пальмазор", | |
| "palpatsiya": "пальпация", | |
| "palto": "пальто", | |
| "paltobop": "пальтобоп", | |
| "paltolik": "пальтолик", | |
| "panel": "панель", | |
| "parallel": "параллель", | |
| "parol": "пароль", | |
| "patrul": "патруль", | |
| "pedal": "педаль", | |
| "penalti": "пенальти", | |
| "pechat": "печать", | |
| "pechene": "печенье", | |
| "pech": "печь", | |
| "plastir": "пластирь", | |
| "povest": "повесть", | |
| "polka": "полька", | |
| "portfel": "портфель", | |
| "porshen": "поршень", | |
| "pochtalon": "почтальон", | |
| "predoxranitel": "предохранитель", | |
| "premera": "премьера", | |
| "premer-ministr": "премьер-министр", | |
| "press-pape": "пресс-папье", | |
| "press-sekretar": "пресс-секретарь", | |
| "pristan": "пристань", | |
| "profil": "профиль", | |
| "pulverizator": "пульверизатор", | |
| "pulmonologiya": "пульмонология", | |
| "pulpa": "пульпа", | |
| "pulpit": "пульпит", | |
| "puls": "пульс", | |
| "pult": "пульт", | |
| "pesa": "пьеса", | |
| "radiospektakl": "радиоспектакль", | |
| "rante": "рантье", | |
| "revalvatsiya": "ревальвация", | |
| "revolver": "револьвер", | |
| "rezba": "резьба", | |
| "rezbali": "резьбали", | |
| "relef": "рельеф", | |
| "rels": "рельс", | |
| "relsli": "рельсли", | |
| "relssiz": "рельссиз", | |
| "retush": "ретушь", | |
| "riyel": "риель", | |
| "ritsar": "рицарь", | |
| "rol": "роль", | |
| "royal": "рояль", | |
| "rubilnik": "рубильник", | |
| "rubl": "рубль", | |
| "rul": "руль", | |
| "saldo": "сальдо", | |
| "salto": "сальто", | |
| "sekretar": "секретарь", | |
| "selderey": "сельдерей", | |
| "seld": "сельдь", | |
| "sentabr": "сентябрь", | |
| "senor": "сеньор", | |
| "senora": "сеньора", | |
| "sinka": "синька", | |
| "sinkalamoq": "синькаламоқ", | |
| "siren": "сирень", | |
| "skalpel": "скальпель", | |
| "slesar": "слесарь", | |
| "sobol": "соболь", | |
| "sol": "соль", | |
| "spektakl": "спектакль", | |
| "spiral": "спираль", | |
| "statya": "статья", | |
| "stelka": "стелька", | |
| "sterjen": "стержень", | |
| "stil": "стиль", | |
| "sudya": "судья", | |
| "sudyalik": "судьялик", | |
| "sulfat": "сульфат", | |
| "sulfatlar": "сульфатлар", | |
| "tabel": "табель", | |
| "talk": "тальк", | |
| "tekstil": "текстиль", | |
| "telefilm": "телефильм", | |
| "tigel": "тигель", | |
| "tokar": "токарь", | |
| "tol": "толь", | |
| "tonnel": "тоннель", | |
| "tunnel": "туннель", | |
| "tush": "тушь", | |
| "tyulen": "тюлень", | |
| "tyul": "тюль", | |
| "ultimatum": "ультиматум", | |
| "ultra-": "ультра-", | |
| "ultrabinafsha": "ультрабинафша", | |
| "ultramikroskop": "ультрамикроскоп", | |
| "ultratovush": "ультратовуш", | |
| "ultraqisqa": "ультрақисқа", | |
| "umivalnik": "умивальник", | |
| "util": "утиль", | |
| "fakultativ": "факультатив", | |
| "fakultet": "факультет", | |
| "fakultetlalaro": "факультетлаларо", | |
| "falsifikator": "фальсификатор", | |
| "falsifikatsiya": "фальсификация", | |
| "fevral": "февраль", | |
| "feldmarshal": "фельдмаршал", | |
| "feldsher": "фельдшер", | |
| "feldʼeger": "фельдъегерь", | |
| "feleton": "фельетон", | |
| "feletonchi": "фельетончи", | |
| "festival": "фестиваль", | |
| "fizkultura": "физкультура", | |
| "fizkulturachi": "физкультурачи", | |
| "film": "фильм", | |
| "film-konsert": "фильм-концерт", | |
| "filmoskop": "фильмоскоп", | |
| "filmoteka": "фильмотека", | |
| "filtr": "фильтр", | |
| "filtratsiya": "фильтрация", | |
| "filtrlamoq": "фильтрламоқ", | |
| "filtrli": "фильтрли", | |
| "folga": "фольга", | |
| "folklor": "фольклор", | |
| "folklorist": "фольклорист", | |
| "folkloristika": "фольклористика", | |
| "folklorchi": "фольклорчи", | |
| "folklorshunos": "фольклоршунос", | |
| "folklorshunoslik": "фольклоршунослик", | |
| "fonar": "фонарь", | |
| "fortepyano": "фортепьяно", | |
| "xolodilnik": "холодильник", | |
| "xrustal": "хрусталь", | |
| "selsiy": "цельсий", | |
| "sirkul": "циркуль", | |
| "sokol": "цоколь", | |
| "chizel": "чизель", | |
| "shagren": "шагрень", | |
| "shampun": "шампунь", | |
| "sherst": "шерсть", | |
| "shinel": "шинель", | |
| "shifoner": "шифоньер", | |
| "shnitsel": "шницель", | |
| "shpatel": "шпатель", | |
| "shpilka": "шпилька", | |
| "shpindel": "шпиндель", | |
| "shtangensirkul": "штангенциркуль", | |
| "shtapel": "штапель", | |
| "shtempel": "штемпель", | |
| "emal": "эмаль", | |
| "emulsiya": "эмульсия", | |
| "endshpil": "эндшпиль", | |
| "eskadrilya": "эскадрилья", | |
| "yuan": "юань", | |
| "yuriskonsult": "юрисконсульт", | |
| "yakor": "якорь", | |
| "yanvar": "январь", | |
| } | |
| CYRILLIC_TO_LATIN = { | |
| "а": "a", | |
| "А": "A", | |
| "б": "b", | |
| "Б": "B", | |
| "в": "v", | |
| "В": "V", | |
| "г": "g", | |
| "Г": "G", | |
| "д": "d", | |
| "Д": "D", | |
| "е": "e", | |
| "Е": "E", | |
| "ё": "yo", | |
| "Ё": "Yo", | |
| "ж": "j", | |
| "Ж": "J", | |
| "з": "z", | |
| "З": "Z", | |
| "и": "i", | |
| "И": "I", | |
| "й": "y", | |
| "Й": "Y", | |
| "к": "k", | |
| "К": "K", | |
| "л": "l", | |
| "Л": "L", | |
| "м": "m", | |
| "М": "M", | |
| "н": "n", | |
| "Н": "N", | |
| "о": "o", | |
| "О": "O", | |
| "п": "p", | |
| "П": "P", | |
| "р": "r", | |
| "Р": "R", | |
| "с": "s", | |
| "С": "S", | |
| "т": "t", | |
| "Т": "T", | |
| "у": "u", | |
| "У": "U", | |
| "ф": "f", | |
| "Ф": "F", | |
| "х": "x", | |
| "Х": "X", | |
| "ц": "s", | |
| "Ц": "S", | |
| "ч": "ch", | |
| "Ч": "Ch", | |
| "ш": "sh", | |
| "Ш": "Sh", | |
| "ъ": "ʼ", | |
| "Ъ": "ʼ", | |
| "ь": "", | |
| "Ь": "", | |
| "э": "e", | |
| "Э": "E", | |
| "ю": "yu", | |
| "Ю": "Yu", | |
| "я": "ya", | |
| "Я": "Ya", | |
| "ў": "oʻ", | |
| "Ў": "Oʻ", | |
| "қ": "q", | |
| "Қ": "Q", | |
| "ғ": "gʻ", | |
| "Ғ": "Gʻ", | |
| "ҳ": "h", | |
| "Ҳ": "H", | |
| } | |
| CYRILLIC_VOWELS = ( | |
| "а", | |
| "А", | |
| "е", | |
| "Е", | |
| "ё", | |
| "Ё", | |
| "и", | |
| "И", | |
| "о", | |
| "О", | |
| "у", | |
| "У", | |
| "э", | |
| "Э", | |
| "ю", | |
| "Ю", | |
| "я", | |
| "Я", | |
| "ў", | |
| "Ў", | |
| ) | |
| def to_cyrillic(text): | |
| """Transliterate latin text to cyrillic using the following rules: | |
| 1. ye = е in the beginning of a word or after a vowel | |
| 2. e = э in the beginning of a word or after a vowel | |
| 3. ц exception words | |
| 4. э exception words | |
| """ | |
| # These compounds must be converted before other letters | |
| compounds_first = { | |
| "ch": "ч", | |
| "Ch": "Ч", | |
| "CH": "Ч", | |
| # this line must come before 's' because it has an 'h' | |
| "sh": "ш", | |
| "Sh": "Ш", | |
| "SH": "Ш", | |
| # This line must come before 'yo' because of it's apostrophe | |
| "yo‘": "йў", | |
| "Yo‘": "Йў", | |
| "YO‘": "ЙЎ", | |
| } | |
| compounds_second = { | |
| "yo": "ё", | |
| "Yo": "Ё", | |
| "YO": "Ё", | |
| # 'ts': 'ц', 'Ts': 'Ц', 'TS': 'Ц', # No need for this, see TS_WORDS | |
| "yu": "ю", | |
| "Yu": "Ю", | |
| "YU": "Ю", | |
| "ya": "я", | |
| "Ya": "Я", | |
| "YA": "Я", | |
| "ye": "е", | |
| "Ye": "Е", | |
| "YE": "Е", | |
| # different kinds of apostrophes | |
| "o‘": "ў", | |
| "O‘": "Ў", | |
| "oʻ": "ў", | |
| "Oʻ": "Ў", | |
| "g‘": "ғ", | |
| "G‘": "Ғ", | |
| "gʻ": "ғ", | |
| "Gʻ": "Ғ", | |
| } | |
| beginning_rules = { | |
| "ye": "е", | |
| "Ye": "Е", | |
| "YE": "Е", | |
| "e": "э", | |
| "E": "Э", | |
| } | |
| after_vowel_rules = { | |
| "ye": "е", | |
| "Ye": "Е", | |
| "YE": "Е", | |
| "e": "э", | |
| "E": "Э", | |
| } | |
| exception_words_rules = { | |
| "s": "ц", | |
| "S": "Ц", | |
| "ts": "ц", | |
| "Ts": "Ц", | |
| "TS": "Ц", # but not tS | |
| "e": "э", | |
| "E": "э", | |
| "sh": "сҳ", | |
| "Sh": "Сҳ", | |
| "SH": "СҲ", | |
| "yo": "йо", | |
| "Yo": "Йо", | |
| "YO": "ЙО", | |
| "yu": "йу", | |
| "Yu": "Йу", | |
| "YU": "ЙУ", | |
| "ya": "йа", | |
| "Ya": "Йа", | |
| "YA": "ЙА", | |
| } | |
| # standardize some characters | |
| # the first one is the windows string, the second one is the mac string | |
| text = text.replace("ʻ", "‘") | |
| def replace_soft_sign_words(m): | |
| word = m.group(1) | |
| if word.isupper(): | |
| result = SOFT_SIGN_WORDS[word.lower()].upper() | |
| elif word[0].isupper(): | |
| result = SOFT_SIGN_WORDS[word.lower()] | |
| result = result[0].upper() + result[1:] | |
| else: | |
| result = SOFT_SIGN_WORDS[word.lower()] | |
| return result | |
| for word in SOFT_SIGN_WORDS: | |
| text = re.sub(r"\b(%s)" % word, replace_soft_sign_words, text, flags=re.U) | |
| def replace_exception_words(m): | |
| """Replace ц (or э) only leaving other characters unchanged""" | |
| return "%s%s%s" % ( | |
| m.group(1)[: m.start(2)], | |
| exception_words_rules[m.group(2)], | |
| m.group(1)[m.end(2) :], | |
| ) | |
| # loop because of python's limit of 100 named groups | |
| for word in list(TS_WORDS.keys()) + list(E_WORDS.keys()): | |
| text = re.sub(r"\b(%s)" % word, replace_exception_words, text, flags=re.U) | |
| # compounds | |
| text = re.sub( | |
| r"(%s)" % "|".join(compounds_first.keys()), | |
| lambda x: compounds_first[x.group(1)], | |
| text, | |
| flags=re.U, | |
| ) | |
| text = re.sub( | |
| r"(%s)" % "|".join(compounds_second.keys()), | |
| lambda x: compounds_second[x.group(1)], | |
| text, | |
| flags=re.U, | |
| ) | |
| text = re.sub( | |
| r"\b(%s)" % "|".join(beginning_rules.keys()), | |
| lambda x: beginning_rules[x.group(1)], | |
| text, | |
| flags=re.U, | |
| ) | |
| text = re.sub( | |
| r"(%s)(%s)" % ("|".join(LATIN_VOWELS), "|".join(after_vowel_rules.keys())), | |
| lambda x: "%s%s" % (x.group(1), after_vowel_rules[x.group(2)]), | |
| text, | |
| flags=re.U, | |
| ) | |
| text = re.sub( | |
| r"(%s)" % "|".join(LATIN_TO_CYRILLIC.keys()), | |
| lambda x: LATIN_TO_CYRILLIC[x.group(1)], | |
| text, | |
| flags=re.U, | |
| ) | |
| return text | |
| def to_latin(text): | |
| """Transliterate cyrillic text to latin using the following rules: | |
| 1. ц = s at the beginning of a word. | |
| ц = ts in the middle of a word after a vowel. | |
| ц = s in the middle of a word after consonant (DEFAULT in CYRILLIC_TO_LATIN) | |
| цирк = sirk | |
| цех = sex | |
| федерация = federatsiya | |
| функция = funksiya | |
| 2. е = ye at the beginning of a word or after a vowel. | |
| е = e in the middle of a word after a consonant (DEFAULT). | |
| 3. Сентябр = Sentabr, Октябр = Oktabr | |
| """ | |
| beginning_rules = {"ц": "s", "Ц": "S", "е": "ye", "Е": "Ye"} | |
| after_vowel_rules = {"ц": "ts", "Ц": "Ts", "е": "ye", "Е": "Ye"} | |
| text = re.sub( | |
| r"(сент|окт)([яЯ])(бр)", | |
| lambda x: "%s%s%s" | |
| % (x.group(1), "a" if x.group(2) == "я" else "A", x.group(3)), | |
| text, | |
| flags=re.IGNORECASE | re.U, | |
| ) | |
| text = re.sub( | |
| r"\b(%s)" % "|".join(beginning_rules.keys()), | |
| lambda x: beginning_rules[x.group(1)], | |
| text, | |
| flags=re.U, | |
| ) | |
| text = re.sub( | |
| r"(%s)(%s)" % ("|".join(CYRILLIC_VOWELS), "|".join(after_vowel_rules.keys())), | |
| lambda x: "%s%s" % (x.group(1), after_vowel_rules[x.group(2)]), | |
| text, | |
| flags=re.U, | |
| ) | |
| text = re.sub( | |
| r"(%s)" % "|".join(CYRILLIC_TO_LATIN.keys()), | |
| lambda x: CYRILLIC_TO_LATIN[x.group(1)], | |
| text, | |
| flags=re.U, | |
| ) | |
| return text | |
| def transliterate(text, to_variant): | |
| if to_variant == "cyrillic": | |
| text = to_cyrillic(text) | |
| elif to_variant == "latin": | |
| text = to_latin(text) | |
| return text | |
| if __name__ == "__main__": | |
| """cat input_in_lat.txt | python transliterate.py > output_in_cyr.txt""" | |
| for line in sys.stdin: | |
| sys.stdout.write(transliterate(line, "cyrillic")) | |