Django 提供了一个特定的解决方案来处理这个问题:
https://docs.djangoproject.com/en/2.2/topics/i18n/translation/#module-django.views.i18n
但是当需要翻译的js代码中使用的消息数量有限时,
通常情况下,我更喜欢使用更简单的解决方案。
首先,我在“templates”文件夹中创建了一个“js消息目录”;
它只包含一个全局字符串文字列表。
由于模板引擎不限于 HTML,并且可以处理任何文件类型,
您可以在js文件的开头{% load i18n %},并根据需要使用'trans'和其他模板标签来标记可翻译的字符串值;这些值将按预期由“makemessages”检测到。
文件 "/myapp/templates/message_catalog.js"
{% load i18n %}
MESSAGE_HELLO = "{% trans 'hello' %}";
MESSAGE_GOODBYE = "{% trans 'goodbye' %}";
...
然后,记住将它包含在主模板中,这样消息目录就会
可以从js代码访问:
文件“/myapp/templates/base.html”
...
<script>
{% include 'message_catalog.js' %}
</script>
</body>
</html>
“真实”的 js 代码可以像往常一样存在于静态中,并且仍然可以访问已翻译的消息:
文件“/myapp/static/frontend.js”
function hello() {
alert(MESSAGE_HELLO);
}
function goodbye() {
alert(MESSAGE_GOODBYE);
}