Skip to content

Latest commit

 

History

History
196 lines (130 loc) · 12.2 KB

File metadata and controls

196 lines (130 loc) · 12.2 KB

LangAutoSwitcher

Пиши на български и английски от една и съща клавиатура, без никога да превключваш подредбата. Просто пиши — LangAutoSwitcher разбира на кой език си писал и автоматично конвертира към правилната азбука.

Безплатно, с отворен код, native macOS приложение за въвеждане. Без регистрации, без проследяване. Единствената мрежова връзка е дневна проверка за нова версия (която можеш да изключиш в настройките на Sparkle).

Платформа Статус
macOS ✅ Готово — изтегли и инсталирай по-долу
Linux (IBus) 🚧 Скица — Rust ядрото работи, остава IBus частта. Помощ е добре дошла.
Windows 🚧 Скица — Rust ядрото работи, остава TSF частта. Помощ е добре дошла.

Фонетичното съпоставяне, речниците, разпознаването на език и автокорекцията — всичко това живее в общ Rust пакет (langauto-core). За да портнеш към друга операционна система е достатъчно да напишеш тънкия input-method адаптер за нея.

Пишеш:        napisah now kod and sent email to John
Виждаш:       написах нов код and sent email to John

Това е цялата идея. Без Cmd+Space. Без сгрешени пароли. Без полу-кирилица, полу-латиница във Facebook постовете.


За кого е?

За всеки, който всеки ден пише на български и английски и му е писнало от:

  • Да забравя да превключи клавиатурата преди да напише парола
  • Да праща месинджър съобщения, които започват на единия език и свършват на другия
  • Постоянно да натиска Cmd+Space по средата на изречението
  • Стандартната БДС / Фонетична подредба, при която трябва да мислиш в кой режим си

LangAutoSwitcher просто следи какво пишеш и избира правилната азбука за всяка дума. Кирилската и английската ти клавиатура си остават както са — това е просто още една опция, която можеш да избереш от 🌐 иконата в горната лента.


Как работи

  1. Пишеш нормално на обикновена QWERTY клавиатура.
  2. Буквите се показват подчертани, докато се изписва думата.
  3. В момента, в който натиснеш интервал, думата се проверява срещу:
    • речник с 234 000 английски думи
    • речник с 234 000 български думи (фонетично транслитерирани)
  4. Печелившият език побеждава — или остава както е (английски), или се конвертира в кирилица (български).
  5. Ако думата съществува на двата езика, тя следва езика на предишната дума, така че „потокът" ти се запазва.

Автоматично коригира и често срещани съкращения: uyou, rare, плюс правописна корекция с разстояние 1 за двата езика.

Примери

Пишеш Виждаш Какво се случи
towa e samo proba това е само проба Всички думи са BG → Кирилица
hello how are you hello how are you Всички думи са EN → остават
napisah now kod and want to write написах нов код and want to write Автоматично превключване по средата
how r u how are you Съкращението е разширено
kak si как си Български през транслитерация
john@gmail.com john@gmail.com Имейлите се запазват

Инсталация (60 секунди)

1. Изтегли най-новата версия: 👉 Изтегли LangAutoSwitcher-v2.7.15.dmg

2. Отвори DMG-то и щракни двукратно върху иконата Install LangAutoSwitcher. Малък диалог на български те води през инсталацията — без Terminal, без администраторска парола.

3. Излез от профила си и влез отново. (macOS открива нови методи за въвеждане само при влизане — няма как да го заобиколим, съжаляваме.)

4. Добави го като източник на въвеждане:

  • Отвори Системни настройки → Клавиатура → Източници на въвеждане → Edit…
  • Натисни + долу вляво → потърси „LangAutoSwitcher"Add

5. Превключи към него. Натисни 🌐 / иконата на знаме в горната лента и избери LangAutoSwitcher.

Сега просто пиши. 🎉

Следващите обновления: LangAutoSwitcher проверява веднъж на ден за нова версия и показва диалог „Install Update", когато излезе такава. Ръчната инсталация е нужна само веднъж.

