第十章 设置

技术设置内包含多诸多与odoo运行相关的设置,是整个系统运行中的中控室。在这里,我们可以配置动作、视图、数据模型、系统参数等等。在对系统设置不熟的情况下,不要乱修改这里的设置。

这里简单介绍几个常用的设置:

系统参数

长时间使用odoo系统的用户可能会发现,odoo中的系统参数大都没有放置在系统设置里,系统设置中的参数大多是一些勾选和下拉菜单组成的配置。对于一些需要输入的参数,odoo将其放置在了ir.config_parameter对象中。(系统设置-技术-系统参数)

打开页面,你可以看到如下界面:

你可以从中看出一些端倪,像数据库创建时间、企业版激活码等关键机密信息都放置到了这里。

读取ir.config_parameter

因为参数如此重要,odoo也写了一个专门的方法(get_param)来读取这些参数设置。

self.env['ir.config_parameter'].get_param("database.secret")

一般放到这里的参数都是不会经常改变的,如果非要修改这些参数,odoo也同样提供了写的方法:

self.env['ir.config_parameter'].set_param(key,value)

小数精度控制

刚接触odoo的用户,肯定会碰到某些数据长度过长,或者想要修改小数据精度却不知道该在哪里修改的情况。小数精度的控制在系统设置-数据库结构-小数精度,通常有几个系统已经设置的分类和精度,如下图:

我们如何使用这个预置的小数精度呢?下面举例来说,我们先创建一个字段:

from odoo.addons import decimal_precision as dp

cost = fields.Float("六个月均价", compute="_get_cost",
                        digits=dp.get_precision('Product Price'))

cost是某个对象的一个Float字段,表示六个月内的平均价。我们希望这个字段的值可以跟系统设置中的Product Price精度保持一致就可以这么做。

国际化

odoo本身支持多语言, 用户只需要在系统设置中激活相应的语言包, 重新登录(刷新)系统即可切换到相应的语言环境.

po文件是什么

PO文件是由msginit程序从.POT模板文件生成的各种语言版本的待翻译文件,其中包含原始语言和被翻译的目标语言,以纯文本格式保存,由翻译人员来将其中的文字翻译成本国语言。

gettext是GNU国际化与本地化(i18n)函数库,它常被用于编写多语言程序。gettext工具集包含xgettext、msginit、msgfmt等一套建立POT模版、创建PO文件和编译MO文件的工具。

PO是Portable Object(可移植对象)的缩写。它是面向翻译人员的、提取于源代码的一种资源文件。

用msginit程序来分析POT文件,生成各语言对应的PO文件,不同的语言对应不同的文件名,例如中文就是zh_CN.po,法语就是fr.po文件。

用msgfmt程序将PO文件编译成.MO文件,这是一个二进制文件,最终提供给软件实际使用的文件。很多桌面应用程序都是是依靠PO文件或MO文件来实现多语言版本。

同样的, odoo也使用po文件,然后编译成mo文件以供系统翻译使用.

odoo中的多语言文件

odoo中所有的模块相应的翻译文件都在模块的i18n文件夹内. 根据不同的语言缩写命名的文件列表, 例如简体中文的语言包即为zh_CN.po.

修改系统中的翻译

由于odoo诞生于欧洲大陆, 其开发和运营人员并不精通各国语言, 因此这项翻译工作就到了各国的社区,由社区人员进行翻译.但是由于社区人员水平的不一, 以及po文件抽离出来的原文脱离了其使用的上下文环境, 导致最终由翻译人员翻译出来的语言常常包含各种各样匪夷所思的名词. 例如, state在国家地址中的意思应为省份, 但翻译却翻译成了"状态", 这明显就是由于脱离了上下文导致的笑话.

因此, 系统在落地的过程中比可避免的需要对原生的这些bug式的翻译进行校正, 所幸的是,odoo中对翻译进行修改也不是什么特别需要技术含量的事情.

用户在打开开发者模式的前提下, 到系统-翻译-已翻译的术语中对系统中的翻译进行校正.

odoo的翻译是被用户诟病的最大问题之一, 笔者这里建议用户在碰到不理解的翻译问题时切换到英文原文去理解. 由于社区翻译的水平问题, 有兴趣的同学可以到这个网站对官方的翻译文件共享自己的力量.

关于翻译文件的更多内容, 在第二部分会有更详细的介绍.

results matching ""

    No results matching ""