【发布时间】:2015-06-23 15:14:59
【问题描述】:
我正在尝试让 Django 的翻译系统工作,按照教程 here。
这是我的两个视图(一个用于直接输出,一个用于模板),一个都不起作用。
def home(request):
output = _("hello") # (lazy)
return HttpResponse(output)
def with_template(request):
return render(request, 'translation_template.html')
这是第二个视图的模板文件:
{% extends "base_site.html" %}
{% load i18n %}
{% block content %}
<p>{% trans 'hello' %}</p>
{% language 'tr' %}
<p>{% trans 'hello' %}</p>
{% endlanguage %}
{% language 'tr-TR' %}
<p>{% trans 'hello' %}</p>
{% endlanguage %}
{% endblock %}
在我的设置文件中,我添加了以下内容:(如果需要,可以添加之前的部分)
LANGUAGE_CODE = 'en-us'
# also tried LANGUAGE_CODE = 'tr' and LANGUAGE_CODE = 'tr-TR'
PROJECT_DIR = os.path.dirname(__file__)
"""
# tried but didn't work
from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.context_processors.auth",
"django.core.context_processors.i18n",
)
"""
LOCALE_PATHS = ( os.path.join(PROJECT_DIR, 'locale'), )
LANGUAGES = (
('tr', _('Turkish')),
('en', _('English')),
)
保存这些后,我在终端执行:
python ./manage.py makemessages -l tr
然后将新创建的myproject/locale/tr/LC_MESSAGES/django.po 编辑为:
msgid "hello"
msgstr "merhaba"
然后执行
python ./manage.py compilemessages
并重新启动服务器。终端命令没有显示错误,但是当我加载视图时,没有一个“hello”被翻译。
我在这里做错了什么?
感谢您的帮助!
编辑:
我在 en/../django.po 中发现了一个可疑代码,可能不相关,但也许是。这是文件的开头。模糊(empty->empty)的翻译,会不会是问题?
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
【问题讨论】:
-
不到 1 分钟的负分。为什么?
-
您确定您的浏览器正在请求土耳其语页面吗?尝试在模板中打印当前语言以进行调试:
{% get_language_info for LANGUAGE_CODE as current_lang %}和{{ current_lang.code }} -
@halilpazarlama,您是否将
django.middleware.locale.LocaleMiddleware包含在MIDDLEWARE_CLASSES中? -
@Anzel 是的。 @Selcuk 上面写着
en。我还添加了英文翻译“eng_hello”,但它不适用。 -
@halilpazarlama,尝试将您的浏览器编码/语言环境等更改为土耳其语,看看它是否会相应地选择语言环境
标签: python django localization internationalization language-translation