是否可以为Django对象进行翻译?
假设我有模型Category
和Product
。当用户添加新产品时,他们必须从Category
个对象中进行选择。我想翻译这些名字。
class Category(models.Model):
name = models.CharField(max_length=100, verbose_name=_('Category'))
def __unicode__(self):
return u'{}'.format(self.name)
class Meta:
verbose_name_plural = _('Categories')
class Product(models.Model):
user = models.ForeignKey(User, verbose_name=_('Company'), related_name='products')
name = models.CharField(max_length=200, verbose_name=_('Name'),)
category = models.ForeignKey('Category', verbose_name=_('Category'), related_name='products')
class Meta:
verbose_name = _('Product')
verbose_name_plural = _('Products')
def __unicode__(self):
return u'{}'.format(self.name)
因此,在运行服务器之前,我创建了几个类别,如'电子'。
如果将“电子”这个名称翻译成SK语言的“Elektronika”,我该怎么办?
答案 0 :(得分:0)
我假设您将from django.utils.translation import ugettext_lazy as _
放在models.py中。接下来要做的是将语言和区域设置设置为settings.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
LANGUAGES = (
('en', ugettext('English')),
('tr', ugettext('Turkish')),
('fr', ugettext('French')),
)
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale'),
)
之后,您必须将'django.template.context_processors.i18n',
放入settings.py
的context_processors中。如果您完成所有这些操作,您只需在终端中运行以下命令;
django-admin makemessages --locale=tr
django-admin compilemessages --locale=tr
当你这样做时,django会在你的项目目录中创建名为locate的文件夹。在语言环境目录中,您将看到应用makemessages的语言代码。
在其中您可以编辑django.po
个文件。 django.po文件将如下所示。
msgid "Content"
msgstr "İçerik"
将“内容”翻译为“İçerik”(土耳其语)后,您应该再次makemessages
和compilemessages
。之后,只要django看到“内容”,而您的网站语言是土耳其语(在此示例中),它就会将其呈现为“İçerik”。