Django中静态JS的国际化

时间:2015-07-09 20:17:53

标签: django static internationalization django-templates

我想在Django中翻译JS的一部分。

我已尝试使用python manage.py makemessages -d djangojs命令,但只需TEMPLATE_DIRS

settings.py的文件

我尝试在模板目录中设置JS,它完美地运行。

我有djangojs.po,我可以在编译时生成.mo。

所以问题是:如何在静态文件中制作消息?

我发现了同样的问题 HereHere但没有人回答谁保持良好的架构。

请救救我!

我的架构:

  • MyApp的
    • locale
    • 静态
      • MyApp的
        • JS
          • try.js
    • 模板
      • MyApp的
        • try.html
    • views.py
    • urls.py
    • [...]

PS:对不起我的英语,我不是本地人;)

1 个答案:

答案 0 :(得分:2)

我的错误是我在settings.py中设置STATIC_ROOT。事实上,这个变量在Django上说当它在服务器上运行CollectStatic时库存静态,我用她说发现我的静态(Django可以找到所有静态whitout信息,它在项目文件夹上的静态文件夹上找到静态或者app文件夹)

最后:

在专业

的urls.py中设置此项
js_info_dict = {
    'domain': 'djangojs',
    'packages': ('app.kanboard',),
}

urlpatterns = patterns('',

    [...]

    #Internationalization Javascript
    url(r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),

)

在模板中

<script type="text/javascript" src="{% url 'django.views.i18n.javascript_catalog' %}"></script>

在静态/ my_app / my_file.js中的JS

document.write(gettext('Ma chaine de caractère a traduire'))

之后,我们统治此命令行

python manage.py makemessages -d djangojs

此处, djangojs 是在开头的urls.py中设置的域名(它是一个伪约定)

目前,我们在文件夹区域设置中有一个 djangojs.po ,我们可以将其编译为标准 .po

文档的链接:Here

Lik of my ticket,你可以找到一个示例项目并用英语解释:The ticket

祝你好运!