Django 翻译只能部分工作

Django Translations only partially working

我完成了 makemessagescompilemessages,这两个文件都包含 {% blocktranslate %} 内的翻译。我什至重新 运行 makemessages 以确保 msgid 中没有任何变化,并且它没有对我的 .po 文件进行任何更改,除了 POT-Creation-Date。但是这些 {% blocktranslate %} 段落没有翻译。我坚持使用 msgid 而不是 msgstr

对于很长的 msgid 是否有一些技巧?

我假设键不匹配,但不确定为什么它们不匹配,因为这些工具在重新 运行.

时不会更改值

问题变得更糟,现在一些简短的翻译也不起作用。

这是呈现的页面:

这是呈现它的来源:

            <li class="nav-item {% is_active_tab 'home' %}">
                <a class="nav-link" href="{% url 'home' %}">
                    {% translate "Home" %}
                </a>
            </li>
            {% if request.user.is_authenticated %}
                <li class="nav-item {% is_active_tab 'games:list' %}">
                    <a class="nav-link" href="{% url 'games:list' %}">
                        {% translate "My Quizzes" %}
                    </a>
                </li>
                <li class="nav-item {% is_active_tab 'games:create' %}">
                    <a class="nav-link" href="{% url 'games:create' %}">
                        {% translate "New Quiz" %}
                    </a>
                </li>

这是 .po 文件

#: templates/site_base.html:41
msgid "Home"
msgstr "Inicio"

#: templates/site_base.html:47
msgid "My Quizzes"
msgstr "Mis Cuestionarios"

#: templates/site_base.html:52
#, fuzzy
msgid "New Quiz"
msgstr "Nuevo Cuestionario"

是的,我有运行条编译信息

(bb) $ manage compilemessages
     processing file django.po in .../locale/es_MX/LC_MESSAGES

根据第一个翻译,它找到了文件,但随后它只翻译了几个术语。管理员翻译更好(更完整),但我不确定我做错了什么。我认为它可能是 LOCALE_PATHS,所以我将其添加到我的设置中,但后来想起 compilemessages 已经找到该文件,因此没有效果....

LOCALE_PATHS = [
    BASE_DIR / 'locale',
]

更新: 我使用的是 es_MX 的语言环境。当我转换回 es 时,它开始工作,删除 #fuzzy 是修复的另一部分。我不确定您如何使用西班牙语进行变体,但目前,我不担心那个。

您的代码没有显示任何内容 {% blocktranslate %} 因此很难提供适当的答案。

对于短翻译,#, fuzzy 不允许使用 .po 条目并且不会翻译。

如果您想翻译西班牙语的变体,例如 es_MX,那么:

  • ./manage.py makemessages -l es_MX
  • 在您的 settings.py
  • 中设置 LANGUAGE_CODE = 'es-MX'

注意:请注意区别,下划线表示 makemessages,减号表示设置!