无法在块中翻译 Django 模板

Posted

技术标签:

【中文标题】无法在块中翻译 Django 模板【英文标题】:Django template translation in block not possible 【发布时间】:2015-02-16 16:46:13 【问题描述】:

在 Python 3.4 下使用 Django 1.7.1,我遇到了一个问题,我没有找到任何答案,尽管看起来很平庸,并且在互联网上看到了许多类似的问题。到目前为止我还没有理解的解决方案。

我有一个简单的 django 模板,归结为基本部分。它是 content 块中的一个简单的“trans”标记翻译字符串,它覆盖了 admin/base content 块。

% extends "admin/base.html" %
% block content %
    % trans "Entries" %
% endblock %

这样我得到一个 TemplateSyntaxError

Invalid block tag: 'trans', expected 'endblock'

到目前为止,我学到的是你需要使用 blocktrans 来完成类似的事情。但我不明白 - 为什么这不起作用? 有趣的是,如果我用 _("Entries") 替换% trans "Entries" %,一切都会按预期工作。 但我需要您使用 trans 标签获得的额外好处。

有很多例子,比如here,它们完全使用了上面的模式——而且它应该可以工作。 欢迎任何帮助。

【问题讨论】:

【参考方案1】:

您可能在模板顶部缺少此说明?

% load i18n %

https://docs.djangoproject.com/en/1.7/topics/i18n/translation/#internationalization-in-template-code

【讨论】:

巴姆。这就是答案。你让我开心:) 另外值得注意的是标签必须在包含模板中,而不是基本模板中【参考方案2】:

我尝试使用此命令:

python manage.py makemessages zh_SG

而不是

python manage.py makemessages zh-sg

(注意下划线和大写字母结尾)并确保每个应用程序都有一个语言环境文件夹(makemessages 可能会在应用程序之外创建一个错误位置的语言环境文件夹)

这对我有用,希望对你有帮助 (https://***.com/a/1833340/5798298)

【讨论】:

以上是关于无法在块中翻译 Django 模板的主要内容,如果未能解决你的问题,请参考以下文章

Django - 在渲染到模板之前翻译变量

Django:在块外带有标签

从龙卷风模板中提取翻译

如何在magento管理站点块中翻译变量

django - 如何使翻译工作?

Django 模板:翻译带有 HTML 的文本块的最佳实践