Строки из локали по умолчанию отсутствуют в каталоге 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'
)
Вернуться на верх