“TemplateSyntaxError Invalid block tag: 'trans'” Django 模板中的错误

问题描述 投票:0回答:5

运行

runserver
命令后出现以下错误:

TemplateSyntaxError at /questions/ 无效的块标记:'trans'

有人知道这是什么原因吗?

这是我的模板语法:

{% extends "two_column_body.html" %}
{# 
    this template is split into several
    blocks that are included here
    the blocks are within directory templates/main_page
    relative to the skin directory

    there is no html markup in this file
#}
<!-- questions.html -->
{% block forejs %}
    {% include "main_page/custom_head_javascript.html" %}
{% endblock %}
{% block title %}{% spaceless %}{% trans %}Questions{% endtrans %}{% endspaceless %}{% endblock %}
{% block content %}
    {% include "main_page/tab_bar.html" %}
    {% include "main_page/headline.html" %}
    {# ==== BEGIN: main_page/content.html === #}
    <div id="question-list">
        {% include "main_page/questions_loop.html" %}
    </div>
    {# ==== END: main_page/content.html === #}
    {% include "main_page/paginator.html" %}
{% endblock %}
{% block sidebar %}
    {% include "main_page/sidebar.html" %}
{% endblock %}
{% block endjs %}
    <script type="text/javascript">
        {# cant cache this #}
        askbot['settings']['showSortByRelevance'] = {{ show_sort_by_relevance|as_js_bool }};
        askbot['messages']['questionSingular'] = '{{ settings.WORDS_QUESTION_SINGULAR|escapejs }}';
        askbot['messages']['answerSingular'] = '{{ settings.WORDS_ANSWER_SINGULAR|escapejs }}';
        askbot['messages']['acceptOwnAnswer'] = '{{ settings.WORDS_ACCEPT_OR_UNACCEPT_OWN_ANSWER|escapejs }}';
        askbot['messages']['followQuestions'] = '{{ settings.WORDS_FOLLOW_QUESTIONS|escapejs }}';
    </script>
    {% include "main_page/javascript.html" %}
    {% include "main_page/custom_javascript.html" %}
{% endblock %}
<!-- end questions.html -->
python django django-templates translation templatetags
5个回答
40
投票

{% trans %}Questions{% endtrans %}
格式不正确。

{% load i18n %}
应该在您的模板或任何使用翻译的扩展模板的顶部。

你可以使用

{% trans "Questions." %}

如果你要使用块,它们需要采用以下格式:

{% blocktrans %}{{ value2translate }}{% endblocktrans %}

更多信息在这里.


5
投票

可能你应该使用

{% blocktrans %}Questions{% endblocktrans %}
而你忘记将
{% load i18n %}
放在模板的顶部。


3
投票

这是因为你没有在这个模板中加载 i18n

{% load i18n %}
你必须在每个模板中添加它。


2
投票

你必须在扩展模板代码的开头放置:

{% load i18n %}
,这样你就可以使用反式标签:

{% extends 'home/base.html' %}

{% block title %}INICIO{% endblock %}
{% load i18n %}


  {% block opcionesMenu %}
<!-- =====START====== -->
            <a href="#sTop" class="subNavBtn">{% trans "Inicio"  %}</a>
            <a href="#s1" class="subNavBtn">{% trans "Proyectos" %}</a>
            <a href="#s2" class="subNavBtn">{% trans "Diseño Web" %}</a>
            <a href="#s3" class="subNavBtn">{% trans "Marketing" %}</a>
            <a href="#s4" class="subNavBtn">{% trans "Conocenos" %}</a>
            <a href="#s5" class="subNavBtn">{% trans "Contacto" %}</a>
<!-- =====END ====== -->
 {% endblock %}

0
投票

除其他答案外,需要在{% extends %}后加上{% load i18n %}才能使用{% trans %}或{% translate %}如下图:

{% extends "two_column_body.html" %}
{% load i18n %}

{% extends %}
模板继承中解释如下图:

  • 如果您在模板中使用
    {% extends %}
    ,它必须是该模板中的第一个模板标签。模板继承将不起作用,否则。

所以,如果你把

{% load i18n %}
放在
{% extends %}
之前,如下所示:

{% load i18n %}
{% extends "two_column_body.html" %}

然后,出现以下错误:

必须是模板中的第一个标签。

© www.soinside.com 2019 - 2024. All rights reserved.