How Mila did it: case studies and news
Mila replies in the language the other person writes in. They write in Uzbek, and the reply and the buttons are in Uzbek. Each chat has its own languages, time zone and quiet hours. Every line below links to the code.
The other person picks the language, not Mila.
Russian, Uzbek, English. The other person decides, not Mila. client-chat/SKILL.en.md:19-21
The language comes from the guest’s messages over the whole conversation, not from one word, an @name or the account language. A photo with no caption gets the language of their last text.
skills/guest-path:12 skills/guest-path:14The greeting, the buttons and the tracking-tag texts are in the guest’s language. Tags have _uz and _en fields for this.
By default, formal and in Russian. They write in Uzbek, she answers in Uzbek; in English, in English. A draft reply built from past examples is in the other person’s language too.
skills/client-chat:25-26skills/reply-from-examples:10A new Mila gets to know her owner step by step. If the owner writes in Uzbek or English, the whole first message, greeting and progress line included, is in that language. There are ready greetings for Uzbek and English. skills/onboarding:52-54
If the greeting has already gone out in Russian and the person writes in another language, the next message is in their language at once, without repeating the greeting. skills/onboarding:52-54
USER.md, and from then on Mila speaks only that language. skills/onboarding:130-132oʻ and gʻ written with ʻ. skills/onboarding:130-132With a real client, languages split: the chat is in Russian, the posts go out in Uzbek. So each chat has three settings, not one. chat_locale.py:13-23
The language Mila writes in the chat. Not set: the language of the other person.
chat_locale.py:252The language the work comes out in: a post, a site, a poster. The main one goes first: “uz,ru” and “ru,uz” give different posts.
chat_locale.py:91-96Languages that may come in without switching the talk. One polite phrase in English is no reason to move the whole chat to English.
chat_locale.py:9-11The chat in one language and the work in another: the tool prints a warning, so the work is not delivered in the chat language.
chat_locale.py:231-237Quiet hours from 22 to 08 mean nothing until you know whose 22 it is. So each chat has its own time zone and its own quiet hours; the default is 22–08. A chat with no time zone is counted in the owner’s zone. chat_locale.py:5-7 chat_locale.py:256-258
On every turn Mila sees the chats where it is night right now, with local time: do not write there unless it burns. mila when --now shows the time for each client and whether you can write. telegram-inbox-feed.py:124-129 telegram-inbox-feed.py:248-251 install/mila:256-261 chat_locale.py:271-286
$ mila when --now $ mila when <id> --tz Asia/Dubai $ mila when <id> --speak ru $ mila when <id> --publish uz,ru $ mila when <id> --quiet 22-08
The kit has separate tools for Uzbek.
A voice note is transcribed with language detection. If it sounds Uzbek or close to it, there is a second pass with Uzbek set explicitly.
transcribe-voice.sh:3 transcribe-voice.sh:27-32By the official letter mapping: sh, ch, oʻ and gʻ each become one Cyrillic letter. Site addresses, @names and words with digits stay as they are. In flashcards the Cyrillic version is built from the Latin one.
translit_uz.py:2-7skills/flashcards:73-77The humanizer-uz skill rewrites bureaucratese in plain language. Its tuning fork is Abdulla Qodiriy, Abdulla Qahhor and Abdulla Oripov. The last step is a read-aloud check.
skills/humanizer-uz:13-21skills/humanizer-uz:67-68Sums, dates, names and document numbers do not change. The form is Mila’s; the content is the customer’s.
skills/humanizer-uz:201-202SKILL.md) the model follows. Chat settings, voice transcription and Latin-to-Cyrillic are code. skills/guest-path skills/onboarding chat_locale.py| File | What it does |
|---|---|
| skills/guest-path | the guest’s language, buttons in their language (in Russian) |
| skills/client-chat | the language the client picks (English translation) |
| skills/onboarding | getting to know the owner, language buttons (in Russian) |
| GREETING.uz.md | greeting in Uzbek |
| GREETING.en.md | greeting in English |
| install/chat_locale.py | three languages, time zone and quiet hours per chat |
| install/telegram-inbox-feed.py | night chats on every turn |
| install/transcribe-voice.sh | voice notes, a second pass for Uzbek |
| translit_uz.py | Uzbek Latin to Cyrillic |
| skills/humanizer-uz | living Uzbek instead of bureaucratese (in Russian) |
The kit is open: skills, hooks, tools and templates. Translate a skill to your language; every pull request is read by a person and by Mila Quality.
Facts on this page: github.com/shakhruz/mila-companion (main, 76efa3a, v1.5.0), checked 20 Oct 2026. The chat in the phone is an illustration. “Mila”, “MILAGPT” and the logo are trademarks of MILAGPT.