Python Django translation创建po和mo文件,但翻译失败并显示翻译占位符
我将Django 1.6.5与Python Django translation创建po和mo文件,但翻译失败并显示翻译占位符,python,django,internationalization,Python,Django,Internationalization,我将Django 1.6.5与virtualenv(虚拟环境)和apache2一起使用 我有以下设置.py结构: from django.utils.translation import ugettext_lazy as _ MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware',
virtualenv
(虚拟环境)和apache2一起使用
我有以下设置.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>
....
....
这将创建以下文件
/home/mustafa/python/myproject/locale/tr/LC_MESSAGES/django.po
/home/mustafa/python/myproject/locale/en/LC_MESSAGES/django.po
我应用翻译字符串,使我的django.po
翻译文件如下所示
{% extends .... %}
{% load i18n %}
{% block content %}
<h2>{% trans 'Hosgeldin' %}</h2>
....
....
嗯:
tr:
然后我用
django-admin.py compilemessages
django在django.po
文件附近为两种语言创建django.mo
文件
但是当我访问页面时,我看到的是Hosgeldin
(翻译占位符),而不是翻译文本
将{{LANGUAGE_CODE}}写入模板将显示选定的语言代码。当我的地址是someaddress/en
时,语言代码显示为en
我错过了什么
更新:这是我的rooturl.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
....
....
LOCALE_PATHS = (
'/home/mustafa/python/myproject/locale'
)
然后我转到my_local_server/
或my_local_server/tr
或my_local_server/en
进行测试,但翻译失败
当我通过my_local_server/tr/admin
或my_local_server/en/admin
访问admin时,django trqnslations可以正常工作。最后,正如预期的那样,结果是一个打字错误
在settings.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
....
....
LOCALE_PATHS = (
'/home/mustafa/python/myproject/locale'
)
但是Django希望是一个元组,所以添加一个逗号解决了这个问题
LOCALE_PATHS = (
'/home/mustafa/python/myproject/locale',
)
正在设置正确的语言代码?{{LANGUAGE_CODE}}显示了什么?只是检查一下,但是您在运行compilemessages之后是否重新启动了开发服务器?@GuilhermeVierno{{LANGUAGE_CODE}显示了正确的结果。@JoniBekenstein我正在使用apache2。请尝试像tr_tr/en_US这样的语言代码(仅用于测试)