Строки из локали по умолчанию отсутствуют в каталоге Django JavaScript
Проблема
Проблема, с которой я сталкиваюсь, заключается в том, что каталог JavaScript не включает резервные строки в определенных сценариях. Другими словами: когда строка "A" не переведена в es_MX
, но переведена в es
, каталог JavaScript содержит стандартную или непереведенную строку "A".
Я создал приложение, которое демонстрирует эту проблему: https://github.com/cmermingas/i18n_test
Настройка
LOCALE_PATHS
установлен наPROJECT_ROOT/locale
.Переводы для всех приложений хранятся под
LOCALE_PATHS
.JavaScriptCatalog
, сконфигурированные без пакетов:
path('jsi18n/', JavaScriptCatalog.as_view(), name='javascript-catalog')
es_MX
иes
переводы, демонстрирующие проблему:- Строка
"es - Not translated"
переводится вes
локали. - Строка
"es_MX - Not translated"
переведена вes_MX
локаль.
- Строка
Workaround
Это работает, если я передаю packages
в JavaScriptCatalog
:
path(
'jsi18n/',
JavaScriptCatalog.as_view(packages=["testapp"]),
name='javascript-catalog'
)
Но ведь это не обязательно?
Я попробовал этот ответ , в котором предлагается добавить domain="django"
, но у меня ничего не получилось.
Что я делаю не так или это проблема?
Это было идентифицировано как ошибка в выпуске #33863 и было представлено исправление. Решением будет обновление Django после выхода этого исправления.
В качестве обходного пути я предлагаю то, что я отметил в вопросе (передать packages
в JavaScriptCatalog
):
path(
'jsi18n/',
JavaScriptCatalog.as_view(packages=["<your-app-here>"]),
name='javascript-catalog'
)