-------------------
更新时间:
15:52 2016-09-28 星期三 增加模型名翻译
17:26 2016-05-20 星期五
17:58 2016-05-17 星期二
12:14 2016-02-24 星期三
-------------------
* 翻译概述:
每个模块都可以提供自己的翻译文件,存放在i18n(其来源是英文单词 internationalization的首末字符i和n,
18为中间的字符数)目录下,文件名为LANG.po LANG为语言,如中文简体 zh_CN.po
│- stock #模块
│ │- i18n #翻译目录
│ │ │- stock.pot #翻译模板
│ │ │- zh_CN.po #中文简体
│ │ │- (..).po #其它语言翻译文件
* 翻译支持的类型
/openerp/addons/base/ir/ir_translation.py
('field', 'Field'), 字段
('model', 'Object'), 模型
('rml', 'RML (deprecated - use Report)'), # Pending deprecation - to be replaced by report! 以前的报表
('report', 'Report/Template'), 报表
('selection', 'Selection'), 选择项
('view', 'View'), 视图
('wizard_button', 'Wizard Button'), 向导按钮
('wizard_field', 'Wizard Field'), 向导字段
('wizard_view', 'Wizard View'), 向导视图
('xsl', 'XSL'), 表格
('help', 'Help'), 帮助
('code', 'Code'), 代码
('constraint', 'Constraint'), 自定义约束
('sql_constraint', 'SQL Constraint') sql约束
* /addons/web/i18n
这里要把 zh_CN.po 复制一份 命名为zh.po
这样这个目录下 有 zh_CN.po zh.po 这两个文件
主要解决了数据库管理界面不能翻译的bug
* 翻译方法
=================================代码类开始===================================
@python代码片段中的翻译
#. module: stock
#: code:addons/stock/stock.py:1677
#, python-format
msgid " (%s reserved)"
msgstr " (%s 被保留)"
------
addons/stock/stock.py
info += _(' (%s reserved)') % str(reserved_available)
-------
第一行 #. module: stock 格式为 #. module: 模块的目录名
第二行 #: code:addons/stock/stock.py:1677
格式为 #: code:python代码相对根目录的文件名:第几行(相差几行没关系)
注意一下code:addons... 一般第三方代码不会放在addons下
一般新建一个目录 addonscustom ,这时这里要相应的更改
第三行 #, python-format 是python代码,这个照写就可以
可以看到代码中可以翻译的字符,都用 _()引起来了
注:对应的python 要导出翻译模块:
from openerp.tools.translate import _
@ 弹出窗体提醒翻译
#. module: stock
#: code:addons/stock/stock.py:3922
#, python-format
msgid "Warning: wrong UoM!"
msgstr "警告!错误的计量单位!"
-----------
if selected_uom.category_id.id != product.uom_id.category_id.id:
res['warning'] = {
'title': _('Warning: wrong UoM!'),
'message': _('The selected UoM for product %s is not compatible with the UoM set
on the product form. \nPlease choose an UoM within the same UoM category.') % (product.name)
}
-----------
@js代码片段的翻译
#. module: web
#. openerp-web
#: code:addons/web/static/src/js/chrome.js:279
#, python-format
msgid "Ok"
msgstr "确定"
------
addons/web/static/js/chrome.js/chrome
{text: _t("Ok"), click: function() { this.parents('.modal').modal('hide'); }}
-------
第一行 #. module: web 格式为 #. module: 模块的目录名
第二行 #. openerp-web 这个固定的页面模块
第三行 #: code:addons/web/static/src/js/chrome.js:279
格式为 #: code:js代码相对根目录的文件名:第几行(相差几行没关系)
注意一下code:addons... 一般第三方代码不会放在addons下
一般新建一个目录 addonscustom ,这时这里要相应的更改
第四行 #, python-format 这个照写就可以
可以看到代码中可以翻译的字符,都用 _t()引起来了
@xml代码中的翻译,这里指 /static/下面的
#. module: web_graph
#. openerp-web
#: code:addons/web_graph/static/src/xml/web_graph.xml:23
#, python-format
msgid "Heat Map"
msgstr "热图"
----
addons/web_graph/static/src/xml/web_graph.xml:
<label class="btn btn-default" data-mode="both" title="Heat Map">
----
第一行 #. module: web_graph 格式为 #. module: 模块的目录名
第二行 #. openerp-web 这个固定的页面模块
第三行 #: code:addons/web_graph/static/src/xml/web_graph.xml:23
格式为 #: code:js代码相对根目录的文件名:第几行(相差几行没关系)
注意一下code:addons... 一般第三方代码不会放在addons下
一般新建一个目录 addonscustom ,这时这里要相应的更改
第四行 #, python-format 这个照写就可以
可以看到代码中可以翻译的字符,这里是title的值 ,也可以是<p>...</p>中的内容
=================================代码类结束===================================
=================================字段名类开始=================================
@字段翻译
#. module: stock
#: field:stock.warehouse,partner_id:0
msgid "Address"
msgstr "地址"
------
addons/stock/stock.py
class stock_warehouse(osv.osv):
_name = "stock.warehouse" #模型名
_description = "Warehouse"
_columns = {
...
'partner_id': fields.many2one('res.partner', 'Address'),
...
}
--------
stock_view.xml 对应的视图显示
<record
=================================模型记录类结束===============================
翻译表很容易出问题,特别在添加翻译时,会导致系统启动不来,
日志报错如下:
InternalError: current transaction is aborted, commands ignored until end of transaction block
这时,就要针对 ir_translate 这个表,重建索引就可以。
注:总是翻译无效时,可以搜索旁边的 翻译,从而参照 写翻译条
关键的标点符号要全英文,不能中文的
注意我们中文的翻译文件名是 zh_CN.po 不要写错了
# create_uid Created by 创建人
# create_date Created on 创建时间
# write_uid Last Updated by 最后更新人
# write_date Last Updated on 最后更新时间
消息主菜碟里的英文,像 Whole Compnay Company News 等要通过更改菜单项来解决
财务相关翻译
# journal entry 会计凭证
# journal items 会计分录
# Account Move 会计凭证
# Reconciled 核销
# Group By 分组
# Validate 审核
# Approve 审批
# Confirm 确认