Idan kun yi aiki da tsarin fassarar harsuna na Django (i18n), kun san yana sarrafa kalmomi masu tsayi da kyau. Nannade rubutu a cikin gettext() ko amfani da alamar template {% trans %} yana fitar da kalmomi zuwa fayilolin .po, wadanda masu fassara suke cikawa. Tsarin ya tabbata kuma yana aiki da kyau don lambar da templates.
Amma me game da abun ciki da aka adana a cikin bayanan ku?
Sunayen kayayyaki, kanun labarai, bayanan rukunoni, amsar FAQ, abun ciki da masu amfani suka kirkira. Babu daya daga cikin wadannan da yake a cikin lambar tushen ku. Umarnin makemessages na Django ba zai taba samun su ba, kuma fayilolin .po ba za su iya taimaka muku ba a nan. Idan aikace-aikacen ku yana ba masu amfani abun ciki mai motsi a cikin harsuna da dama, kuna bukatar dabara daban.
Ga yadda ake yi: yi amfani da django-modeltranslation don kara wuraren da za a iya fassara a cikin modelolin ku, sannan ku sarrafa fassarar ta atomatik da AI ta amfani da TranslateBot.
Fakitin Fassarar Bayanan Django
Fakiti na waje da dama suna warware matsalar fassarar bayanan, kowanne da tsarin gine-gine daban.
django-modeltranslation
Yana kara ginshikai na musamman na harshe kai tsaye a cikin teburorin ku na yanzu. Wurin title ya zama title_en, title_de, title_fr, da sauransu. Bincike ya ci gaba da sauri saboda komai yana cikin teburi guda. Fuskar admin tana nuna dukan harsuna gefe da gefe.
- Fa'idodi: Babu JOINs, bincike mai sauri, samun dama a fili ta hanyar masu bayani na wurare, yanayin da ya balaga
- Rashin kyau: Sauyin tsarin ga kowace sabuwar harshe, tebur mafi fadi
django-parler
Yana kirkiran teburi na fassara daban don kowace model. Teburi na asali ya kasance tsafta, kuma fassarori suna adanawa a cikin teburi mai alaka da aka hada ta mabudin waje.
- Fa'idodi: Tsarin tsafta, saukin kara harsuna ba tare da hijira ba
- Rashin kyau: Ana bukatar JOINs don abun ciki da aka fassara, tsarin bincike kadan mafi rikitarwa
django-translations
Yana amfani da teburi guda na fassara tare da mabudin waje na gama gari da ke nuna baya zuwa kowace model. Dukkan fassarori na dukkan modeloli suna shiga teburi guda.
- Fa'idodi: Sauyin tsarin kadan, yana aiki da kowace model
- Rashin kyau: Binciken mabudin waje na gama gari na iya zama a hankali, API mara ganuwa
Wurin JSON na Hannu
Kuna iya adana fassarori a cikin JSONField:
class Product(models.Model):
name_translations = models.JSONField(default=dict)
# {"en": "Running Shoes", "de": "Laufschuhe", "fr": "Chaussures de course"}
- Fa'idodi: Babu karin abubuwan dogaro, mai sassauci
- Rashin kyau: Babu hadakar ORM, babu goyon bayan admin, komai da hannu
Wanne Ne Ya Kamata Ku Yi Amfani Da Shi?
Ga yawancin ayyuka, django-modeltranslation shi ne zabi mafi kyau. Shi ne fakiti mafi balaga, yana da hadakar admin Django mafi kyau, kuma yana adana dukkan bayanan a cikin teburi guda don bincike mai sauri. Musayar (teburi mafi fadi da hijira ga kowace sabuwar harshe) ana iya sarrafa shi ga mafi yawan aikace-aikace. Sauran wannan jagora yana amfani da django-modeltranslation.
Saita django-modeltranslation Mataki-Mataki
Mataki na 1: Shigar da Fakiti
TranslateBot yana daure django-modeltranslation a matsayin abin dogaro na zabi. Ku shigar da su biyun a lokaci guda:
pip install translatebot-django[modeltranslation]
Ko idan kuna amfani da uv:
uv add --dev translatebot-django[modeltranslation]
Mataki na 2: Saita Saitin Django
Abu biyu ne masu muhimmanci a cikin settings.py: tsarin app da jerin harsuna.
# settings.py
INSTALLED_APPS = [
'modeltranslation', # Must be BEFORE django.contrib.admin
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# Your apps
'shop',
'translatebot_django',
]
LANGUAGE_CODE = 'en'
LANGUAGES = [
('en', 'English'),
('de', 'German'),
('fr', 'French'),
('nl', 'Dutch'),
]
App din modeltranslation dole ne ya zo kafin django.contrib.admin domin ya iya gyara ajiyar admin don nuna wuraren fassara.
Mataki na 3: Rajista Modeloli don Fassara
Kirkiri fayil translation.py a cikin kowace app da ke da modeloli masu iya fassara. Don app na shago na e-commerce:
# shop/translation.py
from modeltranslation.translator import register, TranslationOptions
from .models import Product, Category
@register(Product)
class ProductTranslationOptions(TranslationOptions):
fields = ('name', 'description', 'short_description')
@register(Category)
class CategoryTranslationOptions(TranslationOptions):
fields = ('name', 'description')
Kawai ku hada wuraren da ke dauke da rubutu da mutane za su iya karantawa. Kada ku rajista wurare kamar slug, price, ko sku.
Mataki na 4: Kirkira da Gudanar da Hijira
python manage.py makemigrations
python manage.py migrate
Bayan wannan, teburi na shop_product yana da sabbin ginshikai:
| Column | Type |
|---|---|
name |
varchar(200) |
name_en |
varchar(200) |
name_de |
varchar(200) |
name_fr |
varchar(200) |
name_nl |
varchar(200) |
description |
text |
description_en |
text |
description_de |
text |
description_fr |
text |
description_nl |
text |
short_description |
text |
short_description_en |
text |
short_description_de |
text |
short_description_fr |
text |
short_description_nl |
text |
Kowace harshe da kuka ayyana a cikin LANGUAGES tana samun ginshikinta na musamman don kowace wuri da aka rajista.
Matsalar: Wuraren Fassara Marasa Komai
Yanzu kuna da tsarin a wurinsa, amma kowace ginshiki _de, _fr, da _nl babu komai. Idan kuna da kayayyaki 500 da wurare 3 masu iya fassara da harsuna 3 na manufa, wadancan wurare 4,500 ne marasa komai da ke jiran a cika su.
Fassarar wannan abun ciki da hannu ba abu ne mai yiwuwa ba. Ko da tare da sabis na fassara na kwararru, za ku bukaci fitar da bayanan, aika su, jira isar su, da sake shigo da sakamakon. Ga kananan kungiyoyi ko mai ci gaba shi kadai, wannan yakan nufin fasalin ba ya taba fitowa.
A nan ne TranslateBot ya shigo.
Sarrafa Fassarori ta Atomatik da TranslateBot
Umarnin gudanarwa translate na TranslateBot na iya cika dukkan wuraren marasa komai ta amfani da AI. Saita mabudin API na ku da farko:
# settings.py
TRANSLATEBOT_API_KEY = os.getenv("OPENAI_API_KEY")
TRANSLATEBOT_MODEL = "gpt-4o-mini" # Fast and cost-effective
Sannan ku fassara dukkan modeloli da aka rajista zuwa harshen manufa:
python manage.py translate --target-lang de --models
Wannan umarnin guda yana nemo kowace model da aka rajista da django-modeltranslation, yana gano wuraren da suke babu komai don harshen manufa, kuma yana cika su da fassarorin da AI ta kirkira.
Fassara Modeloli Na Musamman
Idan kuna so ku fassara kayayyaki kawai ba rukunoni ba:
python manage.py translate --target-lang de --models Product
Ko modeloli da yawa na musamman:
python manage.py translate --target-lang de --models Product Category
Duba Tukuna da Dry Run
Koyaushe ku duba tukuna kafin rubuta zuwa bayanan:
python manage.py translate --target-lang de --models --dry-run
Wannan yana nuna muku daidai abin da za a fassara ba tare da canza wani bayani ba.
Sake Fassara Abun Ciki Da Ya Wanzu
Ta hanyar tsoho, TranslateBot yana tsallake wuraren da suke da fassara a riga. Don sake rubuta fassarori da suke a riga (misali, bayan inganta tsarin AI ko kara mahallin):
python manage.py translate --target-lang de --models --overwrite
Fassara Dukkan Harsuna a Lokaci Guda
Idan kun bar --target-lang kuma kuna da LANGUAGES da aka ayyana a cikin saitin ku, TranslateBot yana fassara zuwa dukkan harsunan da aka saita:
python manage.py translate --models
Yadda Tsarin Fassarar Yake Aiki
Ga abin da ke faruwa lokacin da kuka gudanar da umarnin fassara.
-
Gano. TranslateBot yana bincika rajista na django-modeltranslation don nemo dukkan modeloli da aka rajista da wuraren da za a iya fassara.
-
Gano tushe. Ga kowace bayani, yana karanta abun ciki na tushe. Yana duba wurin tushe da farko (misali,
name), sannan ya koma wurin musamman na harshe na farko da aka cika (misali,name_en). Ana tsallake bayanai da ba su da abun ciki na tushe. -
Tara gungurau. Ana tara bayanai cikin gungurau kuma ana aika su zuwa ga mai ba da sabis na AI. Wannan yana sa kiran API ya kasance mai inganci kuma yana guje wa isa ga iyakar adadin.
-
Fassara. Kowace gungurau ana fassara ta ta amfani da tsarin AI da aka saita. Kuna iya amfani da kowace mai ba da sabis na LLM da LiteLLM ke goyan baya (OpenAI, Anthropic, Google, Azure, da sauran da yawa) ko DeepL.
-
Rubuta na atomic. Dukkan sabuntawar bayanan don gudanar da fassara ana nannade su a cikin mu'amala guda. Idan wani abu ya faru, kamar kuskuren API ko karya ka'idar bayanan, babu wani bayani na bangare da aka adana. Duka ko babu.
Misalin Tsarin Aiki Cikakke
Ga cikakken misali daga ma'anar model zuwa abun ciki da aka fassara, ta amfani da model na Product na e-commerce.
Ayyana Model
# shop/models.py
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
short_description = models.CharField(max_length=500, blank=True)
price = models.DecimalField(max_digits=10, decimal_places=2)
sku = models.CharField(max_length=50, unique=True)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.name
Rajista don Fassara
# shop/translation.py
from modeltranslation.translator import register, TranslationOptions
from .models import Product
@register(Product)
class ProductTranslationOptions(TranslationOptions):
fields = ('name', 'description', 'short_description')
Gudanar da Hijira
python manage.py makemigrations shop
python manage.py migrate
Kara Mahallin Fassara (Na Zabi)
Kirkiri fayil TRANSLATING.md a tushen aikin ku don ba AI mahallin game da yankin kayayyakin ku:
# Translation Context
## About This Project
E-commerce store for outdoor sports equipment.
## Terminology
- "trail runners" refers to trail running shoes, not people
- Keep brand names (Nike, Salomon, Arc'teryx) untranslated
- "Gore-Tex" is a brand name, do not translate
## Tone
- Use informal "du" form in German
- Product descriptions should sound enthusiastic but not exaggerated
Fassara
# Preview first
python manage.py translate --target-lang de --models Product --dry-run
# Apply translations
python manage.py translate --target-lang de --models Product
Fitarwa:
Translating Product model fields to German (de)...
Found 142 products with untranslated fields
Translating batch 1/15...
Translating batch 2/15...
...
Translating batch 15/15...
Successfully translated 142 products
Tabbatar a cikin Admin
Bude admin na Django ku je kowace kaya. Za ku ga wuraren fassara an cika su:
- Name [de]: Ultraleichte Trail-Laufschuhe
- Description [de]: Diese leichten Trail-Laufschuhe bieten hervorragenden Grip...
- Short description [de]: Leicht, schnell und griffig auf jedem Untergrund.
Ku maimaita don kowace harshen manufa:
python manage.py translate --target-lang fr --models Product
python manage.py translate --target-lang nl --models Product
Ko ku fassara dukkan harsuna a lokaci guda:
python manage.py translate --models Product
Mafi Kyawun Ayyuka
Ku yi ajiyar bayanan ku kafin gudanar da fassarori masu yawa a kan samarwa. TranslateBot yana amfani da mu'amala na atomic, don haka gudanarwa da ta kasa ba za ta bar bayanan bangare ba. Amma samun ajiya yana ba ku hanyar komawa idan ingancin fassarar bai kasance yadda kuka yi tsammani ba.
# PostgreSQL example
pg_dump mydb > backup_before_translation.sql
Yi amfani da dry run da farko. Koyaushe ku gudanar da --dry-run kafin amfani da fassarori ga sabuwar model ko harshe. Ku duba fitarwar don tabbatar da cewa an gano abun ciki na tushe daidai kuma fassarori suna da ma'ana.
Fassara model guda a lokaci guda don manyan bayanai. Wannan yana saukin duba sakamako da sake gudanar da modeloli na musamman idan ana bukatar.
python manage.py translate --target-lang de --models Product
python manage.py translate --target-lang de --models Category
python manage.py translate --target-lang de --models Article
Kara mahallin fassara. Fayil TRANSLATING.md da ke dauke da kalmomin fasaha na musamman da jagorar salo yana inganta ingancin fassara sosai. Wannan yana da muhimmanci musamman ga fannonin musamman kamar likitanci, shari'a, ko kayayyakin fasaha.
Ku kiyaye harshen tushen ku yana cikakke. TranslateBot yana karantawa daga wurin tushe ko wurin harshen tushe. Ku tabbatar cewa tsarin shigar bayanai koyaushe yana cika harshen tushe. Wuraren tushe marasa komai yana nufin fassarori marasa komai.
Hada da fassarar fayil PO don cikakken rufewa. Fassara kalmomin lambar da abun ciki na bayanan:
# Static strings in code and templates
python manage.py makemessages -l de -l fr -l nl
python manage.py translate
python manage.py compilemessages
# Dynamic content in the database
python manage.py translate --models
Ta wannan hanya kowace kalma da masu amfani da ku suke gani, ko daga template ko bayanan, an fassara ta.
Matakai Na Gaba
- Ku karanta cikakken jagorar umarnoni don dukkan zabubbuka da ake samu
- Saita hadakar CI don duba fassarori da suka bata ta atomatik
- Bincika tsarin AI da ake goyan baya don nemo mafi kyawun daidaituwa tsakanin inganci da farashi don aikin ku