如何在Django中翻译类别名称

时间:2018-07-29 20:22:19

标签: django

我不想为此使用第三方模块。我只需要翻译类别名称。这是我的类别模型:

class Category(models.Model):
    name = models.CharField(_('Category Name'), max_length=50)
    slug = models.SlugField(_('Link'))

    class Meta:
        verbose_name = _('Category')
        verbose_name_plural = _('Categories')

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('abc:category', args=[self.slug])

我只想翻译“类别”模型实例的“名称”字段。假设我添加了一个名为“常规”的类别。当用户使用x语言查看我的网站时,“常规”文本应翻译为x语言。我该如何实现? Django没有内置的方法吗?

(我可以将选择字段而不是模型用于类别,但是在这种情况下,它们不能是动态的,每次想添加类别时,我都需要更新models.py文件。)

1 个答案:

答案 0 :(得分:2)

是的,django具有内部化功能

https://docs.djangoproject.com/en/2.0/topics/i18n/translation/

但是您必须拥有.po文件,其中包含要翻译的所有字符串。

因此,您可能必须为类别的每个可能值进行预定义的翻译(这可能并不容易)

但是一旦您可以,您可以:

from django.utils.translation import ugettext

s = "whatever"
translated_s = ugettext(s)