如何汉化 OpenERP 6.1 日历视图
OpenERP 6.1 出来有个把月的时间了,感谢 OpenERP 中文社区的努力,目前 OpenERP 的各个模块中基本上没有了英文。
但是 OpenERP 6.1 的日历视图是一个 DHTMLX 公司出品的前端 Javascript 控件,跟后端的 Python 业务模块的翻译机制完全不同,所以到目前为止,在任何语言设置的 OpenERP 中都仍然保持着英文。虽然只是简单的 “Monday”和“April”之类的单词,但还是对整个 OpenERP 系统在国内的实施造成了一定的阻碍。
为了解决这一难题,通过 grep 的帮助,我在 OpenERP 的 dhtmlscheduler 控件的目录中找到了 locale_cn.js 的中文消息文件。通过这个文件我们可以知道,dhtmlscheduler 控件是支持多国语言字符串的。根据使用 jQuery UI 库的经验,造成日历视图没有本地化的原因很可能是 OpenERP 没有在其 HTML 页面中引入 locale_cn.js。所以,现在的问题就变成了找到 OpenERP 生成 HTML 页面的模板,然后加入对 locale_cn.js 脚本的引用。
根据上面的思路,通过 grep 我发现 OpenERP 6.1 的 Web 模块并没有使用传统的模板中引入 js 和 CSS 的模式,而是通过 __openerp__.py 文件的配置指定该模块所用到的 CSS、JS 等。
到这了,解决我们的问题就很简单了,直接用编辑器打开 openerp/addons/web_calendar/__openerp__.py,在系统原有的 'static/src/js/calendar.js' 行上方插入:'static/lib/dhtmlxScheduler/sources/locale_cn.js'。整个 __openerp__.py 文件如下所示:
{ "name": "web calendar", "category": "Hidden", "description": """ OpenERP Web calendar view. """, "version": "2.0", "depends": ['web'], "js": [ 'static/lib/dhtmlxScheduler/codebase/dhtmlxscheduler_debug.js', 'static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_minical.js', 'static/lib/dhtmlxScheduler/sources/locale_cn.js', 'static/src/js/calendar.js', ], "css": [ 'static/lib/dhtmlxScheduler/codebase/ext/dhtmlxscheduler_ext.css', 'static/src/css/web_calendar.css' ], 'qweb' : [ "static/src/xml/*.xml", ], 'active': True }
翻译以后的日历视图界面:
需要注意的是修改了 __openerp__.py 后需要重新启动 OpenERP Server,还需要清空浏览器缓存,否则会遇到 Javascript 错误。
Have Fun!