在我的django项目中,我正在引入国际化。 我已经遵循了所有提示,特别是:
{% load i18n %}
django-admin.py makemessages -l it
(来自项目的根目录)django-admin.py compilemessages (from root of project)
我的settings.py是:
LANGUAGE_CODE = 'en-us'
USE_I18N = True USE_L10N = True
TEMPLATE_CONTEXT_PROCESSOR = ('django.core.context_processors.i18n',)
"django.middleware.locale.LocaleMiddleware",
如果我在网络浏览器中使用DjDT调试django,我可以看到:
但是我没有看到用它语言中的页面,而是继续用en-us语言看到。 我已经在stackoverflow上阅读了有关此主题的其他问题,但我没有找到解决方案。 我的应用程序需要做什么才能实现国际化?
编辑-1
我的项目结构如下:
的src /
myproj/ app1/ app2/
区域设置/
it/ LC_MESSAGES/ django.mo django.po it-IT/ ...
模板/
答案 0 :(得分:1)
您是否尝试将LANGUAGE_CODE
设置为意大利语设置,然后看看会发生什么?
您是否尝试将LANGUAGES
设置为英语和意大利语,看看会发生什么?对于波兰语和英语,我有这样的事情:LANGUAGES = (('pl', 'Polski'), ('en', 'English'))
。
最后一件事:你的观点是否使用RequestContext?
def some_view(request):
# ...
return render_to_response('my_template.html',
my_data_dictionary,
context_instance=RequestContext(request))
您可以在渲染模板之前创建请求上下文并检查LANGUAGES
和LANGUAGE_CODE
的值:
def some_view(request):
# ...
context = RequestContext(request)
print context.LANGUAGE, context.LANGUAGE_CODE
return render_to_response('my_template.html', my_data_dictionary,
context_instance=context)
这样我们就可以看到它设定了什么价值。
我认为必须使用RequestContext,才能在模板中检测语言。
我记得设置这个的痛苦,我曾经试图在Django上运行Facebook应用程序。也许我能想出更多的东西。
答案 1 :(得分:1)
如果我将文件夹区域设置(在项目的根目录中)粘贴到myproj文件夹中,则国际化可以正常工作,也无需设置LOCALE_PATHS settings.py。
答案 2 :(得分:0)
听起来像Django找不到你的语言环境文件夹。请参阅此处的文档:https://docs.djangoproject.com/en/1.3/howto/i18n/
默认情况下,django会查看每个已安装的应用程序和项目的根目录(包含settings.py文件的文件夹 - 不一定是应用程序的根目录)