ここのpython初心者。ウェブサイトで英語と中国語をサポートしたい。だから私はジャンゴの本、第19章の国際化に従っています。しかし、それは私にはうまくいかないようです。文字列は中国語で表示され、まだ英語で表示されることを望んでいます。私のコードと設定は次のとおりです。
[設定.py]
LANGUAGE_CODE = 'zh-cn'
USE_I18N = True
USE_L10N = True
LANGUAGES = (
('en', 'English'),
('zh-cn', 'Chinese')
)
TEMPLATE_CONTEXT_PROCESSORS = {
'django.core.context_processors.i18n',
}
MIDDLEWARE_CLASSES = (
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
私のアプリのviews.pyでは、インデックスに言語コードを「zh-cn」として強制的に設定しました
def index( request ):
response= render_to_response( 'index.htm' )
response.set_cookie('django_language','zh-cn')
return response
次に、index.htm の後に読み込まれる別のページに中国語の文字列が表示されることを願っています。
別のページが upload.html によってレンダリングされます
{% load i18n %}
<html>
<head>
{% block head %}
{% endblock %}
</head>
<body>
{% block body %}
<h1>{% trans 'Upload Demo' %}</h1>
{% endblock %}
</body>
</html>
その後、私は
django-admin.py makemessages -l zh-cn -e htm
私のdjangoプロジェクトフォルダーで、django.poをlocale/zh-cn/LC_MESSAGES/django.poで取得しました。コンテンツは次のようなものです
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-05-10 18:33+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: uploader/template/base.htm:10
msgid "Upload Demo"
msgstr "上传文件"
その後、次のコマンドを呼び出して、メッセージ django-admin.py compilemessages をコンパイルします。
django.poのあるフォルダーにdjango.moファイルを取得しました
最初にインデックス ページにアクセスし、次に「Upload Demo」文字列 ID を持つ別のページにアクセスします。実際、私はまだそこに英語の文字列を見ています。
言語コードを印刷してデバッグを試みたところ、言語が正しく設定されていることがわかりました。
context = RequestContext(request) 印刷コンテキスト translation.activate('zh-cn')
最後に、私は
gettext locale/zh-cn/LC_MESSAGES/django.mo "Upload Demo"
本当に 'Upload Demo' を手に入れました。だから私は問題がここにあると思います。しかし、なぜこれが起こるのですか?私は本当に混乱しました。どんな体でも私を助けることができますか?
コメントやヘルプに深く感謝します。
gettext locale/zh-cn/LC_MESSAGES/django.mo "Upload Demo"
私は間違いを犯したと思います。上記のコマンドは、翻訳された文字列ではなく、文字列 ID として入力した文字列と同じ文字列を返します。上記のコマンドでは、「Upload Demo」です。つまり、上記のコマンドで「Upload Demo」を「bla bla」に変更すると、「bla bla」になります。