Amaliy topshiriqlar
May 23, 2025

KIRILL-LOTIN TELEGRAM BOT

Sodda telegram bot yaratamiz

1-QISM. KIRILL-LOTIN-KIRILL TRANSLITERATOR

2-QISM. TELEGRAM BOT

kode

main.py

import telebot
from transliterate import to_cyrillic, to_latin

TOKEN = ""  # <-- Tokeningizni shu yerga yozing
bot = telebot.TeleBot(token=TOKEN)

# \start komandasi uchun mas'ul funksiya
@bot.message_handler(commands=["start"])
def send_welcome(message):
    username = (
        message.from_user.username
    )  # Bu usul bilan foydalanuvchi nomini olishimiz mumkin
    xabar = f"Assalom alaykum, {username} Kirill-Lotin-Kirill botiga xush kelibsiz!"
    xabar += "\nMatningizni yuboring."
    bot.reply_to(message, xabar)


# matnlar uchun mas'ul funksiya
@bot.message_handler(func=lambda msg: msg.text is not None)
def translit(message):
    msg = message.text
    javob = lambda msg: to_cyrillic(msg) if msg.isascii() else to_latin(msg)
    bot.reply_to(message, javob(msg))


bot.polling()

1. Kutubxonalarni chaqirish

import telebot
from transliterate import to_cyrillic, to_latin
  • telebot — bu pyTelegramBotAPI paketining moduli, Telegram bot yaratish uchun kerak.
  • to_cyrillic, to_latin — bu funksiya sizning transliterate modulida yozilgan (yoki siz kutubxonadan olgan bo‘lishingiz mumkin), matnni lotinchadan kirillchaga va aksincha aylantiradi.

2. Bot tokeni

TOKEN = ""  # <-- Tokeningizni shu yerga yozing
bot = telebot.TeleBot(token=TOKEN)
  • TOKEN — bu siz yaratgan Telegram botga berilgan maxfiy kalit (BotFather orqali olinadi).
  • Bu token yordamida bot Telegram serverlariga ulanadi.

📌 Eslatma: Tokenni TOKEN = "123456:ABC..." ko‘rinishida to‘ldirishingiz kerak, aks holda bot ishlamaydi.


3. /start komandasi

@bot.message_handler(commands=["start"])
def send_welcome(message):
    username = message.from_user.username
    xabar = f"Assalom alaykum, {username} Kirill-Lotin-Kirill botiga xush kelibsiz!"
    xabar += "\nMatningizni yuboring."
    bot.reply_to(message, xabar)
  • Bu funksiya /start komandasiga javob beradi.
  • Foydalanuvchining Telegram username ni olib, salomlashish xabarini yuboradi.

4. Matnlarni qayta ishlash

@bot.message_handler(func=lambda msg: msg.text is not None)
def translit(message):
    msg = message.text
    javob = lambda msg: to_cyrillic(msg) if msg.isascii() else to_latin(msg)
    bot.reply_to(message, javob(msg))
  • Bu handler barcha matnli xabarlarga javob beradi.
  • msg.isascii() — agar matn faqat Lotin (ASCII) harflaridan iborat bo‘lsa, Kirillga aylantiriladi, aks holda Lotinga.
  • bot.reply_to() yordamida foydalanuvchiga javob yuboriladi.

5. Botni ishga tushirish

bot.polling()
  • Bu metod botni doimiy ravishda Telegram serverlari bilan aloqa qilishga majbur qiladi.
  • Bot yangi xabarlarni kutib turadi.

Xulosa

Bu oddiy va foydali Telegram bot bo‘lib:

  • Foydalanuvchi /start komandasi yuborganda salomlashadi.
  • Har qanday matn yuborilsa, avtomatik tarzda uni Kirill ↔ Lotin ga o‘giradi.


translete.py

import re — bu Pythonning regular expressions (muntazam ifodalar) bilan ishlash uchun kerakli kutubxonasi. Matndan ma’lum naqshlarni qidirish yoki almashtirish uchun ishlatiladi.

import sys — bu esa sys kutubxonasi bo‘lib, Python interpretatori va uning muhiti bilan bog‘liq funksiyalarni taqdim etadi (masalan, komanda qatori argumentlarini olish, chiqish kodi bilan chiqish va h.k.).

# -*- 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"))