Django предлагает специальное решение для этого:
https://docs.djangoproject.com/en/2.2/topics/i18n/translation/#module-django.views.i18n
, но когда количество сообщений, используемых в js-коде и нуждающихся в переводе, ограничено, как это обычно бывает, я предпочитаюиспользуйте гораздо более простое решение.
Сначала я создаю «каталог сообщений js» в папке «templates»;он просто содержит список глобальных строковых литералов.
Поскольку механизм шаблонов не ограничен HTML и может обрабатывать файлы любого типа, вы можете {% загрузить i18n%} в начале файла js,и использовать «trans» и другие теги шаблона, как требуется, для маркировки значений переводимых строк;эти значения будут обнаружены "makemessages", как и ожидалось.
file "/ myapp / templates / message_catalog.js"
{% load i18n %}
MESSAGE_HELLO = "{% trans 'hello' %}";
MESSAGE_GOODBYE = "{% trans 'goodbye' %}";
...
Затем просто не забудьте включитьэто в основном шаблоне, поэтому каталог сообщений будет доступен из js кода:
file "/ myapp / templates / base.html"
...
<script>
{% include 'message_catalog.js' %}
</script>
</body>
</html>
'Настоящий' код js может жить в обычном статическом режиме и по-прежнему иметь доступ к переведенным сообщениям:
file "/ myapp / static / frontend.js"
function hello() {
alert(MESSAGE_HELLO);
}
function goodbye() {
alert(MESSAGE_GOODBYE);
}