Repository avatar
Other Tools
v0.4.0
active

bitg

uz.bitg/bitg

Convert Uzbek text to the new 2026 Latin alphabet (Ö Ğ Ş Ç) from old Latin or Cyrillic.

Documentation

bitg

ci linux release license OpenSSF Scorecard OpenSSF Best Practices REUSE status crates.io platforms

O'zbek matnini 2026-yilgi lotin alifbosiga o'giradi — yozish paytida, hamma joyda, inglizchani buzmasdan. Uzbek text to the 2026 Latin alphabet (ö ğ ş ç ʼ) — as you type, everywhere, without breaking English.

Bitig — qadimgi turkiy tilda «yozuv». bitg.uz

O'RQ-1184 qonuni (2026-10-21) to'rtta harfni almashtirdi: Oʻ → Ö, Gʻ → Ğ, Sh → Ş, Ch → Ç. Qonun 2027-yil aprelida kuchga kiradi. bitg — shu o'tishni bir klaviatura bosishiga aylantiradigan ochiq kodli yadro va ilovalar.

bitg Windows'da: eskicha yozilgan «O'zbekiston shaharlari: Toshkent» probel bosilishi bilan «Özbekiston şaharlari: Toşkent» bo'ladi; «Please check the schedule» inglizcha qoladi, «keyin choy ichamiz» esa «keyin çoy içamiz» bo'ladi

Haqiqiy yozuv: Release'dagi MSI toza Windows VM'ga o'rnatilgan, tugmalar odam tezligida bosilgan, natija yadro bilan solishtirilgan (tools/demo, demo.yml).

$ bitg "O'zbekiston shaharlari: Toshkent, Samarqand"
Özbekiston şaharlari: Toşkent, Samarqand

$ bitg "Please check the schedule, keyin choy ichamiz"
Please check the schedule, keyin çoy içamiz

$ bitg old --ascii "Özbekiston şaharlari"
O'zbekiston shaharlari

Nimasi bilan boshqacha

🧠 Inglizchani tushunadiSo'z o'zbekcha ekaniga dalil bo'lmasa — tegmaydi. Lug'atlar (o'zbek korpusi + SCOWL), qo'shimchalar bo'yicha o'zak, harf belgilari va gap konteksti: check, How are you shah, Obama's, Menga chat yozing o'zgarmaydi; Menga choy yozing → Menga çoy yozing.
🔒 Kod va havolalarga tegmaydiURL, email, @user, #teg, domen, snake_case, camelCase, push(), shahar123 (parolga o'xshash).
✍️ Tutuq va tirnoqni ajratadi12 xil apostrof bitta deb qaraladi; 'Yaxshi tong' — tirnoq, tog' — ğ; Is'hoq → Ishoq.
🔁 Uch yo'nalisheski lotin → yangi, kirill → yangi (eng aniq yo'l), yangi → eski (o'tish davri saytlari uchun).
⚡ Tez va yengil1.4–2.7 µs/so'z, lug'at yuklash 0 ms (qurish vaqtida tayyor jadval), 1.1 MB xotira; tarmoq yo'q, tashqi bog'liqlik yo'q. Bitta yadro: Windows IME, CLI, mobil, web.
📏 O'lchanadibitg eval — real korpusda aniqlik va tezlik. Har o'zgarish raqam bilan tekshiriladi.

Sifat (hozirgi holat)

To'plamNatija
O'zbekcha gaplar (3000 ta, kirill matndan: kirish = eski lotin, kutilgan = yangi lotin, apostrof turlari aralash)98.87% (farqning ko'pi kirill korpus xatosi: maşğul, ğalaba)
Apostrofsiz yozilgan o'zbekcha ("ozbek", "togri"; boshqa 3000 gap): butun gap to'g'ri81.20% gap (2436/3000; lug'at kengaytirilgunga qadar 69.07%). Ikki ma'noli so'z (ochmaydi, otdim) endi jim tiklanmaydi: 3 gap to'g'rilandi, 10 so'z (otmoqchi, oqdan) yozilganicha qoladi va "tekshiring" deb belgilanadi
Inglizcha gaplar (sh/ch/apostrof bor, 3000 ta, Leipzig news + web) — o'zgarmasligi kerak99.73%
Tezlik2.7 µs/so'z o'zbekcha, 1.4 µs/so'z inglizcha matnda (release, x64)

O'lchov sanasi: 2026-11-12, bitg eval eval/{uz,uz_noapos,en}.tsv (to'plam repoda: eval/, CC BY 4.0; lug'at qurishda chiqarib tashlangan).

Tezlik va resurs: raqobatchilar bilan bir xil matnda

Bir xil 3000 gapda (eval/uz.tsv, 42 670 so'z; en.tsv, 62 082 so'z). Raqobatchilar dvigateli ularning saytidagi JS bundle'dan olinib, o'zgartirmasdan Node 'da yurgizildi; bitg — cargo run --release -p bitg-core --example bench -- eval/uz.tsv. Isitishdan keyin 5 marta o'rtachasi, bitta mashina.

o'zbekcha matninglizcha matnishga tushishxotirainglizcha himoya
bitg (Rust, native)2.72 µs/so'z1.40 µs/so'z0 ms1.1 MB privatelug'at + kontekst
alifbochi.uz (JS)2.331.45brauzer sahifasiNode jarayoni 26–41 MByo'q (shop → şop)
alifbo.akbarovlabs.uz (JS)3.391.93brauzer sahifasi〃yo'q
webnum.uz (JS)2.272.06brauzer sahifasi〃faqat imlo belgisi (c, w, ph)

