Warm tip: This article is reproduced from serverfault.com, please click

internationalization-Django Translations只能部分工作

(internationalization - Django Translations only partially working)

发布于 2020-11-20 02:02:35

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

对于很长的msgid,有什么窍门吗?

我假设键不匹配,但不确定为什么不匹配,因为工具在重新运行时不会更改值。


问题变得更糟了,现在一些短译本也不起作用。

这是渲染的页面:

1/4翻译的用户界面

这是渲染它的来源:

            <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的另一部分是。我不确定你如何在西班牙语上进行变化,但是就目前而言,我只是不必担心。

Questioner
boatcoder
Viewed
0
François Fournier 2020-12-05 04:24:56

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

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