Idan kun taba fitar da wata manhaja ta Django a cikin fiye da harshe guda, kun san tsarin. Kuna nannade kalmominku a cikin gettext(), kuna gudanar da makemessages, kuna bude fayil na .po mai daruruwan shigarwa, kuna fara fassara layi bayan layi. Ga harsuna biyu da kalmomi hamsin, ana iya jurewa. Ga harsuna shida da kalmomi dari biyar, kwana guda ne na aiki wanda ba za ku sake samunsa ba.
Wannan jagora ya shafi tsarin fassarar duniya (i18n) na Django daga farko zuwa karshe, yana bayyana inda yake lalacewa, kuma yana nuna yadda ake sarrafa sashin da yake wahala ta amfani da fassarar da AI ke tafiyar da ita.
Tsarin Aiki na Al'ada na Django i18n
Tsarin i18n na cikin gidan Django an tsara shi sosai. Babban madauki yana kama da haka:
Mataki na 1: Yi wa kalmomi alama don fassara a cikin lambar Python da samfuranku:
from django.utils.translation import gettext as _
def dashboard(request):
welcome = _("Welcome back, %(name)s!") % {"name": request.user.first_name}
return render(request, "dashboard.html", {"welcome": welcome})
{% load i18n %}
<h1>{% trans "Account Settings" %}</h1>
<p>{% blocktrans %}You have {{ count }} unread messages.{% endblocktrans %}</p>
Mataki na 2: Cire kalmomi zuwa fayilolin .po:
python manage.py makemessages -l de -l fr -l nl
Wannan yana bincika dukkan lambar kuma yana samar da fayil .po guda daya ga kowane harshe, wanda ya kunshi kowane kalma da za a iya fassarawa:
#: myapp/views.py:4
msgid "Welcome back, %(name)s!"
msgstr ""
#: templates/dashboard.html:2
msgid "Account Settings"
msgstr ""
Mataki na 3: Fassara kowane msgstr maras komai da hannu.
Mataki na 4: Hada fayilolin .po da aka gama zuwa fayilolin binary .mo:
python manage.py compilemessages
Matakan 1, 2, da 4 sun yi sauri. Mataki na 3 ne inda tsarin yake lalacewa.
Me Ya Sa Fassarar Hannu Ba Ta Girma
Manhajar Django ta yau da kullun tana da kalmomi 200 zuwa 2,000 da za a iya fassarawa. Ku ninka hakan da adadin harsunan da ake niyya, za ku ga cewa ana bukatar lokaci mai yawa.
Wannan ba korafi ne na ka'ida ba. A cikin wani zaren tattaunawa na Django Forum da aka sani, wani mai haɓaka ya ba da rahoton cewa ya kashe sa'o'i 8+ ga kowane fayil .po don fassarar hannu. Wani babban mai ba da gudummawa ga Django ya bayyana cewa ya kashe fiye da sa'o'i 10 don hada fassarorin da al'umma suka aika a cikin saki guda, galibinsu don dubawa, gyaran tsari, da gyara placeholder da suka lalace.
Matsalolin suna taruwa da lokaci:
- Placeholder suna lalacewa. Ku kwafi kalma kamar
Welcome, %(name)s!zuwa Google Translate, kuma sau da yawa za ku samiWillkommen, %(Name)s!koBienvenue, %(nom)s!. Wannan lalacewar da ba a lura da ita ba tana haifar da matsaloli lokacin aiki. - Daidaiton yana raguwa. Ba tare da kamus ba, "dashboard" ana fassara shi da "Instrumententafel" a wani fayil kuma "Dashboard" a wani. Watanni uku bayan haka, babu wanda ya tuna wanne ne aka yi da gangan.
- Sprint suna kara kalmomi. Kowane reshen fasali yana kara sabbin kalmomi da za a iya fassarawa. Ko da kun biya don cikakken fassara kwata na baya, yanzu kuna da shigarwa 40 da ba a fassara ba a cikin fayilolinku na
.po. - Mataimakan AI suna taimakawa sau daya. Kuna iya likar fayil
.poa cikin ChatGPT ko Claude kuma ku sami sakamako mai kyau. Amma sprint na gaba, lokacin da sababbin kalmomi 15 suka bayyana, kuna yin prompt daga farko, sake fassara dukkan fayil, kuna fatan ya ci gaba da daidaituwa da abin da yake a can.
Babban dalilin shine ana daukar fassara a matsayin abu na sau daya maimakon tsarin da ake kara kadan-kadan kuma ana iya maimaitawa.
Sarrafa Fassara da AI
Ra'ayin yana da sauki: maimakon mutum ya bude kowane fayil .po ya cika darajar msgstr, kayan aiki yana karanta fayil, yana aika kalmomi da ba a fassara ba zuwa samfurin AI ko API na fassara, yana rubuta sakamakon baya, kuma yana kiyaye duk abin da ya rage (sharhi, tsarin fayil, placeholder, nau'ikan jam'i).
TranslateBot Django shine kunshin buɗaɗɗen tushe da ke yi daidai wannan. Yana shiga cikin tsarin umarnin gudanarwa na Django, don haka ya dace da tsarin aikin da kuke da shi.
Saiti Mataki-Mataki
1. Shigar da Kunshin
pip install translatebot-django
Ko, idan kuna amfani da uv (ana ba da shawarar):
uv add --dev translatebot-django
Shigar a matsayin abin dogaro na ci gaba da gangan ne. Kuna bukatar TranslateBot ne kawai lokacin da kuke samar da fassarori, ba a lokacin aiki a samarwa ba.
2. Kara zuwa INSTALLED_APPS
# settings.py
INSTALLED_APPS = [
# ...
"translatebot_django",
]
3. Saita Mai Ba da AI
# settings.py
import os
TRANSLATEBOT_API_KEY = os.getenv("OPENAI_API_KEY")
TRANSLATEBOT_MODEL = "gpt-4o-mini"
TranslateBot yana amfani da LiteLLM a ciki, wanda ke nufin za ku iya canza kowane samfuri daga cikin 100+ ta hanyar canza kalma guda:
| Mai Ba da Sabis | Darajar TRANSLATEBOT_MODEL |
|---|---|
| OpenAI | gpt-4o-mini, gpt-4o |
| Anthropic | claude-sonnet-4-5-20250929 |
gemini/gemini-2.5-flash |
|
| Azure OpenAI | azure/gpt-4o-mini |
| DeepL | Yi amfani da TRANSLATEBOT_PROVIDER = "deepl" a maimakon haka |
Don DeepL, shigar da karin: pip install translatebot-django[deepl]. Matakin kyauta na DeepL yana ba ku haruffa 500,000 a kowane wata ba tare da kudin komai ba, wanda ya isa ga yawancin kananan zuwa matsakaitan ayyuka.
4. Bayyana Harsunanku
# settings.py
LANGUAGES = [
("en", "English"),
("de", "German"),
("fr", "French"),
("nl", "Dutch"),
("ja", "Japanese"),
]
5. Gudanar da Fassara
python manage.py translate
Shi ke nan. TranslateBot yana bincika aikinku don fayilolin .po, yana gano shigarwa da ba a fassara ba, yana aika su zuwa samfurin AI da aka saita a cikin gungu masu inganci, kuma yana rubuta sakamakon. Fassarorin da ke akwai ba a taba su ba.
Don fassara harshe guda:
python manage.py translate --target-lang nl
Sakamakon yana kama da haka:
Translating to Dutch (nl)...
Found 42 strings to translate
Translating batch 1/2...
Translating batch 2/2...
Successfully translated 42 strings
6. Hada Kamar Yadda Aka Saba
python manage.py compilemessages
Cikakken tsarin aikinku yanzu shine:
python manage.py makemessages -l de -l fr -l nl -l ja
python manage.py translate
python manage.py compilemessages
Umarni uku. Kowane harshe. Kowane sprint.
Mai Kari ta Tsari
Fasalin da ya fi muhimmanci don tsarin aiki mai maimaitawa shine fassarar da ake kara kadan-kadan. TranslateBot yana fassara shigarwa ne kawai inda msgstr yake komai. Idan kuna da kalmomi 500 kuma 15 sababbi ne a wannan sprint, wadannan 15 ne kawai za a aika zuwa API.
Wannan yana da muhimmanci saboda dalilai na aiki:
- Kudin. Kuna biyan sababbin kalmomi kawai, ba dukkan fayil ba.
- Gudu. Fassara kalmomi 15 yana ɗaukar dakikoki kadan, ba mintuna ba.
- Kwanciyar hankali. Fassarorin da kuka riga kuka duba da kuma amince da su ba za a sake rubuta su ba (sai dai idan kun bayyana
--overwrite).
Tsaron Placeholder
Django yana amfani da nau'ikan placeholder da yawa: %(name)s, %s, %d, {0}, {name}, da alamomin HTML a layi kamar <strong> ko <a href="...">. Idan kowane daya daga cikin wadannan ya lalace a fassara, kuna samun kurakurai a lokacin aiki ko alamun da suka lalace.
TranslateBot yana umurci samfurin AI ya kiyaye dukkan nau'ikan placeholder kuma ya tabbatar da sakamakon. Kalma kamar:
Welcome to %(site_name)s! You have <strong>%(count)d</strong> new messages.
Ana fassara zuwa Yaren Holland a matsayin:
Welkom bij %(site_name)s! Je hebt <strong>%(count)d</strong> nieuwe berichten.
Kowane placeholder ya tsira daidai.
Sarrafa Inganci da TRANSLATING.md
Samfuran AI suna fassara mafi kyau idan sun fahimci mahallin. TranslateBot yana neman fayil TRANSLATING.md a tushen aikinku kuma ya hada abubuwansa a cikin kowane buƙatar fassara.
# Translation Context
## About This Project
A B2B project management tool for construction companies.
## Terminology
- "project" means a construction project, not a software project
- "plan" means a building plan/blueprint, not a subscription plan
- Keep "Gantt chart" as-is in all languages
## Tone
- German: use formal "Sie" form (business context)
- French: use formal "vous" form
- Dutch: use informal "je" form
## Do Not Translate
- Brand name: "BuildFlow"
- Feature names: "SmartSchedule", "CostTracker"
Ana sarrafa sigar wannan fayil tare da lambar ku, don haka dukkan kungiyarku suna raba mahallin fassara iri daya. Hakanan kuna iya sanya fayilolin TRANSLATING.md na kowane app don manhajoji masu kalmomin da suka kebance. Sashen bayanan likita da sashen lissafi kowannensu na iya samun kamus na kansa.
Duba Kafin Commit
Tutar --dry-run tana nuna daidai abin da za a fassara ba tare da yin kowane kiran API ko canza fayiloli ba:
python manage.py translate --target-lang fr --dry-run
Found 15 untranslated entries
Dry run mode: skipping LLM translation
Would translate 'Welcome to our site'
Would translate 'Hello, %(name)s!'
...
Dry run complete: 15 entries would be translated
Wannan yana da amfani kafin babbar gudanar da fassara ko lokacin da ake gabatar da sabon memba na kungiya da yake son fahimtar abin da umarnin ke yi kafin ya sadaukar da kudin API.
Hadawa da CI/CD
Fassarorin da suka tsufa ba za a iya guje musu ba ba tare da tilastawa ba. TranslateBot ya hada da umarnin gudanarwa check_translations wanda aka tsara don hanyoyin CI:
# .github/workflows/ci.yml
jobs:
translations:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v4
with:
enable-cache: true
- run: uv python install
- run: uv sync --frozen
- name: Install gettext
run: sudo apt-get update && sudo apt-get install -y --no-install-recommends gettext
- name: Check translations
run: uv run python manage.py check_translations --makemessages
Tutar --makemessages tana gudanar da makemessages -a --no-obsolete da farko, tana tabbatar cewa fayilolin .po sun nuna lambar tushe ta yanzu kafin dubawa. Idan kowane shigarwa ba a fassara ba ko fuzzy ne, umarnin yana fita da lamba 1 kuma ya gaza ginin:
locale/de/LC_MESSAGES/django.po: 2 untranslated, 0 fuzzy
locale/nl/LC_MESSAGES/django.po: 0 untranslated, 1 fuzzy
CommandError: Translation check failed
Tsarin aikin mai haɓaka na yau da kullun ya zama:
- Kara sababbin kalmomi da za a iya fassarawa a cikin reshen fasali.
- CI ya gaza saboda wadannan kalmomi ba a fassara su ba.
- Gudanar da
python manage.py translatea gida. - Commit fayilolin
.poda aka sabunta. - CI ya wuce.
Fassarori ba za su taba rasa daidaituwa ba a hankali.
Fassara Abubuwanda Ke Cikin Bayanan
Idan manhajarka tana adana abubuwa da za a iya fassarawa a cikin bayanan (sunayen kaya, taken rubutun blog, alamomin rukuni), TranslateBot kuma yana hadawa da django-modeltranslation:
pip install translatebot-django[modeltranslation]
# Translate all registered model fields
python manage.py translate --target-lang de --models
# Translate specific models only
python manage.py translate --target-lang de --models Product Category
Tsarin kari iri daya yana aiki: filayen da darajar harshen da ake niyya komai ne kawai za a fassara.
Kwatancen Kudin
Daya daga cikin tambayoyin da aka fi yi shine ko fassarar AI tana da rahusa idan aka kwatanta da madadin. Ga kwatance na kusa don aiki mai kalmomi 500 da za a iya fassarawa a cikin harsuna 5:
| Hanya | Kudin da ake Kiyasta | Saka Hannun Lokaci |
|---|---|---|
| Hannu (lokacin mai haɓaka) | $0 daga aljihu, sa'o'i 20-40+ | Mai yawa sosai |
| Sabis na fassara na kwararru | $500-2,000+ | Kadan (amma jinkiri) |
| Dandamali na SaaS | $50-200/wata | Matsakaici |
| TranslateBot + GPT-4o-mini | ~$0.05 (sau daya) | Mintuna |
| TranslateBot + DeepL Free | $0 (har zuwa 500k haruffa/wata) | Mintuna |
| TranslateBot + Claude/GPT-4o | ~$0.30 (sau daya) | Mintuna |
Lambobin suna canzawa gwargwadon adadin kalmomi da harsunan da ake niyya, amma bambancin girma yana daidai. Don ci gaba da kulawa (fassara sababbin kalmomi 20-50 da ake kara kowane sprint), kudin AI kusan sifili ne.
Mafi Kyawun Ayyuka
Fara da --dry-run. Kafin gudanar da fassara na farko na gaske, duba abin da zai faru. Wannan yana gina kwarin gwiwa kuma yana kama matsalolin saitin da wuri.
Commit fayilolin .po kafin fassara. Idan wani abu ya yi kuskure, git checkout ya mayar da ku zuwa yanayi mai tsabta nan da nan.
Rubuta TRANSLATING.md daga rana ta farko. Ko da gajeren fayil mai bayanin aikinku da dokoki kalilan na kalmomi yana inganta ingancin fassara sosai.
Kara check_translations zuwa CI. Wannan mataki guda yana hana mafi yawan hanyar gazawar i18n: kalmomi da aka yi musu alama don fassara amma ba a taba fassara su ba.
Yi amfani da gpt-4o-mini ko DeepL don ingancin kudin. Ajiye samfuran premium kamar GPT-4o ko Claude don ayyukan da inganci ya fi muhimmanci, kamar rubutun tallace-tallace, rubutun doka, ko kalmomin keɓantacce.
Duba kalmomi masu muhimmanci. Fassarar AI ta isa ga yawancin rubutun UI, amma ku sa mai magana na asali ya duba duk abin da ke daure a shari'a, mai mahimmanci ga aminci, ko yana fuskantar abokin ciniki a cikin mahallin hadari mai tsanani.
Daga Sa'o'i zuwa Dakikoki
Tsarin i18n na Django yana da kyau wajen cire da hada fassarori. Gibin koyaushe yana kan matakin fassara da kanta, aikin wahala da kuma mai saurin kuskure na cika daruruwan darajar msgstr a cikin harsuna da yawa.
TranslateBot yana rufe wannan gibin. Shigar da shi, nuna shi zuwa mai ba da AI, kuma gudanar da umarni guda. Sababbin kalmomi ana fassara su. Kalmomi da ke akwai ba a taba su ba. Placeholder suna tsira daidai. CI yana kama duk abin da ya tsere.
Fayilolinku na .po sun daina zama nauyi kuma sun zama wani bangare na ginin.
pip install translatebot-django
Fara a translatebot.dev.