我知道,我问的是类似的东西,要求很多次。但是有不同的观点。
我正在做一个小django项目。在开发了基本功能之后,现在我正在与多语言作斗争。
我能够在Windows笔记本电脑中使用一个简单的测试模板。但是当我将这个项目复制到测试(CentOS)服务器时,它不起作用。
此后我做了什么。
基础环境(两个系统)都是带有python 2.7,django 1.5,mysql-python 1.2.3和django-localeURL 1.5的virtualenv。 gettext v.1.7。
这些是settings.py的相关选项(注意:我使用的是django-localeURL应用程序)
# Django settings for contact_site project.
import os.path
PROJECT_DIR = os.path.dirname(__file__) # this is not Django setting.
# ... skip
LANGUAGE_CODE = 'it'
#...skip
USE_I18N = True
USE_L10N = True
#...skip
# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
# 'django.template.loaders.eggs.Loader',
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
# LocaleMiddleware after SessionMiddleware: it needs sessions
# commented out LocaleMiddleware to avoid conflict with LocaleURLMiddleware
# 'django.middleware.locale.LocaleMiddleware',
# LocaleURLMiddleware to manage multi language urls
'localeurl.middleware.LocaleURLMiddleware',
# CommonMiddleware after LocaleURLMiddleware or will not work APPEND_SLASH
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
# ... skip
_ = lambda s: s
LANGUAGES = (
('en', _(u'English')),
('it', _(u'Italiano')),
('fr', _(u'Francais')),
)
LOCALE_PATHS = (
# in windows laptop
'C:/...skip.../virtualenvs/djprj/contact_site/locale',
# in centos staging server
# '/var/www/html/virtualenvs/djprj/contact_site/locale',
)
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.request',
'django.core.context_processors.i18n',
'django.contrib.auth.context_processors.auth',
)
TEMPLATE_DIRS = (
# ...skip
os.path.join(PROJECT_DIR, "templates"),
)
INSTALLED_APPS = (
# localeurl to manage multi language urls. it must be the 1st one!
'localeurl',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# ... skip
# my application
'contact',
)
# ... skip
我的项目urls.py(仅限家庭):
# ... skip
urlpatterns += patterns('',
url(r'^$', 'contact_site.views.home', name='home'),
)
my views.py(仅限家庭):
#... skip
def home(request):
return render(request, 'minimalistic.html', {})
最后是我的简约模板:
{% load debug_tags %}
{% load i18n %}
<!DOCTYPE html>
<html>
<head>
<title>TITLE</title>
</head>
<body>
{# {% set_trace %} #}
<p>{% trans "Hello" %}</p>
<p>{% blocktrans %}Hello guys{% endblocktrans %}</p>
lingua richiesta: {{ request.LANGUAGE_CODE }}
</body>
</html>
然后我使用
制作了消息词典django-admin.py makemessages --all
我编辑了词典(使用poedit) 最后,在Windows中运行开发服务器,我看到了令人垂涎的结果:
从浏览器http://127.0.0.1:8000/it
偷看,给了我Salve ......
虽然获得http://127.0.0.1:8000/en
给了我,你好......
不幸的是,在舞台系统中我从两个网址获得了Hello ....
为了安全起见,我甚至试过了几次
django-admin.py compilemessages
此操作没问题,但没有关于minimalistic.html模板渲染的不同结果
最后,是的,我在测试之间清除了浏览器缓存。
关于我缺少什么的任何建议?我该如何调试这种奇怪的行为?
答案 0 :(得分:0)
嗯,我很抱歉,有点尴尬。
今天,调试django/utils/translate/trans_real.py
,我意识到登台服务器settings.py
文件中存在一个微妙的拼写错误。
我无法计算昨天检查过该配置文件的次数,错过了这一点!
再次抱歉