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',
]