如何使所有 Django 应用程序
locale/<lang>/django.po
翻译可从 Javascript 访问,以便您可以动态翻译 Javascript 小部件中的文本?
根据 这些文档,您需要将 URL 模式添加到您的
urls.py
,例如:
urlpatterns += i18n_patterns(
path("jsi18n/", JavaScriptCatalog.as_view(packages=['myapp1', 'myapp2', ....]), name="javascript-catalog"),
然后在基本模板的
<head>
中添加包含:
<script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>
<script type="text/javascript" src="{% url 'javascript-catalog' %}"></script>
我已经完成了此操作,并且我的项目中的每个应用程序都有日语
locale/ja/django.po
(及其编译的 .mo)文件。
但是,当我访问由
{% url 'admin:jsi18n' %}
(/admin/jsi18n/
) 和 {% url 'javascript-catalog' %}
(/ja/jsi18n/
) 生成的 URL 时,它不包含任何我的自定义翻译。
这是为什么呢?我错过了文档中的哪一步,导致我的翻译无法在 Javascript 目录中访问?
事实证明 Django 使用不同的默认域来进行服务器端翻译(“django”)和客户端翻译(“djangojs”)。
为了解决这个问题,我必须明确让 JavascriptCatalog 使用与服务器端相同的域。例如
JavaScriptCatalog.as_view(domain='django', packages=[...])