Как перевести файлы .js в Django и Wagtail - PullRequest
0 голосов
/ 30 октября 2018

Я использую Wagtail и Django и пытаюсь перевести контент в html шаблоны и js файлы.

Содержимое в шаблонах html правильно добавляется в файлы .po, но строки из файлов js вообще не добавляются.

Структура моего проекта следующая:

enter image description here

Файл urls.py внутри папки webDealers выглядит следующим образом:

urlpatterns = [
    url(r'^django-admin/', admin.site.urls),

    url(r'^admin/', include(wagtailadmin_urls)),
    url(r'^documents/', include(wagtaildocs_urls)),

    url(r'^search/$', search_views.search, name='search'),
    url(r'^api/', include('API.urls')),

    url(r'^i18n/', include('django.conf.urls.i18n'), name='set_language'),
    url(r'^jsi18n/$', JavaScriptCatalog.as_view(), name='javascript-catalog'),

    url(r'', include(wagtail_urls)),
]

settings.py выглядит следующим образом:

PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
BASE_DIR = os.path.dirname(PROJECT_DIR)

LANGUAGE_CODE = 'en'    
TIME_ZONE = 'UTC'    
USE_I18N = True    
USE_L10N = True    
USE_TZ = True

LANGUAGES = [('en', 'English'), ('fr', 'French'), ('nl', 'Dutch')]

LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),
)

Все .js файлы находятся в статической папке внутри папки webDealers.

Я добавил <script src="{% url 'javascript-catalog' %}"></script> в тег <head> и добавил gettext("String to translate") в файл .js, куда нужно перевести строку.

Но когда я запускаю django-admin makemessages -l en внутри папки locale, я получаю только переводы из html-файлов, а не из js-файлов.

И я использую Django == 2.1.2

Какой совет, как переводить строки в js-файлы?

UPDATE

Когда я бегу

django-admin makemessages -d django -l nl

получает все строки из html-файлов и помещает их в папку локали в папке root (root/locale).

Но когда я делаю

django-admin makemessages -d djangojs -l nl

получает все строки .js и помещает их в папку локали в root/webDealers/locale.

Я хочу, чтобы все переводы были в одном месте

1 Ответ

0 голосов
/ 30 октября 2018

При вызове makemessages необходимо передать --domain js или --extension js, чтобы получить переводимые строки в файлах .js. Смотрите документацию по Django:

https://docs.djangoproject.com/en/2.1/ref/django-admin/#django-admin-makemessages https://docs.djangoproject.com/en/2.1/topics/i18n/translation/#message-files

...