2013-10-27 89 views
7

我試圖follow the guide但它不夠清楚。Django JavaScript翻譯不起作用

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

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

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

root_folder/locale/fr/LC_MESSAGES現在包含在django.po & djangojs.poalert(gettext('this is to be translated'));我的一個js文件wa在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傳遞特定語言?

回答

10

我不知道如何解決你的問題,但我可以告訴你,事情是如何爲我工作:

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 

希望你可以從這個撿東西。

4

對於其他我的具體情況,js消息生成並編譯成功,但在使用i18n語言url時不會在模板或頁面中呈現。

這是因爲javascript目錄應該添加到i18n url模式,而不是正常模式。

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),) 
+0

謝謝事實上,我花了很多時間在這。我打開了一個相關的[ticket](https://code.djangoproject.com/ticket/25751)來糾正在我眼中不起作用的文檔。 – raratiru

+0

對於任何人在這方面磕磕絆絆:從我理解的閱讀上述票https://code.djangoproject.com/ticket/25751中的評論,這似乎只發生在你的_root_ url正在使用'i18n_patterns'時(有人可以確認 - 或體弱 - 這?) –