Django 翻译只能部分工作
Django Translations only partially working
我完成了 makemessages
和 compilemessages
,这两个文件都包含 {% 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,减号表示设置!
我完成了 makemessages
和 compilemessages
,这两个文件都包含 {% 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,减号表示设置!