5

我阅读并按照此处的说明进行操作,但似乎看不到 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 中使用。

那么我还有什么需要做的吗?

然后我所做的就是在 fromcb/cb和 from下运行下面的行cb/cb_app

django-admin.py makemessages -l en_GB

但仍然没有任何迹象表明“没有结果匹配cb/cb/localecb/cb_app/locale

有小费吗?

4

1 回答 1

4

我终于找到了问题所在。

文档建议从 Django 项目和 Django 应用程序创建一次消息。这样你最终有两个locale目录。无论如何,这些都不会提取 javascript 翻译。这真是一团糟。

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

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

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

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

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

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

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

就是这样。

于 2012-09-11T21:53:17.937 回答