Django支持Javascript文件中的翻译

时间:2012-09-10 14:32:08

标签: javascript django internationalization

我阅读并按照here中的说明操作,但似乎无法在po文件中看到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/localecb/cb_app/locale

中仍然没有“无结果匹配”的迹象

任何提示?

1 个答案:

答案 0 :(得分:4)

我终于找到了问题。

文档建议从Django项目创建一次消息,然后从Django app创建一次消息。这样你就得到了两个locale目录。而且无论如何都不会提到javascript翻译。这太乱了。

我找到的最干净的解决方案是转到settings.py并插入此行(另请参阅上面的项目层次结构):

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

然后在project-root-directory中创建一个名为locale的目录(参见上面的路径)

不要忘记将条目应用到url.pyhtml中(见上文)。

最后,现在将本地统一到一个地方,转到project-root-directory:/home/kave/projects/cb并运行这两个命令:

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

第一个命令从项目和app子文件夹中获取翻译文本。 第二个将javascript翻译成第二个po文件。

多数民众赞成。