开发者

django 1.3 internationalization... switching language requires server restart?

I used django 1.2 before and didn't have any problem switching language... In my template i have this...

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

This was working fine with django 1.2. But since upgraded to Django 1.3 this does not work. I can see that LANGUAGE_CODE changes, but the actual language output is not what I was expecting.

However, when i restart django server, it shows correct language. What am i missing???

I have this in my 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',
)
开发者_运维知识库


I figured out.

To change language dynamically, using ugettext_lazy() fixed the problem. (Before I was using ugettext).

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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