如何在Django和Wagtail中翻译.js文件

时间:2018-10-30 10:38:35

标签: python django wagtail

我正在使用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>,并在.js文件中的gettext("String to translate")中添加了需要翻译字符串的地方。

但是当我在django-admin makemessages -l en文件夹中运行locale时,我只能从html文件而不是js文件获得翻译。

我正在使用 Django == 2.1.2

任何建议如何在js文件中转换字符串?

更新

我跑步时

django-admin makemessages -d django -l nl

它从html文件中获取所有字符串,并将它们放在 root 文件夹(root/locale)的locale文件夹中。

但是当我这样做

django-admin makemessages -d djangojs -l nl

它获取所有.js字符串并将它们放在root/webDealers/locale的locale文件夹中。

我想将所有翻译都放在一个地方

1 个答案:

答案 0 :(得分:1)

调用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