对于i18n我已经完成了这些步骤,但我还不能让它工作:
在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',
)
我在我的app文件夹和编译主题中构建了消息。 我在模板中创建了翻译字符串。 并在语言之间切换我在模板中有这个:
<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/
我有没有遗漏过什么?
提前感谢:)
答案 0 :(得分:2)
我认为Django会尝试将您重定向到/ next / page /
<input name="next" type="hidden" value="/next/page/" />
但是,你的网址中没有这条路径,不是吗?
答案 1 :(得分:1)
您必须提供区域设置的绝对路径 - 包含您的翻译的文件夹。它是这样的:
LOCALE_PATHS = (
'C:/abolute_path_to_your_project/.../locale/',
)
文件夹区域设置应包含您的翻译,如下所示:
.../locale/
- en/LC_MESSAGES/django.po
django.mo
- fr/LC_MESSAGES/django.po
django.mo