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中使用modeltranslation翻译的字段,如何在upload_to方法中获取FileField的字段名?
django - 根据翻译后的名称在管理 ui 中对模型进行排序