Django 1.11.3:有没有人使用过JavaScriptCatalog?

时间:2017-07-14 16:21:11

标签: django

有用吗?我根据documentation

settings.py

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

LANGUAGES = [
    ('en', _('English')),
    ('ru', _('Russian')),
]
LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),
)

urls.py

urlpatterns += i18n_patterns(
    url(r'^jsi18n/$', JavaScriptCatalog.as_view(), name='javascript-catalog'),
)

django-admin makemessages -l ru

我已将翻译添加到语言环境\ ru \ LC_MESSAGES \ django.po

django-admin makemessages -d djangojs -l ru
django-admin compilemessages

但是来自http://127.0.0.1:8000/ru/jsi18n/的回复不包含来自语言环境的转换\ ru \ LC_MESSAGES \ django.po

我做错了吗?或者它是JavaScriptCatalog中的错误?

1 个答案:

答案 0 :(得分:0)

来自https://docs.djangoproject.com/en/1.11/ref/django-admin/#makemessages

--domain DOMAIN, -d DOMAIN .  
Specifies the domain of the messages files.    
Supported options are:   
django for all *.py, *.html and *.txt files (default) .  
djangojs for *.js files

当您为JavaScript生成PO文件时,您将运行以下内容:
django-admin makemessages -l ru -d djangojs

会为 JavaScript djangojs.po )生成翻译存根,它将在JavaScript代码中搜索gettext和其他相关函数以获取“ msgid”)。使用“ compilemessages”进行编译后,您将获得 djangojs.mo 文件。

服务于:

urlpatterns = [
    url(r'^jsi18n/$', JavaScriptCatalog.as_view(), name='javascript-catalog'),
]

将成功转换 gettext 调用,因为默认域为“ djangojs”。如果您通过domain=django,则将加载django.mo文件中的翻译,但这可能不是使用它的预期方式。