Xulosa: faqat jadval bilan almashtiradigan konvertorlar o'zbekcha matnda ~15% tezroq, chunki bitg har so'zni lug'at va kontekst bilan tekshiradi. Inglizcha matnda bitg eng tez. Har qanday holatda bu bir so'zga mikrosekund — yozayotgan odam sezmaydi (tugmalar orasida ~100 000 µs). Resursda farq katta: lug'at binarga tayyor hash-jadval bo'lib kiradi (crates/bitg-core/build.rs), ishga tushganda tahlil qilinmaydi va xotira ajratilmaydi, IME yuklangan barcha dasturlar uni bitta nusxada bo'lishadi. Avval har dasturda 15–25 ms (sovuq diskda 0.5 s) va ~8 MB ketardi.

O'zbekcha to'plamda kirish ham, kutilgan javob ham kirill matndan mustaqil olinadi, shuning uchun konvertor Is'hoq → Ishoq, O'zA → ÖzA, Sh.Sharipov → Ş.Şaripov kabi holatlarni o'zi topishi kerak. Qolgan "xatolarning" ko'pi korpusdagi shovqin: kirill matndagi imlo xatosi (Киргизистон, Фаргона) — bitg ularni to'g'rilab qo'yadi.

Apostrof tiklash (ozbek → özbek): nomzod lug'atda asl so'zdan ancha ko'p uchrasa. Asl so'z ham haqiqiy bo'lsa (qol/qo'l, oz/o'z, yoq/yo'q, otdi/o'tdi) — taxmin qilinmaydi; faqat matn muallifi apostrof umuman qo'ymayotgani aniq bo'lsa (o'/g' yo'q va boshqa so'z tiklangan) tiklanadi (ozbek tilida oz fikrimiz → özbek tilida öz fikrimiz). Apostrofsiz shakl haqiqiy so'zmi — faqat kirill korpus aytadi (lotin matnidagi "bolgan" — xato yozuv).

To'plamni o'zingiz qurish: tools/build_eval.py, so'ng bitg eval eval/uz.tsv.

Tuzilma

flowchart LR
  core["bitg-core<br/>(Rust, bog'liqliksiz)"]
  cli["bitg CLI"]
  tsf["Windows TSF IME<br/>(prototip)"]
  ime["bitg-ime<br/>(yozish mantiqi)"]
  ibus["Linux: IBus / Fcitx5"]
  tray["Sozlamalar oynasi<br/>(WebView2)"]
  mob["Android / iOS klaviatura<br/>(reja)"]
  web["Web / WASM<br/>(wasm.rs tayyor, sayt ishlanmoqda)"]
  core --> cli
  core -- "C ABI (ffi.rs)" --> tsf
  core --> ime
  ime -- "C ABI" --> ibus
  core --> tray
  core -- "UniFFI" --> mob
  core --> web
CrateVazifa
bitg-coreqoidalar (latin), kirill (cyrillic), teskari (reverse), tokenlar (token), til dalili (lang), brendlar (data/names.txt), yozish sessiyasi (Session), C ABI (ffi), brauzer ABI (wasm, faqat wasm32)
bitg-clibitg convert / old / explain / eval
bitg-settingssozlamalar oynasi: kalitlar, ro'yxatlar, jonli namuna (Windows, WebView2)
bitg-imeplatformadan mustaqil yozish mantiqi (Linux): so'z chegarasi, kursor oldidagi matnni tekshirib almashtirish, matn bermaydigan dasturlar uchun preedit, Backspace bilan qaytarish va istisno o'rganish, settings.ini/exceptions.txt (~/.config/bitg); C ABI — linux/ dagi IBus (C) va Fcitx5 (C++) qobiqlari uchun
bitg-tsfWindows matn kiritish xizmati (TSF TIP, Rust): tugmalarga tegmaydi — matn o'zgarishini kuzatadi (ITfTextEditSink) va so'zdan keyin probel yozilganda o'sha so'zni joyida almashtiradi. Matnni bermaydigan dasturlarda (Qt: Telegram) — zaxira yo'l: bosilgan harflardan so'z yig'iladi, SendInput bilan Backspace + yangi so'z. Hook va clipboard yo'q

O'rnatish (Windows 10/11, x64)

Releases dan bitg-<versiya>-x64.msi ni oching. O'rnatuvchi barcha foydalanuvchilar uchun ishlaydi. Oxirida bitg ochiladi va klaviaturani O'zbek (lotin) tiliga o'zi qo'shadi. So'ng Win + Probel bilan «bitg» ni tanlang. Yangilash ham shu fayl bilan qilinadi: ochiq dasturlarni (Chrome, Telegram) yopish va kompyuterni qayta yuklash shart emas.

Paket menejeri bilan (qisqa nom hamma joyda bitg):

winget install bitg     # Microsoft katalogida ko'rib chiqilmoqda: microsoft/winget-pkgs#478645
choco install bitg      # Chocolatey: paket tayyor (packaging/chocolatey), e'lon qilinishi kutilmoqda

