Django翻译仅部分起作用

Django翻译仅部分起作用,django,internationalization,django-i18n,Django,Internationalization,Django I18n,我已经完成了makemessages和compilemessages,这两个文件都包含{%blocktranslate%}中的翻译。我甚至重新运行了makemessages,以确保msgid中没有任何更改,并且它没有对我的.po文件进行任何更改,除了POT创建日期。但是这些{%blocktranslate%}段落没有翻译。我坚持使用msgid而不是msgstr 很长的msgid有什么诀窍吗 我假设键不匹配,但不确定它们为什么不匹配,因为工具在重新运行时不会更改值 问题变得更糟了,现在一些简短的

我已经完成了
makemessages
compilemessages
,这两个文件都包含{%blocktranslate%}中的翻译。我甚至重新运行了makemessages,以确保msgid中没有任何更改,并且它没有对我的.po文件进行任何更改,除了
POT创建日期
。但是这些{%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>
是的,我已经运行了compilemessages

(bb) $ manage compilemessages
     processing file django.po in .../locale/es_MX/LC_MESSAGES
在第一次翻译的基础上,它找到了文件,但是它只翻译了几个术语。管理翻译更好(更完整),但我不确定我做错了什么。我想它可能是
LOCALE\u路径
,所以我把它添加到了我的设置中,但我记得compilemessages已经找到了该文件,所以没有任何效果

LOCALE_PATHS = [
    BASE_DIR / 'locale',
]

更新:
我使用的是es_MX的语言环境。当我转换回只使用es时,它开始工作,并且删除#fuzzy是修复的另一部分。我不知道你是如何使用西班牙语的,但目前我并不担心这一点。

你的代码没有显示任何
{%blocktranslate%}
,因此很难提供合适的答案


对于简短的翻译,模糊的
#不允许使用.po条目,并且它不会翻译。

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

  • ./manage.py makemessages-l es_MX
  • 在settings.py中设置
    LANGUAGE\u code='es MX'

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

您的模板文件中是否有
{%load i18n%}
模板标记?您是否查看了模板代码的正确部分?要请求的else部分在哪里。user.u是否经过身份验证?你的语言设置和答案是什么?他可能使用了
--使用fuzzy
,但不管怎样都不能解释“我的测验”。我看不到足够多的你的项目来提供更好的答案。模板的大部分内容和生成的html将非常有用。
LOCALE_PATHS = [
    BASE_DIR / 'locale',
]