Skip to main content
 首页 » 编程设计

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

2024年12月31日27xxx_UU

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

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

我的项目结构如下:

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 文件中的字符串有什么建议吗?

更新

当我运行时

django-admin makemessages -d django -l nl

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

但是当我这样做的时候

django-admin makemessages -d djangojs -l nl

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

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

请您参考如下方法:

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