Chocolatey parametrlari: --params "'/NoAutostart /NoKeyboard'" (MSI'dagi AUTOSTART=0, ADDKEYBOARD=0).

NimaQayerda
Ilova (tray + sozlamalar), CLI, litsenziyalarC:\Program Files\bitg\ (CLI PATH'ga qo'shiladi)
IME DLLC:\Program Files\bitg\ime\<versiya>\bitg_tsf.dll — versiyali papka: yangi versiya ochiq dasturlarga xalaqit bermaydi
Start menyusi«bitg»
Windows bilan ishga tushishHKLM\…\Run (--autostart); har foydalanuvchi ilovadan o'chiradi → HKCU\Software\bitg\Autostart=0
Foydalanuvchi sozlamalari%APPDATA%\bitg — o'chirishda saqlanib qoladi

Korporativ tarqatish (GPO, Intune, SCCM, PDQ):

$msi = (Get-Item .\bitg-*-x64.msi).FullName                      # Release'dan olingan fayl
msiexec /i $msi /qn /l*v bitg-install.log                         # jim o'rnatish
msiexec /i $msi /qn AUTOSTART=0 ADDKEYBOARD=0                     # trayni va klaviaturani avtomatik qo'shmaslik
msiexec /x $msi /qn                                               # o'chirish
XossaStandartMa'nosi
AUTOSTART1barcha foydalanuvchilarda tray Windows bilan ishga tushadi
ADDKEYBOARD1ilova birinchi ochilganda klaviaturani foydalanuvchining tillar ro'yxatiga qo'shadi (har kimda bir marta; o'chirsa qaytadan qo'shilmaydi)

Tanlov HKLM\SOFTWARE\bitg da saqlanadi, yangilashda eslab qolinadi (buyruq qatoridagi qiymat ustun). Qaytish kodlari standart: 0 muvaffaqiyat, 3010 qayta yuklash tavsiya etiladi, 1603 xato (sababi /l*v logida). DLL ochiq dasturlarda yuklangan holda o'chirish ~1 daqiqa olishi mumkin (Windows Installer band fayllarni tekshiradi). Fayl baribir o'chadi, qayta yuklash kerak emas.

«Windows kompyuteringizni himoya qildi» oynasi chiqsa. Beta MSI hozircha imzolanmagan, shuning uchun SmartScreen notanish nashriyotchi haqida ogohlantiradi. Batafsil → Baribir ishga tushirish ni bosing. Faylni tekshirish: Release sahifasidagi .sha256 bilan solishtiring:

Get-FileHash .\bitg-*-x64.msi -Algorithm SHA256        # Release'dagi .sha256 bilan bir xil bo'lishi kerak
gh attestation verify .\bitg-*-x64.msi -R dtwinuz/bitg  # GitHub Actions'da shu repodan yig'ilganini isbotlaydi (v0.3.1+)

O'rnatuvchini qurish (WiX 5, .NET SDK): pwsh installer/build.ps1 → dist/bitg-<versiya>-x64.msi + .sha256. -CertThumbprint yoki BITG_SIGN_PFX bilan binarlar va MSI imzolanadi (SHA-256, vaqt tamg'asi). v* tegi qo'yilsa, release workflow MSI, Linux .deb va macOS .pkg paketlarini (build reusable workflow'i yig'adi va imzolaydi, SLSA Build L3) GitHub Release'ga chiqaradi.

Windows'da muammo bo'lsa

bitg o'zi ENG ga qaytib ketsa, yozganda o'girmasa yoki biror dasturda xalaqit bersa:

  1. Bir dasturda o'chirib turish. bitg sozlamalari → Dasturlar → kerakli dasturni o'chiring. Boshqa dasturlarda bitg ishlashda davom etadi. Hammasini to'xtatish — chap paneldagi Yoqilgan almashtirgichi.

  2. Windows versiyasi. Win + R → winver → oynadagi qatorni yozing (masalan, 24H2 (build 26100.xxxx)).

  3. bitg versiyasi. Sozlamalar oynasining pastida yoki PowerShell'da bitg --version.

  4. Qayerda bo'ladi. Faqat Start menyu / qidiruvdami yoki Notepad, Chrome, Telegram'da hammi?

  5. Log. Win + R → %LOCALAPPDATA%\bitg → ochilgan papkadagi tsf.log. Start menyu va qidiruv log'ni alohida joyga yozadi, uni bitta faylga yig'ish:

    Get-ChildItem "$env:LOCALAPPDATA\Packages\*\AC\bitg\tsf.log" | ForEach-Object { "== $($_.FullName)"; Get-Content $_ } | Set-Content "$env:USERPROFILE\Desktop\bitg-ac.log"
    
  6. Xabar berish. Sozlamalar → Xabar berish (skrinshot bilan), yoki GitHub issue ochib 2–4 javoblarni yozing, tsf.log va bitg-ac.log ni biriktiring.

Log'larda yozgan matningiz yo'q: faqat dastur nomi, hodisa va xato kodi (converted, word unchanged (len N)).

O'rnatish (Linux: Ubuntu 22.04+, Debian 12+, x64)

Releases dan paketni oling. IBus (Ubuntu, Debian GNOME standarti):

sudo apt install ./bitg_0.4.0_amd64.deb      # IBus dvigateli + bitg CLI
ibus restart                                  # yoki tizimdan chiqib qayta kiring

Yoki o'zi yangilanib turadigan imzolangan apt ombori (kalit izi 9EA5 79E2 9EC7 A7B1 1FC1 B02F BB03 FCBA D1C7 CB35, deploy/apt/bitg.asc):

sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://bitg.uz/apt/bitg.gpg | sudo tee /etc/apt/keyrings/bitg.gpg >/dev/null
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/bitg.gpg] https://bitg.uz/apt stable main" \
  | sudo tee /etc/apt/sources.list.d/bitg.list
sudo apt update && sudo apt install bitg     # Fcitx5: fcitx5-bitg

So'ng Sozlamalar → Klaviatura → Kiritish manbasi qo'shish → O'zbek → bitg va Super + Probel bilan tanlang. Fcitx5 ishlatsangiz (KDE va boshqalar), fcitx5-bitg_0.4.0_amd64.deb ni o'rnatib, fcitx5-configtool da «bitg» ni qo'shing — bu qo'shimcha hozircha sinov bosqichida.

NimaQayerda
IBus dvigateli/usr/libexec/ibus-engine-bitg, /usr/share/ibus/component/bitg.xml
Fcitx5 qo'shimchasi/usr/lib/<arch>/fcitx5/bitg.so, /usr/share/fcitx5/{addon,inputmethod}/bitg.conf
Sozlamalar~/.config/bitg/settings.ini, exceptions.txt — Windows bilan bir xil format, o'zgarish ~1 soniyada qo'llanadi
Yuqori panel belgisi/usr/bin/bitg-indicator; ilovalar menyusida «bitg», sessiya bilan /etc/xdg/autostart/bitg.desktop

