Django应用中的模型国际化

4 投票
2 回答
3309 浏览
提问于 2025-04-16 09:42

我的应用程序将支持两种语言:英语和德语。这个应用里会有几个叫做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) 

当然,这很大程度上取决于你的项目需求。

撰写回答