国际化的set_language重定向视图不起作用
为了实现国际化,我做了这些步骤,但还没有成功:
在 settings.py
文件中,我进行了如下设置:
LANGUAGE_CODE = 'en-us'
SITE_ID = 1
USE_I18N = True
USE_L10N = True
LANGUAGES = (
('fa', gettext('Persian')),
('en', gettext('English')),
)
LOCALE_PATHS = (
'fa/LC_MESSAGES/django.po',
'fa/LC_MESSAGES/django.mo',
'en/LC_MESSAGES/django.po',
'en/LC_MESSAGES/django.mo',
'$PYTHONPATH/django/conf/locale/fa/LC_MESSAGES'
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.csrf.CsrfResponseMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
我在我的应用文件夹里创建了消息文件并进行了编译。
我在模板中创建了翻译字符串。
为了在不同语言之间切换,我在我的模板中添加了以下内容:
<form action="/i18n/setlang/" method="post" class="forms">
{% csrf_token %}
<input name="next" type="hidden" value="/next/page/" />
<select name="language" id="select_langauge" class="m_show hide">
{% for lang in LANGUAGES %}
{% if lang.0 != '' %}
<option value="{{lang.0}}">{{lang.1}}</option>
{% endif %}
{% endfor %}
</select>
<input type="submit" value="Go" />
</form>
在 urls.py
文件中,我也做了一些设置:
(r'^i18n/', include('django.conf.urls.i18n'))
但是当我提交这个表单来切换语言时,我遇到了这个错误:
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8080/next/page/
我是不是遗漏了什么?
提前谢谢你们 :)
2 个回答
1
你需要提供locale的绝对路径——也就是存放你翻译文件的文件夹。路径大概是这样的:
LOCALE_PATHS = (
'C:/abolute_path_to_your_project/.../locale/',
)
这个locale文件夹里应该包含你的翻译文件,结构大致是这样的:
.../locale/
- en/LC_MESSAGES/django.po
django.mo
- fr/LC_MESSAGES/django.po
django.mo
2
我觉得Django会试着把你引导到 /next/page/ 这个地址。
<input name="next" type="hidden" value="/next/page/" />
但是,你的网址设置里没有这个路径,对吧?