国际化的set_language重定向视图将不起作用

时间:2011-11-20 13:12:15

标签: python django

对于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/

我有没有遗漏过什么?

提前感谢:)

2 个答案:

答案 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