Odoo的多语言

   

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框架 自动会对此内容 进行多语言处理.

  1. 根据用户选择的语言显示客户端界面
  2. 根据访客的语言显示网站
  3. 根据需要设置打印报告的语言

   

翻译

   

即时修改翻译

   

进入开发者模式后, tanslate = True 的字段 将能够在 界面进行 翻译, 例如

   

点击文本框右上角的 🌍 图标, 将被带入到 翻译界面

   

选择需要翻译语言对应的内容, 点击进入编辑模式, 修改 " 翻译值 " 字段的内容

   

   

集中式后台翻译

   

登陆Odoo, 进入 开发者模式, 进入 设置 > 翻译 > 应用程序术语 > 已翻译术语

   

搜索框, 查找 需要 翻译的内容, 查找的字段 可以是

  1. 源术语 -- 默认是英文的内容, 例如 "BOM"
  2. 翻译值 -- 对应的外部语言, 例如 中文的 "物料清单"
  3. 模型 -- 定义的需要翻译内容的数据模型

   

输入要搜索的内容后, 将会列出全部包含搜索内容的 源文

   

选择编辑 需要翻译的条目, 进行编辑 , 例如

   

修改后, 保存, 重新刷新 网页客户端, 即可看到效果

   

批量翻译

   

生成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 目录下 存放 多语言文件

   

   

jeffery 2024年4月23日
存档
odoo税金处理