2012-09-10 82 views
5

我閱讀並遵循here中的說明,但似乎無法在po文件中看到JavaScript中的字符串。Django支持JavaScript文件中的翻譯

structure of my project is: 
cb/  
    cb_app  
    cb  
    static_files  
    templates 

首先我複製到這些我url.py:

js_info_dict = { 
    'packages': ('cb_app',), 
} 

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

然後我說這個劇本給我的html:

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

實際的腳本,我想獲得的翻譯,就這麼簡單:

$(document).ready(function() { 
    $('#id_sales_item').chosen({no_results_text: gettext('No results match')}); 
}); 

...並用於相同的html。

那麼還有什麼我需要做的嗎?

我所做的只是從cb/cbcb/cb_app以下運行。

django-admin.py makemessages -l en_GB 

但仍處於要麼cb/cb/locale也不cb/cb_app/locale

任何提示,沒有「沒有結果匹配」的標誌?

回答

4

我終於找到了問題。

文檔建議一次從Django項目創建消息,一次從Django應用創建消息。這樣你最終得到兩個locale目錄。無論如何,這些都不會被JavaScript翻譯。這真是一團糟。

我已經找到了乾淨的解決方案是去settings.py並插入這條線(另見我的項目上面的層次):

LOCALE_PATHS = ('/home/kave/projects/cb/locale',) 

然後創建一個名爲在項目根目錄locale目錄(見上面的路徑)

不要忘記將條目同時應用到url.pyhtml(請參閱上文)。

最後是現在的地方的都統一到一個地方,去到項目的根目錄:/home/kave/projects/cb和運行這兩個命令:從兩個項目和應用程序的子文件夾

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

第一個命令得到翻譯文本。 第二個將javascript轉換成第二個po文件。

就是這樣。

+1

你是我的救星!,很遺憾,我沒有在django文檔中找到它:( –