Django应用中的模型国际化
我的应用程序将支持两种语言:英语和德语。这个应用里会有几个叫做XType的对象,每个对象都有一个描述字段。我该怎么翻译XType的描述字段呢?Django是否支持这个功能,还是我需要使用其他的Django应用来实现?
class XType(models.Model):
description = models.CharField(max_length=50)
def __unicode__(self):
return self.description
class X(models.Model):
type = models.ForeignKey(XType)
2 个回答
0
django-easymode 包含了一个叫做 @i18n 装饰器 的东西,这可能会帮到你:
有时候,我们需要把模型翻译成不同的语言。Django 支持通过 gettext 来处理模板和代码中的静态文本的国际化。对于模型的翻译,也就是动态数据,easymode 提供了一些简单的装饰器,可以让模型字段支持国际化,并且让管理界面本地化。
2
Django并没有直接支持模型字段翻译的功能。
你需要找到一种方法来处理这个问题,可以在Django内部解决,或者使用一些可插拔的应用程序(比如之前提到的django-easymode,或者查看这个链接:http://blog.muhuk.com/2010/01/06/dynamic-translation-apps-for-django.html)。
如果你想在自己的应用中处理这个问题,可以尝试为每种语言保存一个实例,然后在获取数据时进行相应的过滤:
class XType(models.Model):
language = models.CharField(max_length=5)
description = models.CharField(max_length=50)
当然,这很大程度上取决于你的项目需求。