Translations
OpenERP 是多语言的。你想要加进多少种语言都没问题。每个用户都可以用他自己的语言作为工作界面,而且某些资源 (报表的内容,产品名称等等) 也可以翻译成想要的语言。
这一段说明了如何改变每个用户看到的语言,以及如何在 OpenERP 里新增语言。
几乎所有在使用界面里用到的标签都有储存在服务器上,同样的,标签的翻译也都有储存在服务器上。服务器的预设值是把英文的字典储存在服务器上,所以如果用户想要尝试除了英文以外的语言,这些语言的定义(字典)必须要储存在服务器上。
然而,要把 “所有的东西” 存在服务器上是不可能的。实际上,在连上服务器 之前 ,一定会有一些文字显示在某些菜单,按键等等使用者界面上,这些为数不多的文字和句子是使用 GETTEXT 来翻译的;系统预设会依照用户(连上服务器的)电脑的语言来翻译以上的文字和句子。
OpenERP 的翻译系统不限于使用界面的文字;它对报表及某些数据库里的字段 “内容” 同样有效。显然并非所有的数据库字段都需要翻译,所以如果字段内容需要是多语言的,这个字段会有一个旗标图标作为标示。
如何变更用户使用界面的语言?
用户可以设定偏好的语言。当前用户要改变语言设定,在菜单上按:用户 > 偏好选项。
系统管理员也可以在菜单里修改用户的偏好语言(包含用户的使用界面语言):系统管理 > 用户群 > 用户群。系统管理员只需要选择一个用户,然后切换 “偏好选项” ,就可以完成偏好语言的修改。
在服务器上储存翻译文件
用以下的指令上传包含翻译内容的文件 :
./openerp_server.py —i18n-import=file.csv -l LANG
这里的 LANG 是以 CVS 格式保存的文件,存有这个语言的翻译资料。
注意,翻译的文件内容必须使用 UTF8 编码!
翻译成新的语言
Please keep in mind to use the same translation string for identical sources . Launchpad Online Translation may give helpful hints.
在以下这个网站上可以找到更多关于翻译加速器的资讯: http://translate.sourceforge.net/wiki/guide/translation/accelerators
想要翻译成某种语言,或是想要修改某个语言的翻译内容,必须依照以下步奏:
1. Export all the sentences to translate in a CSV file
使用以下指令输出这个文件:
./openerp_server.py —i18n-export=file.csv -l**LANG**
这里的 LANG 是你想翻译的标的语言。
2. Translate the last column of the file
你可以制作某个语言的翻译文件,不论这个语言是已经被翻译过的还是一个新的语言。如果你处理的是一个已经翻译过的语言,以前翻译好的词句应该要写在最后一列。
例如,以下是某个翻译文件(荷兰语)的前几行:
type | name | res_id | src | value |
field | “account.account,code” | 0 | 类型CODE | 类型CODE |
field | “account.account,name” | 0 | 名称 | 名称 |
model | “account.account,name” | 2 | Assets | Aktiva |
model | “account.account,name” | 25 | Results | Salden |
model | “account.account,name” | 61 | Liabilities | Verbindlichkeiten |
3. Import this file into OpenERP (as explained in the preceding section)
注释
- 你应该要在一个空的数据库里进行这些工作,以免覆盖到其他资料。
用以下的指令创建一个新的数据库 (名为 ‘terp_test’):
createdb terp_test —encoding=unicode terp_server.py —database=terp_test —init=all
或者,你也可以用以下的指令删除你当前的数据库 :
dropdb terp createdb terp —encoding=unicode terp_server.py —init=all
4. Using Launchpad / Rosetta to translate modules and applications
以下的链接是一个很好的开始 https://launchpad.net/openobject
线上翻译
选择模块翻译的段落,输入你的翻译。
离线翻译
如果你想一次性翻译100个名词,就采用离线翻译的方式。
要成功的完成翻译的一个周期,必须严格遵守以下的步奏。 (在 Linux 上测试的结果)
从 Launchpad 下载
。 从 bzr 分支找到模板文件
记得
不一定会包含所有字串,因为 是不定期更新的。 msgmerge
-o <新 po 文件>
采用 poedit, kbabel (KDE) 翻译 <新 po 文件>
- 有些程序 (例如 kbabel) 可以用字典进行大略的翻译。
3. 有一个特别有用的做法,就是从现有的翻译中创建一个完整的字典,以便能重复使用与应用程序相关的现有词汇。
1. 在 OpenERP 里载入全部或是大部分的模块
2. 载入你的语言
3. 将你的语言的全部模块输出成 po 文件,然后把这个文件当成是字典。依据模块内容的不同,这个做法可以产生准确度 30-80% 的翻译。
<新 po 文件> 一定不可以有 kbabel 大略翻译产生的 <模糊> 叙述
- grep -v fuzzy <新 po 文件> >
检查拼字是否正确
- msgfmt
-o
检查翻译的连贯性
导入 (模块的)
安装
,然后重启应用程序
调整 OpenERP 里的线上翻译
检查连贯性
检查字串的长度
输出
把
上传到 Launchpad
记住 Launchpad / Rosetta 会抓取某些 (不确定是哪些) 藏在输出文件
标头段落的标签,来判别导入的 是否有效。 一段时间 (几小时) 后, 你会收到一封 E-Mail , 确认结果是成功还是有错误。
采用上下文词典进行翻译
上下文词典在以下段落有详细说明 “物件 - 方法 - 上下文词典”. 如果使用管理菜单安装新增加语言,上下文词典里会新增加一个主要 : 语言 。例如,如果安装了法语,而且设置为当前使用者的语言,使用者的上下文词典里会新增加一个主要语言,而且这个主要语言会被连结到 fr_FR 这个值上。