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 上测试的结果)

  1. 从 Launchpad 下载

  2. 从 bzr 分支找到模板文件

    1. 记得 不一定会包含所有字串,因为 是不定期更新的。

    2. msgmerge -o <新 po 文件>

  1. 采用 poedit, kbabel (KDE) 翻译 <新 po 文件>

    1. 有些程序 (例如 kbabel) 可以用字典进行大略的翻译。
  1. 3. 有一个特别有用的做法,就是从现有的翻译中创建一个完整的字典,以便能重复使用与应用程序相关的现有词汇。
  2. 1. OpenERP 里载入全部或是大部分的模块
  3. 2. 载入你的语言
  4. 3. 将你的语言的全部模块输出成 po 文件,然后把这个文件当成是字典。依据模块内容的不同,这个做法可以产生准确度 30-80% 的翻译。
  1. <新 po 文件> 一定不可以有 kbabel 大略翻译产生的 <模糊> 叙述

    1. grep -v fuzzy <新 po 文件> >
  1. 检查拼字是否正确

    1. msgfmt -o
  1. 检查翻译的连贯性

    1. 导入 (模块的)

    2. 安装 ,然后重启应用程序

  1. 调整 OpenERP 里的线上翻译

    1. 检查连贯性

    2. 检查字串的长度

    3. 输出

  1. 上传到 Launchpad

    1. 记住 Launchpad / Rosetta 会抓取某些 (不确定是哪些) 藏在输出文件 标头段落的标签,来判别导入的 是否有效。

    2. 一段时间 (几小时) 后, 你会收到一封 E-Mail , 确认结果是成功还是有错误。

采用上下文词典进行翻译

上下文词典在以下段落有详细说明 “物件 - 方法 - 上下文词典”. 如果使用管理菜单安装新增加语言,上下文词典里会新增加一个主要 : 语言 。例如,如果安装了法语,而且设置为当前使用者的语言,使用者的上下文词典里会新增加一个主要语言,而且这个主要语言会被连结到 fr_FR 这个值上。