【问题标题】:Internationalization not working properly - No action seems to be happening国际化无法正常工作 - 似乎没有采取任何行动
【发布时间】:2023-03-15 08:15:01
【问题描述】:

我配置了我的setting.py,如下所示:

LANGUAGE_CODE = 'pt-br'

USE_I18N = True

LANGUAGES = (
    ('pt_br', ('Portugues Brasileiro')),
    ('en_us', ('English'))
)

MIDDLEWARE_CLASSES = (
    ...
    'django.middleware.locale.LocaleMiddleware',
    ...
)

LOCALE_PATHS = ('/home/lucas/Documents/ProjectPython/test_internacionalizacao/test_internacionalizacao/locale/')

创建了一个名为 core 的应用程序,其文件夹中有另一个文件夹结构:

core
---- templates
-------- core
------------ core.html
------------ idiomas.html

core.html里面的代码是:

{% load i18n %}

<html>

    <head>
        <title>Internacionalização - 01</title>
    </head>

    <body>
        {% include "core/idiomas.html" %}

        <p>{% trans "Esta string será transformada para Inglês" %}</p>

    </body>

</html>

idiomas.html里面的代码是:

{% load i18n %}

{% get_available_languages as LANGUAGES %}

<div class="idiomas">
    <form action="/i18n/setlang/" method="POST">
        {% csrf_token %}
        <select name="languages">
            {% for lang in LANGUAGES %}
                <option value="{{ lang.0 }}">{{ lang.1 }}</option>
            {% endfor %}
        </select>
        <input type="submit" value="{% trans "Mudar idioma" %}">
    </form>
</div>

我的urls.py 是:

from django.conf.urls import patterns, include, url
from django.conf import settings

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^$', 'core.views.core_index'),
    url(r'^admin/', include(admin.site.urls)),
    (r'^i18n/', include('django.conf.urls.i18n')),
)

当我加载页面时,它看起来不错,但是当我将组合框更改为 English 时,没有任何效果。似乎页面重新加载,但组合选项返回到Portugues Brasileiro,仍然是葡萄牙语文本。

我在我的项目基本路径上创建文件夹区域设置并运行django-admin.py make messages -l pt_bren_us 并为en_us 配置.po 文件,如下所示:

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-05-12 12:29-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: core/templates/core/core.html:12
msgid "Esta string será transformada para Inglês"
msgstr "This string is being converted into English"

#: core/templates/core/idiomas.html:13
msgid "Mudar idioma"
msgstr "Change Language"

有人可以帮我弄清楚为什么它不起作用吗?这是我第一次使用国际化服务。

提前致谢!

【问题讨论】:

    标签: django internationalization django-i18n


    【解决方案1】:

    您是否尝试过从 .po 文件的标题中删除“#, fuzzy”行?无论如何,您都应该这样做才能加载翻译。

    如果问题仍然存在,则在 idomas.html 模板中打印当前语言 - 类似于

    {% get_current_language as lang %}{{lang}}

    检查选择框是否真的改变了语言。如果是这样,问题出在翻译机制上。如果不是,那是您设置语言的方式。请报告您的发现,看看接下来可以做什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-08
      • 2017-09-04
      • 2012-05-06
      • 2013-02-17
      • 2017-10-09
      • 2017-08-03
      • 2014-05-02
      • 2011-09-11
      相关资源
      最近更新 更多