【发布时间】:2020-11-20 02:02:35
【问题描述】:
我已经完成了makemessages 和compilemessages,并且这两个文件都包含 {% 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