我有一个翻译不能在Django 1.6上工作的问题!我已经添加到我的settings.py中
LANGUAGE_CODE = 'en-us'
ugettext = lambda s: s
LANGUAGES = (
('en', ugettext('English')),
('de', ugettext('German')),
)
Run Code Online (Sandbox Code Playgroud)
还添加了中间件:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
Run Code Online (Sandbox Code Playgroud)
以及我的*.py文件,每当我使用一个字符串,它应该是l10nd:
from django.utils.translation import ugettext_lazy as _
Run Code Online (Sandbox Code Playgroud)
我的模板以
{% extends "base.html" %}
{% load i18n %}
Run Code Online (Sandbox Code Playgroud)
并且在模板内部比我使用trans占位符.例如
<h1>{% trans "Register a tank" %}</h1>
Run Code Online (Sandbox Code Playgroud)
事实上,字符串出现在locale/de/LC_MESSAGES/django.po中,当我运行时我已经翻译了它们.例如
msgid "Register a tank"
msgstr "Einen neuen Tank anmelden"
Run Code Online (Sandbox Code Playgroud)
我的浏览器设置为首先请求德语内容: 浏览器设置
我错过了什么?
PS我目前正在模糊的项目是在github上托管的:https://github.com/frlan/blankspot
Django的国际化非常好(基于gettext,LocaleMiddleware),但是翻译模型名称和管理页面属性的正确方法是什么?我在文档中没有找到任何相关内容:
我想要"Выберитезаказдляизменения"而不是"Выберитеorderдляизменения".请注意,"订单"未翻译.
首先,我定义了一个USE_I18N = True在settings.py中激活的模型,运行django-admin makemessages -l ru.默认情况下,不会为模型名称和属性创建任何条目.
在Django源代码中,我发现:
$ ack "Select %s to change"
contrib/admin/views/main.py
70: self.title = (self.is_popup and ugettext('Select %s') % force_unicode(self.opts.verbose_name) or ugettext('Select %s to change') % force_unicode(self.opts.verbose_name))
Run Code Online (Sandbox Code Playgroud)
所以verbose_name元属性似乎在这里发挥了一些作用.试图用它:
class Order(models.Model):
subject = models.CharField(max_length=150)
description = models.TextField()
class Meta:
verbose_name = _('order')
Run Code Online (Sandbox Code Playgroud)
现在更新的po文件包含msgid 'order'可以翻译的文件.所以我把翻译放进去.不幸的是,运行管理页面会显示"Выберитеorderдляизменения"的相同组合.
我目前正在使用Django 1.1.1.有人可以指点我的相关文件吗?因为谷歌不能.;-)同时我将深入研究django源代码......