gpt4 book ai didi

python - Django翻译创建po和mo文件,但翻译失败并显示翻译占位符

转载 作者:太空狗 更新时间:2023-10-29 23:59:00 24 4
gpt4 key购买 nike

我正在使用 Django 1.6.5 和 virtualenv(虚拟环境)和 apache2

我有以下 settings.py 结构:

from django.utils.translation import ugettext_lazy as _

MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

LANGUAGE_CODE = 'tr_TR'
LANGUAGE_COOKIE_NAME = 'wm_lang'
LOCALE_PATHS = (
'/home/mustafa/python/myproject/locale'
)

USE_I18N = True
USE_L10N = True

LANGUAGES = (
('tr', _(u'Türkçe')),
('en', _(u'English')),
)

我有一个看起来像这样的模板文件

{% extends .... %}
{% load i18n %}

{% block content %}
<h2>{% trans 'Hosgeldin' %}</h2>
....
....

我运行以下命令来创建 po 文件

django-admin.py makemessages  --locale=tr --locale=en

创建以下文件

/home/mustafa/python/myproject/locale/tr/LC_MESSAGES/django.po
/home/mustafa/python/myproject/locale/en/LC_MESSAGES/django.po

我应用翻译字符串,所以我的 django.po 翻译文件看起来像那样

zh:

#: templates/websitesi/index.html:6
msgid "Hosgeldin"
msgstr "Welcome, that is a test"

tr:

#: templates/websitesi/index.html:6
msgid "Hosgeldin"
msgstr "Hoşgeldiniz, bu bir deneme"

然后我用

编译它们
django-admin.py compilemessages

django 会在 django.po 文件附近为两种语言创建 django.mo 文件。

但是当我访问该页面时,我看到的是 Hosgeldin(翻译占位符)而不是翻译后的文本。

将 {{ LANGUAGE_CODE }} 写入模板显示选定的语言代码。当我的地址是someadress/en时,语言代码显示为en...

我错过了什么?

更新:这是我的 root urls.py

的一部分
urlpatterns = patterns('',
(r'^i18n/', include('django.conf.urls.i18n')),
)

urlpatterns += i18n_patterns('',
url(r'^admin/docs/', include('django.contrib.admindocs.urls')),
url(r'^admin/', include(admin.site.urls)),
)

urlpatterns += staticfiles_urlpatterns()

urlpatterns += i18n_patterns('websitesi.views',
url(r'^$', 'index', name='index'), # This is my home page
....
....

然后我去 my_local_server/my_local_server/trmy_local_server/en 进行测试,但都无法翻译。

当我通过 my_local_server/tr/adminmy_local_server/en/admin 进入管理时,django trqnslations 工作得很好。

最佳答案

最后,果然是打字错误,果然不出所料。

settings.py

LOCALE_PATHS = (
'/home/mustafa/python/myproject/locale'
)

但 Django 期望 LOCALE_PATHS成为一个元组,所以添加一个逗号解决了这个问题...

LOCALE_PATHS = (
'/home/mustafa/python/myproject/locale',
)

关于python - Django翻译创建po和mo文件,但翻译失败并显示翻译占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24207244/

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