## 国际化 每个模块可以在i18n目录提供自己的翻译,通过文件命名为lang.po,郎是语言区域设置代码,或语言和国家的不同组合时(如pt.po或pt_br。PO)。翻译将自动加载的所有可用语言Odoo。开发商总是用英语创造一个模块时,然后出口模块上使用的锅口特征Odoo gettext(设置翻译进出口出口翻译不指定语言),以创建模块模板锅文件,然后导出翻译PO文件。许多IDE的编辑和合并订单/锅文件插件或模式。 Tip GNU gettext格式(便携式 对象)用Odoo集成到发射台,使其成为一个在线协同翻译平台。 ~~~ tree |- idea/ # The module directory |- i18n/ # Translation files | - idea.pot # Translation Template (exported from Odoo) | - fr.po # French translation | - pt_BR.po # Brazilian Portuguese translation | (...) ~~~ Tip 默认情况下,Odoo锅出口仅提取物在Python代码在XML文件或内部字段定义的标签,但任何Python字符串可以翻译这种方式,它与周围的` OpenERP功能。_() `(例如` _(“Label”)`) 练习 翻译模块 选择你的Odoo安装第二语言。翻译你的模块利用Odoo设施。 1. 创建一个目录 `openacademy/i18n/` 2. 安装任何你想要的语言 ( 行政翻译的官方翻译) 3. 同步翻译的术语(行政翻译应用同步翻译) 4. 创建一个模板翻译文件,通过导出(管理翻译-导入/导出翻译)而不指定语言,保存在 `openacademy/i18n/` 5. 通过导出(行政管理翻译、导入/导出翻译)和指定一个翻译文件,创建一个翻译文件。把它保存在 `openacademy/i18n/` 6. 打开输出文件(翻译有一个基本的文本编辑器或专用PO文件编辑器如[ poedit ](http://poedit.net/)和翻译失踪 7. 在 `models.py`,为函数添加一个导入语句 `openerp._` 标记丢失字符串翻译 8. 重复3-6步骤 *openacademy/models.py* ~~~ python # -*- coding: utf-8 -*- from datetime import timedelta from openerp import models, fields, api, exceptions, _ class Course(models.Model): _name = 'openacademy.course' ~~~ ~~~ default = dict(default or {}) copied_count = self.search_count( [('name', '=like', _(u"Copy of {}%").format(self.name))]) if not copied_count: new_name = _(u"Copy of {}").format(self.name) else: new_name = _(u"Copy of {} ({})").format(self.name, copied_count) default['name'] = new_name return super(Course, self).copy(default) ~~~ ~~~ if self.seats < 0: return { 'warning': { 'title': _("Incorrect 'seats' value"), 'message': _("The number of available seats may not be negative"), }, } if self.seats < len(self.attendee_ids): return { 'warning': { 'title': _("Too many attendees"), 'message': _("Increase seats or remove excess attendees"), }, } ~~~ ~~~ def _check_instructor_not_in_attendees(self): for r in self: if r.instructor_id and r.instructor_id in r.attendee_ids: raise exceptions.ValidationError(_("A session's instructor can't be an attendee")) ~~~