加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 13:23:24 所属栏目:Python 来源:网络整理
导读:之前我使用过 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
之前我使用过 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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读