在 Django 模型例項中新增翻譯


在這篇文章中,我們將學習如何為任何例項建立翻譯。有時,您可能需要儲存諸如 ID、名稱、引用、行等資料。您可能需要以不同的語言呈現這些資料;為此,您需要進行大量的資料庫操作,但今天我將向您展示如何只需幾行設定即可獲得相同的結果。

建立一個 Django 專案和一個應用。設定 **urls** 並執行一些基本操作,例如在 **INSTALLED_APPS** 中新增應用。

建立一個模型。在這裡,我們無需過多處理 **views.py、urls.py** 或任何 html 檔案。我們只需要處理 **settings.py、admin.py、models.py** 和 **admin urlpoint**。

示例

安裝 **django-klingon** 包:

pip install django-klingon

在 **settings.py** 中,新增以下內容:

INSTALLED_APPS += ['klingon']
KLINGON_DEFAULT_LANGUAGE = 'en'

在這裡,我們進行了基本設定,將 **klingon** 作為專案中的一個應用新增,並將英語定義為其預設語言。

建立一個這樣的模型:

from django.db import models
from klingon.models import Translatable

# add translatable
class TeacherData(models.Model,Translatable):
   name=models.CharField(max_length=100)
   # first3 simple fields
   ClassTeacherOF=models.CharField(max_length=100)
   Salary=models.CharField(max_length=100)
   a_simple_word=models.CharField(max_length=100)
   # define field that will be translated
   translatable_fields = ('a_simple_word')

在這裡,我們簡單地建立了一個模型。需要注意的是,我們建立了一個可翻譯欄位,它將指示需要翻譯哪個欄位,並且它引用了不同表中的翻譯物件。

在 **admins.py** 中,新增以下程式碼:

from django.contrib import admin
from .models import TeacherData
from klingon.admin import TranslationInline, create_translations

class TeacherAdmin(admin.ModelAdmin):

   inlines = [TranslationInline]
   actions = [create_translations]

admin.site.register(TeacherData,TeacherAdmin)

在這裡,我們只是將我們的模型新增到 **admin url** 並新增 **klingon** 翻譯引用到 admin 中。

現在,所有操作都完成了。讓我們檢查輸出。

輸出

執行 Python shell 並執行以下操作以新增新建立物件的翻譯:

In [1]: from formhandlingapp.models import *
In [2]:
data=TeachertData.objects.create(name="ama4",ClassTeacherOF="
10",Salary="33322",a_simple_word="how are you")
In [3]: data.set_translation('jp',
'a_simple_word','お元気ですか')

現在,您可以看到建立了一個翻譯物件,顯然您可以透過 **views.py** 新增它。

在 http://127.0.0.1/admin/

更新於:2021年8月25日

248 次瀏覽

啟動你的 職業生涯

完成課程獲得認證

開始學習
廣告