Django中静态JS的国际化

San*_*noc 5 django static django-templates internationalization

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

我已经尝试过该命令,python manage.py makemessages -d djangojs但它只TEMPLATE_DIRSsettings.py

我尝试在模板目录中设置一个 JS,它工作得很好。

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

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

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

求求你救救我!

我的架构:

  • 我的应用程序
    • 语言环境
    • 静止的
      • 我的应用程序
        • js
          • 尝试.js
    • 模板
      • 我的应用程序
        • 尝试.html
    • 视图.py
    • 网址.py
    • [...]

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

San*_*noc 4

我的错误是当我在 settings.py 中设置 STATIC_ROOT 时。事实上,这个变量在 Django 中表示当它在服务器上执行 CollectStatic 时,stock Static 的位置,我用她来表示在哪里找到了我的静态(Django 可以找到所有静态的无信息,它在项目文件夹或上的静态文件夹上找到静态)应用程序文件夹)

\n\n

最后 :

\n\n

在 pro 的 urls.py 中设置

\n\n
js_info_dict = {\n    \'domain\': \'djangojs\',\n    \'packages\': (\'app.kanboard\',),\n}\n\nurlpatterns = patterns(\'\',\n\n    [...]\n\n    #Internationalization Javascript\n    url(r\'^jsi18n/$\', \'django.views.i18n.javascript_catalog\', js_info_dict),\n\n)\n
Run Code Online (Sandbox Code Playgroud)\n\n

在模板中

\n\n
<script type="text/javascript" src="{% url \'django.views.i18n.javascript_catalog\' %}"></script>\n
Run Code Online (Sandbox Code Playgroud)\n\n

在 static/my_app/my_file.js 的 JS 中

\n\n
document.write(gettext(\'Ma chaine de caract\xc3\xa8re a traduire\'))\n
Run Code Online (Sandbox Code Playgroud)\n\n

之后,我们统治这个命令行

\n\n
python manage.py makemessages -d djangojs\n
Run Code Online (Sandbox Code Playgroud)\n\n

这里,djangojs是 urls.py 开头设置的域(这是一个伪约定)

\n\n

此时,我们在 locale 文件夹中有一个djangojs.po ,我们可以将其编译为标准.po

\n\n

文档链接:这里

\n\n

就像我的票一样,您可以在其中找到示例项目和英文说明:

\n\n

祝你好运 !

\n