Koma zuwa blog

Yadda Ake Fassara Abubuwan Database na Django da AI

2026-02-18 Karanta cikin 10 minti
Yadda Ake Fassara Abubuwan Database na Django da AI

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.

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.

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.

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"}

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.

  1. Gano. TranslateBot yana bincika rajista na django-modeltranslation don nemo dukkan modeloli da aka rajista da wuraren da za a iya fassara.

  2. 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.

  3. 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.

  4. 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.

  5. 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:

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

Daina gyara fayilolin .po da hannu

TranslateBot yana sarrafa fassarar Django ta hanyar AI. Umarni ɗaya, duk harshenanka, ƴan kuɗi kowane fassara.