Деинсталиране

rm -rf ~/Library/Input\ Methods/LangAutoSwitcher.app

След това излез / влез отново.


Карта на транслитерацията

Всеки латински клавиш съответства на точно една кирилска буква (без диграфи за запомняне):

Клавиш Клавиш Клавиш Клавиш
a а i и q я y ъ
b б j й r р z з
c ц k к s с [ ш
d д l л t т ] щ
e е m м u у ; ж
f ф n н v ж ` ч
g г o о w в \ ю
h х p п x ь ' ь

Почти никога няма да ти трябва тази таблица — повечето български думи се разпознават от речника директно от това, как естествено би ги напишеш (zdravei, blagodarq, dobre).

Персонализиране на клавишите

Не харесваш подразбраното съпоставяне? Натисни 🌐 менюто → LangAutoSwitcherEdit Keymap…, за да отвориш ~/Library/Application Support/LangAutoSwitcher/keymap.json в редактора си. Промени която и да е двойка (например смени v на в вместо ж), запази файла и избери Reload Keymap от същото меню — твоите промени се прилагат веднага. Reset Keymap to Defaults възстановява стандартните настройки.


Изисквания

  • macOS 14.0 (Sonoma) или по-нов
  • Apple Silicon или Intel Mac

Поверителност

LangAutoSwitcher работи изцяло на твоя Mac. Той не:

  • праща никакъв текст никъде
  • събира статистика или телеметрия
  • записва натисканията на клавиши на диска

Речниците са вградени в самото приложение.

Единствената мрежова връзка, която прави, е дневна HTTPS заявка към фийда си за обновления (https://bulgariamitko.github.io/lang-auto-switcher/appcast.xml), за да провери дали има нова версия — обработва се от отворената библиотека Sparkle. По всяко време можеш да изключиш проверките от диалога на Sparkle, който се показва при първото пускане.


Компилиране от източника

Изисква Xcode, XcodeGen и Rust:

brew install xcodegen
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup target add x86_64-apple-darwin aarch64-apple-darwin

xcodegen generate
xcodebuild -project LangAutoSwitcher.xcodeproj -target LangAutoSwitcher -configuration Release build
bash install.sh

Xcode buildът автоматично извиква scripts/build_rust.sh, за да компилира cross-platform langauto-core Rust пакета като универсална статична библиотека.

След това излез / влез отново и добави го от Системни настройки, както по-горе.

Тестове

swift test_cases.swift     # 163 Swift интеграционни теста
cargo test                 # 25 Rust юнит теста

Архитектура

langauto-core/        Rust пакет — фонетика, речници, разпознаване, автокорекция
langauto-linux/       Linux IBus адаптер (скица)
langauto-windows/     Windows адаптер (скица)
LangAutoSwitcher/     macOS Swift приложение (свързва langauto-core като статична библиотека)

Цялата споделена логика живее в langauto-core. Всяка платформа пише свой тънък адаптер, който я свързва с ядрото. Виж langauto-core/README.md за C ABI-то.


Добавяне на свой език

Архитектурата поддържа всяка двойка „латиница ↔ нелатиница". За да добавиш нов:

  1. Добави съпоставяне в map_char() от langauto-core/src/phonetic.rs
  2. Сложи списък с думи (по една на ред, в целевата азбука) в LangAutoSwitcher/Resources/
  3. Свържи го в langauto-core/src/detector.rs
  4. Добави тестове в test_cases.swift и langauto-core/src/*/tests
  5. Отвори PR

Добри кандидати: руски, украински, сръбски (други кирилски езици), гръцки, грузински, арменски.

Допринасяне

Pull request-и са добре дошли. За доклади за бъгове, моля включи:

  • Версия на macOS
  • Какво си написал
  • Какво си очаквал спрямо какво се появи

Лиценз

MIT — прави с него каквото искаш, включително за комерсиална употреба.


Ако LangAutoSwitcher ти спестява време, добави ⭐ на repo-то и го сподели — така другите българи с Mac го намират.