【问题标题】:Django Translations only partially workingDjango 翻译仅部分工作
【发布时间】:2020-11-20 02:02:35
【问题描述】:

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

是的,我已经运行了 compilemessages

(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 是修复的另一部分。我不知道你是怎么做西班牙语变体的,但目前,我只是不担心这个。

【问题讨论】:

  • 您的模板文件中有{% load i18n %} 模板标签吗?
  • 您在查看模板代码的正确部分吗? request.user.is_authenticated 的 else 部分在哪里?你的语言设置和active language是什么?

标签: django internationalization django-i18n


【解决方案1】:

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

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

【讨论】:

  • 他可能使用了--use-fuzzy,但无论哪种方式都无法解释“我的测验”。
  • 我没有看到你的项目提供更好的建议。大部分模板和生成的 html 会很有帮助。
【解决方案2】:

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

  • ./manage.py makemessages -les_MX
  • 在你的settings.py中设置LANGUAGE_CODE = 'es-MX'

注意:注意区别,makemessages 用下划线,设置用减号!

【讨论】:

    猜你喜欢
    • 2019-09-05
    • 2018-04-15
    • 2016-08-09
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-19
    相关资源
    最近更新 更多