gpt4 book ai didi

Django i18n 不工作

转载 作者:行者123 更新时间:2023-12-02 02:21:23 24 4
gpt4 key购买 nike

这里是一个Python新手。我希望我的网站支持英文和中文。所以我只关注 django book,第 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.polocale/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 编译消息

我在 django.po 的某个文件夹中获得了 django.mo 文件

首先,我访问索引页面,然后访问另一个页面,该页面具有“上传演示”字符串 id。实际上我仍然在那里看到英文字符串。

并尝试通过打印语言代码进行调试,发现语言已正确设置。

上下文 = RequestContext(请求)打印上下文Translation.activate('zh-cn')

最后,我使用

gettext locale/zh-cn/LC_MESSAGES/django.mo "Upload Demo"

确实得到了“上传演示”。所以我认为问题就在这里。但为什么会出现这种情况呢?我真的很困惑。有谁可以帮助我吗?

非常感谢任何评论或帮助。

<小时/>
gettext locale/zh-cn/LC_MESSAGES/django.mo "Upload Demo"

我想我犯了一个错误。上面的命令返回一个与您作为字符串 ID 输入的字符串相同的字符串,而不是翻译后的字符串。上面的命令中,它是“Upload Demo”,也就是说,如果你把上面命令中的“Upload Demo”改成“bla bla”,你就会“bla bla”。

最佳答案

也许为时已晚,但我敢打赌您的问题可能是由于项目设置中缺少 LOCALE_PATHS 元组所致。

经过一个小时的努力,我通过简单地将其添加到项目中的 settings.py 文件中解决了同样的问题:

LOCALE_PATHS = (
'/home/myuser/Projects/Some_project_root/My_django_project_root/locale',
)

该目录的外观如下:

locale/
├── de
│   └── LC_MESSAGES
│   ├── django.mo
│   └── django.po
├── en
│   └── LC_MESSAGES
│   ├── django.mo
│   └── django.po
└── es
└── LC_MESSAGES
├── django.mo
└── django.po

关于Django i18n 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10529013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com