django international - WBowam/wbowam.github.com GitHub Wiki
Date: 2014-09-07 Title: django 国际化 Tags: Django Category: It
我选择用如下方式:
models
from django.utils.translation import ugettext_lazy as _
class MyThing(models.Model):
name = models.CharField(_('name'), help_text=_('This is the help text'))
class Meta:
verbose_name = _('my thing')
verbose_name_plural = _('mythings')
template
{% load i18n %} 放在模板最前面。
###翻译一个常量字符串 (括以单或双引号) 或 可变内容:
<title>{% trans "This is the title." %}</title>
<title>{% trans myvar %}</title>
### 如果你的译文要求字符串带有变量(占位符placeholders),请使用 {% blocktrans %} :
{% blocktrans %}This string will have {{ value }} inside.{% endblocktrans %}
在三处之一运行如下命令:
-
Django项目根目录。(首选)
-
您Django应用的根目录。
-
django 根目录(不是Subversion检出目录,而是通过 $PYTHONPATH 链接或位于该路径的某处)。 这仅和你为Django自己创建一个翻译时有关
django-admin.py makemessages -l zh
在你运行django-admin.py makemessages
的目录下运行:
django-admin.py compilemessages
在 MIDDLEWARE_CLASSES 设置中增加 'django.middleware.locale.LocaleMiddleware' 。
中间件的顺序是有影响的,最好按照依照以下要求:
-
保证它是第一批安装的中间件类。
-
因为 LocalMiddleware 要用到session数据,所以需要放在 SessionMiddleware 之后。
-
如果你使用CacheMiddleware,把LocaleMiddleware放在它后面。 如下:
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
)