Django makemessages不适用于JS文件

Edu*_*uca 5 django internationalization

我的设置

settings.py

INSTALLED_APPS = (
    ...
    'myprojectname',
    ...
)

STATIC_ROOT = '/var/www/a_valid_path/'

LOCALE_PATHS = (
    os.path.join(BASE_DIR, "locale"),
)
Run Code Online (Sandbox Code Playgroud)

urls.py

js_info_dict = {
    'domain': 'djangojs',
    'packages': ('myprojectname',),
}

urlpatterns = patterns('',
    ...
    url(r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),
    ...
)
Run Code Online (Sandbox Code Playgroud)

我的项目结构如下:

|- projectname
|--- app1
|--- app2
|--- manage.py
|- virtualenv
|- static
|--- js
|--- css
Run Code Online (Sandbox Code Playgroud)

我还有locale我项目的根文件夹中的文件夹,其manage.py位置.

我在做什么

只需运行:

./manage.py -l ro -d djangojs
Run Code Online (Sandbox Code Playgroud)

我的问题

它不起作用.没有.po生成任何文件.但是,服务器端转换工作(视图+模板).我遵循了所有的建议,但仍然没有.甚至试图自己创建djangojs.po文件,看看Django是否删除了它,或者用它做了什么 - 不行.

没有错误产生,只是processing locale ro显示(在很短的时间内 - 如果你问我那么短),就是这样.有帮助吗?

编辑:忘了提到我的包含JS文件的文件夹不在每个Django应用程序中,而是在一个单独的位置.不过,Django不应该看看里面STATICFILES_DIRS吗?

Reb*_*itz 1

Django 的 makemessages 只会从您的TEMPLATE_DIRS. 因此,您想要翻译的任何文件都需要位于这些目录之一中。

您可以通过以下几种方式来做到这一点:

  • TEMPLATE_DIRS将 *.js 文件按原样放入其中之一
  • 将 JS 内联到 html 文件中
  • 将所有需要翻译的字符串放在dom上的data-attributes中,并通过JS从dom中抓取它们