我创建了多语言的页面。我想根据我选择的语言翻译内容。 我参考此代码 Django i18n setlang view gives Error 404 当我选择语言后,方法是调用i18n/setlang &再次进入同一页面,但内容不会改变。 有人可以帮我解决这个问题吗?使用i18n在Django中进行语言翻译
由于
设置
gettext = lambda s: s
LANGUAGES = (
('en', gettext('English'),),
('no', gettext('Norwegian'),),
)
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.i18n',
'multilingual.context_processors.multilingual',
'django.core.context_processors.media',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
模板
{% load i18n %}
<form action="/i18n/setlang/" method="post">
{% csrf_token %}
<input name="next" type="hidden" value="{{ redirect_to }}" />
<select name="language">
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
<option value="{{ language.code }}">{{ language.name }} ({{ language.code }})</option>
{% endfor %}
</select>
<input type="submit" value="Go" />
</form>
**view.py**
def index(request):
return render_to_response('flatpages/index.html', locals(), context_instance=RequestContext(request))
**index.html**
{% block content %}
{% load i18n %}
<h1>{{ flatpage.title }}</h1>
Language Code:{{ LANGUAGE_CODE}}<br>
{% trans "Hello" %}<br>
{% trans "Home" %}<br>
{{ flatpage.content }}
{% endblock content %}
在上面的代码中,我使用的
URL(R '^ I18N /',包括('django的.conf.urls.i18n')),
这意味着当提交表单时,它调用django的i18n.py文件中的方法set_language。
我检查该方法,在该方法中“check_for_language(lang_code)返回false”
那为什么会话变量没有设置。
任何人都可以告诉我为什么没有设置?
设置中会有任何更改以设置语言环境的路径。
我在我的项目文件夹中创建了locale文件夹。
你遵循了Django文档和设置相应的语言环境的中间件?换句话说,请发布您的相关设置,表格和视图 –
感谢您的回复。我添加了我用于语言翻译的代码。你可以请参考和告诉我我该做什么错? – Meenakshi
请添加视图.. –