Django JavaScript翻译不起作用

时间:2013-10-27 23:47:43

标签: python django translation gettext

我试过follow the guide,但还不够清楚。

  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
    
  3. root_folder/locale/fr/LC_MESSAGES现在包含django.po&amp;我的一个js文件中的djangojs.poalert(gettext('this is to be translated'));已在djangojs.po中被选中。

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

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

      <script type="text/javascript" src="{% url 'django.views.i18n.javascript_catalog' 'locale' %}" >< /script >
      
    3. 请注意,我添加了“locale”以避免在动态加载翻译时未传递包名称的异常。

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

        /* gettext library */
        
        var catalog = new Array();
        
        function pluralidx(count) { return (count == 1) ? 0 : 1; }
        
        
        function gettext(msgid) {
        ....
        
      2. 为什么'这个要被翻译'没有显示,在哪个基础上它会显示一个特定的语言而不用URL传递它?

2 个答案:

答案 0 :(得分:11)

我不知道如何解决你的问题,但我可以告诉你,事情对我有用:

locale文件夹位于我的tickets应用内。

urls.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

希望你能从中汲取一些东西。

答案 1 :(得分:4)

对于具有我特定情况的其他人,当您使用i18n语言网址时,js消息会生成并编译好,但不会在模板或页面中呈现。

这是因为javascript目录应该添加到i18n urls模式中,而不是正常模式。

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

=&GT;

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