我正在尝试让Django的翻译系统工作,按照这里的教程进行操作。
这是我的两个视图(一个用于直接输出,一个用于模板),但都没有起作用。
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 ""
{% get_language_info for LANGUAGE_CODE as current_lang %}
和{{ current_lang.code }}
。 - Selcuk{% language 'tr' %}
试用版难道不应该为我做这个吗? 编辑:我将 Chrome 的设置更改为土耳其语,@Selcuk 的代码这次显示tr
,但仍然没有翻译... - jeff