【问题标题】:How to translate .js files in Django and Wagtail如何在 Django 和 Wagtail 中翻译 .js 文件
【发布时间】:2018-10-30 10:38:34
【问题描述】:

我正在使用 Wagtail 和 Django,我正在尝试翻译 html 模板和 js 文件中的内容。

html 模板中的内容已正确添加到.po 文件中,但根本没有添加来自 js 文件的字符串。

我的项目结构如下:

webDealers文件夹内的urls.py文件如下:

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")

但是当我在 locale 文件夹中运行 django-admin makemessages -l en 时,我只能从 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 的语言环境文件夹中。

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

【问题讨论】:

    标签: python django wagtail


    【解决方案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

    【讨论】:

    • 问题是当我运行django-admin makemessages -d django -l nl 时,它会从 html 文件中获取所有字符串并将它们放在根文件夹中的 locale 文件夹中,但是当我执行 django-admin makemessages -d djangojs -l nl 时,它会获取所有 .js 字符串并将它们放入在root/webDealers 的语言环境文件夹中。我想将所有翻译集中在一个地方
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多