我正在网站上工作。我已经开始将其国际化了。
语言选择菜单的代码是
<form action="/i18n/setlang/" method="post">
<select name="language">
{% for lang in LANGUAGES %}
<option value="{{ lang.0 }}">{{ lang.1 }}</option>
{% endfor %}
</select>
<input type="submit" value="Go" />
</form>
{{ LANGUAGE_CODE }}
但它似乎不起作用。它只是重定向到同一页面
我添加了
(r'^i18n/', include('django.conf.urls.i18n'))
至urls.py
;
'django.middleware.locale.LocaleMiddleware'
来
settings.py中的MIDDLEWARE_CLASSES
'django.core.context_processors.i18n',
来
settings.py 我应该导入什么吗?
更新
我们每次添加
LANGUAGES = (
('es', _('Spanish')),
('en-US', _('AmericanEnglish')),
)
到settings.py我得到了
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
否则至少网站有效
答案 0 :(得分:1)
重定向到同一页面是django.views.i18n.set_language视图的默认设置(除非您在下一个参数中发送不同的网址)。
我建议您检查语言cookie是否已设置(作为匿名用户)。
如果未设置cookie,请检查您发送的语言代码是否正确。
请注意,只有当“它的”语言环境代码映射到django / conf / locale中的文件夹(不仅是文件夹,而是正确的语言环境文件夹,如locale_code / LC_MESSAGES / django.po)时,语言代码才有效(在Django的脑海中) )
看看django.utils.translations.trans_real.py(语言检查,lang到locale ......)和django / views / i18n.py有很多帮助:)
答案 1 :(得分:0)
您需要确保发送RequestContext。
return render_to_response('foo.html',context_instance=RequestContext(request))
答案 2 :(得分:0)
向表单添加显式<input name="next" value="/" type="hidden"/>
以重定向到站点根目录。否则它对我没用。