在 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/
广告