【问题标题】:Change language and its url in django在 django 中更改语言及其 url
【发布时间】:2014-08-28 12:31:44
【问题描述】:

我在 Django 中有一个两种语言的站点,以及一个用于更改站点语言的选择表单。它工作正常,直到我开始在网址中使用i18n_patterns。所以现在,我网站的每个网址都以:foo.com/en/foo.com/es/ 开头。

问题是当我使用表单更改语言时,url 设置会覆盖表单的选择,因此语言不会被更改。实现这一目标的唯一方法是从 url 手动完成。

但是,我不想将所有语言更改链接到初始页面。该网址可能类似于foo.com/en/post/foo-post/,我希望能够将其更改为foo.com/es/post/foo-post/。我做错了什么?

我的表格是:

<form action="{% url 'set_language' %}" method="post">
    {% csrf_token %}
    <input name="next" type="hidden" value="{{ redirect_to }}" />
    <select name="language"  onchange="this.form.submit()">
        <option value="es" {% if LANGUAGE_CODE == "es" %} selected="selected"{% endif %}>Español</option>
        <option value="eu"  {% if LANGUAGE_CODE == "en" %} selected="selected"{% endif %}>English</option>
    </select>
</form>

非常感谢

【问题讨论】:

    标签: django internationalization


    【解决方案1】:

    我有一个多语言选择的网页,这是我的 base.html 模板中的一个示例。我希望你觉得它有用。

    {% load i18n %}
    {% get_current_language as CURRENT_LANGUAGE %}
    {% get_static_prefix as STATIC_PREFIX %}
    <head>
    ...
    <script>    
    jQuery(window).load(function() {
        $('#language').change(function() {
            window.location.replace("/" + $('#language').val() + "/index");
        });
    });
    </script>
    ...
    </head>
    
    <body>
    ....
    <select id="language" name="language">
        {% if CURRENT_LANGUAGE == 'es' %}
            <option value="es" selected="yes">{% trans "Espaniol" %}</option>
        {% else %}
            <option value="es">{% trans "Espaniol" %}</option>
        {% endif %}
        {% if CURRENT_LANGUAGE == 'en' %}
            <option value="en" selected="yes">{% trans "Ingles" %}</option>
        {% else %}
            <option value="en">{% trans "Ingles" %}</option>
        {% endif %}
    </select>
    ...
    </body>
    

    【讨论】:

    • 我不明白你的做法。如果我在foo.com/es/ 并将其更改为英语,它会将我重定向到foo.com/en/index。就我而言,一个漂亮的Page not found 错误消息;)。无论如何,谢谢!
    • 就是一个例子。编辑网址。
    • 好的,我明白你的意思了。
    猜你喜欢
    • 2011-03-01
    • 2023-03-08
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多