Django:如何翻译模型的字段

Posted

技术标签:

【中文标题】Django:如何翻译模型的字段【英文标题】:Django: How to translate the models' fields 【发布时间】:2018-01-30 04:38:05 【问题描述】:

我正在使用 django 的国际化来翻译我的网络应用程序。我看这个教程

http://www.marinamele.com/taskbuster-django-tutorial/internationalization-localization-languages-time-zones

但我想知道如何使用 django 的国际化翻译我的模型的字段,或者我如何翻译我的模型的字段

非常感谢!

【问题讨论】:

也许这个插件有用:django-modeltranslation 【参考方案1】:

有几个 Django 应用程序可以帮助您:

django-modeltranslation - 相当受欢迎,自动为您添加列。

django-parler - 有点流行,为翻译后的值创建一个单独的表。

django-translated-field - 自动添加列的更新的轻量级方法。

或者,如果您已经在django.po 文件中翻译了文本,您可以像这样trans 模型:

% trans mymodel.name %

【讨论】:

【参考方案2】:

我知道我来晚了,但无论如何......

我为自己找到的最佳解决方案是向模型添加额外的字段,如下所示:

class MyModel(models.Model):
    name = models.CharField()
    name_fr = models.CharField(help_text='MyModel name in French')
    # and so on for every language you want

然后假设您有% load i18n % 并将mymodel 作为MyModel 对象传递给您的模板:

% get_current_language as LANGUAGE_CODE %
<h1>% if LANGUAGE_CODE == 'en-US' % mymodel.name % elif LANGUAGE_CODE == 'fr-FR' % mymodel.name_fr % endif %</h1>

此语句不得严格如此。您可以实现另一个逻辑,但这就是我在几个项目中已经做到的。如果您愿意,也可以从视图中传递LANGUAGE_CODE

附:如果您希望您的应用程序支持多种语言,那么它可能会在包含大量 if 语句的模板和 Django 提供的管理面板中变得有点脏。

【讨论】:

以上是关于Django:如何翻译模型的字段的主要内容,如果未能解决你的问题,请参考以下文章

Django Rest Framework 中的模型翻译

对于在Django中使用modeltranslation翻译的字段,如何在upload_to方法中获取FileField的字段名?

django - 根据翻译后的名称在管理 ui 中对模型进行排序

django-rest-framework-datatables 和 Django Parler 的翻译字段

如何将空间 JOIN 翻译成 Django 查询语言?

Django:在模型选择中将惰性翻译与标记安全相结合