django 1.3国际化......切换语言需要服务器重启?

时间:2011-05-15 00:19:59

标签: django internationalization

之前我使用过django 1.2并没有任何问题切换语言...在我的模板中我有这个......

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

这与django 1.2一起工作正常。但是,自从升级到Django 1.3后,这不起作用。我可以看到LANGUAGE_CODE发生了变化,但实际的语言输出并不是我所期望的。

然而,当我重新启动django服务器时,它显示正确的语言。我错过了什么???

我在settings.py

中有这个
LANGUAGE_CODE = 'en-us'
SITE_ID = 1

USE_I18N = True

gettext = lambda s: s

LANGUAGES = (
    ('', gettext('Please select')),
    ('en', gettext('English')),
    ('ko', gettext('Korean')),
)

USE_L10N = True


MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.middleware.locale.LocaleMiddleware',
)

1 个答案:

答案 0 :(得分:1)

我发现了。

要动态更改语言,使用ugettext_lazy()修复了问题。 (在我使用ugettext之前)。

参考:https://docs.djangoproject.com/en/1.3/topics/i18n/internationalization/#lazy-translation