相关疑难解决方法(0)

13
推荐指数
1
解决办法
7724
查看次数

Django:i18n - 改变语言

我正在安装model_translation,rosetta,locale_url.但是不起作用改变语言.

我的settings.py:

LANGUAGE_CODE = 'ru'
MODELTRANSLATION_TRANSLATION_REGISTRY = "project.translation"
TRANSLATION_REGISTRY = "project.translation"
ugettext = lambda s: s
LANGUAGES = (
    ('ru', ugettext(u'Russian')),
    ('uk', ugettext(u'Ukrainian')),
)
Run Code Online (Sandbox Code Playgroud)

我对语言切换的看法:

def set_language(request):
    next = request.REQUEST.get('next', None)
    if not next:
        next = request.META.get('HTTP_REFERER', None)
    if not next:
        next = '/'
    response = http.HttpResponseRedirect(next)
    if request.method == 'GET':
        lang_code = request.GET.get('language', None)
        if lang_code and check_for_language(lang_code):
            if hasattr(request, 'session'):
                request.session['django_language'] = lang_code
            else:
                response.set_cookie(settings.LANGUAGE_COOKIE_NAME, lang_code)
    return response
Run Code Online (Sandbox Code Playgroud)

在模板中:

<a href="{% url set_lang %}?lang=uk&next={{request.path}}">Ukranian</a>
Run Code Online (Sandbox Code Playgroud)

我的中间件:

MIDDLEWARE_CLASSES = ( …
Run Code Online (Sandbox Code Playgroud)

django internationalization

11
推荐指数
2
解决办法
2万
查看次数

尝试从Django模板更改语言的问题

我需要包含两个按钮或链接,以允许用户更改英语和西班牙语之间的语言.我已经阅读了文档并尝试了这个:

<form action="/i18n/setlang/" method="post">{% csrf_token %}
    <input name="language" type="hidden" value="es" />
    <input type="submit" value="ES" />
</form>
Run Code Online (Sandbox Code Playgroud)

但是,每次单击该按钮时,页面都会重新加载,但语言根本不会更改.我错过了什么吗?

注意:我没有设置next,因为我只想用所需语言重新加载当前页面.

如果我使用docs提供的默认表单,结果是相同的:页面重新加载但语言没有改变:

<form action="{% url 'set_language' %}" method="post">
    {% csrf_token %}
    <input name="next" type="hidden" value="{{ redirect_to }}" />
    <select name="language">
        {% get_language_info_list for LANGUAGES as languages %}
        {% for language in languages %}
            <option value="{{ language.code }}"{% if language.code == LANGUAGE_CODE %} selected="selected"{% endif %}>
                {{ language.name_local }} ({{ language.code }})
            </option>
        {% endfor %}
    </select>
    <input type="submit" value="Go" …
Run Code Online (Sandbox Code Playgroud)

python django internationalization django-i18n

7
推荐指数
2
解决办法
1万
查看次数