我正在为服务目录建模,我将服务分为不同的类别。每个类别都是一个模型,其中包含与此处不相关的其他字段的描述。
class Category(models.Model):
description = models.TextField()
...
这个想法是随着平台的增长添加额外的服务类别(甚至是子类别)。 我需要用几种语言进行描述。
我已经考虑过这样做的不同方法,我需要决定哪一个更清洁。
第一种方法。 模型描述为带有描述和语言的数据库模型,因此我使用lang代码进行过滤并在管理员上进行编辑
class CategoryDescription(models.Model):
description = models.TextField()
lang = models.CharField(max_length=2)
describes = models.ForeingKey(Category)
class Category(models.Model):
...
第二种方法。 删除描述字段并使用类别标题作为上下文标记。像
这样的东西class Category(models.Model):
one_word_name = models.CharField(max_length=20)
...
然后在模板中。
{% trans "category_description" context category.one_word_name %}
但是,我关注的是,是否有自动生成ID标记为翻译的方法?我该怎么办?
答案 0 :(得分:1)
要翻译您的模型,我建议您检查一个非常有用的包:
使用此软件包,您可以标记模型进行翻译,您应该按照教程非常简单
无论如何,最重要的步骤是:
pip install django-modeltranslation
modeltranslation
添加到INSTALLED_APPS
settings.py
USE_I18N = True
TranslationOptions
。python manage.py syncdb
您在settings.py中的语言:
LANGUAGES = (
('de', gettext('German')),
('en', gettext('English')),
)
translation.py
示例:
# -*- coding: utf-8 -*-
# Model Translation
from modeltranslation.translator import translator, TranslationOptions
from models import *
class MyModelTranslationOptions(TranslationOptions):
fields = ('name', 'description') # Select here the fields you want to translate
translator.register(MyModel, MyModelTranslationOptions)
# You can add as many models as you want to translate here
定义所有内容并同步数据库后,您选择翻译的模型将翻译其字段。
如果您有一个名为description
的字段并将其标记为翻译,如果您使用的是英语和德语,则django模型翻译将创建字段description_en
和description_de
你可以在哪里添加翻译。