Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django translation创建po和mo文件,但翻译失败并显示翻译占位符_Python_Django_Internationalization - Fatal编程技术网

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

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',

我将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',
    '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

我错过了什么

更新:这是我的root
url.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这样的语言代码(仅用于测试)