Yuqori panel belgisi (GNOME, Unity): menyuda yoqish/o'chirish, avtomatik o'girish, kirillni o'girish va istisnolar/lug'at muharriri bor; o'zgarish yozilayotgan dasturga darhol qo'llanadi. «Panel belgisini yopish» faqat belgini yopadi, kiritish usuli ishlashda davom etadi. Belgi python3-gi, gir1.2-gtk-3.0, gir1.2-ayatanaappindicator3-0.1 ni talab qiladi (apt ularni tavsiya sifatida o'zi o'rnatadi). Ubuntu'da belgi standart «AppIndicator» kengaytmasi orqali ko'rinadi; toza GNOME'da shu kengaytmani yoqing. Sessiya bilan ochilishini o'chirish (faqat shu foydalanuvchi uchun):

mkdir -p ~/.config/autostart && printf '[Desktop Entry]\nHidden=true\n' > ~/.config/autostart/bitg.desktop

Matnni bermaydigan dasturlarda so'z yozilayotganda tagi chizilgan (preedit) ko'rinadi va probelda o'girilib yoziladi. Parol, PIN, email maydonlari va terminallarda bitg o'chiq turadi. Yig'ish: linux/build-deb.sh (libibus-1.0-dev, libfcitx5core-dev); sinov: dbus-run-session -- python3 linux/test/ibus_e2e.py, xvfb-run -a dbus-run-session -- python3 linux/test/indicator_test.py.

Ubuntu'da muammo bo'lsa

bitg o'zining klaviatura tartibiga ega emas (layout=default): u joriy kiritish manbasining harflarini oladi. Kirill tartibidan bitg'ga o'tsangiz kirillcha yozasiz — bu xato emas, so'z tugashi bilan u ham yangi lotinga o'giriladi (чой шаҳар → çoy şahar). Lotincha yozish uchun lotin tartibidan bitg'ga o'ting.

  1. Tanlanganini tekshirish: yuqori paneldagi til belgisida «ö» (bitg) turishi kerak; ibus engine → bitg.
  2. O'girmayapti: panel belgisi menyusida «Yoqilgan» va «Avtomatik ögiriş» belgilanganmi; yoki cat ~/.config/bitg/settings.ini. Fayldagi o'zgarish ~1 soniyada, dasturni qayta ochmasdan qo'llanadi.
  3. Belgi ko'rinmaydi: bitg-indicator ni terminaldan ishga tushiring — xato shu yerda chiqadi. Toza GNOME'da «AppIndicator and KStatusNotifierItem Support» kengaytmasi kerak.
  4. Dvigatel logi: ibus restart, so'ng journalctl --user -b | grep -i ibus (matningiz logga yozilmaydi).
  5. Xabar berish: Ubuntu versiyasi (lsb_release -d), sessiya (echo $XDG_SESSION_TYPE — wayland/x11), bitg --version, qaysi dasturda bo'lgani — issue ga.

Sinov matritsasi (har PR'da, linux.yml):

Ubuntu 22.04Ubuntu 24.04
.deb yig'ish (reproducible), lintian, o'rnatish/purge✅ yig'iladi va o'rnatiladi✅ 22.04 paketi o'rnatiladi
IBus e2e: matnli va preedit dastur, lotin/kirill kirish, Backspace, Enter, parol maydoni✅✅
Panel belgisi: sozlama/istisno yozuvi IME'ga jonli yetadi, BOM'li settings.ini✅✅
Panel belgisi GUI (Xvfb): ishga tushadi, ikkinchi nusxa ochilmaydi✅✅
Fcitx5: paket o'rnatiladi, kutubxona yuklanadi✅—

Avtomatik sinalmaydi: haqiqiy GNOME Wayland/X11 sessiyasidagi panel ko'rinishi, Telegram/brauzerda yozish, Fcitx5'da yozish. Bularni sinab ko'rgan bo'lsangiz, natijani issue'ga yozing.

Arch Linux (Manjaro, EndeavourOS): packaging/aur/PKGBUILD manbadan yig'adi va ikkita paket beradi: bitg (IBus + CLI) va fcitx5-bitg. CI har PR'da toza Arch konteynerida yig'ib, o'rnatib, sinab ko'radi. AUR'da hali yo'q (yangi akkaunt ochish vaqtincha yopiq) — shu PKGBUILD bilan o'zingiz yig'ing:

git clone --depth 1 https://github.com/dtwinuz/bitg.git && cd bitg/packaging/aur
makepkg --syncdeps                                    # Release tarball'ini oladi, SHA-256 va check() bilan
sudo pacman -U bitg-[0-9]*.pkg.tar.zst                # IBus; Fcitx5 uchun: fcitx5-bitg-[0-9]*.pkg.tar.zst
ibus restart

O'rnatish (macOS 11+, Apple M va Intel) — sinov

Homebrew bilan (dtwinuz/homebrew-tap), brew upgrade bilan yangilanadi:

brew install --cask dtwinuz/tap/bitg

Yoki qo'lda: bitg.uz/yuklab-olish dan bitg-<versiya>-macos.pkg ni oling (SHA-256 shu sahifada va Releases da): bitta universal fayl (arm64 + x86_64). O'rnatuvchi hozircha Apple imzosiz — ochilmasa Tizim sozlamalari → Maxfiylik va xavfsizlik → Baribir ochish, yoki terminalda:

sudo installer -pkg ~/Downloads/bitg-0.4.0-macos.pkg -target /

bitg /Library/Input Methods/bitg.app ga yoziladi va kiritish manbalariga o'zi qo'shiladi (ko'rinmasa — tizimdan chiqib qayta kiring). Control + Probel bilan tanlang. Terminal, iTerm, Warp, kitty va boshqa terminallarda o'chiq. Menyu satridagi kiritish manbalari menyusida (bitg tanlanganda): bitg yoqilgan, dasturida o'chirish, qaytarilgan so'zlarni eslab qolish, istisno so'zlar — hammasi settings.ini ga Windows bilan bir xil kalitlarda (enabled, disabled_apps — bundle ID'lar, undo_remember) yoziladi va joriy dasturga darhol qo'llanadi.

NimaQayerda
Kiritish usuli (InputMethodKit)/Library/Input Methods/bitg.app — macos/Sources (Swift) + bitg-ime (Rust, C ABI)
Sozlamalar~/Library/Application Support/bitg/settings.ini, exceptions.txt

Yig'ish (Xcode Command Line Tools): macos/build.sh → target/macos/bitg-<versiya>-macos.pkg; sinov (soxta matn maydoni, IMK'siz): target/macos/bitg-test. CI (macos) paketni o'rnatib, serverni ishga tushiradi va kiritish manbasi yoqilishini tekshiradi. Real dasturlarda (Safari, Chrome, Notes, Word, Telegram) hali sinalmagan — muammo bo'lsa issue oching.

