Django i18n не может перехватить строки в функциях рендеринга JS
Я использую i18n для перевода проекта Django на разные языки. Все прекрасно переводится в зависимости от локали, за исключением некоторых строк в функциях рендеринга JavaScript. Например, если я запускаю django-admin makemessages --all
и django-admin makemessages -d djangojs --all
, то "Launch this app" и "App under review" из HTML-шаблона не появляются ни в одном из django.po
или djangojs.po
файлов, несмотря на то, что они помечены gettext()
:
<script>
const renderStatus = () => {
let launchApp = gettext("Launch this app");
document.getElementById("component-appLauncher").innerHTML = `
<span class="u-flex-grow-1" style="vertical-align: middle;">` + launchApp + `</span>
<a href="#launch_this_app-modal">
<button style="btn--sm">
<i class="u-center fa-wrapper fa fa-solid fa-arrow-right-long"></i>
</button>
</a>
`;
let appReview = gettext("App under review");
document.getElementById("component-appStatus").style.color = "red";
document.getElementById("component-appStatus").innerHTML = appReview;
}
</script>
Иногда (хотя и не постоянно, и я не могу воспроизвести это по своему усмотрению) в одном или другом .po файле появляются такие строки (пример из испанского перевода), без ссылок на исходный файл HTML-шаблона или номеров строк:
#~ msgid "Launch this app"
#~ msgstr "Lanzar esta app"
#~ msgid "App under review"
#~ msgstr "App en estudio"
Похоже, это связано с кэшем, потому что после частого обновления вкладок перевод внезапно появляется (даже если отображение отсутствует в файлах .po), но я не могу обнаружить последовательной закономерности во всем этом.
Является ли это ошибкой в i18n? Если нет, есть ли идеи, что может быть причиной этого?