2012-09-10 46 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文档中找到它:( –