Django makemessages 不收集模板内的 javascript 字符串

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

当前出现此问题的Django项目通过多种方式使用了国际化和翻译:

  1. 在模板文件中,翻译内容文本在 Javascript 文件中
  2. 位于静态目录内,在Javascript函数中定义
  3. 模板文件内部

目前1和2工作正常,没有任何问题。 运行

Django-admin makemessages -l en
生成模板内容的翻译,运行
Django-admin makemessages -l en -d djangojs
生成位于静态 javascript 文件中的字符串的翻译。

我目前正在努力解决第三个问题,尚未找到任何直接解决此用例的文档。

当前发生的情况是,当我运行任何一个 makemessages 命令时,Django 找不到新字符串,当我手动将它们添加到翻译文件中时,翻译会正常工作,直到我再次运行 makemessages。

为什么 makemessages 没有检测到这些翻译字符串以及如何让它检测到这些翻译字符串?

urls.py:

path('i18n/', include('django.conf.urls.i18n')),
path('jsi18n/', JavaScriptCatalog.as_view(), name='javascript-catalog'),

dashboard.html 的片段:

{% extends "base/template_base.html" %}
{% load staticfiles %}
{% load i18n %}

{% block content %}
    <script type="text/javascript" src="{% url 'javascript-catalog' %}"></script>

<div>
<!-- some HTML content here -->
</div>

<script>
    <!--Intro JS-->
      function startIntro(){
        var intro = introJs();
          intro.setOptions({
            showProgress: true,
            showBullets: false,
            doneLabel: gettext('intro_done'),
            steps: [
              {
                intro: gettext("intro_dashboard_01")
              },
              {
                intro: gettext('intro_dashboard_02')
              },
            ]
          });
          intro.start();
      }
</script>
{% endblock %}
javascript django internationalization translation
1个回答
0
投票

将脚本放入 .js 文件中,它应该可以工作。

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