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

标签 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',
)

最佳答案

我明白了。

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

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

关于django 1.3 国际化...切换语言需要重新启动服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6005663/

相关文章:

python - 为什么我的 Django 工厂函数在本地数据库中创建模型,而不是测试数据库?

python - Django 。记录未正确删除

xml - 使用非 ASCII(自然语言)XML 标签是否合适?

javascript - 带有 i18next 的 gettext 样式键和一般工作流

git - Qt 翻译和 git 的最佳实践

vb.net - .NET本地化: Japanese Characters Display as Squares

Django 代理模型权限不出现

python - 如何在 Django 2.2.6 版本中获取列表而不是 QuerySet 类列表?

django - 如何在 Travis CI 上运行 redis?

使用 GNU gettext、libunistring 的 C++ l10n、i18n 解决方案