中国的django翻译不起作用

时间:2017-03-15 14:30:56

标签: django django-i18n

我的settings.py看起来像这样:

LANGUAGES = (
    ('en', _('English')),
    ('fr', _('French')),
    #Simplified Chinese
    ('zh-hans', _('Simplified Chinese')),
)

在我的模板中,我有:

<script type="text/javascript" src="{% url 'javascript-catalog' %}"></script>

<button type="submit" value="zh-hans" name='language'>{% trans 'Simplified Chinese' %}</button>

在我的urls.py中,我有:

url(r'^i18n/', include('django.conf.urls.i18n')),
url(r'^jsi18n/$', JavaScriptCatalog.as_view(), name='javascript-catalog'),

在我的po文件中,我有:

msgid "Menu"
msgstr "菜单"

我编译了邮件,但它不起作用。我有法语的翻译工作,所以我不明白中文翻译是怎么回事。

编辑:所以我试着将“菜单”的中文翻译成我的法语po文件,因为我认为它可能是角色本身,但它有效。然后,当我把它放回中文po文件时,“菜单”没有被翻译。

3 个答案:

答案 0 :(得分:4)

对于那些遇到相同问题的人,我找到的解决方案是创建一个带有下划线和大写字母H的语言环境文件夹。

所以它看起来像:

django-admin makemessages -l zh_Hans

原因是Django文档states

  

在所有情况下,包含翻译的目录的名称是   期望使用区域设置名称表示法命名。例如。 de,pt_BR,   es_AR等。

并在another part of the documentation中说:

  

语言环境名称,ll或a形式的语言规范   形式ll_CC的组合语言和国家/地区规范。   示例:it,de_AT,es,pt_BR。语言部分总是较低   案件和国家部分是大写的。分隔符是   下划线。

答案 1 :(得分:0)

您的中文区域设置目录是否名为“zh_hans”而不是“zh-hans”?我相信该目录必须有下划线而不是破折号。

答案 2 :(得分:0)

这个问题确实让我很困惑! 这是基于 ALUW 回答的简短摘要:

# in settings.py, use lower-case language code, The separator is a dash.
LOCALE_PATHS = (os.path.join(BASE_DIR, 'locale'), )
LANGUAGES = (
    ('en', _('English')),
    #Simplified Chinese
    ('zh-hans', _('Simplified Chinese')),
)
# while when making and compiling message file, use local name.
# The language part is always in lower case and the country part in upper case. 
# The separator is an underscore.

./manage.py makemessages -l zh_Hans