8

我试图按照指南进行操作,但还不够清楚。

  1. 我将此添加到我的 urls.py

    urlpatterns = patterns('',
        (r'^jsi18n/(?P<packages>\S+?)/$', 'django.views.i18n.javascript_catalog'),
    )
    
  2. 使用以下命令生成 lang 文件:

    django-admin.py makemessages -d djangojs -l fr
    

root_folder/locale/fr/LC_MESSAGES现在包含django.po&djangojs.po并且alert(gettext('this is to be translated'));在我的一个 js 文件中被拾取到djangojs.po.

  1. 我运行django-admin.py compilemessages并重新启动了服务器。

  2. 将此添加到我的 base.html:

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

请注意,我添加了“语言环境”以避免在动态加载翻译时不传递包名的异常。

  1. 从我的浏览器访问/jsi18n/locale/,我得到的只是 Django 翻译功能:

    /* gettext library */
    
    var catalog = new Array();
    
    function pluralidx(count) { return (count == 1) ? 0 : 1; }
    
    
    function gettext(msgid) {
    ....
    

为什么“这将被翻译”没有显示,在什么基础上它将显示特定语言而不将其与 URL 一起传递?

4

2 回答 2

13

我不知道如何解决你的问题,但我可以告诉你,事情对我来说是如何工作的:

locale文件夹在我的tickets应用程序中。

网址.py

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

urlpatterns = patterns('',
    (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict),
    ...

base.html

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

并创建消息文件:

python -m django-admin makemessages -d djangojs -l fr
python -m django-admin compilemessages

希望你能从中有所收获。

于 2013-10-28T09:15:53.820 回答
6

For others with my particular case, js messages are generated and compiled OK but not rendered in templates or pages when you use i18n language urls.

This is because javascript catalog should be added to i18n urls patterns, not to normal patterns.

urlpatterns += patterns('', (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict), )

=>

urlpatterns += i18n_patterns('', (r'^jsi18n/$', 'django.views.i18n.javascript_catalog', js_info_dict), )
于 2014-11-26T11:07:06.300 回答