Ishlab chiqishda (MSI'siz):

cargo build --release -p bitg-tsf
regsvr32 target\release\bitg_tsf.dll          # administrator; o'chirish: regsvr32 /u ...

Log: %LOCALAPPDATA%\bitg\tsf.log — faqat dastur nomi va natija (converted, word unchanged, xato kodi); yozilgan matn hech qachon saqlanmaydi.

bitg ilovasi — bitg-settings.exe (crates/bitg-settings, WebView2; Start menyusida «bitg»): tray belgisi (bosish — oyna, o'ng tugma — yoqish/o'chirish, o'chiq holatda kulrang), Windows bilan ishga tushish, bitta nusxa. Bo'limlar: Asosiy (zarrachalardan yasalgan jonli harf Oʻ→Ö, Sh→Ş; bugungi va 14 kunlik statistika, klaviatura o'rnatilganini tekshirish), Sinash, Matnni o'girish (eski↔yangi, kirill), Qoidalar, Dasturlar (har dastur uchun yoqish/o'chirish), Istisnolar, Haqida. Statistika IME log'idan: unda faqat vaqt, dastur nomi va natija bor. O'zgarishlar darhol saqlanadi; IME ularni bir soniya ichida, dasturlarni qayta ochmasdan qabul qiladi. Dizayn yo'nalishi: crates/bitg-settings/DESIGN.md.

Fayllar (qo'lda tahrirlash ham mumkin): %APPDATA%\bitg\settings.ini (enabled, english_guard, cyrillic, restore_apostrophes, tutuq, undo_backspace, undo_remember, fallback, disabled_apps, auto_convert, keymap, layout) va %APPDATA%\bitg\exceptions.txt (har qatorda bitta so'z).

Dastur turiHolat
TSF'ni to'liq qo'llaydigan (WPF, UWP/WinUI, Word, Chrome'ning ko'p maydonlari)✅ ishlaydi (CI'da avtomatik e2e: WPF x64/x86, Win32 EDIT x64)
Qt / eski IMM32 dasturlari (Telegram Desktop)⚠️ zaxira yo'l: bosilgan harflardan so'z yig'iladi, probeldan keyin Backspace + qayta yozish. CI'da Qt (PySide6 QTextEdit) e2e: birinchi so'z, bekor qilish, apostrof, tez yozilgan gap (tools/e2e/qt-e2e.py); qo'lda: docs/sinov-sozlar.md. Ma'lum muammolar pastda
Terminallar (Termius, Windows Terminal, PuTTY...)⛔ standart holatda o'chiq (buyruq va parol yoziladi); oynadan yoqish mumkin

Telegram (zaxira yo'l): ma'lum muammolar

BelgiSababHolat
öozbek, şshapaloq, qqo'l — so'z o'girilib, darhol buzilib qaytadi (logda converted va shu soniyada undo)bitg o'zi yuborgan Backspace'ni foydalanuvchiniki deb bildi va «bekor qilish»ni ishga tushirdi: Qt dwExtraInfo belgisini (RETYPE_TAG) TSF'ga yetkazmaydi2026-11-12 tuzatildi: belgiga qo'shimcha sanagich (State::take_retype, 1.5 s oyna). Telegram logida o'z-o'zidan undo endi yo'q
Tez yozganda so'z aralashadi (shşahar, qo'l shaşap)probeldan keyingi Backspace + yangi so'z navbat oxiriga tushadi, foydalanuvchi oldindan yozgan harflar esa ulardan oldin turadi — Backspace'lar yangi harflarni o'chiradi2026-11-12 tuzatildi: tahrir navbatda turganda bosilgan tugmalar ushlanib, undan keyin qayta yuboriladi (tartib bo'yicha taniladi, dwExtraInfo kerak emas). Logda fallback: keys typed ahead of retype, reordered. CI'dagi Qt e2e tasdiqlagan; Telegramda qo'lda tasdiqlanmagan
Birinchi so'z o'girilmaydi / word not trackedsabab endi logda: fallback: word not tracked: <sabab>log kutilmoqda
Qotishhar tugma ishlovchisi ≥25 ms bo'lsa slow test key / key down: N mslog kutilmoqda

Telegramning o'zini avtomatik sinab bo'lmaydi: haqiqiy klaviatura bosishi (SendInput) kerak, ishlab chiquvchi mashinasida global tugma yuborish taqiqlangan va u faqat CI VM'da (GITHUB_ACTIONS=true) ishlaydi. O'rniga CI'da Qt sinov ilovasi Telegram bilan bir xil yo'ldan (IMM32/CUAS, matn TSF'ga berilmaydi) o'tadi.

cargo run -p bitg-tsf --example activate — profilni shu jarayonda yoqib, TSF nimani faol deb bilishini chiqaradi.

Ishlatish

cargo install --path crates/bitg-cli
bitg explain "Chat with the team, keyin choy"   # har bir so'z bo'yicha qaror
bitg cyr "O'zbekiston shaharlari"               # lotindan kirillga: Ўзбекистон шаҳарлари
bitg --exceptions ex.txt "shahar choy"          # ex.txt dagi so'zlar o'girilmaydi: shahar çoy

--exceptions FAYL bitg, bitg explain, bitg file va bitg diff da ishlaydi. Format kiritish usullari o'qiydigan exceptions.txt bilan bir xil: har qatorda bitta so'z, # bilan izoh, so'z=yozuv — lug'at qatori.

Fayllar va oldindan ko'rish

bitg file hujjat.docx              # → hujjat.yangi.docx (asl fayl o'zgarmaydi)
bitg file jadval.xlsx -o yangi.xlsx
bitg file eski.txt maqola.md       # matn fayllar (UTF-8)
bitg file hujjat.docx --old        # teskari: → hujjat.eski.docx
bitg file hujjat.docx --dry-run    # yozmasdan: "  12× o'zbek → özbek" va jami
bitg diff < maqola.txt             # matn bo'yicha: "3: shahar → şahar" (qator raqami bilan)

.docx da asosiy matn, kolontitullar, sahifa osti izohlari (footnote/endnote) va sharhlar o'giriladi; so'z bir nechta run'ga bo'linib ketgan bo'lsa ham abzats bitta matn sifatida o'giriladi va formatlash (qalin, kursiv, shrift) joyida qoladi. .xlsx da satrlar (shared strings, rich text, inline) o'giriladi — formula va sonlarga tegilmaydi. Boshqa XML va zip yozuvlari baytma-bayt ko'chiriladi. Kirish fayli ustiga faqat --in-place bilan yoziladi.

Kirill alifbosiga

bitg cyr (Rust'da bitg_core::to_cyrillic) eski (o' g' sh ch ') va yangi (ö ğ ş ç ʼ) lotinni o'zbek kirilliga o'giradi; MATN bo'lmasa stdin'dan o'qiydi. Inglizcha so'z, havola, email va kod lotinda qoladi. e so'z boshida va unlidan keyin э, ya/yo/yu/ye → я/ё/ю/е, tutuq → ъ; ts → ц faqat -tsiya, -tsion, -tsey, -tsent, -tsept qismlarida (aytsa → айтса). Lotinda yo'qolgan ь, ц (sirk), щ, ы tiklanmaydi.

Rust'dan:

use bitg_core::{convert, Options, Session};

let text = convert("O'zbekiston shaharlari", &Options::default());

// Yozish paytida (IME): so'z tugaganda
let mut s = Session::new();
if let Some(edit) = s.complete_word("choy", &Options::default()) {
    // edit.delete ta belgini o'chirib, edit.insert ni yozing
}

Klaviatura tartibi (avto o'girishsiz)

Sozlamalar → Klaviatura: «Avtomatik o'girish» va «Yangi harflar tugmada» alohida yoqiladi. Ikkinchisi yoqilsa, bitg klaviaturasi tanlangan oynada tugma darhol yangi harfni yozadi:

TartibNima o'zgaradi
Tilmoch (standart, tilmoch.ai asosida)[ ö, ] ğ, ; ş, ' ç, ` tutuq ʼ (U+02BC); \ → ; :; qavslar va ; ' — AltGr bilan; № — AltGr+Shift+3
kiritish.uz («Özbekça - yangi», MIT)Tilmoch bilan deyarli bir xil: [ ö, ] ğ, ; ş, ' ç, ` ʼ, \ → ; :; AltGr+K/L — “ ” ‘ ’, AltGr+- — tire
TezYechim («Özbek lotin 2026»)[ ç, ] ö, - ğ, = ş; tutuq — o'ng Alt + '; [ ] - = o'ng Alt bilan
Turkcha Q[ ğ, ] ü, ; ş, ' i, , ö, . ç, i → ı; vergul \, nuqta / da
Faqat AltGrhech narsa ko'chmaydi: o'ng Alt + O G S C → ö ğ ş ç
KirillWindows «O'zbek (kirill)» tartibi (o ў, s қ, - ғ, = ҳ); avto o'girish yoqiq bo'lsa kirillcha so'z probeldan keyin yangi lotinga o'tadi, o'chiq bo'lsa kirill qoladi
Maxsusoynada tugmani bosib, 4 qatlamning (oddiy, Shift, AltGr, AltGr+Shift) istalganiga istalgan belgi

Maxsus tartib %APPDATA%\bitg\keymap.txt da (har qator: tugma oddiy Shift AltGr AltGr+Shift, - — o'zgarmaydi, U+XXXX — belgi kodi) va qo'lda tahrirlansa ham bir soniyada qabul qilinadi. Tartibni IME'ning o'zi bajaradi (tray ilovasi shart emas, administrator oynalarida ham ishlaydi): tugma TSF'da ushlanadi va belgi tahrir sessiyasida yoziladi (eski IMM32 dasturlarida qisqa kompozitsiya bilan), AltGr qatlamlari — o'ng Alt uchun "preserved key". Ctrl/Alt/Win bilan tezkor tugmalar inglizcha joyida, o'chirilgan dasturlarda (terminallar) tugmalar o'zgarmaydi.

Backspace bilan bekor qilish: so'z o'girilgandan keyin darhol Backspace bosilsa, asl so'z qaytadi va shu dasturda boshqa o'girilmaydi. exceptions.txt ga doimiy yozish alohida sozlama — «Qaytarilgan so'zni istisnoga yozish» (undo_remember, standart holatda o'chiq). Istisnolar sahifasida qidirish va o'chirish bor.

Brendlar: crates/bitg-core/src/data/names.txt — sh/ch li savdo belgilari (Photoshop, Chevrolet, Toshiba) o'zbek qo'shimchasi bilan ham o'girilmaydi. Kishi va joy nomlari ro'yxatda yo'q: ular o'zbek imlosida yoziladi.

Belgilangan matnni o'girish (Ctrl+Shift+Y)

Istalgan dasturda (bitg klaviaturasi tanlanmagan bo'lsa ham) matnni belgilab Ctrl+Shift+Y bosing — u o'sha joyda yangi alifboga o'tadi. Tugmani tray ilovasi ushlaydi: Ctrl+C bilan matn olinadi, sozlamalaringiz (istisnolar, inglizcha so'zlar, tutuq) bilan o'giriladi va Ctrl+V bilan joylanadi; clipboard'dagi avvalgi narsa keyin joyiga qaytariladi. Hech narsa belgilanmagan bo'lsa yoki matn o'zgarmasa — hech narsa qilinmaydi. Terminallarda (Dasturlar ro'yxati) ishlamaydi, chunki u yerda Ctrl+C jarayonni to'xtatadi.

Sozlamalar → Qoidalar → Belgilangan matn: yoqish/o'chirish va tugmalar (Ctrl+Shift+Y, Ctrl+Shift+B, Ctrl+Shift+F8). settings.ini da: hotkey=1, hotkey_keys=ctrl+shift+y (Ctrl, Alt yoki Win bilan istalgan harf, raqam yoki F1–F24), hotkey_old_keys= — teskari yo'nalish (yangi → eski lotin), standart holatda o'chiq. Tugma boshqa dasturda band bo'lsa, oynada shu haqda yoziladi.

Lug'at

crates/bitg-core/src/data/*.tsv — faqat so'z va og'irlik (matnlarning o'zi emas). Binarga qurish vaqtida tayyor hash-jadval bo'lib kiradi (crates/bitg-core/build.rs).

FaylNimaManba va litsenziya
uz.tsv (71 933 so'z)o'zbekcha so'z (eski lotin kaliti) → og'irlik log10(chastota)+1; 0 = o'/g' siz shakl kirillda uchramaydi (boladi: faqat bo'ladi)Leipzig Corpora Collection (CC BY 4.0): uzb_community_2017 (faqat kirill gaplar), uzb_wikipedia_2014/2016/2021_100K, uzb_news_2020_10K, uzb_newscrawl_2011_100K; Mozilla Common Voice sentence-collector.txt (CC0); Tatoeba uzb_sentences.tsv (CC BY 2.0 FR)
sh_split.tsvkirillda s+h alohida so'zlar (Исҳоқ, нусҳа, Мусҳаф): sh → ş bo'lmaydiyuqoridagi kirill gaplar
en.tsvinglizcha so'z → SCOWL darajasiSCOWL 2020.12.07 (Kevin Atkinson, ruxsat beruvchi litsenziya)
names.txtbrendlar (qo'lda)—
foreign_names.txt (3 419 nom)faqat xorijiy imloda uchraydigan kishi/joy nomlari (ch/sh bor, uz.tsv da yo'q): Michelle, Rachel, Sanchez, ChesneySCOWL *-proper-names (daraja ≤ 80); tools/foreign_names_extra.txt — AQSh aholi ro'yxati familiyalari (US Census Bureau) va NameDatabases (jamoat mulki), o'zbek kirill korpusida uchramaydiganlari; tools/build_foreign_names.py

Nomlar. O'zbek imlosida ham shunday yoziladigan nom (Ричард → Richard, Pushkin, Shohruh) o'giriladi: Riçard, Puşkin. Xorijiy imlodagi nom (o'zbek korpusida yo'q, inglizcha nomlar ro'yxatida bor yoki o'zbek lotinida bo'lmaydigan belgi bor: yolg'iz c, w, th, -lle) o'girilmaydi — Miçelle hech bir imloda to'g'ri emas. Yonma-yon nomlar (bog'lovchi va/and orqali ham) bitta zanjir: zanjirda xorijiy nom bo'lsa, ikki xil o'qiladigan qo'shnisi ham asl yozuvida qoladi (Charlie Chaplin, Richard va Michelle). Vergul zanjirni uzadi; xorijiy nom gap tilini belgilamaydi (Chicagoda yaşaydi). Yozish paytida (IME) faqat chap qo'shni ma'lum: Charlie Chaplin ushlanadi, Richard va Michelle dagi Richard esa Michelle yozilishidan oldin o'giriladi.

Ikki ma'noli so'zlar. Apostrofsiz so'z ikki haqiqiy o'zakdan yasalgan bo'lsa (och|maydi / o'ch|maydi, ot|dim / o't|dim), apostrofsiz shakli korpusda uchramasa va apostrofli nomzod ham siyrak bo'lsa (og'irlik < 3.0), chastota hech narsa demaydi — so'z yozilganicha qoladi. Nomzod keng tarqalgan bo'lsa (oqish → o'qish, boyicha → bo'yicha) shaklning yo'qligining o'zi dalil va tiklanadi. Matnda o'/g' apostrofi umuman bo'lmasa, bunday so'zlarning ikkinchi o'qilishi convert_words (Word::alt), bitg explain va saytdagi konvertorda ko'rsatiladi: so'z sariq belgilanadi, bosilsa boshqa o'qilishiga almashadi.

Faqat CC0 / CC BY / ruxsat beruvchi manbalar. O'zbek Vikipediyasi dumpi (CC BY-SA) ataylab ishlatilmaydi: ShareAlike sharti MIT / Apache-2.0 binarga mos emas. Leipzig'ning yuklab olinadigan korpuslari CC BY 4.0 (Terms of Usage).

O'qitish/test ajratilgan: eval/ dagi baholash gaplari lug'atga kirmaydi (--exclude-eval). Avvalgi lug'at uzb_community_2017-words.txt sanog'idan qurilgan edi — unda eval gaplari ham sanalgan, shuning uchun eski 99.17% / 69.07% biroz oshirilgan edi. Eval chiqarib tashlangan holda eski manbalar bilan: 98.87% / 68.50% / 99.73%.

Lug'atuzuz apostrofsizenuz.tsvbitg.exe
avvalgi (eval gaplari sanoqda bor edi)99.17%69.07%99.73%45 614 so'z, 736 KB2.78 MB
avvalgi manbalar, eval chiqarilgan98.87%68.50%99.73%45 021 so'z—
0.2.098.87%81.30%99.73%71 933 so'z, 1.1 MB3.73 MB
hozirgi (ikki ma'noli so'z tiklanmaydi, xorijiy nomlar)98.87%81.20%99.73%71 933 so'z, 1.1 MB—

Apostrofsiz matndagi o'sish manbalari: kengroq lug'at; kirillda uchramaydigan apostrofsiz shakl 0 og'irlik bilan yoziladi (aks holda boladi o'zak orqali bola|di deb hisoblanib, bo'ladi tiklanmasdi); chiziqchali so'z bo'lak-bo'lak (qollab-quvvatlash); matnda o'/g' umuman yo'q va boshqa so'z tiklangan bo'lsa ikki ma'noli so'zlar ham (oz → o'z, yoq → yo'q). Tezlik va xotira o'zgarmadi (2.7 / 1.3 µs/so'z, 0.5 MB private); apostrofsiz matnda 2.5 → 3.3 µs/so'z.

Qayta qurish (manbalarni yuklab, bir papkaga oching):

python -I tools/build_lexicon.py --scowl scowl-2020.12.07   --sentences-cyrillic-only uzb_community_2017/uzb_community_2017-sentences.txt   --sentences uzb_wikipedia_2021_100K/uzb_wikipedia_2021_100K-sentences.txt       uzb_wikipedia_2016_100K/uzb_wikipedia_2016_100K-sentences.txt       uzb_wikipedia_2014_100K/uzb_wikipedia_2014_100K-sentences.txt       uzb_news_2020_10K/uzb_news_2020_10K-sentences.txt       uzb_newscrawl_2011_100K/uzb_newscrawl_2011_100K-sentences.txt       sentence-collector.txt uzb_sentences.tsv   --exclude-eval eval/uz.tsv eval/uz_noapos.tsv

Standart sozlamalar: --min-freq 3 --context-top 40000 --bare-rare-min 100. So'ng cargo build --release -p bitg-cli va bitg eval eval/uz.tsv (shuningdek uz_noapos.tsv, en.tsv).

Yo'l xaritasi

To'liq reja: ROADMAP.md. Qisqasi:

  • Yadro, CLI, inglizcha himoya, o'lchov; Windows TSF IME + sozlamalar + MSI (v0.1.0)
  • Linux (Ubuntu) — IBus dvigateli va .deb paket, haqiqiy ibus-daemon bilan CI sinovi (v0.2.0)
  • macOS — InputMethodKit kiritish usuli, universal .pkg, CI'da o'rnatish sinovi (sinov bosqichi, v0.3.0)
  • Sayt: bitg.uz (web/), sinov maydoni haqiqiy yadroda (Rust → WASM)
  • Imzolangan Windows o'rnatuvchi va Microsoft Store; Fcitx5 va macOS real dasturlarda; Fedora .rpm, Flatpak
  • v1 — qonun kuchga kirishidan oldin (2027-aprel)
  • iOS, Android; Word/brauzer kengaytmasi; B2B API

Loyiha qanday boshqariladi: GOVERNANCE.md · tuzilma: ARCHITECTURE.md · xavfsizlik asoslamasi: docs/ASSURANCE.md.

AI yordamchilarda (ChatGPT, Claude, Gemini)

bitg ochiq MCP server sifatida ham ishlaydi: https://bitg.uz/mcp (login yo'q, bitta convert_text vositasi, matn saqlanmaydi). AI yordamchi o'zbekcha matnni yangi alifboga taxmin bilan emas, bitg yadrosi bilan o'giradi.

/plugin install bitg --marketplace dtwinuz/bitg                # Claude Code (plugin + skill)
claude mcp add --transport http bitg https://bitg.uz/mcp       # Claude Code (faqat MCP)
gemini extensions install https://github.com/dtwinuz/bitg      # Gemini CLI

Claude.ai va ChatGPT'da: sozlamalar → Connectors / Apps → https://bitg.uz/mcp. Batafsil: integrations/README.md, bitg.uz/ai. MCP Registry: uz.bitg/bitg.

Telefonda (Android, iOS)

Telefonda bitg Tilmoch klaviaturasini tavsiya qiladi. Ilova bepul, klaviaturasi eski lotin, kirill va yangi lotinni biladi. Yangi alifbo rejimida ö, ğ, ş, ç avtomatik qo'yiladi (sozlamada yoqiladi), takliflar internetsiz ishlaydi. Ichida turkiy tillar uchun tarjimon va ovozli kiritish ham bor — App Store · Google Play · tilmoch.ai. O'rnatish qadamlari: bitg.uz/yangi-harflarni-yozish. Tilmoch'ning kompyuter klaviatura tartibi (Windows, macOS) bitg'da tilmoch tartibi sifatida bor.

Hissa qo'shish

Xato, noto'g'ri o'girilgan so'z yoki taklif — issue. Savol va g'oyalar — Discussions. Kod bilan yordam: CONTRIBUTING.md. Zaiflik haqida yopiq xabar: SECURITY.md. O'zgarishlar tarixi: CHANGELOG.md.

Code signing policy

Windows o'rnatuvchisini (MSI va ichidagi bitg-settings.exe, bitg.exe, bitg_tsf.dll) SignPath Foundation'ning ochiq kodli loyihalar dasturi orqali imzolash tayyorlangan; ariza hali topshirilmagan, shuning uchun hozirgi relizlar imzosiz. Imzo yoqilgach:

Free code signing provided by SignPath.io, certificate by SignPath Foundation.

Siyosat, jamoa rollari (committers, reviewers, approvers), maxfiylik va imzoni tekshirish: docs/CODE_SIGNING.md · bitg.uz/kod-imzosi.

Litsenziya

MIT yoki Apache-2.0 — tanlovingiz bo'yicha.

No installation packages available.

Remote

streamable-http
https://bitg.uz/mcp