Odoo支持多语言, 可以先对 PO 文件进行翻译, 然后再导入到 Odoo ; 也可以 进入翻译界面在线翻译.
让应用支持多语言
要让Odoo应用支持多语言, 必须在开发odoo应用的时候, 增加多语言支持特性, 通常会使用以下几种机制
模型字段定义为可翻译
在定义 Odoo 模型的时候, 给需要支持多语言的字段 加上 translate = True, 例如
界面显示自动被多语言机制处理
任何定义在界面元素里面的display string 都被会当作 英语处理, 会被Odoo的多语言支持机制所处理.
例如, 动作 /菜单 的显示名称 会被多语言机制处理
<record model="ir.actions.act_window" id="action_registration">
<field name="name">Attendees</field>
<field name="res_model">event.registration</field>
<field name="view_type">form</field>
<field name="domain"></field>
<field name="view_mode">tree,form,calendar,pivot,graph</field>
<field name="context">{}</field>
<field name="search_view_id" ref="view_registration_search"/>
</record>
<menuitem name="Attendees"
id="menu_action_registration" parent="event.event_main_menu"
action="action_registration" groups="base.group_no_one"/>
提示信息
Odoo后台提示信息, 在写Odoo后台python代码的时候, 调用 _() 方法进行翻译, 例如
python代码
from odoo import models, fields, api, _
return {
'warning':
{
'title':
'Wrong Value!',
'message':
_(
"Net Price Total Can not be less than or equals 0 !"
)
}
}
odoo客户端提示信息, 在写Odoo客户端JavaScript代码的时候, 调用 _t( ) 方法进行翻译, 例如
JavaScript代码
var core = require('web.core');
var _t = core._t;
var messages_by_seconds = function() {
return [
[0, _t("Loading...")],
[20, _t("Still loading...")],
[60, _t("Still loading...<br />Please be patient.")],
[120, _t("Don't leave yet,<br />it's still loading...")],
[300, _t("You may not believe it,<br />but the application is actually loading...")],
[420, _t("Take a minute to get a coffee,<br />because it's loading...")],
[3600, _t("Maybe you should consider reloading the application by pressing F5...")]
];
};
对需要翻译为其他语言的内容, 用 翻译机制进行预处理后, Odoo框架 自动会对此内容 进行多语言处理.
- 根据用户选择的语言显示客户端界面
- 根据访客的语言显示网站
- 根据需要设置打印报告的语言
翻译
即时修改翻译
进入开发者模式后, tanslate = True 的字段 将能够在 界面进行 翻译, 例如
点击文本框右上角的 🌍 图标, 将被带入到 翻译界面
选择需要翻译语言对应的内容, 点击进入编辑模式, 修改 " 翻译值 " 字段的内容
集中式后台翻译
登陆Odoo, 进入 开发者模式, 进入 设置 > 翻译 > 应用程序术语 > 已翻译术语
在 搜索框, 查找 需要 翻译的内容, 查找的字段 可以是
- 源术语 -- 默认是英文的内容, 例如 "BOM"
- 翻译值 -- 对应的外部语言, 例如 中文的 "物料清单"
- 模型 -- 定义的需要翻译内容的数据模型
输入要搜索的内容后, 将会列出全部包含搜索内容的 源文
选择编辑 需要翻译的条目, 进行编辑 , 例如
修改后, 保存, 重新刷新 网页客户端, 即可看到效果
批量翻译
生成pot 文件
登陆Odoo, 进入 开发者模式, 进入 设置 > 翻译 > 导入/导出 > 导出翻译
语言, 选择" 新语言(空翻译模板)"
文件格式, 选择 "PO文件"
选择要导出的应用, 一般选择 新开发的模块
点击导出按钮, 将弹出 POT文件 下载 连接
下载得到 POT 文件
翻译
用 POEDIT打开 POT文件
点击"创建新的翻译" 建立新翻译
选择目标语言 语言代码, 例如 简体中文, 选择 " zh_CN"
选择了目标语言后, 进入翻译窗口
选择要翻译的条目, 在翻译框输入"译文"
翻译完成之后, 保存翻译成果, POEDIT 将生成 对应语言代码开头的 po 文件, 例如 zh_CN.po
导入翻译成果 po文件
登陆Odoo, 进入 开发者模式, 进入 设置 > 翻译 > 导入/导出 > 导入翻译
语言名称, 输入 中文 或者 chinese 都可以, 仅仅用来标识
代码, 输入PO 文件对应的 语言代码, 例如 简体中文 zh_CN
文件, 上传制作好的PO 文件
通常 需要勾选"覆盖现有术语"
或者分发翻译成果
如果要让多语言支持能部署到多个Odoo实例, 必须将 PO文件与 odoo应用一起发布, 只需在 Odoo应用模块 建立 i18n 目录, 将 对应语言代码的 PO文件 放入即可, 例如
Event 应用 源码 i18n 目录下 存放 多语言文件