summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
Diffstat (limited to 'addons')
-rw-r--r--addons/account/i18n/fr.po56
-rw-r--r--addons/account/i18n/zh_CN.po10
-rw-r--r--addons/account/models/account_payment.py21
-rw-r--r--addons/account/views/res_config_settings_views.xml4
-rw-r--r--addons/account_analytic_default/i18n/zh_CN.po7
-rw-r--r--addons/account_asset/i18n/zh_CN.po9
-rw-r--r--addons/account_asset/models/account_invoice.py3
-rw-r--r--addons/account_budget/i18n/zh_CN.po7
-rw-r--r--addons/account_cancel/i18n/zh_CN.po11
-rw-r--r--addons/account_check_printing/models/account_payment.py2
-rw-r--r--addons/account_payment/i18n/zh_CN.po7
-rw-r--r--addons/barcodes/i18n/zh_CN.po7
-rw-r--r--addons/barcodes/models/__init__.py1
-rw-r--r--addons/barcodes/models/ir_http.py14
-rw-r--r--addons/barcodes/static/src/js/barcode_events.js3
-rw-r--r--addons/base_automation/i18n/ru.po13
-rw-r--r--addons/board/i18n/zh_CN.po7
-rw-r--r--addons/calendar/i18n/zh_CN.po31
-rw-r--r--addons/crm/i18n/zh_CN.po10
-rw-r--r--addons/crm_project/i18n/zh_CN.po8
-rw-r--r--addons/delivery/i18n/zh_CN.po15
-rw-r--r--addons/event/i18n/zh_CN.po8
-rw-r--r--addons/event/models/event_mail.py6
-rw-r--r--addons/fetchmail/i18n/zh_CN.po9
-rw-r--r--addons/fleet/i18n/zh_CN.po7
-rw-r--r--addons/gamification/i18n/zh_CN.po7
-rw-r--r--addons/hr/views/hr_views.xml6
-rw-r--r--addons/hr_gamification/i18n/zh_CN.po7
-rw-r--r--addons/hr_holidays/i18n/zh_CN.po11
-rw-r--r--addons/hr_payroll/i18n/zh_CN.po6
-rw-r--r--addons/hr_recruitment/i18n/zh_CN.po14
-rw-r--r--addons/hr_timesheet/i18n/zh_CN.po6
-rw-r--r--addons/hr_timesheet/models/project.py2
-rw-r--r--addons/http_routing/models/ir_http.py2
-rw-r--r--addons/iap/static/src/xml/iap_templates.xml8
-rw-r--r--addons/l10n_in_hr_payroll/views/report_payslip_details_template.xml6
-rw-r--r--addons/lunch/i18n/zh_CN.po11
-rw-r--r--addons/mail/i18n/nl.po5
-rw-r--r--addons/mail/i18n/zh_CN.po6
-rw-r--r--addons/mail/models/mail_template.py2
-rw-r--r--addons/mail/static/src/js/discuss.js2
-rw-r--r--addons/maintenance/i18n/zh_CN.po10
-rw-r--r--addons/maintenance/models/maintenance.py2
-rw-r--r--addons/mass_mailing/i18n/zh_CN.po13
-rw-r--r--addons/mass_mailing/static/src/js/mass_mailing_editor.js10
-rw-r--r--addons/mass_mailing/views/snippets_themes_options.xml19
-rw-r--r--addons/membership/i18n/zh_CN.po9
-rw-r--r--addons/mrp/i18n/nl.po19
-rw-r--r--addons/mrp/i18n/zh_CN.po233
-rw-r--r--addons/mrp/models/stock_move.py2
-rw-r--r--addons/mrp/views/mrp_production_views.xml2
-rw-r--r--addons/pad/models/pad.py2
-rw-r--r--addons/payment/i18n/zh_CN.po13
-rw-r--r--addons/payment_sips/models/payment.py2
-rw-r--r--addons/point_of_sale/i18n/de.po21
-rw-r--r--addons/point_of_sale/i18n/zh_CN.po8
-rw-r--r--addons/point_of_sale/models/pos_order.py5
-rw-r--r--addons/point_of_sale/static/src/js/models.js6
-rw-r--r--addons/portal/i18n/zh_CN.po8
-rw-r--r--addons/portal/static/src/js/portal_chatter.js31
-rw-r--r--addons/pos_restaurant/i18n/zh_CN.po9
-rw-r--r--addons/project/i18n/zh_CN.po12
-rw-r--r--addons/purchase/i18n/nl.po7
-rw-r--r--addons/purchase/models/account_invoice.py6
-rw-r--r--addons/rating/i18n/zh_CN.po9
-rw-r--r--addons/repair/i18n/zh_CN.po50
-rw-r--r--addons/resource/models/resource.py10
-rw-r--r--addons/resource/tests/test_resource.py6
-rw-r--r--addons/sale/models/sale.py3
-rw-r--r--addons/sms/i18n/es.po20
-rw-r--r--addons/sms/wizard/send_sms.py2
-rw-r--r--addons/stock/views/stock_picking_views.xml2
-rw-r--r--addons/stock_account/views/stock_account_views.xml4
-rw-r--r--addons/web/i18n/zh_CN.po101
-rw-r--r--addons/web/static/src/js/fields/basic_fields.js1
-rw-r--r--addons/web/static/src/js/fields/relational_fields.js1
-rw-r--r--addons/web/static/src/js/fields/special_fields.js3
-rw-r--r--addons/web/static/src/js/views/kanban/kanban_column.js2
-rw-r--r--addons/web/static/src/less/webclient.less50
-rw-r--r--addons/web/static/tests/fields/basic_fields_tests.js4
-rw-r--r--addons/web/static/tests/fields/relational_fields_tests.js87
-rw-r--r--addons/web_diagram/i18n/zh_CN.po13
-rw-r--r--addons/web_editor/i18n/zh_CN.po109
-rw-r--r--addons/web_editor/static/src/js/backend/fields.js12
-rw-r--r--addons/web_editor/static/src/js/editor/rte.js34
-rw-r--r--addons/web_editor/static/src/js/editor/rte.summernote.js3
-rw-r--r--addons/web_editor/static/src/js/editor/summernote.js20
-rw-r--r--addons/web_editor/static/src/js/widgets/ace.js2
-rw-r--r--addons/web_editor/static/tests/web_editor_tests.js16
-rw-r--r--addons/website/i18n/zh_CN.po12
-rw-r--r--addons/website/models/ir_http.py15
-rw-r--r--addons/website_blog/i18n/zh_CN.po11
-rw-r--r--addons/website_blog/models/website_blog.py2
-rw-r--r--addons/website_sale/i18n/zh_CN.po10
-rw-r--r--addons/website_sale/views/templates.xml14
-rw-r--r--addons/website_sale_stock/i18n/zh_CN.po4
-rw-r--r--addons/website_slides/i18n/zh_CN.po10
97 files changed, 902 insertions, 566 deletions
diff --git a/addons/account/i18n/fr.po b/addons/account/i18n/fr.po
index 0f3b96ca128..eb62eed9d9b 100644
--- a/addons/account/i18n/fr.po
+++ b/addons/account/i18n/fr.po
@@ -4,7 +4,7 @@
#
# Translators:
# Xavier Belmere <Info@cartmeleon.com>, 2016
-# Martin Trigaux <mat@odoo.com>, 2016
+# Martin Trigaux, 2016
# Maxime Chambreuil <mchambreuil@ursainfosystems.com>, 2016
# Xavier Symons <xsy@openerp.com>, 2016
# Melanie Bernard <mbe@odoo.com>, 2016
@@ -14,7 +14,7 @@
# Olivier Lenoir <olivier.lenoir@free.fr>, 2016
# Olivier Dony <odo@odoo.com>, 2016
# Stanislas Sodonon <stanislas.sodonon@gmail.com>, 2016
-# Florian Hatat <mininet@wanadoo.fr>, 2016
+# Florian Hatat, 2016
# Nissar Chababy <funilrys@outlook.com>, 2016
# Nancy Bolognesi <nb@microcom.ca>, 2016
# Nicolas JEUDY <njeudy@panda-chi.io>, 2016
@@ -25,9 +25,9 @@
# Lucas Deliege <lud@odoo.com>, 2016
# Adriana Ierfino <adriana.ierfino@savoirfairelinux.com>, 2016
# Mickaël Audigane <maudigane@teclib.com>, 2016
-# ShevAbam <shevabam@gmail.com>, 2016
+# ShevAbam, 2016
# Sébastien LANGE (SYLEAM) <sebastien.lange@syleam.fr>, 2016
-# Fabrice Henrion <fhe@odoo.com>, 2016
+# Fabrice Henrion, 2016
# lucasdeliege <deliegelucas@gmail.com>, 2016
# Loic <loic.richard2@gmail.com>, 2016
# Daniel & Delphine <dd2013@leschoupinous.net>, 2016
@@ -37,9 +37,9 @@
# Frédéric LIETART <stuff@tifred.fr>, 2016
# Benjamin Delagoutte <ben@ampletus.fr>, 2016
# Mensanh Dodji Anani LAWSON <omolowo73@gmail.com>, 2016
-# Stéphane Bidoul (ACSONE) <stephane.bidoul@acsone.eu>, 2016
+# Stéphane Bidoul (ACSONE), 2016
# Lionel Sausin <ls@numerigraphe.com>, 2016
-# Hamid Darabi <hamid.darabi@gmail.com>, 2016
+# Hamid Darabi, 2016
# Nacim ABOURA <nacim.aboura@gmail.com>, 2016
# salwa belhadj <salwa.belhadj@gmail.com>, 2016
# Lamia Ishak <lamiaishak@hotmail.co.uk>, 2016
@@ -369,6 +369,50 @@ msgid ""
"</p>\n"
"</div>"
msgstr ""
+"<div>\n"
+"<p>Cher ${object.partner_id.name}\n"
+"% set access_action = object.with_context(force_website=True).get_access_action()\n"
+"% set is_online = access_action and access_action['type'] == 'ir.actions.act_url'\n"
+"% set access_url = object.get_mail_url()\n"
+"\n"
+"% if object.partner_id.parent_id:\n"
+" (<i>${object.partner_id.parent_id.name}</i>)\n"
+"% endif\n"
+",</p>\n"
+"<p>Voici, en pièce jointe, votre \n"
+"% if object.number:\n"
+"facture <strong>${object.number}</strong>\n"
+"% else:\n"
+"facture\n"
+"% endif\n"
+"% if object.origin:\n"
+"(avec la référence ${object.origin})\n"
+"% endif\n"
+", son montant s'élève à <strong>${object.amount_total} ${object.currency_id.name}</strong>\n"
+"émis par ${object.company_id.name}.\n"
+"</p>\n"
+"\n"
+"% if is_online:\n"
+" <br/><br/>\n"
+" <center>\n"
+" <a href=\"${access_url}\" style=\"background-color: #1abc9c; padding: 20px; text-decoration: none; color: #fff; border-radius: 5px; font-size: 16px;\" class=\"o_default_snippet_text\">Voir la facture</a>\n"
+" </center>\n"
+"% endif\n"
+" <br/><br/>\n"
+"\n"
+"% if object.state=='paid':\n"
+" <p>Cette facture est déjà payée.</p>\n"
+"% else:\n"
+" <p>Merci de procéder au payement dès que possible.</p>\n"
+"% endif\n"
+"\n"
+"<p>Merci,</p>\n"
+"<p style=\"color:#888888\">\n"
+"% if object.user_id and object.user_id.signature:\n"
+" ${object.user_id.signature | safe}\n"
+"% endif\n"
+"</p>\n"
+"</div>"
#. module: account
#: model:ir.ui.view,arch_db:account.portal_my_invoices
diff --git a/addons/account/i18n/zh_CN.po b/addons/account/i18n/zh_CN.po
index 6d84fefc536..4195aa29b6e 100644
--- a/addons/account/i18n/zh_CN.po
+++ b/addons/account/i18n/zh_CN.po
@@ -5,8 +5,8 @@
# Translators:
# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# Gary Wei <Gary.wei@elico-corp.com>, 2016
-# Martin Trigaux <mat@odoo.com>, 2016
-# fausthuang <faust_huang@hotmail.com>, 2016
+# Martin Trigaux, 2016
+# fausthuang, 2016
# 菜小蛇 <lttlsnk@gmail.com>, 2016
# Connie Xiao <connie.xiao@elico-corp.com>, 2016
# Michael Chong <michaelchong2005@gmail.com>, 2016
@@ -28,11 +28,11 @@
# mrshelly <mrshelly@hotmail.com>, 2016
# Kai Zhu <parahexen@gmail.com>, 2016
# Gang LIU <liu9ang@hotmail.com>, 2016
-# Brown Hu <suhyy@163.com>, 2016
+# Brown Hu, 2016
# 苏州远鼎 <tiexinliu@126.com>, 2016
# 军 李 <niathack@hotmail.com>, 2016
# Rona Lin <ssauapw@qq.com>, 2016
-# 林俊 <54773801@qq.com>, 2016
+# 山西清水欧度(QQ:54773801) <54773801@qq.com>, 2016
# 坤 陈 <1339537473@qq.com>, 2016
# Ted Wang <feiyuwang2012@gmail.com>, 2016
# Godners Ren <godners@163.com>, 2017
@@ -6190,7 +6190,7 @@ msgstr "无详情"
msgid ""
"No miscellaneous journal could be found. Please create one before "
"proceeding."
-msgstr ""
+msgstr "未找到杂项日记账,请在处理之前先创建一个"
#. module: account
#: code:addons/account/models/account.py:116
diff --git a/addons/account/models/account_payment.py b/addons/account/models/account_payment.py
index e17e48165a5..ce2d9e44d51 100644
--- a/addons/account/models/account_payment.py
+++ b/addons/account/models/account_payment.py
@@ -332,7 +332,7 @@ class account_payment(models.Model):
else:
if self.payment_type == 'inbound':
domain.append(('at_least_one_inbound', '=', True))
- else:
+ elif self.payment_type == 'outbound':
domain.append(('at_least_one_outbound', '=', True))
return {'domain': domain, 'journal_types': set(journal_type)}
@@ -341,9 +341,16 @@ class account_payment(models.Model):
jrnl_filters = self._compute_journal_domain_and_types()
journal_types = jrnl_filters['journal_types']
domain_on_types = [('type', 'in', list(journal_types))]
- if self.journal_id.type not in journal_types:
- self.journal_id = self.env['account.journal'].search(domain_on_types, limit=1)
- return {'domain': {'journal_id': jrnl_filters['domain'] + domain_on_types}}
+
+ journal_domain = jrnl_filters['domain'] + domain_on_types
+ default_journal_id = self.env.context.get('default_journal_id')
+ if not default_journal_id:
+ if self.journal_id.type not in journal_types:
+ self.journal_id = self.env['account.journal'].search(domain_on_types, limit=1)
+ else:
+ journal_domain = journal_domain.append(('id', '=', default_journal_id))
+
+ return {'domain': {'journal_id': journal_domain}}
@api.one
@api.depends('invoice_ids', 'payment_type', 'partner_type', 'partner_id')
@@ -374,6 +381,8 @@ class account_payment(models.Model):
self.partner_type = 'customer'
elif self.payment_type == 'outbound':
self.partner_type = 'supplier'
+ else:
+ self.partner_type = False
# Set payment method domain
res = self._onchange_journal()
if not res.get('domain', {}):
@@ -505,7 +514,7 @@ class account_payment(models.Model):
@api.multi
def action_draft(self):
return self.write({'state': 'draft'})
-
+
def action_validate_invoice_payment(self):
""" Posts a payment used to pay an invoice. This function only posts the
payment by default but can be overridden to apply specific post or pre-processing.
@@ -669,7 +678,7 @@ class account_payment(models.Model):
for inv in invoice:
if inv.move_id:
name += inv.number + ', '
- name = name[:len(name)-2]
+ name = name[:len(name)-2]
return {
'name': name,
'account_id': self.destination_account_id.id,
diff --git a/addons/account/views/res_config_settings_views.xml b/addons/account/views/res_config_settings_views.xml
index c6dfbb2005e..5ba661a110f 100644
--- a/addons/account/views/res_config_settings_views.xml
+++ b/addons/account/views/res_config_settings_views.xml
@@ -168,10 +168,6 @@
<label for="currency_exchange_journal_id" class="col-md-3 o_light_label"/>
<field name="currency_exchange_journal_id"/>
</div>
- <div class="row mt16">
- <label for="currency_exchange_journal_id" class="col-md-3 o_light_label"/>
- <field name="currency_exchange_journal_id"/>
- </div>
</div>
</div>
</div>
diff --git a/addons/account_analytic_default/i18n/zh_CN.po b/addons/account_analytic_default/i18n/zh_CN.po
index 359a7c996f5..9955c54f69e 100644
--- a/addons/account_analytic_default/i18n/zh_CN.po
+++ b/addons/account_analytic_default/i18n/zh_CN.po
@@ -4,15 +4,16 @@
#
# Translators:
# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
# 苏州远鼎 <tiexinliu@126.com>, 2017
+# 老窦 北京 <2662059195@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.saas~18\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-20 09:53+0000\n"
"PO-Revision-Date: 2017-09-20 09:53+0000\n"
-"Last-Translator: 苏州远鼎 <tiexinliu@126.com>, 2017\n"
+"Last-Translator: 老窦 北京 <2662059195@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -90,7 +91,7 @@ msgstr "创建时间"
#. module: account_analytic_default
#: model:ir.ui.view,arch_db:account_analytic_default.res_config_settings_view_form
msgid "Default Analytic Values"
-msgstr ""
+msgstr "默认值"
#. module: account_analytic_default
#: model:ir.model.fields,help:account_analytic_default.field_account_analytic_default_date_stop
diff --git a/addons/account_asset/i18n/zh_CN.po b/addons/account_asset/i18n/zh_CN.po
index 0b45dbe3db8..73b6dbe44d8 100644
--- a/addons/account_asset/i18n/zh_CN.po
+++ b/addons/account_asset/i18n/zh_CN.po
@@ -3,18 +3,19 @@
# * account_asset
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# SHRe Liu <shreliu@outlook.com>, 2016
# 苏州远鼎 <tiexinliu@126.com>, 2016
# Ted Wang <feiyuwang2012@gmail.com>, 2016
# Rangy Chen <rangychen@163.com>, 2017
+# 老窦 北京 <2662059195@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-30 13:11+0000\n"
"PO-Revision-Date: 2017-11-30 13:11+0000\n"
-"Last-Translator: Rangy Chen <rangychen@163.com>, 2017\n"
+"Last-Translator: 老窦 北京 <2662059195@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -54,7 +55,7 @@ msgstr "# 分期明细"
#: model:ir.cron,cron_name:account_asset.account_asset_cron
#: model:ir.cron,name:account_asset.account_asset_cron
msgid "Account Asset: Generate asset entries"
-msgstr ""
+msgstr "资产科目:生成资产分录"
#. module: account_asset
#: model:ir.model.fields,field_description:account_asset.field_asset_depreciation_confirmation_wizard_date
@@ -89,7 +90,7 @@ msgstr "会计用于记录资产采购的原始价格"
#: code:addons/account_asset/static/src/js/account_asset.js:52
#, python-format
msgid "Accounting entries waiting for manual verification"
-msgstr ""
+msgstr "会计分录等待手动验证"
#. module: account_asset
#: model:ir.model.fields,field_description:account_asset.field_account_asset_asset_active
diff --git a/addons/account_asset/models/account_invoice.py b/addons/account_asset/models/account_invoice.py
index dd22ea851f3..1c8333f550a 100644
--- a/addons/account_asset/models/account_invoice.py
+++ b/addons/account_asset/models/account_invoice.py
@@ -3,7 +3,8 @@
from datetime import datetime
from dateutil.relativedelta import relativedelta
-from odoo import api, fields, models
+from odoo import api, fields, models, _
+from odoo.exceptions import UserError
from odoo.tools import DEFAULT_SERVER_DATE_FORMAT as DF
from odoo.addons import decimal_precision as dp
diff --git a/addons/account_budget/i18n/zh_CN.po b/addons/account_budget/i18n/zh_CN.po
index 449c0bcf725..d5d2a814221 100644
--- a/addons/account_budget/i18n/zh_CN.po
+++ b/addons/account_budget/i18n/zh_CN.po
@@ -3,14 +3,15 @@
# * account_budget
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
+# 老窦 北京 <2662059195@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-10-10 11:34+0000\n"
"PO-Revision-Date: 2017-10-10 11:34+0000\n"
-"Last-Translator: Jeffery CHEN <jeffery9@gmail.com>, 2016\n"
+"Last-Translator: 老窦 北京 <2662059195@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -278,7 +279,7 @@ msgstr "状态"
#: code:addons/account_budget/models/account_budget.py:31
#, python-format
msgid "The budget must have at least one account."
-msgstr ""
+msgstr "预算应该至少有一个科目"
#. module: account_budget
#: model:ir.model.fields,field_description:account_budget.field_crossovered_budget_lines_theoritical_amount
diff --git a/addons/account_cancel/i18n/zh_CN.po b/addons/account_cancel/i18n/zh_CN.po
index ee7ac910420..768096d01ca 100644
--- a/addons/account_cancel/i18n/zh_CN.po
+++ b/addons/account_cancel/i18n/zh_CN.po
@@ -3,18 +3,15 @@
# * account_cancel
#
# Translators:
-# Martin Trigaux <mat@odoo.com>, 2017
-# 訾明华 <565209960@qq.com>, 2017
-# liAnGjiA <liangjia@qq.com>, 2017
-# Jeffery CHEN <jeffery9@gmail.com>, 2017
-# mrshelly <mrshelly@hotmail.com>, 2017
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
+# 老窦 北京 <2662059195@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.saas~18\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-20 09:53+0000\n"
"PO-Revision-Date: 2017-09-20 09:53+0000\n"
-"Last-Translator: mrshelly <mrshelly@hotmail.com>, 2017\n"
+"Last-Translator: 老窦 北京 <2662059195@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -51,4 +48,4 @@ msgstr "重置为草稿"
#. module: account_cancel
#: model:ir.ui.view,arch_db:account_cancel.bank_statement_cancel_form_inherit
msgid "Revert reconciliation"
-msgstr ""
+msgstr "反核销"
diff --git a/addons/account_check_printing/models/account_payment.py b/addons/account_check_printing/models/account_payment.py
index bcf7e279747..3af1cfea95b 100644
--- a/addons/account_check_printing/models/account_payment.py
+++ b/addons/account_check_printing/models/account_payment.py
@@ -34,7 +34,7 @@ class AccountRegisterPayments(models.TransientModel):
res = super(AccountRegisterPayments, self)._prepare_payment_vals(invoices)
if self.payment_method_id == self.env.ref('account_check_printing.account_payment_method_check'):
res.update({
- 'check_amount_in_words': self.check_amount_in_words,
+ 'check_amount_in_words': self.currency_id.amount_to_text(res['amount']) if self.multi else self.check_amount_in_words,
'check_manual_sequencing': self.check_manual_sequencing,
})
return res
diff --git a/addons/account_payment/i18n/zh_CN.po b/addons/account_payment/i18n/zh_CN.po
index 47668d86e26..6f360b21074 100644
--- a/addons/account_payment/i18n/zh_CN.po
+++ b/addons/account_payment/i18n/zh_CN.po
@@ -3,18 +3,19 @@
# * account_payment
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2017
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2017
# Jeff Yu - Elico Corp <jeff.yu@elico-corp.com>, 2017
# glovebx <ruinning@163.com>, 2017
# Luke <cialuo@qq.com>, 2017
# Gary Wei <Gary.wei@elico-corp.com>, 2017
+# 老窦 北京 <2662059195@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server saas~11.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-12-13 14:36+0000\n"
"PO-Revision-Date: 2017-12-13 14:36+0000\n"
-"Last-Translator: Gary Wei <Gary.wei@elico-corp.com>, 2017\n"
+"Last-Translator: 老窦 北京 <2662059195@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -50,7 +51,7 @@ msgstr "<i class=\"fa fa-arrow-circle-right\"/> 现在付款"
msgid ""
"<i class=\"fa fa-arrow-circle-right\"/><span class=\"hidden-xs\"> Pay "
"Now</span>"
-msgstr ""
+msgstr "立即支付"
#. module: account_payment
#: model:ir.ui.view,arch_db:account_payment.portal_invoice_page_inherit_payment
diff --git a/addons/barcodes/i18n/zh_CN.po b/addons/barcodes/i18n/zh_CN.po
index 593952080e4..b8d23102465 100644
--- a/addons/barcodes/i18n/zh_CN.po
+++ b/addons/barcodes/i18n/zh_CN.po
@@ -3,16 +3,17 @@
# * barcodes
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# 苏州远鼎 <tiexinliu@126.com>, 2016
# liAnGjiA <liangjia@qq.com>, 2017
+# 老窦 北京 <2662059195@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.saas~18\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-20 09:53+0000\n"
"PO-Revision-Date: 2017-09-20 09:53+0000\n"
-"Last-Translator: liAnGjiA <liangjia@qq.com>, 2017\n"
+"Last-Translator: 老窦 北京 <2662059195@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -193,7 +194,7 @@ msgstr "编码"
#: code:addons/barcodes/static/src/js/barcode_form_view.js:301
#, python-format
msgid "Error : Barcode command is undefined"
-msgstr ""
+msgstr "错误:条码命令未定义"
#. module: barcodes
#. openerp-web
diff --git a/addons/barcodes/models/__init__.py b/addons/barcodes/models/__init__.py
index 05b9acf6f97..e3f49cb14ed 100644
--- a/addons/barcodes/models/__init__.py
+++ b/addons/barcodes/models/__init__.py
@@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
from . import barcodes
from . import barcode_events_mixin
+from . import ir_http
diff --git a/addons/barcodes/models/ir_http.py b/addons/barcodes/models/ir_http.py
new file mode 100644
index 00000000000..7ff6aa7c8f2
--- /dev/null
+++ b/addons/barcodes/models/ir_http.py
@@ -0,0 +1,14 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import models
+
+
+class IrHttp(models.AbstractModel):
+ _inherit = 'ir.http'
+
+ def session_info(self):
+ res = super(IrHttp, self).session_info()
+ res['max_time_between_keys_in_ms'] = int(
+ self.env['ir.config_parameter'].sudo().get_param('barcode.max_time_between_keys_in_ms', default='55'))
+ return res
diff --git a/addons/barcodes/static/src/js/barcode_events.js b/addons/barcodes/static/src/js/barcode_events.js
index f26748ac7b3..e02d3aafdb7 100644
--- a/addons/barcodes/static/src/js/barcode_events.js
+++ b/addons/barcodes/static/src/js/barcode_events.js
@@ -3,6 +3,7 @@ odoo.define('barcodes.BarcodeEvents', function(require) {
var core = require('web.core');
var mixins = require('web.mixins');
+var session = require('web.session');
// For IE >= 9, use this, new CustomEvent(), instead of new Event()
@@ -26,7 +27,7 @@ var BarcodeEvents = core.Class.extend(mixins.PropertiesMixin, {
suffix: /[\n\r\t]+/,
// Keys from a barcode scanner are usually processed as quick as possible,
// but some scanners can use an intercharacter delay (we support <= 50 ms)
- max_time_between_keys_in_ms: 55,
+ max_time_between_keys_in_ms: session.max_time_between_keys_in_ms || 55,
init: function() {
mixins.PropertiesMixin.init.call(this);
diff --git a/addons/base_automation/i18n/ru.po b/addons/base_automation/i18n/ru.po
index 978a993a70a..6d5698ee8c0 100644
--- a/addons/base_automation/i18n/ru.po
+++ b/addons/base_automation/i18n/ru.po
@@ -3,25 +3,26 @@
# * base_automation
#
# Translators:
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
# Max Belyanin <maxbelyanin@gmail.com>, 2017
# Masha Koc <mariya.kos.ua@gmail.com>, 2017
# Максим Дронь <dronmax@gmail.com>, 2017
# Sergey Vilizhanin <sv@grimmette.ru>, 2017
# Viktor Pogrebniak <vp@aifil.ru>, 2017
-# Эдуард Манятовский <manyatovskiy@gmail.com>, 2017
+# Collex100, 2017
# Gennady Marchenko <gennadym@gmail.com>, 2017
# Русский «kolobok2048» Ивашка <kolobok2048@gmail.com>, 2017
# Denis Trepalin <zekarious@gmail.com>, 2017
# Артур Чеботарь <artcha.chebotar@gmail.com>, 2017
-# Dimko Pythonic <d.v.selitsky@gmail.com>, 2017
+# Dmitry sky <d.v.selitsky@gmail.com>, 2017
+# Yuriy Ney <k_wizard@mail.ru>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.saas~18\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-10-02 11:26+0000\n"
"PO-Revision-Date: 2017-10-02 11:26+0000\n"
-"Last-Translator: Dimko Pythonic <d.v.selitsky@gmail.com>, 2017\n"
+"Last-Translator: Yuriy Ney <k_wizard@mail.ru>, 2018\n"
"Language-Team: Russian (https://www.transifex.com/odoo/teams/41243/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -162,12 +163,12 @@ msgstr "Перед обновлением домена"
#. module: base_automation
#: model:ir.model.fields,field_description:base_automation.field_base_automation_binding_model_id
msgid "Binding Model"
-msgstr ""
+msgstr "Связанная модель"
#. module: base_automation
#: model:ir.model.fields,field_description:base_automation.field_base_automation_binding_type
msgid "Binding Type"
-msgstr ""
+msgstr "Связанный Тип"
#. module: base_automation
#: selection:base.automation.lead.test,state:0
diff --git a/addons/board/i18n/zh_CN.po b/addons/board/i18n/zh_CN.po
index 155359f3dab..95567773369 100644
--- a/addons/board/i18n/zh_CN.po
+++ b/addons/board/i18n/zh_CN.po
@@ -3,14 +3,15 @@
# * board
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
+# 老窦 北京 <2662059195@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.saas~18\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-20 09:53+0000\n"
"PO-Revision-Date: 2017-09-20 09:53+0000\n"
-"Last-Translator: Jeffery CHEN <jeffery9@gmail.com>, 2016\n"
+"Last-Translator: 老窦 北京 <2662059195@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -56,7 +57,7 @@ msgstr "添加到我的仪表板"
#: code:addons/board/static/src/js/dashboard.js:335
#, python-format
msgid "Are you sure you want to remove this item?"
-msgstr ""
+msgstr "你确定要删除此项吗?"
#. module: board
#: model:ir.model,name:board.model_board_board
diff --git a/addons/calendar/i18n/zh_CN.po b/addons/calendar/i18n/zh_CN.po
index 84892dd51a7..415c7674f57 100644
--- a/addons/calendar/i18n/zh_CN.po
+++ b/addons/calendar/i18n/zh_CN.po
@@ -8,15 +8,16 @@
# liAnGjiA <liangjia@qq.com>, 2017
# Talway <9010446@qq.com>, 2017
# Jeff Yu - Elico Corp <jeff.yu@elico-corp.com>, 2017
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
# Gary Wei <Gary.wei@elico-corp.com>, 2017
+# 老窦 北京 <2662059195@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-30 13:12+0000\n"
"PO-Revision-Date: 2017-11-30 13:12+0000\n"
-"Last-Translator: Gary Wei <Gary.wei@elico-corp.com>, 2017\n"
+"Last-Translator: 老窦 北京 <2662059195@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -335,37 +336,37 @@ msgstr "%s拒绝了邀请"
#. module: calendar
#: model:calendar.alarm,name:calendar.alarm_notif_5
msgid "1 Day(s)"
-msgstr ""
+msgstr "1天"
#. module: calendar
#: model:calendar.alarm,name:calendar.alarm_notif_3
msgid "1 Hour(s)"
-msgstr ""
+msgstr "1小时"
#. module: calendar
#: model:calendar.alarm,name:calendar.alarm_notif_1
msgid "15 Minute(s)"
-msgstr ""
+msgstr "15分钟"
#. module: calendar
#: model:calendar.alarm,name:calendar.alarm_notif_4
msgid "2 Hour(s)"
-msgstr ""
+msgstr "2小时"
#. module: calendar
#: model:calendar.alarm,name:calendar.alarm_mail_1
msgid "3 Hour(s), by e-mail"
-msgstr ""
+msgstr "3小时发邮件"
#. module: calendar
#: model:calendar.alarm,name:calendar.alarm_notif_2
msgid "30 Minute(s)"
-msgstr ""
+msgstr "20分钟"
#. module: calendar
#: model:calendar.alarm,name:calendar.alarm_mail_2
msgid "6 Hour(s), by e-mail"
-msgstr ""
+msgstr "6小时发邮件"
#. module: calendar
#: model:ir.ui.view,arch_db:calendar.view_calendar_event_form
@@ -484,14 +485,14 @@ msgstr "日程邀请"
#. module: calendar
#: model:ir.model.fields,field_description:calendar.field_mail_activity_calendar_event_id
msgid "Calendar Meeting"
-msgstr ""
+msgstr "日历会议"
#. module: calendar
#: model:ir.actions.server,name:calendar.ir_cron_scheduler_alarm_ir_actions_server
#: model:ir.cron,cron_name:calendar.ir_cron_scheduler_alarm
#: model:ir.cron,name:calendar.ir_cron_scheduler_alarm
msgid "Calendar: Event Reminder"
-msgstr ""
+msgstr "日历:活动提醒"
#. module: calendar
#: model:ir.ui.view,arch_db:calendar.view_calendar_event_form
@@ -709,7 +710,7 @@ msgstr "所有人"
#: code:addons/calendar/models/mail_activity.py:38
#, python-format
msgid "Feedback: "
-msgstr ""
+msgstr "反馈:"
#. module: calendar
#: selection:calendar.event,byday:0
@@ -1082,7 +1083,7 @@ msgstr "循环规则"
#. module: calendar
#: model:ir.model.fields,field_description:calendar.field_calendar_alarm_duration
msgid "Remind Before"
-msgstr ""
+msgstr "提醒早于"
#. module: calendar
#: model:ir.model.fields,field_description:calendar.field_calendar_event_alarm_ids
@@ -1124,7 +1125,7 @@ msgstr "负责人"
#. module: calendar
#: selection:calendar.alarm,type:0
msgid "SMS Text Message"
-msgstr ""
+msgstr "短信"
#. module: calendar
#: model:ir.model.fields,field_description:calendar.field_calendar_event_sa
@@ -1139,7 +1140,7 @@ msgstr "周六"
#. module: calendar
#: model:ir.ui.view,arch_db:calendar.mail_activity_view_form_popup
msgid "Schedule a meeting"
-msgstr ""
+msgstr "安排会议"
#. module: calendar
#: model:ir.ui.view,arch_db:calendar.view_calendar_event_search
diff --git a/addons/crm/i18n/zh_CN.po b/addons/crm/i18n/zh_CN.po
index 71e84da8ba8..eccfdd823ea 100644
--- a/addons/crm/i18n/zh_CN.po
+++ b/addons/crm/i18n/zh_CN.po
@@ -3,10 +3,10 @@
# * crm
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# 苏州远鼎 <tiexinliu@126.com>, 2016
# Ted Wang <feiyuwang2012@gmail.com>, 2016
-# Martin Trigaux <mat@odoo.com>, 2016
+# Martin Trigaux, 2016
# zpq001 <zpq001@live.com>, 2017
# waveyeung <waveyeung@qq.com>, 2017
# xiaobin wu <bd5dml@gmail.com>, 2017
@@ -259,7 +259,7 @@ msgstr "活动完成目标"
#. module: crm
#: model:ir.ui.view,arch_db:crm.view_crm_case_opportunities_filter
msgid "Activities Todo"
-msgstr ""
+msgstr "活动待办"
#. module: crm
#: model:ir.model.fields,field_description:crm.field_crm_lead_kanban_state
@@ -451,7 +451,7 @@ msgstr "取消"
#. module: crm
#: model:ir.actions.act_window,name:crm.crm_team_act_tree
msgid "Cases by Sales Channel"
-msgstr ""
+msgstr "按销售漏斗"
#. module: crm
#: model:ir.model,name:crm.model_crm_lead_tag
@@ -1753,7 +1753,7 @@ msgstr "业务开启的天数"
#. module: crm
#: model:ir.model.fields,field_description:crm.field_crm_team_opportunities_count
msgid "Number of open opportunities"
-msgstr ""
+msgstr "开启的商机数"
#. module: crm
#: model:ir.actions.act_window,help:crm.crm_case_form_view_salesteams_opportunity
diff --git a/addons/crm_project/i18n/zh_CN.po b/addons/crm_project/i18n/zh_CN.po
index cf03ee80adf..2b9d021df83 100644
--- a/addons/crm_project/i18n/zh_CN.po
+++ b/addons/crm_project/i18n/zh_CN.po
@@ -4,17 +4,17 @@
#
# Translators:
# liAnGjiA <liangjia@qq.com>, 2017
-# Jeffery CHEN <jeffery9@gmail.com>, 2017
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2017
# waveyeung <waveyeung@qq.com>, 2017
# 老窦 北京 <2662059195@qq.com>, 2017
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.saas~18\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-20 09:52+0000\n"
"PO-Revision-Date: 2017-09-20 09:52+0000\n"
-"Last-Translator: Martin Trigaux <mat@odoo.com>, 2017\n"
+"Last-Translator: Martin Trigaux, 2017\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -39,7 +39,7 @@ msgstr "取消"
#: model:ir.ui.view,arch_db:crm_project.crm_lead_convert2task_view_form
#: model:ir.ui.view,arch_db:crm_project.crm_lead_view_form
msgid "Convert to Task"
-msgstr ""
+msgstr "转换为任务"
#. module: crm_project
#: model:ir.ui.view,arch_db:crm_project.crm_lead_convert2task_view_form
diff --git a/addons/delivery/i18n/zh_CN.po b/addons/delivery/i18n/zh_CN.po
index d8077b30a58..a511738f8fc 100644
--- a/addons/delivery/i18n/zh_CN.po
+++ b/addons/delivery/i18n/zh_CN.po
@@ -3,19 +3,20 @@
# * delivery
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
-# 林俊 <54773801@qq.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
+# 山西清水欧度(QQ:54773801) <54773801@qq.com>, 2016
# 苏州远鼎 <tiexinliu@126.com>, 2016
# Ted Wang <feiyuwang2012@gmail.com>, 2016
-# Martin Trigaux <mat@odoo.com>, 2016
+# Martin Trigaux, 2016
# Xiaoming Deng <sumandeng@hotmail.com>, 2016
+# 老窦 北京 <2662059195@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server saas~11.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-12-13 14:36+0000\n"
"PO-Revision-Date: 2017-12-13 14:36+0000\n"
-"Last-Translator: Xiaoming Deng <sumandeng@hotmail.com>, 2016\n"
+"Last-Translator: 老窦 北京 <2662059195@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -26,7 +27,7 @@ msgstr ""
#. module: delivery
#: model:mail.template,report_name:delivery.mail_template_data_delivery_confirmation
msgid "${(object.name or '').replace('/','_')}"
-msgstr ""
+msgstr "${(object.name or ‘’).replace(‘/‘,’_’)}"
#. module: delivery
#: model:mail.template,subject:delivery.mail_template_data_delivery_confirmation
@@ -143,7 +144,7 @@ msgstr "<strong>承运商</strong>"
#. module: delivery
#: model:ir.ui.view,arch_db:delivery.report_delivery_document2
msgid "<strong>Tracking Number</strong>"
-msgstr ""
+msgstr "<strong>跟踪号码</strong>"
#. module: delivery
#: model:ir.ui.view,arch_db:delivery.report_delivery_document2
@@ -266,7 +267,7 @@ msgstr "交货承运商"
#. module: delivery
#: model:ir.ui.view,arch_db:delivery.view_delivery_price_rule_form
msgid "Delivery Cost"
-msgstr ""
+msgstr "运输成本"
#. module: delivery
#: model:ir.ui.view,arch_db:delivery.view_picking_withcarrier_out_form
diff --git a/addons/event/i18n/zh_CN.po b/addons/event/i18n/zh_CN.po
index d2a8ba8b759..b1bc9031981 100644
--- a/addons/event/i18n/zh_CN.po
+++ b/addons/event/i18n/zh_CN.po
@@ -3,10 +3,10 @@
# * event
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# 卓忆科技 <zhanghao@jointd.com>, 2016
# 老窦 北京 <2662059195@qq.com>, 2017
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
# Michael Chong <michaelchong2005@gmail.com>, 2017
# SHOM <shanmuxin@yeah.net>, 2017
# liAnGjiA <liangjia@qq.com>, 2017
@@ -748,7 +748,7 @@ msgstr "活动"
#. module: event
#: model:ir.model,name:event.model_event_mail
msgid "Event Automated Mailing"
-msgstr ""
+msgstr "自动发邮件"
#. module: event
#: model:ir.actions.report,name:event.report_event_event_badge
@@ -833,7 +833,7 @@ msgstr "活动类型"
#: model:ir.cron,cron_name:event.event_mail_scheduler
#: model:ir.cron,name:event.event_mail_scheduler
msgid "Event: Mail Scheduler"
-msgstr ""
+msgstr "活动:邮件计划"
#. module: event
#: model:ir.actions.act_window,name:event.action_event_view
diff --git a/addons/event/models/event_mail.py b/addons/event/models/event_mail.py
index d87c24dd663..1013f5a083b 100644
--- a/addons/event/models/event_mail.py
+++ b/addons/event/models/event_mail.py
@@ -96,6 +96,7 @@ class EventMailScheduler(models.Model):
@api.one
def execute(self):
+ now = fields.Datetime.now()
if self.interval_type == 'after_sub':
# update registration lines
lines = [
@@ -105,9 +106,10 @@ class EventMailScheduler(models.Model):
if lines:
self.write({'mail_registration_ids': lines})
# execute scheduler on registrations
- self.mail_registration_ids.filtered(lambda reg: reg.scheduled_date and reg.scheduled_date <= datetime.strftime(fields.datetime.now(), tools.DEFAULT_SERVER_DATETIME_FORMAT)).execute()
+ self.mail_registration_ids.filtered(lambda reg: reg.scheduled_date and reg.scheduled_date <= now).execute()
else:
- if not self.mail_sent:
+ # Do not send emails if the mailing was scheduled before the event but the event is over
+ if not self.mail_sent and (self.interval_type != 'before_event' or self.event_id.date_end > now):
self.event_id.mail_attendees(self.template_id.id)
self.write({'mail_sent': True})
return True
diff --git a/addons/fetchmail/i18n/zh_CN.po b/addons/fetchmail/i18n/zh_CN.po
index 3bf58ecf606..d7a84ef44e6 100644
--- a/addons/fetchmail/i18n/zh_CN.po
+++ b/addons/fetchmail/i18n/zh_CN.po
@@ -3,15 +3,16 @@
# * fetchmail
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# liAnGjiA <liangjia@qq.com>, 2017
+# 老窦 北京 <2662059195@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.saas~18\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-20 09:53+0000\n"
"PO-Revision-Date: 2017-09-20 09:53+0000\n"
-"Last-Translator: liAnGjiA <liangjia@qq.com>, 2017\n"
+"Last-Translator: 老窦 北京 <2662059195@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -131,7 +132,7 @@ msgstr "入局邮件服务器"
#. module: fetchmail
#: model:ir.ui.view,arch_db:fetchmail.res_config_settings_view_form
msgid "Incoming Email Servers"
-msgstr ""
+msgstr "收取邮件服务器"
#. module: fetchmail
#: model:ir.ui.view,arch_db:fetchmail.view_email_server_form
@@ -218,7 +219,7 @@ msgstr "可选的自定义服务器动作,用于在收到邮件时自动触发
#. module: fetchmail
#: model:ir.ui.view,arch_db:fetchmail.res_config_settings_view_form
msgid "Outgoing Email Servers"
-msgstr ""
+msgstr "发送邮件服务器"
#. module: fetchmail
#: model:ir.model,name:fetchmail.model_mail_mail
diff --git a/addons/fleet/i18n/zh_CN.po b/addons/fleet/i18n/zh_CN.po
index 261cb8fc25c..6e7f1722098 100644
--- a/addons/fleet/i18n/zh_CN.po
+++ b/addons/fleet/i18n/zh_CN.po
@@ -5,15 +5,16 @@
# Translators:
# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# 苏州远鼎 <tiexinliu@126.com>, 2016
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
# liAnGjiA <liangjia@qq.com>, 2017
+# 老窦 北京 <2662059195@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.saas~18\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-20 09:54+0000\n"
"PO-Revision-Date: 2017-09-20 09:54+0000\n"
-"Last-Translator: liAnGjiA <liangjia@qq.com>, 2017\n"
+"Last-Translator: 老窦 北京 <2662059195@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -170,7 +171,7 @@ msgstr "更换刹车片"
#. module: fleet
#: model:ir.model,name:fleet.model_fleet_vehicle_model_brand
msgid "Brand of the vehicle"
-msgstr ""
+msgstr "车辆品牌"
#. module: fleet
#: model:fleet.vehicle.tag,name:fleet.vehicle_tag_break
diff --git a/addons/gamification/i18n/zh_CN.po b/addons/gamification/i18n/zh_CN.po
index 076d5ca7c64..94111533404 100644
--- a/addons/gamification/i18n/zh_CN.po
+++ b/addons/gamification/i18n/zh_CN.po
@@ -3,15 +3,16 @@
# * gamification
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# 卓忆科技 <zhanghao@jointd.com>, 2016
+# 老窦 北京 <2662059195@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.saas~18\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-10-02 11:27+0000\n"
"PO-Revision-Date: 2017-10-02 11:27+0000\n"
-"Last-Translator: 卓忆科技 <zhanghao@jointd.com>, 2016\n"
+"Last-Translator: 老窦 北京 <2662059195@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -355,6 +356,8 @@ msgid ""
"<span class=\"o_stat_text\">Related</span>\n"
" <span class=\"o_stat_text\">Goals</span>"
msgstr ""
+"<span class=\"o_stat_text\">相关的</span>\n"
+"<span class=\"o_stat_text\">目标</span>"
#. module: gamification
#: model:ir.actions.act_window,help:gamification.badge_list_action
diff --git a/addons/hr/views/hr_views.xml b/addons/hr/views/hr_views.xml
index 781f5faaa7e..ace9e0e1078 100644
--- a/addons/hr/views/hr_views.xml
+++ b/addons/hr/views/hr_views.xml
@@ -290,12 +290,14 @@
</field>
</record>
+ <!-- TODO remove me in master -->
<record id="hr_employee_action_subordinate_hierachy" model="ir.actions.act_window">
<field name="name">Subordinate Hierarchy</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">hr.employee</field>
- <field name="domain">[('id','in',active_ids)]</field>
- <field name="view_type">tree</field>
+ <field name="domain">['|', ('id','in',active_ids), ('parent_id', 'in', active_ids)]</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">tree,form</field>
<field name="view_id" ref="view_partner_tree2"/>
<field name="binding_model_id" ref="hr.model_hr_employee"/>
</record>
diff --git a/addons/hr_gamification/i18n/zh_CN.po b/addons/hr_gamification/i18n/zh_CN.po
index 8ce6c1d2906..4a5b825b586 100644
--- a/addons/hr_gamification/i18n/zh_CN.po
+++ b/addons/hr_gamification/i18n/zh_CN.po
@@ -3,16 +3,17 @@
# * hr_gamification
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# Xu Lei <xulei8@qq.com>, 2017
# Talway <9010446@qq.com>, 2017
+# 老窦 北京 <2662059195@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.saas~18\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-20 09:53+0000\n"
"PO-Revision-Date: 2017-09-20 09:53+0000\n"
-"Last-Translator: Talway <9010446@qq.com>, 2017\n"
+"Last-Translator: 老窦 北京 <2662059195@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -94,7 +95,7 @@ msgstr "描述他们做了什么,以及为什么它很重要(将公开)"
#. module: hr_gamification
#: model:ir.model.fields,field_description:hr_gamification.field_hr_employee_direct_badge_ids
msgid "Direct Badge"
-msgstr ""
+msgstr "直接徽章"
#. module: hr_gamification
#: model:ir.model,name:hr_gamification.model_hr_employee
diff --git a/addons/hr_holidays/i18n/zh_CN.po b/addons/hr_holidays/i18n/zh_CN.po
index 75636564d8b..f32065ad940 100644
--- a/addons/hr_holidays/i18n/zh_CN.po
+++ b/addons/hr_holidays/i18n/zh_CN.po
@@ -3,17 +3,18 @@
# * hr_holidays
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# zhichen ge <mangoge1999@gmail.com>, 2016
# liAnGjiA <liangjia@qq.com>, 2017
# Connie Xiao <connie.xiao@elico-corp.com>, 2017
+# 老窦 北京 <2662059195@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server saas~11.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-12-13 14:36+0000\n"
"PO-Revision-Date: 2017-12-13 14:36+0000\n"
-"Last-Translator: Connie Xiao <connie.xiao@elico-corp.com>, 2017\n"
+"Last-Translator: 老窦 北京 <2662059195@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -50,7 +51,7 @@ msgstr "!important; font-size: 8px; min-width: 18px\"&gt;"
#: code:addons/hr_holidays/models/hr_holidays.py:123
#, python-format
msgid "%g remaining out of %g"
-msgstr ""
+msgstr "%g剩余%g"
#. module: hr_holidays
#: code:addons/hr_holidays/models/hr_holidays.py:341
@@ -94,12 +95,12 @@ msgstr "&lt;th class=\"text-center\" colspan="
#. module: hr_holidays
#: model:ir.ui.view,arch_db:hr_holidays.view_hr_holidays_kanban
msgid "<small class=\"text-muted\">from</small>"
-msgstr ""
+msgstr "<small class=\"text-muted\">从</small>"
#. module: hr_holidays
#: model:ir.ui.view,arch_db:hr_holidays.view_hr_holidays_kanban
msgid "<small class=\"text-muted\">to</small>"
-msgstr ""
+msgstr "<small class=\"text-muted\">到</small>"
#. module: hr_holidays
#: model:ir.ui.view,arch_db:hr_holidays.report_holidayssummary
diff --git a/addons/hr_payroll/i18n/zh_CN.po b/addons/hr_payroll/i18n/zh_CN.po
index 3f05f372c02..3a9bb85de36 100644
--- a/addons/hr_payroll/i18n/zh_CN.po
+++ b/addons/hr_payroll/i18n/zh_CN.po
@@ -3,9 +3,9 @@
# * hr_payroll
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# Gary Wei <Gary.wei@elico-corp.com>, 2016
-# Martin Trigaux <mat@odoo.com>, 2016
+# Martin Trigaux, 2016
# Connie Xiao <connie.xiao@elico-corp.com>, 2017
# 老窦 北京 <2662059195@qq.com>, 2017
msgid ""
@@ -153,7 +153,7 @@ msgstr "添加内部备注"
#. module: hr_payroll
#: model:ir.ui.view,arch_db:hr_payroll.hr_contract_advantage_template_view_form
msgid "Advantage Name"
-msgstr ""
+msgstr "补贴名称"
#. module: hr_payroll
#: model:ir.actions.act_window,name:hr_payroll.act_children_salary_rules
diff --git a/addons/hr_recruitment/i18n/zh_CN.po b/addons/hr_recruitment/i18n/zh_CN.po
index 361d4e4f162..97a79799599 100644
--- a/addons/hr_recruitment/i18n/zh_CN.po
+++ b/addons/hr_recruitment/i18n/zh_CN.po
@@ -3,22 +3,22 @@
# * hr_recruitment
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# 苏州远鼎 <tiexinliu@126.com>, 2016
-# Bo Cao <cao.poobo@hotmail.com>, 2017
+# Bo Cao, 2017
# liAnGjiA <liangjia@qq.com>, 2017
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
# liulixia <liu.lixia@elico-corp.com>, 2017
# 卓忆科技 <zhanghao@jointd.com>, 2017
# 老窦 北京 <2662059195@qq.com>, 2017
-# fausthuang <faust_huang@hotmail.com>, 2017
+# fausthuang, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-16 08:08+0000\n"
"PO-Revision-Date: 2017-11-16 08:08+0000\n"
-"Last-Translator: fausthuang <faust_huang@hotmail.com>, 2017\n"
+"Last-Translator: fausthuang, 2017\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -505,7 +505,7 @@ msgstr "别名的模型"
#. module: hr_recruitment
#: model:ir.ui.menu,name:hr_recruitment.menu_crm_case_categ_all_app
msgid "All Applications"
-msgstr ""
+msgstr "全部申请"
#. module: hr_recruitment
#: model:ir.model,name:hr_recruitment.model_hr_applicant
@@ -618,7 +618,7 @@ msgstr "附件"
#. module: hr_recruitment
#: model:ir.model.fields,field_description:hr_recruitment.field_hr_recruitment_stage_template_id
msgid "Automated Email"
-msgstr ""
+msgstr "自动发邮件"
#. module: hr_recruitment
#: model:ir.model.fields,field_description:hr_recruitment.field_hr_applicant_availability
diff --git a/addons/hr_timesheet/i18n/zh_CN.po b/addons/hr_timesheet/i18n/zh_CN.po
index 069ac9b7b44..94a6b38f53b 100644
--- a/addons/hr_timesheet/i18n/zh_CN.po
+++ b/addons/hr_timesheet/i18n/zh_CN.po
@@ -3,7 +3,7 @@
# * hr_timesheet
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# 苏州远鼎 <tiexinliu@126.com>, 2016
# zyx <zheng.yaxi@elico-corp.com>, 2017
# Maie <m@maie.name>, 2017
@@ -32,7 +32,7 @@ msgstr "<span class=\"o_label\">工时表</span>"
#. module: hr_timesheet
#: model:ir.ui.view,arch_db:hr_timesheet.hr_employee_view_form_inherit_timesheet
msgid "<span class=\"o_stat_text\">Timesheets</span>"
-msgstr ""
+msgstr "<span class=\"o_stat_text\">工时表</span>"
#. module: hr_timesheet
#: model:ir.ui.view,arch_db:hr_timesheet.report_timesheet
@@ -42,7 +42,7 @@ msgstr "<span>工时表条目</span>"
#. module: hr_timesheet
#: model:ir.ui.view,arch_db:hr_timesheet.view_kanban_account_analytic_line
msgid "<strong>Duration: </strong>"
-msgstr ""
+msgstr "<strong>时长:</strong>"
#. module: hr_timesheet
#: model:ir.ui.view,arch_db:hr_timesheet.report_timesheet
diff --git a/addons/hr_timesheet/models/project.py b/addons/hr_timesheet/models/project.py
index 0f177599192..e335789a230 100644
--- a/addons/hr_timesheet/models/project.py
+++ b/addons/hr_timesheet/models/project.py
@@ -50,7 +50,7 @@ class Task(models.Model):
if 'project_id' in values:
project_id = values.get('project_id')
# a timesheet must have an analytic account (and a project)
- if not project_id:
+ if self and not project_id:
raise UserError(_('This task must have a project since they are linked to timesheets.'))
self.sudo().mapped('timesheet_ids').write({
'project_id': project_id,
diff --git a/addons/http_routing/models/ir_http.py b/addons/http_routing/models/ir_http.py
index 34e100cea2e..4011f4987d7 100644
--- a/addons/http_routing/models/ir_http.py
+++ b/addons/http_routing/models/ir_http.py
@@ -418,6 +418,8 @@ class IrHttp(models.AbstractModel):
try:
_, path = rule.build(arguments)
assert path is not None
+ except odoo.exceptions.MissingError:
+ return cls._handle_exception(werkzeug.exceptions.NotFound())
except Exception as e:
return cls._handle_exception(e)
diff --git a/addons/iap/static/src/xml/iap_templates.xml b/addons/iap/static/src/xml/iap_templates.xml
index 9b52a4ec445..4995c4527e3 100644
--- a/addons/iap/static/src/xml/iap_templates.xml
+++ b/addons/iap/static/src/xml/iap_templates.xml
@@ -17,9 +17,11 @@
</div>
<t t-extend="DashboardApps">
- <t t-jquery=".o_web_settings_dashboard_pills" t-operation="append">
- <a class="pull-right" t-att-href="widget.data.url" target="_blank">
- <i class="fa fa-money fa-2x text-muted"/> In-App Purchases</a>
+ <t t-jquery=".o_web_settings_dashboard_pills" t-operation="after">
+ <div class="text-center" style="display: inline-block">
+ <a t-att-href="widget.data.url" target="_blank">
+ <i class="fa fa-money fa-2x text-muted"/> In-App Purchases</a>
+ </div>
</t>
</t>
diff --git a/addons/l10n_in_hr_payroll/views/report_payslip_details_template.xml b/addons/l10n_in_hr_payroll/views/report_payslip_details_template.xml
index 72bc16378ab..44137ab88f5 100644
--- a/addons/l10n_in_hr_payroll/views/report_payslip_details_template.xml
+++ b/addons/l10n_in_hr_payroll/views/report_payslip_details_template.xml
@@ -62,7 +62,8 @@
<strong><span t-esc="h['rule_category']"/></strong>
</td>
<td>
- <strong><span t-esc="format(h['total'], 'monetary', o.company_id.currency_id)"/></strong>
+ <strong><span t-esc="h['total']"
+ t-esc-options='{"widget": "monetary", "display_currency": o.company_id.currency_id}'/></strong>
</td>
</tr>
</t>
@@ -75,7 +76,8 @@
<span t-esc="'..'*h['level']"/><span t-esc="h['rule_category']"/>
</td>
<td>
- <span t-esc="format(h['total'], 'monetary', o.company_id.currency_id)"/>
+ <span t-esc="h['total']"
+ t-esc-options='{"widget": "monetary", "display_currency": o.company_id.currency_id}'/>
</td>
</tr>
</t>
diff --git a/addons/lunch/i18n/zh_CN.po b/addons/lunch/i18n/zh_CN.po
index d5b168bf6d4..ea65acfd000 100644
--- a/addons/lunch/i18n/zh_CN.po
+++ b/addons/lunch/i18n/zh_CN.po
@@ -3,17 +3,18 @@
# * lunch
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# 苏州远鼎 <tiexinliu@126.com>, 2016
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
# Jeff Yu - Elico Corp <jeff.yu@elico-corp.com>, 2017
+# 老窦 北京 <2662059195@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.saas~18\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-10-02 11:26+0000\n"
"PO-Revision-Date: 2017-10-02 11:26+0000\n"
-"Last-Translator: Jeff Yu - Elico Corp <jeff.yu@elico-corp.com>, 2017\n"
+"Last-Translator: 老窦 北京 <2662059195@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -115,7 +116,7 @@ msgstr "已归档"
#. module: lunch
#: model:ir.model.fields,field_description:lunch.field_lunch_order_balance_visible
msgid "Balance Visible"
-msgstr ""
+msgstr "余额可见"
#. module: lunch
#: model:ir.model.fields,field_description:lunch.field_lunch_alert_start_hour
@@ -125,7 +126,7 @@ msgstr "介于"
#. module: lunch
#: model:ir.ui.view,arch_db:lunch.view_lunch_alert_kanban
msgid "Between:"
-msgstr ""
+msgstr "介于:"
#. module: lunch
#: model:ir.ui.view,arch_db:lunch.lunch_cashmove_view_search_2
diff --git a/addons/mail/i18n/nl.po b/addons/mail/i18n/nl.po
index 59fe917232c..47e7ed6123e 100644
--- a/addons/mail/i18n/nl.po
+++ b/addons/mail/i18n/nl.po
@@ -6,7 +6,7 @@
# Yenthe Van Ginneken <yenthespam@gmail.com>, 2016
# Stephan Van Dyck <stephan.vandyck@vanroey.be>, 2016
# Cas Vissers <casvissers@brahoo.nl>, 2016
-# Martin Trigaux <mat@odoo.com>, 2016
+# Martin Trigaux, 2016
# Volluta <volluta@tutanota.com>, 2016
# Erwin van der Ploeg <erwin@odooexperts.nl>, 2016
# Eric Geens <ericgeens@yahoo.com>, 2016
@@ -5553,6 +5553,9 @@ msgid ""
"and Enterprise versions. Online users already benefit from a ready-to-use "
"email server (@mycompany.odoo.com)."
msgstr ""
+"Het gebruik van uw eigen e-mailserver is vereist voor het verzenden / "
+"ontvangen van e-mails in Community- en Enterprise-versies. Online gebruikers"
+" profiteren van een kant-en-klare e-mailserver (@ mijnbedrijf.odoo.com)."
#. module: mail
#: code:addons/mail/models/mail_thread.py:670
diff --git a/addons/mail/i18n/zh_CN.po b/addons/mail/i18n/zh_CN.po
index 05b4f0ea1d4..7853c0ce679 100644
--- a/addons/mail/i18n/zh_CN.po
+++ b/addons/mail/i18n/zh_CN.po
@@ -8,7 +8,7 @@
# liAnGjiA <liangjia@qq.com>, 2017
# liulixia <liu.lixia@elico-corp.com>, 2017
# waveyeung <waveyeung@qq.com>, 2017
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
# Rona Lin <ssauapw@qq.com>, 2017
# xiaobin wu <bd5dml@gmail.com>, 2017
# Michael Chong <michaelchong2005@gmail.com>, 2017
@@ -183,7 +183,7 @@ msgstr "%s 加入到 %s 网络."
#: code:addons/mail/static/src/xml/client_action.xml:211
#, python-format
msgid "&nbsp;("
-msgstr ""
+msgstr "&nbsp;("
#. module: mail
#. openerp-web
@@ -5553,7 +5553,7 @@ msgstr "一般"
#. module: mail
#: model:ir.ui.view,arch_db:mail.message_origin_link
msgid "has been"
-msgstr ""
+msgstr "已经"
#. module: mail
#: code:addons/mail/models/mail_alias.py:282
diff --git a/addons/mail/models/mail_template.py b/addons/mail/models/mail_template.py
index 5dfaf162573..586c5e9c281 100644
--- a/addons/mail/models/mail_template.py
+++ b/addons/mail/models/mail_template.py
@@ -331,7 +331,7 @@ class MailTemplate(models.Model):
def _process_link(url):
new_url = urls.url_parse(url)
- if new_url.scheme and new_url.netloc:
+ if new_url.scheme and (new_url.netloc or new_url.scheme == 'mailto'):
return url
return new_url.replace(scheme=base.scheme, netloc=base.netloc).to_url()
diff --git a/addons/mail/static/src/js/discuss.js b/addons/mail/static/src/js/discuss.js
index 4de7e637e8b..52bf2b75822 100644
--- a/addons/mail/static/src/js/discuss.js
+++ b/addons/mail/static/src/js/discuss.js
@@ -905,7 +905,7 @@ var Discuss = Widget.extend(ControlPanelMixin, {
var def = window.Notification && window.Notification.requestPermission();
if (def) {
def.then(function (value) {
- if (value === 'denied') {
+ if (value !== 'granted') {
self._sendNotification(self, _t('Permission denied'),
_t('Odoo will not have the permission to send native notifications on this device.'));
} else {
diff --git a/addons/maintenance/i18n/zh_CN.po b/addons/maintenance/i18n/zh_CN.po
index 3831fdaf496..42941d300a1 100644
--- a/addons/maintenance/i18n/zh_CN.po
+++ b/addons/maintenance/i18n/zh_CN.po
@@ -3,20 +3,20 @@
# * maintenance
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# 卓忆科技 <zhanghao@jointd.com>, 2016
# Eddie Lim <bhweelim@yahoo.com>, 2017
# liulixia <liu.lixia@elico-corp.com>, 2017
# Gary Wei <Gary.wei@elico-corp.com>, 2017
# 老窦 北京 <2662059195@qq.com>, 2017
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-30 13:12+0000\n"
"PO-Revision-Date: 2017-11-30 13:12+0000\n"
-"Last-Translator: Martin Trigaux <mat@odoo.com>, 2017\n"
+"Last-Translator: Martin Trigaux, 2017\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -62,12 +62,12 @@ msgstr "<span>视图</span>"
#. module: maintenance
#: model:ir.ui.view,arch_db:maintenance.view_maintenance_equipment_category_kanban
msgid "<strong>Equipments:</strong>"
-msgstr ""
+msgstr "<strong>设备:</strong>"
#. module: maintenance
#: model:ir.ui.view,arch_db:maintenance.view_maintenance_equipment_category_kanban
msgid "<strong>Maintenance:</strong>"
-msgstr ""
+msgstr "<strong>维保:"
#. module: maintenance
#: model:ir.model.fields,help:maintenance.field_maintenance_equipment_category_alias_defaults
diff --git a/addons/maintenance/models/maintenance.py b/addons/maintenance/models/maintenance.py
index 689db6b2bfb..ca99ebb28b5 100644
--- a/addons/maintenance/models/maintenance.py
+++ b/addons/maintenance/models/maintenance.py
@@ -374,7 +374,7 @@ class MaintenanceTeam(models.Model):
_name = 'maintenance.team'
_description = 'Maintenance Teams'
- name = fields.Char(required=True)
+ name = fields.Char(required=True, translate=True)
active = fields.Boolean(default=True)
company_id = fields.Many2one('res.company', string='Company', required=True,
default=lambda self: self.env.user.company_id)
diff --git a/addons/mass_mailing/i18n/zh_CN.po b/addons/mass_mailing/i18n/zh_CN.po
index 479bec65409..23fbbde7ef7 100644
--- a/addons/mass_mailing/i18n/zh_CN.po
+++ b/addons/mass_mailing/i18n/zh_CN.po
@@ -3,13 +3,13 @@
# * mass_mailing
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
-# fausthuang <faust_huang@hotmail.com>, 2017
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
+# fausthuang, 2017
# 卓忆科技 <zhanghao@jointd.com>, 2017
# LIYan <liliane.li@elico-corp.com>, 2017
-# Bo Cao <cao.poobo@hotmail.com>, 2017
+# Bo Cao, 2017
# Yuan Xulei <hi@yxl.name>, 2017
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
# 钟小华 <mackz@sina.com>, 2017
# Gary Wei <Gary.wei@elico-corp.com>, 2017
# niulin lnc. <admin@niulin.net>, 2017
@@ -35,7 +35,7 @@ msgstr ""
#. module: mass_mailing
#: model:ir.ui.view,arch_db:mass_mailing.s_mail_block_comparison_table
msgid "$18"
-msgstr ""
+msgstr "$18"
#. module: mass_mailing
#: model:ir.ui.view,arch_db:mass_mailing.s_mail_block_discount2
@@ -77,6 +77,9 @@ msgid ""
" <span class=\"fa fa-compass fa-2x text-delta\"/>\n"
" &amp;nbsp;"
msgstr ""
+"&amp;nbsp;\n"
+" 1\n"
+" &amp;nbsp"
#. module: mass_mailing
#: model:ir.ui.view,arch_db:mass_mailing.s_mail_block_steps
diff --git a/addons/mass_mailing/static/src/js/mass_mailing_editor.js b/addons/mass_mailing/static/src/js/mass_mailing_editor.js
index e88d77864d2..62f2062b75c 100644
--- a/addons/mass_mailing/static/src/js/mass_mailing_editor.js
+++ b/addons/mass_mailing/static/src/js/mass_mailing_editor.js
@@ -327,20 +327,20 @@ snippets_editor.Class.include({
$body.removeClass(all_classes).addClass(theme_params.className);
var $old_layout = $editable_area.find(".o_layout");
- // This wrapper structure is the only way to have a responsive and
- // centered fixed-width content column on all mail clients
var $new_wrapper, $new_wrapper_content;
if (theme_params.nowrap) {
$new_wrapper = $new_wrapper_content = $("<div/>", {"class": "oe_structure"});
}
else {
+ // This wrapper structure is the only way to have a responsive and
+ // centered fixed-width content column on all mail clients
$new_wrapper = $('<table/>', {class: 'o_mail_wrapper'});
- $new_wrapper_content = $("<td/>", {class: 'o_mail_no_resize o_mail_wrapper_td oe_structure'});
+ $new_wrapper_content = $("<td/>", {class: 'o_mail_no_resize o_mail_no_colorpicker o_mail_wrapper_td oe_structure'});
$new_wrapper.append($('<tr/>').append(
- $("<td/>", {class: 'o_mail_no_resize'}),
+ $("<td/>", {class: 'o_mail_no_resize o_not_editable', contenteditable: 'false'}),
$new_wrapper_content,
- $("<td/>", {class: 'o_mail_no_resize'})
+ $("<td/>", {class: 'o_mail_no_resize o_not_editable', contenteditable: 'false'})
));
}
var $new_layout = $("<div/>", {"class": "o_layout " + theme_params.className}).append($new_wrapper);
diff --git a/addons/mass_mailing/views/snippets_themes_options.xml b/addons/mass_mailing/views/snippets_themes_options.xml
index 50c40473f12..dd8cdee5a9e 100644
--- a/addons/mass_mailing/views/snippets_themes_options.xml
+++ b/addons/mass_mailing/views/snippets_themes_options.xml
@@ -6,9 +6,12 @@
<t t-raw="0"/>
<div data-js="sizing_x"
- data-selector="img, .mv, .col_mv, td:not(.o_mail_no_resize), th"/>
+ data-selector="img, .mv, .col_mv, td, th"
+ data-exclude=".o_mail_no_resize, .o_mail_wrapper_td"/>
- <div data-js="table_item" data-selector="td, th"/>
+ <div data-js="table_item"
+ data-selector="td, th"
+ data-exclude=".o_mail_wrapper_td"/>
<div data-js="table_row"
data-selector="tr:has(> .row), tr:has(> .col_mv)"
@@ -17,11 +20,13 @@
<div data-js="table_column"
data-selector=".col>td, .col>th"
+ data-exclude=".o_mail_wrapper_td"
data-drop-near=".col>td, .col>th">
</div>
<div data-js="table_column_mv"
data-selector=".col_mv, td, th"
+ data-exclude=".o_mail_wrapper_td"
data-drop-near=".col_mv, td, th">
</div>
@@ -32,14 +37,16 @@
</div>
<div data-js="sizing_y"
- data-selector="[data-oe-field='body_html'] > div:not(.o_layout), [data-oe-field='body_html'] .oe_structure > div, td:not(.o_mail_no_resize), th"/>
+ data-selector="[data-oe-field='body_html'] > div:not(.o_layout), [data-oe-field='body_html'] .oe_structure > div, th"
+ data-exclude=".o_mail_no_resize, .o_mail_wrapper_td">
<div data-js="colorpicker"
data-selector="
- [data-oe-field='body_html'] > div:not(.o_layout):not(.o_mail_no_colorpicker),
- [data-oe-field='body_html'] .oe_structure > div:not(.o_mail_no_colorpicker),
+ [data-oe-field='body_html'] > div:not(.o_layout),
+ [data-oe-field='body_html'] .oe_structure > div,
td, th
- ">
+ "
+ data-exclude=".o_mail_no_colorpicker">
<li class="dropdown-submenu">
<a tabindex="-1" href="#"><i class="fa fa-eyedropper"/>Background Color</a>
<ul class="dropdown-menu">
diff --git a/addons/membership/i18n/zh_CN.po b/addons/membership/i18n/zh_CN.po
index a95419a701a..acb87437d9b 100644
--- a/addons/membership/i18n/zh_CN.po
+++ b/addons/membership/i18n/zh_CN.po
@@ -3,14 +3,15 @@
# * membership
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
+# 老窦 北京 <2662059195@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.saas~18\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-20 09:53+0000\n"
"PO-Revision-Date: 2017-09-20 09:53+0000\n"
-"Last-Translator: Jeffery CHEN <jeffery9@gmail.com>, 2016\n"
+"Last-Translator: 老窦 北京 <2662059195@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -36,12 +37,12 @@ msgstr "# 正在等待"
#. module: membership
#: model:ir.ui.view,arch_db:membership.membership_products_kanban
msgid "<i class=\"fa fa-clock-o\" aria-hidden=\"true\"/><strong> From: </strong>"
-msgstr ""
+msgstr "<i class=\"fa fa-clock-o\" aria-hidden=\"true\"/><strong>从:</strong>"
#. module: membership
#: model:ir.ui.view,arch_db:membership.membership_products_kanban
msgid "<strong> To:</strong>"
-msgstr ""
+msgstr "<strong>到:</strong>"
#. module: membership
#: model:ir.model.fields,help:membership.field_res_partner_associate_member
diff --git a/addons/mrp/i18n/nl.po b/addons/mrp/i18n/nl.po
index ed18cbbad44..f5eafb94623 100644
--- a/addons/mrp/i18n/nl.po
+++ b/addons/mrp/i18n/nl.po
@@ -6,7 +6,7 @@
# Yenthe Van Ginneken <yenthespam@gmail.com>, 2016
# Stephan Van Dyck <stephan.vandyck@vanroey.be>, 2016
# Cas Vissers <casvissers@brahoo.nl>, 2016
-# Martin Trigaux <mat@odoo.com>, 2016
+# Martin Trigaux, 2016
# Erwin van der Ploeg <erwin@odooexperts.nl>, 2016
# Eric Geens <ericgeens@yahoo.com>, 2016
# wilcobergacker <wilcobergacker@gmail.com>, 2016
@@ -1656,6 +1656,9 @@ msgid ""
" of workers and/or machines, they are used for costing, scheduling, capacity planning, etc.\n"
" The Work Centers are defined on the Routing's operations."
msgstr ""
+"Productie handelingen worden verwerkt in werkcentra. Een werkcentrum kan worden samengesteld\n"
+" uit werknemers en/of machines, ze worden gebruikt voor calculatie, planning, capaciteitsplanning, etc.\n"
+" De werkcentra worden gedefinieerd bij de bewerkingen van de routering."
#. module: mrp
#: model:ir.actions.act_window,help:mrp.mrp_workcenter_kanban_action
@@ -1664,6 +1667,9 @@ msgid ""
" workers and/or machines, they are used for costing, scheduling, capacity planning, etc.\n"
" The Work Centers are defined on the Routing's operations."
msgstr ""
+"Productie handelingen worden verwerkt in werkcentra. Een werkcentrum kan worden samengesteld\n"
+" uit werknemers en/of machines, ze worden gebruikt voor calculatie, planning, capaciteitsplanning, etc.\n"
+" De werkcentra worden gedefinieerd bij de bewerkingen van de routering."
#. module: mrp
#: model:ir.actions.act_window,help:mrp.mrp_production_action_planning
@@ -3288,6 +3294,9 @@ msgid ""
"is useful if you have long lead time and if you produce based on sales "
"forecasts."
msgstr ""
+"Het gebruik van een MPS rapport om uw bevoorrading- en productieactiviteiten"
+" te plannen, is handig als u een lange doorlooptijd hebt en als u produceert"
+" op basis van verkoopprognoses."
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_message_valid_until
@@ -3467,6 +3476,8 @@ msgid ""
"Work Order Messages are used to warn users about any change in the product,\n"
" process, etc. These messages will appear on the involved Work Orders."
msgstr ""
+"Werkorderberichten worden gebruikt om gebruikers te waarschuwen voor alle veranderingen in het product,\n"
+" proces, etc. Deze berichten verschijnen op de gerelateerde werkorders."
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.res_config_settings_view_form
@@ -3524,6 +3535,8 @@ msgid ""
" Manufacturing Order. Work Orders are trigerred by Manufacturing Orders,\n"
" they are based on the Routing defined on these ones"
msgstr ""
+"Werkorders zijn bewerkingen die moeten worden verwerkt in een werkcentrum om een productie order te realiseren. Werkorders worden aangemaakt door productieorders,\n"
+" ze zijn gebaseerd op de routing die op de stuklijst is gedefinieerd."
#. module: mrp
#: model:ir.actions.act_window,help:mrp.mrp_workorder_todo
@@ -3532,6 +3545,8 @@ msgid ""
" Manufacturing Order. Work Orders are trigerred by Manufacturing Orders,\n"
" they are based on the Routing defined on these ones."
msgstr ""
+"Werkorders zijn bewerkingen die moeten worden verwerkt in een Werkcentrum om een productie order te realiseren. Werkorders worden aangemaakt door productieorders,\n"
+" ze zijn gebaseerd op de routing die op de stuklijst is gedefinieerd."
#. module: mrp
#: model:ir.actions.act_window,help:mrp.action_mrp_workorder_workcenter
@@ -3540,6 +3555,8 @@ msgid ""
" Manufacturing Order. Work Orders are trigerred by Manufacturing Orders,\n"
" they are based on the Routing defined on these ones."
msgstr ""
+"Werkorders zijn bewerkingen die moeten worden verwerkt in een Werkcentrum om een productie order te realiseren. Werkorders worden aangemaakt door productieorders,\n"
+" ze zijn gebaseerd op de routing die op de stuklijst is gedefinieerd."
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_form_view
diff --git a/addons/mrp/i18n/zh_CN.po b/addons/mrp/i18n/zh_CN.po
index 597ce1ae8c1..9cd6ba4ea34 100644
--- a/addons/mrp/i18n/zh_CN.po
+++ b/addons/mrp/i18n/zh_CN.po
@@ -4,7 +4,7 @@
#
# Translators:
# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
-# Martin Trigaux <mat@odoo.com>, 2016
+# Martin Trigaux, 2016
# liAnGjiA <liangjia@qq.com>, 2016
# Gary Wei <Gary.wei@elico-corp.com>, 2016
# waveyeung <waveyeung@qq.com>, 2016
@@ -15,7 +15,7 @@
# Jeff Yu - Elico Corp <jeff.yu@elico-corp.com>, 2017
# xiaobin wu <bd5dml@gmail.com>, 2017
# 老窦 北京 <2662059195@qq.com>, 2017
-# fausthuang <faust_huang@hotmail.com>, 2017
+# fausthuang, 2017
# 山西清水欧度(QQ:54773801) <54773801@qq.com>, 2018
msgid ""
msgstr ""
@@ -74,7 +74,7 @@ msgstr "# 工单"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_product_template_used_in_bom_count
msgid "# of BoM Where is Used"
-msgstr ""
+msgstr "#BOM 在哪里被使用"
#. module: mrp
#: code:addons/mrp/models/mrp_bom.py:293
@@ -86,6 +86,11 @@ msgid ""
" Use this feature to store any files, like drawings or specifications.\n"
" </p>"
msgstr ""
+"<p class =“oe_view_nocontent_create”>\n"
+"                         点击上传文件到您的产品。\n"
+"                    </ p> <p>\n"
+"                         使用此功能存储任何文件,如图纸或规格。\n"
+"                    </ p>"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_production_form_view
@@ -94,6 +99,9 @@ msgid ""
"['|',('availability', 'in', ('assigned', 'none')), ('state', 'not in', "
"('confirmed','progress'))]}\">Raw materials not available!</span>"
msgstr ""
+"<span class=“label label-danger” attrs=“{‘invisible’: [‘|’,(‘availability’, "
+"‘in’, (‘assigned’, ‘none’)), (‘state’, ‘not in’, "
+"(‘confirmed’,’progress’))]}”>原材料不可用!</span>"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_workcenter_view
@@ -167,16 +175,18 @@ msgid ""
"<strong attrs=\"{'invisible': [('date_planned_finished', '=', False)]}\" class=\"mr8\">to</strong>\n"
" <strong class=\"oe_edit_only mr8\" attrs=\"{'invisible': [('date_planned_finished', '!=', False)]}\">to</strong>"
msgstr ""
+"<strong attrs=“{‘invisible’: [(‘date_planned_finished’, ‘=‘, False)]}” class=“mr8”>至</strong>\n"
+" <strong class=“oe_edit_only mr8” attrs=“{‘invisible’: [(‘date_planned_finished’, ‘!=‘, False)]}”>至</strong>"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_production_workcenter_form_view_inherit
msgid "<strong class=\"mr8\">to</strong>"
-msgstr ""
+msgstr "<strong class =“mr8”>至</ strong>"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.view_mrp_workcenter_productivity_loss_kanban
msgid "<strong>Effectiveness Category: </strong>"
-msgstr ""
+msgstr "<strong>生效类别:</ strong>"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.view_mrp_workcenter_productivity_loss_kanban
@@ -292,7 +302,7 @@ msgid ""
"Add by-products to bills of materials. This can be used to get several "
"finished products as well. Without this option you only do: A + B = C. With "
"the option: A + B = C + D."
-msgstr ""
+msgstr "添加副产品到物料清单。 这也可以用来获得几个成品。 没有这个选项,你只能这样做:A + B = C。选项:A + B = C + D"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.res_config_settings_view_form
@@ -316,16 +326,19 @@ msgid ""
"Lines with 0 quantities can be used as optional lines. \n"
"You should install the mrp_byproduct module if you want to manage extra products on BoMs !"
msgstr ""
+"所有产品数量必须大于或等于0。\n"
+"数量为0的行可以用作可选行。\n"
+"如果要管理BoM上的额外产品,则应安装mrp_byproduct模块!"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_production_post_visible
msgid "Allowed to Post Inventory"
-msgstr ""
+msgstr "允许盘存"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_production_unreserve_visible
msgid "Allowed to Unreserve Inventory"
-msgstr ""
+msgstr "允许取消保留库存"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.view_change_production_qty_wizard
@@ -427,6 +440,8 @@ msgid ""
"Based on a Bill of Material, a Manufacturing Order will consume raw materials\n"
" and produce finished products."
msgstr ""
+"根据材料清单,制造订单将消耗原材料\n"
+"                 并生产成品。"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.report_mrporder
@@ -615,32 +630,32 @@ msgstr "清除"
#. module: mrp
#: model:ir.actions.act_window,help:mrp.mrp_workcenter_kanban_action
msgid "Click here"
-msgstr ""
+msgstr "点击这里"
#. module: mrp
#: model:ir.actions.act_window,help:mrp.mrp_production_action
msgid "Click here to create a Manufacturing Order."
-msgstr ""
+msgstr "点击这里创建一个制造订单。"
#. module: mrp
#: model:ir.actions.act_window,help:mrp.mrp_unbuild
msgid "Click here to create a Unbuild Order."
-msgstr ""
+msgstr "点击这里创建一个拆卸单。"
#. module: mrp
#: model:ir.actions.act_window,help:mrp.mrp_routing_action
msgid "Click here to create a new Routing."
-msgstr ""
+msgstr "点击这里创建一个新的路由。"
#. module: mrp
#: model:ir.actions.act_window,help:mrp.mrp_workcenter_action
msgid "Click here to create a new Work Center"
-msgstr ""
+msgstr "点击这里创建一个新的工作中心"
#. module: mrp
#: model:ir.actions.act_window,help:mrp.mrp_message_action_main
msgid "Click here to create a new Work Order Message."
-msgstr ""
+msgstr "点击这里创建一个新的工作订单信息。"
#. module: mrp
#: model:ir.actions.act_window,help:mrp.action_work_orders
@@ -722,17 +737,17 @@ msgstr "消耗的"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild_consume_line_ids
msgid "Consumed Disassembly Lines"
-msgstr ""
+msgstr "拆卸单行"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_stock_move_consume_unbuild_id
msgid "Consumed Disassembly Order"
-msgstr ""
+msgstr "拆卸单"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_production_consumed_less_than_planned
msgid "Consumed Less Than Planned"
-msgstr ""
+msgstr "消费量少于计划数量"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_production_form_view
@@ -762,7 +777,7 @@ msgstr "创建工单"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_stock_move_created_production_id
msgid "Created Production Order"
-msgstr ""
+msgstr "创建生产订单"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_change_production_qty_create_uid
@@ -837,12 +852,12 @@ msgstr "日期"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_production_date_planned_finished
msgid "Deadline End"
-msgstr ""
+msgstr "截止日期结束"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_production_date_planned_start
msgid "Deadline Start"
-msgstr ""
+msgstr "截止日期开始"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_form_view
@@ -852,7 +867,7 @@ msgstr "默认时长"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_res_config_settings_use_manufacturing_lead
msgid "Default Manufacturing Lead Time"
-msgstr ""
+msgstr "默认制造提前期"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.view_mrp_bom_filter
@@ -889,7 +904,7 @@ msgstr "目的位置"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_stock_move_unbuild_id
msgid "Disassembly Order"
-msgstr ""
+msgstr "拆卸顺序"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_message_view_form_embedded_bom
@@ -1049,13 +1064,13 @@ msgstr "完成的批次"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_stock_move_finished_lots_exist
msgid "Finished Lots Exist"
-msgstr ""
+msgstr "已存在完成的批次"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_production_finished_move_line_ids
#: model:ir.ui.view,arch_db:mrp.view_finisehd_move_line
msgid "Finished Product"
-msgstr ""
+msgstr "完成的产品"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_production_move_finished_ids
@@ -1091,7 +1106,7 @@ msgstr "一般信息"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_mrp_document_priority
msgid "Gives the sequence order when displaying a list of MRP documents."
-msgstr ""
+msgstr "在显示MRP文档列表时给出序列顺序。"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_mrp_bom_sequence
@@ -1107,7 +1122,7 @@ msgstr "指定一个编号,用于在显示一系列工作中心时排序。"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_mrp_workcenter_sequence
msgid "Gives the sequence order when displaying a list of work centers."
-msgstr ""
+msgstr "显示工作中心列表时显示顺序顺序。"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_mrp_bom_line_sequence
@@ -1142,7 +1157,7 @@ msgstr "有附件"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_workorder_is_produced
msgid "Has Been Produced"
-msgstr ""
+msgstr "已生产"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_production_has_moves
@@ -1215,7 +1230,7 @@ msgstr "如果去掉这个启用的勾,工艺不需要删除就可以隐藏"
#: model:ir.ui.view,arch_db:mrp.mrp_production_form_view
msgid ""
"If the manufacturing order is unlocked you can add to the initial demand."
-msgstr ""
+msgstr "如果制造订单被解锁,您可以添加到最初的需求。"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_bom_form_view
@@ -1224,6 +1239,9 @@ msgid ""
" order for this product, the delivery order will contain the raw\n"
" materials, instead of the finished product."
msgstr ""
+"如果产品是成品:处理销售\n"
+"                                     为了这个产品,交货单将包含原料\n"
+"                                     材料,而不是成品。"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_bom_form_view
@@ -1233,6 +1251,9 @@ msgid ""
" the raw materials of that product will be added to the\n"
" manufacturing order of the final product."
msgstr ""
+"如果产品是半成品:在处理包含该产品作为组件的制造订单时,\n"
+"                                     该产品的原料将被添加到\n"
+"                                     最终产品的生产订单。"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_workcenter_kanban
@@ -1303,7 +1324,7 @@ msgstr "这是公开文档"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_workorder_is_user_working
msgid "Is the Current User Working"
-msgstr ""
+msgstr "当前用户正在工作吗?"
#. module: mrp
#: code:addons/mrp/models/mrp_workcenter.py:162
@@ -1317,7 +1338,7 @@ msgid ""
"Keep empty if you produce at the location where you find the raw "
"materials.Set a location if you produce at a fixed location. This can be a "
"partner location if you subcontract the manufacturing operations."
-msgstr ""
+msgstr "如果您在找到原材料的位置生产,请保持空置。如果您在固定的位置生产,请设置一个位置。 如果您转包制造业务,这可以是合作伙伴的位置。"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.view_mrp_bom_filter selection:mrp.bom,type:0
@@ -1412,7 +1433,7 @@ msgstr "逾期活动"
msgid ""
"Lines need to be deleted, but can not as you still have some quantities to "
"consume in them. "
-msgstr ""
+msgstr "行需要删除,但不能,因为您还有一些要消耗的数量。"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_unbuild_location_id
@@ -1460,7 +1481,7 @@ msgstr "批次/序列号码"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.view_finisehd_move_line
msgid "Lot/Serial number"
-msgstr ""
+msgstr "批号/序列号"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_stock_move_active_move_line_ids
@@ -1537,7 +1558,7 @@ msgstr "制造提前期(日)"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_stock_warehouse_manu_type_id
msgid "Manufacturing Operation Type"
-msgstr ""
+msgstr "生产操作类型"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_change_production_qty_mo_id
@@ -1573,6 +1594,8 @@ msgid ""
"Manufacturing Orders can be generated automatically based on customer\n"
" requirements or reordering rules."
msgstr ""
+"制造订单可以根据客户自动生成\n"
+" 要求或重新排序规则。"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.view_mrp_production_filter
@@ -1602,6 +1625,9 @@ msgid ""
" of workers and/or machines, they are used for costing, scheduling, capacity planning, etc.\n"
" The Work Centers are defined on the Routing's operations."
msgstr ""
+"制造业务在工作中心进行。 工作中心可以组成\n"
+"                 的工人和/或机器,它们被用于成本核算,调度,能力计划等。\n"
+"                 工作中心在路由的操作上定义。"
#. module: mrp
#: model:ir.actions.act_window,help:mrp.mrp_workcenter_kanban_action
@@ -1610,6 +1636,9 @@ msgid ""
" workers and/or machines, they are used for costing, scheduling, capacity planning, etc.\n"
" The Work Centers are defined on the Routing's operations."
msgstr ""
+"制造业务在工作中心进行。 一个工作中心可以组成\n"
+"                 工人和/或机器,它们用于成本核算,进度安排,能力规划等。\n"
+"                 工作中心在路由的操作上定义"
#. module: mrp
#: model:ir.actions.act_window,help:mrp.mrp_production_action_planning
@@ -1639,7 +1668,7 @@ msgstr "主生产排程"
#: model:ir.model.fields,field_description:mrp.field_mrp_production_availability
#: model:ir.model.fields,field_description:mrp.field_mrp_workorder_production_availability
msgid "Materials Availability"
-msgstr ""
+msgstr "材料可用性"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_message_message
@@ -1672,7 +1701,7 @@ msgstr "移动完成"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.res_config_settings_view_form
msgid "Move forward deadline start dates by"
-msgstr ""
+msgstr "提前截止日期开始日期"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_workorder_move_raw_ids
@@ -1692,7 +1721,7 @@ msgstr "MRP 工作中心"
#. module: mrp
#: model:ir.actions.server,name:mrp.production_order_server_action
msgid "Mrp: Plan Production Orders"
-msgstr ""
+msgstr "Mrp:计划生产订单"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_unbuild_search_view
@@ -1752,6 +1781,8 @@ msgid ""
"No data to display. You will get here statistics about the\n"
" work orders duration related to this routing."
msgstr ""
+"没有数据显示。 你会得到这里的统计数据\n"
+"               与此路由相关的工作订单持续时间。"
#. module: mrp
#: model:ir.actions.act_window,help:mrp.mrp_workcenter_productivity_loss_action
@@ -1767,7 +1798,7 @@ msgstr "此设备没有生产力损失"
#: model:ir.ui.view,arch_db:mrp.mrp_workcenter_kanban
msgid ""
"No workorder currently in progress. Click to mark work center as blocked."
-msgstr ""
+msgstr "没有进行工单。单击以将工作中心标记为阻塞。"
#. module: mrp
#: selection:mrp.production,availability:0
@@ -1784,7 +1815,7 @@ msgstr "一般"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_stock_scrap_workorder_id
msgid "Not to restrict or prefer quants, but informative."
-msgstr ""
+msgstr "不限制或偏好数量,但内容丰富。"
#. module: mrp
#: selection:mrp.production,priority:0
@@ -1799,28 +1830,28 @@ msgstr "备注"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_stock_picking_type_count_mo_late
msgid "Number of Manufacturing Orders Late"
-msgstr ""
+msgstr "制造订单数量延迟"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_stock_picking_type_count_mo_waiting
msgid "Number of Manufacturing Orders Waiting"
-msgstr ""
+msgstr "制造订单等待的数量"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_stock_picking_type_count_mo_todo
msgid "Number of Manufacturing Orders to Process"
-msgstr ""
+msgstr "制造订单的数量"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_mrp_workcenter_capacity
#: model:ir.model.fields,help:mrp.field_mrp_workorder_capacity
msgid "Number of pieces that can be produced in parallel."
-msgstr ""
+msgstr "可以并行生产的件数。"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_workcenter_kanban
msgid "OEE"
-msgstr ""
+msgstr "OEE"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_oee_target
@@ -1842,7 +1873,7 @@ msgstr "根据补货规则Odoo用BOM自动的生产生产订单"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_oee
msgid "Oee"
-msgstr ""
+msgstr "Oee"
#. module: mrp
#: selection:mrp.routing.workcenter,batch:0
@@ -1976,7 +2007,7 @@ msgstr "规划订单"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.res_config_settings_view_form
msgid "Plan manufacturing or purchase orders based on forecasts"
-msgstr ""
+msgstr "根据预测计划制造或采购订单"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.stock_production_type_kanban
@@ -2000,7 +2031,7 @@ msgstr "规划"
#: code:addons/mrp/wizard/mrp_product_produce.py:147
#, python-format
msgid "Please enter a lot or serial number for %s !"
-msgstr ""
+msgstr "请输入%s的序列号或序列号!"
#. module: mrp
#: code:addons/mrp/models/mrp_workorder.py:296
@@ -2008,7 +2039,7 @@ msgstr ""
msgid ""
"Please set the quantity you are currently producing. It should be different "
"from zero."
-msgstr ""
+msgstr "请设定您正在生产的数量。 它不能为零。"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_production_form_view
@@ -2051,7 +2082,7 @@ msgstr "生产"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.res_config_settings_view_form
msgid "Produce residual products (A + B -&gt; C + D)"
-msgstr ""
+msgstr "产生残留产物(A + B &gt; C + D)"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.production_message
@@ -2342,7 +2373,7 @@ msgstr "记录生产明细"
msgid ""
"Recursion error! A product with a Bill of Material should not have itself "
"in its BoM or child BoMs!"
-msgstr ""
+msgstr "递归错误!一个物料清单的产品不应该自己或孩子BOM BOM!"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_bom_code
@@ -2377,7 +2408,7 @@ msgstr "维修"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.res_config_settings_view_form
msgid "Repair products and invoice the repair orders"
-msgstr ""
+msgstr "修理产品和发票修理订单"
#. module: mrp
#: model:ir.ui.menu,name:mrp.menu_mrp_reporting
@@ -2475,6 +2506,9 @@ msgid ""
" done to realize a Manufacturing Order. Each operation from\n"
" a Routing is done at a specific Work Center and has a specific duration."
msgstr ""
+"路线定义了需要的连续操作\n"
+"                 完成制造订单。 从每个操作\n"
+"                 路由在特定的工作中心完成,并具有特定的持续时间。"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_message_view_form_embedded_bom
@@ -2485,12 +2519,12 @@ msgstr "保存"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.res_config_settings_view_form
msgid "Schedule manufacturing orders earlier to avoid delays"
-msgstr ""
+msgstr "提前安排生产订单以避免延误"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.res_config_settings_view_form
msgid "Schedule the maintenance of your equipment"
-msgstr ""
+msgstr "安排设备的保养"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_workorder_date_planned_finished
@@ -2605,7 +2639,7 @@ msgid ""
"Set 'no' to schedule the next work order after the previous one. Set 'yes' "
"to produce after the quantity set in 'Quantity To Process' has been "
"produced."
-msgstr ""
+msgstr "设置“否”,安排上一个工作单之后的下一个工作单。 设置“是”,在“处理数量”中设置的数量生成后生成。"
#. module: mrp
#: selection:mrp.routing.workcenter,time_mode:0
@@ -2629,7 +2663,7 @@ msgstr "对于产成品应该有批次"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_production_show_final_lots
msgid "Show Final Lots"
-msgstr ""
+msgstr "显示最后一批"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_unbuild_search_view
@@ -2677,7 +2711,7 @@ msgstr "库存移动"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_production_move_dest_ids
msgid "Stock Movements of Produced Goods"
-msgstr ""
+msgstr "生产货物的库存移动"
#. module: mrp
#: model:ir.actions.act_window,name:mrp.action_mrp_unbuild_moves
@@ -2708,40 +2742,40 @@ msgstr "TPM 大损失"
#: model:ir.model.fields,help:mrp.field_stock_move_is_done
#: model:ir.model.fields,help:mrp.field_stock_move_line_done_move
msgid "Technical Field to order moves"
-msgstr ""
+msgstr "技术领域的订单移动"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_mrp_production_check_to_done
msgid "Technical Field to see if we can show 'Mark as Done' button"
-msgstr ""
+msgstr "技术领域,看看我们是否可以显示“标记为完成”按钮"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_stock_move_line_done_wo
msgid ""
"Technical Field which is False when temporarily filled in in work order"
-msgstr ""
+msgstr "技术领域临时填写工单时为假"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_mrp_workorder_is_user_working
msgid "Technical field indicating whether the current user is working. "
-msgstr ""
+msgstr "表示当前用户是否正在工作的技术字段。"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_mrp_production_post_visible
msgid "Technical field to check when we can post"
-msgstr ""
+msgstr "技术领域来检查什么时候我们可以发布"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_mrp_production_unreserve_visible
msgid "Technical field to check when we can unreserve"
-msgstr ""
+msgstr "技术领域来检查什么时候我们可以保留"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_mrp_production_consumed_less_than_planned
msgid ""
"Technical field used to see if we have to display a warning or not when "
"confirming an order."
-msgstr ""
+msgstr "技术领域用于查看在确认订单时是否需要显示警告。"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_mrp_workorder_production_availability
@@ -2764,7 +2798,7 @@ msgstr "技术: 仅用于视图."
#. module: mrp
#: model:ir.model.fields,help:mrp.field_stock_production_lot_use_next_on_work_order_id
msgid "Technical: used to figure out default serial number on work orders"
-msgstr ""
+msgstr "技术:用于计算工单上的默认序列号"
#. module: mrp
#: code:addons/mrp/models/mrp_bom.py:76 code:addons/mrp/models/mrp_bom.py:254
@@ -2788,7 +2822,7 @@ msgstr "第一作业的部件"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_mrp_document_res_model
msgid "The database object this attachment will be attached to."
-msgstr ""
+msgstr "该附件将附加到的数据库对象。"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_mrp_production_routing_id
@@ -2805,12 +2839,12 @@ msgid ""
"The list of operations to produce the finished product. The routing is "
"mainly used to compute work center costs during operations and to plan "
"future loads on work centers based on production planning."
-msgstr ""
+msgstr "生产成品的操作列表。 路线主要用于计算运营期间的工作中心成本,并根据生产计划计划未来的工作中心负载。"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_mrp_workorder_qty_produced
msgid "The number of products already handled by this work order"
-msgstr ""
+msgstr "此工单已处理的产品数量"
#. module: mrp
#: model:ir.model,name:mrp.model_stock_picking_type
@@ -2822,7 +2856,7 @@ msgstr "操作类型决定分拣视图。"
msgid ""
"The operation where the components are consumed, or the finished products "
"created."
-msgstr ""
+msgstr "组件消耗的操作或创建的成品。"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_mrp_bom_routing_id
@@ -2830,13 +2864,13 @@ msgid ""
"The operations for producing this BoM. When a routing is specified, the "
"production orders will be executed through work orders, otherwise "
"everything is processed in the production order itself. "
-msgstr ""
+msgstr "生产这个BoM的操作。 在指定工艺路线时,将通过工单执行生产订单,否则所有工作都将在生产订单本身中进行处理。"
#. module: mrp
#: code:addons/mrp/wizard/mrp_product_produce.py:94
#, python-format
msgid "The production order for '%s' has no quantity specified"
-msgstr ""
+msgstr "‘%s’ 的生产订单没有指定的数量"
#. module: mrp
#: sql_constraint:mrp.production:0
@@ -2846,7 +2880,7 @@ msgstr "待生产的数量必须是正数!"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_mrp_document_res_id
msgid "The record id this is attached to."
-msgstr ""
+msgstr "这是附加到记录ID。"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_mrp_routing_workcenter_routing_id
@@ -2854,7 +2888,7 @@ msgid ""
"The routing contains all the Work Centers used and for how long. This will "
"create work orders afterwardswhich alters the execution of the manufacturing"
" order. "
-msgstr ""
+msgstr "路由包含所有使用的工作中心和多久。 这将在之后创建工单,改变制造订单的执行。"
#. module: mrp
#: code:addons/mrp/models/procurement.py:20
@@ -2862,7 +2896,7 @@ msgstr ""
msgid ""
"There is no Bill of Material found for the product %s. Please define a Bill "
"of Material for this product."
-msgstr ""
+msgstr "没有为产品 %s找到物料清单。 请为此产品定义物料清单。"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.oee_search_view
@@ -2903,7 +2937,7 @@ msgstr "时间"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_time_efficiency
msgid "Time Efficiency"
-msgstr ""
+msgstr "时间效率"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_time_ids
@@ -2946,7 +2980,7 @@ msgstr "设置的时间,以分钟计."
msgid ""
"Time in minutes. Is the time used in manual mode, or the first time supposed"
" in real time when there are not any work orders yet."
-msgstr ""
+msgstr "时间在几分钟内。 是在手动模式下使用的时间,还是在没有任何工单的情况下第一次实时应用。"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_product_produce_line_qty_to_consume
@@ -3064,7 +3098,7 @@ msgstr "拆解单"
#: code:addons/mrp/models/mrp_unbuild.py:77
#, python-format
msgid "Unbuild Order product quantity has to be strictly positive."
-msgstr ""
+msgstr "建立订单产品数量必须严格为正数。"
#. module: mrp
#: model:ir.actions.act_window,name:mrp.mrp_unbuild
@@ -3078,7 +3112,7 @@ msgstr "拆解单"
msgid ""
"Unbuild Orders are used to break down a product you manufactured or "
"purchased into its components, based on its Bill of Material."
-msgstr ""
+msgstr "未建立订单是用来分解您生产或购买的产品的组件,根据其材料清单。"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_bom_cost_report
@@ -3151,7 +3185,7 @@ msgstr "Url网址"
msgid ""
"Use the Produce button or process the work orders to create some finished "
"products."
-msgstr ""
+msgstr "使用“生产”按钮或处理工单来创建一些成品。"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.product_product_form_view_bom_button
@@ -3172,7 +3206,7 @@ msgid ""
"Using a MPS report to schedule your reordering and manufacturing operations "
"is useful if you have long lead time and if you produce based on sales "
"forecasts."
-msgstr ""
+msgstr "如果您的交货时间很长,并根据销售预测进行生产,那么使用MPS报告来安排重新排序和制造操作是非常有用的。"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_message_valid_until
@@ -3243,6 +3277,7 @@ msgid ""
" operation type. That allows to define procurement rules which trigger "
"different manufacturing orders with different BoMs."
msgstr ""
+"当采购具有设定操作类型的“生产”路线时,它将尝试使用相同操作类型的BoM为该产品创建生产订单。 这允许定义触发与不同BoM的不同制造订单的采购规则。"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_stock_warehouse_manufacture_to_resupply
@@ -3342,7 +3377,7 @@ msgstr "工单消息"
msgid ""
"Work Order Messages are used to warn users about any change in the product,\n"
" process, etc. These messages will appear on the involved Work Orders."
-msgstr ""
+msgstr "工作订单消息用于警告用户产品中的任何更改, 流程等。这些消息将出现在所涉及的工作订单上。"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.res_config_settings_view_form
@@ -3397,7 +3432,7 @@ msgid ""
"Work Orders are operations to be processed at a Work Center to realize a\n"
" Manufacturing Order. Work Orders are trigerred by Manufacturing Orders,\n"
" they are based on the Routing defined on these ones"
-msgstr ""
+msgstr "工作订单是在工作中心进行处理的操作,以实现 制造订单。制造订单与工作订单无关, 它们基于在这些路由上定义的路由。"
#. module: mrp
#: model:ir.actions.act_window,help:mrp.mrp_workorder_todo
@@ -3406,6 +3441,9 @@ msgid ""
" Manufacturing Order. Work Orders are trigerred by Manufacturing Orders,\n"
" they are based on the Routing defined on these ones."
msgstr ""
+"工作指令是要在工作中心处理的操作,以实现一个\n"
+"             制造订单。 工作订单被制造订单激怒,\n"
+"             它们基于这些路由上定义的路由。"
#. module: mrp
#: model:ir.actions.act_window,help:mrp.action_mrp_workorder_workcenter
@@ -3414,6 +3452,9 @@ msgid ""
" Manufacturing Order. Work Orders are trigerred by Manufacturing Orders,\n"
" they are based on the Routing defined on these ones."
msgstr ""
+"工作指令是要在工作中心处理的操作,以实现一个\n"
+"            制造订单。 工作订单被制造订单激怒,\n"
+"            它们基于这些路由上定义的路由。"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_form_view
@@ -3505,7 +3546,7 @@ msgstr "不能变更已完成的工单."
#: code:addons/mrp/models/mrp_production.py:554
#, python-format
msgid "You can not consume without telling for which lot you consumed it"
-msgstr ""
+msgstr "你不能不知道你消费了多少东西"
#. module: mrp
#: code:addons/mrp/models/mrp_bom.py:91
@@ -3522,7 +3563,7 @@ msgid ""
"You cannot cancel a manufacturing order if you have already consumed "
"material. If you want to cancel this MO, please change the "
"consumed quantities to 0."
-msgstr ""
+msgstr "如果您已经消耗了材料,则无法取消制造订单。 如果你想取消这个MO,请把消耗的数量改为0。"
#. module: mrp
#: code:addons/mrp/wizard/mrp_product_produce.py:204
@@ -3530,20 +3571,20 @@ msgstr ""
msgid ""
"You cannot consume the same serial number twice. Please correct the serial "
"numbers encoded."
-msgstr ""
+msgstr "您不能使用相同的序列号两次。 请更正编码的序列号。"
#. module: mrp
#: code:addons/mrp/wizard/change_production_qty.py:46
#, python-format
msgid "You have already processed %d. Please input a quantity higher than %d "
-msgstr ""
+msgstr "你已经处理了 %d。 请输入高于 %d 的数量"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_production_form_view
msgid ""
"You have consumed less material than what was planned. Are you sure you want"
" to close this MO?"
-msgstr ""
+msgstr "你消耗的材料比计划的要少。 你确定要关闭这个MO吗?"
#. module: mrp
#: code:addons/mrp/models/mrp_workorder.py:406
@@ -3552,7 +3593,7 @@ msgid ""
"You need to define at least one productivity loss in the category "
"'Performance'. Create one from the Manufacturing app, menu: Configuration / "
"Productivity Losses."
-msgstr ""
+msgstr "您需要在“绩效”类别中至少定义一个生产力损失。 从制造应用程序创建一个菜单:配置/生产力损失。"
#. module: mrp
#: code:addons/mrp/models/mrp_workorder.py:402
@@ -3561,7 +3602,7 @@ msgid ""
"You need to define at least one productivity loss in the category "
"'Productivity'. Create one from the Manufacturing app, menu: Configuration /"
" Productivity Losses."
-msgstr ""
+msgstr "您需要在“生产力”类别中至少定义一个生产力损失。 从制造应用程序创建一个菜单:配置/生产力损失。"
#. module: mrp
#: code:addons/mrp/models/mrp_workorder.py:460
@@ -3570,7 +3611,7 @@ msgid ""
"You need to define at least one unactive productivity loss in the category "
"'Performance'. Create one from the Manufacturing app, menu: Configuration / "
"Productivity Losses."
-msgstr ""
+msgstr "您需要在“绩效”类别中定义至少一个无效的生产力损失。 从制造应用程序创建一个菜单:配置/生产力损失。"
#. module: mrp
#: code:addons/mrp/wizard/mrp_product_produce.py:125
@@ -3582,13 +3623,13 @@ msgstr "你需要为产成品提供批号"
#: code:addons/mrp/models/mrp_workorder.py:322
#, python-format
msgid "You should provide a lot/serial number for a component"
-msgstr ""
+msgstr "您应该提供组件的批号/序列号"
#. module: mrp
#: code:addons/mrp/models/mrp_workorder.py:299
#, python-format
msgid "You should provide a lot/serial number for the final product"
-msgstr ""
+msgstr "您应该提供最终产品的批号/序列号"
#. module: mrp
#: code:addons/mrp/models/mrp_unbuild.py:95
@@ -3596,7 +3637,7 @@ msgstr ""
msgid ""
"You should specify a manufacturing order in order to find the correct "
"tracked products."
-msgstr ""
+msgstr "您应该指定一个制造订单,以便找到正确的跟踪产品。"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.res_config_settings_view_form
@@ -3634,17 +3675,17 @@ msgstr "mrp.bom.line"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.production_message
msgid "quantity has been updated."
-msgstr ""
+msgstr "quantity has been updated."
#. module: mrp
#: model:ir.model,name:mrp.model_report_mrp_mrp_bom_cost_report
msgid "report.mrp.mrp_bom_cost_report"
-msgstr ""
+msgstr "report.mrp.mrp_bom_cost_report"
#. module: mrp
#: model:ir.model,name:mrp.model_report_mrp_mrp_bom_structure_report
msgid "report.mrp.mrp_bom_structure_report"
-msgstr ""
+msgstr "report.mrp.mrp_bom_structure_report"
#. module: mrp
#: model:ir.model,name:mrp.model_res_config_settings
@@ -3664,12 +3705,12 @@ msgstr "stock.traceability.report"
#. module: mrp
#: model:ir.model,name:mrp.model_stock_warn_insufficient_qty_unbuild
msgid "stock.warn.insufficient.qty.unbuild"
-msgstr ""
+msgstr "stock.warn.insufficient.qty.unbuild"
#. module: mrp
#: model:ir.actions.act_window,help:mrp.mrp_workcenter_kanban_action
msgid "to create a new Work Center."
-msgstr ""
+msgstr "若要创建新的工作中心,请执行以下操作。"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_routing_workcenter_form_view
diff --git a/addons/mrp/models/stock_move.py b/addons/mrp/models/stock_move.py
index 73996dd70bd..64c2bcd22cb 100644
--- a/addons/mrp/models/stock_move.py
+++ b/addons/mrp/models/stock_move.py
@@ -151,7 +151,7 @@ class StockMove(models.Model):
# all grouped in the same picking.
if not self.picking_type_id:
return self
- bom = self.env['mrp.bom'].sudo()._bom_find(product=self.product_id)
+ bom = self.env['mrp.bom'].sudo()._bom_find(product=self.product_id, company_id=self.company_id.id)
if not bom or bom.type != 'phantom':
return self
phantom_moves = self.env['stock.move']
diff --git a/addons/mrp/views/mrp_production_views.xml b/addons/mrp/views/mrp_production_views.xml
index f9cfe13ed6c..c22daf42829 100644
--- a/addons/mrp/views/mrp_production_views.xml
+++ b/addons/mrp/views/mrp_production_views.xml
@@ -48,7 +48,7 @@
<button name="button_unreserve" type="object" string="Unreserve" attrs="{'invisible': [('unreserve_visible', '=', False)]}"/>
<span class="label label-danger" attrs="{'invisible': ['|',('availability', 'in', ('assigned', 'none')), ('state', 'not in', ('confirmed','progress'))]}">Raw materials not available!</span>
<field name="state" widget="statusbar" statusbar_visible="confirmed,progress,done"/>
- <button name="action_toggle_is_locked" attrs="{'invisible': ['|', '|', ('state', '=', 'cancel'), ('id', '=', False), ('is_locked', '=', False)]}" string="Unlock" groups="mrp.group_mrp_manager" type="object" help="If the manufacturing order is unlocked you can add to the initial demand."/>
+ <button name="action_toggle_is_locked" attrs="{'invisible': ['|', '|', ('state', '=', 'cancel'), ('id', '=', False), ('is_locked', '=', False)]}" string="Unlock" groups="mrp.group_mrp_manager" type="object" help="Unlock the manufacturing order to correct what has been consumed or produced."/>
<button name="action_toggle_is_locked" attrs="{'invisible': [('is_locked', '=', True)]}" string="Lock" class="oe_highlight" groups="mrp.group_mrp_manager" type="object"/>
</header>
<sheet>
diff --git a/addons/pad/models/pad.py b/addons/pad/models/pad.py
index 60eaa5fc2bb..aebcff24918 100644
--- a/addons/pad/models/pad.py
+++ b/addons/pad/models/pad.py
@@ -132,7 +132,7 @@ class PadCommon(models.AbstractModel):
# Update the `pad_content_field` if the pad is modified
for k, v in list(vals.items()):
- field = self._fields[k]
+ field = self._fields.get(k)
if hasattr(field, 'pad_content_field'):
vals[field.pad_content_field] = self.pad_get_content(v)
diff --git a/addons/payment/i18n/zh_CN.po b/addons/payment/i18n/zh_CN.po
index 5793613c550..a37b908f3d1 100644
--- a/addons/payment/i18n/zh_CN.po
+++ b/addons/payment/i18n/zh_CN.po
@@ -6,18 +6,19 @@
# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# max_xu <wangzhanwh@163.com>, 2016
# Gary Wei <Gary.wei@elico-corp.com>, 2017
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
# liAnGjiA <liangjia@qq.com>, 2017
# glovebx <ruinning@163.com>, 2017
# 老窦 北京 <2662059195@qq.com>, 2017
-# fausthuang <faust_huang@hotmail.com>, 2017
+# fausthuang, 2017
+# 山西清水欧度(QQ:54773801) <54773801@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.saas~18\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-20 09:53+0000\n"
"PO-Revision-Date: 2017-09-20 09:53+0000\n"
-"Last-Translator: fausthuang <faust_huang@hotmail.com>, 2017\n"
+"Last-Translator: 山西清水欧度(QQ:54773801) <54773801@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -38,7 +39,7 @@ msgstr "<i class=\"fa fa-arrow-circle-right\"/> 返回我的帐户"
#. module: payment
#: model:ir.ui.view,arch_db:payment.payment_tokens_list
msgid "<i class=\"fa fa-lock\"> Pay</i>"
-msgstr ""
+msgstr "<i class=\"fa fa-lock\">付款</i>"
#. module: payment
#: model:ir.ui.view,arch_db:payment.payment_tokens_list
@@ -48,7 +49,7 @@ msgstr ""
#. module: payment
#: model:ir.ui.view,arch_db:payment.payment_tokens_list
msgid "<i class=\"fa fa-trash\"/> Delete"
-msgstr ""
+msgstr "<i class=\"fa fa-trash\"/>删除"
#. module: payment
#. openerp-web
@@ -1108,7 +1109,7 @@ msgstr "服务器到服务器"
#: code:addons/payment/static/src/js/payment_form.js:266
#, python-format
msgid "Server error"
-msgstr ""
+msgstr "服务器错误"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_token_short_name
diff --git a/addons/payment_sips/models/payment.py b/addons/payment_sips/models/payment.py
index f06b72461f9..46464b7d60c 100644
--- a/addons/payment_sips/models/payment.py
+++ b/addons/payment_sips/models/payment.py
@@ -76,7 +76,7 @@ class AcquirerSips(models.Model):
if self.environment == 'prod':
# For production environment, key version 2 is required
merchant_id = getattr(self, 'sips_merchant_id')
- key_version = '2'
+ key_version = self.env['ir.config_parameter'].sudo().get_param('sips.key_version', '2')
else:
# Test key provided by Atos Wordline works only with version 1
merchant_id = '002001000000001'
diff --git a/addons/point_of_sale/i18n/de.po b/addons/point_of_sale/i18n/de.po
index 1155d1ebb01..2dfd04f34fd 100644
--- a/addons/point_of_sale/i18n/de.po
+++ b/addons/point_of_sale/i18n/de.po
@@ -3,15 +3,15 @@
# * point_of_sale
#
# Translators:
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
# Anja Funk <anja.funk@afimage.de>, 2017
-# Wolfgang Taferner <wolfgang.transifex@service.wt-io-it.at>, 2017
+# Wolfgang Taferner, 2017
# Tina Rittmüller <tr@ife.de>, 2017
-# Niki Waibel <niki.waibel@gmail.com>, 2017
+# Niki Waibel, 2017
# Ermin Trevisan <trevi@twanda.com>, 2017
# darenkster <inactive+darenkster@transifex.com>, 2017
# Philipp Hug <philipp@hug.cx>, 2017
-# Renzo Meister <info@jamotion.ch>, 2017
+# Renzo Meister, 2017
# JackTheHunter <Maximilian.N98@gmail.com>, 2017
# Malte Jansen <work@maltejansen.de>, 2017
# Andreas Stauder <andreas.stauder@brain-tec.ch>, 2017
@@ -24,7 +24,7 @@
# Martin K <martinkuenz@gmail.com>, 2017
# Alexander Klockhaus <a.klockhaus@gmail.com>, 2017
# Ralf Hilgenstock <rh@dialoge.info>, 2017
-# Andi <flimflam@salasar.de>, 2017
+# Andi, 2017
# Rudolf Schnapka <rs@techno-flex.de>, 2017
# Fabian Liesch <fabian.liesch@gmail.com>, 2017
# Constantin Ehrenstein <transifex@skiller.eu>, 2017
@@ -32,13 +32,14 @@
# DE T1 <e2f8846@yahoo.com>, 2017
# Bülent Tiknas <btiknas@googlemail.com>, 2017
# key six <mobile.umts@gmail.com>, 2017
+# Juan José Trujillo <juanjosetrujillo@gmx.de>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server saas~11.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-12-13 14:36+0000\n"
"PO-Revision-Date: 2017-12-13 14:36+0000\n"
-"Last-Translator: key six <mobile.umts@gmail.com>, 2017\n"
+"Last-Translator: Juan José Trujillo <juanjosetrujillo@gmx.de>, 2018\n"
"Language-Team: German (https://www.transifex.com/odoo/teams/41243/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -2404,7 +2405,7 @@ msgstr "Zahlungen"
#: code:addons/point_of_sale/static/src/xml/pos.xml:939
#, python-format
msgid "Payments:"
-msgstr ""
+msgstr "Zahlungen"
#. module: point_of_sale
#: model:ir.filters,name:point_of_sale.filter_orders_per_session
@@ -2473,7 +2474,7 @@ msgstr "Bitte Partner für diesen Verkauf definieren"
#: code:addons/point_of_sale/static/src/xml/pos.xml:533
#, python-format
msgid "Please select a payment method."
-msgstr ""
+msgstr "Bitte wählen Sie eine Zahlungsmethode"
#. module: point_of_sale
#. openerp-web
@@ -2643,7 +2644,7 @@ msgstr "Gebucht"
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_pos_config_iface_precompute_cash
msgid "Prefill Cash Payment"
-msgstr ""
+msgstr "Barzahlung vorausfüllen"
#. module: point_of_sale
#: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form
@@ -3860,7 +3861,7 @@ msgstr "Gesamtpreis"
#: code:addons/point_of_sale/static/src/xml/pos.xml:868
#, python-format
msgid "Total Taxes"
-msgstr ""
+msgstr "Gesamte Steuern"
#. module: point_of_sale
#: model:ir.model.fields,help:point_of_sale.field_pos_session_cash_register_total_entry_encoding
diff --git a/addons/point_of_sale/i18n/zh_CN.po b/addons/point_of_sale/i18n/zh_CN.po
index 099ea3237c5..b496597bba5 100644
--- a/addons/point_of_sale/i18n/zh_CN.po
+++ b/addons/point_of_sale/i18n/zh_CN.po
@@ -4,8 +4,8 @@
#
# Translators:
# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
-# Martin Trigaux <mat@odoo.com>, 2017
-# Bo Cao <cao.poobo@hotmail.com>, 2017
+# Martin Trigaux, 2017
+# Bo Cao, 2017
# 卓忆科技 <zhanghao@jointd.com>, 2017
# Talway <9010446@qq.com>, 2017
# Alex Duan <alex.duan@elico-corp.com>, 2017
@@ -509,7 +509,7 @@ msgstr "可用价格表"
#. module: point_of_sale
#: model:ir.ui.view,arch_db:point_of_sale.view_account_journal_search_inherit_point_of_sale
msgid "Available for Point of Sale"
-msgstr ""
+msgstr "POS可用"
#. module: point_of_sale
#: model:ir.ui.view,arch_db:point_of_sale.product_template_search_view_pos
@@ -520,7 +520,7 @@ msgstr "POS可用"
#: model:ir.model.fields,field_description:point_of_sale.field_product_product_available_in_pos
#: model:ir.model.fields,field_description:point_of_sale.field_product_template_available_in_pos
msgid "Available in Point of Sale"
-msgstr ""
+msgstr "POS可用"
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_report_pos_order_average_price
diff --git a/addons/point_of_sale/models/pos_order.py b/addons/point_of_sale/models/pos_order.py
index 57a1e8f94ed..46bea35c1f3 100644
--- a/addons/point_of_sale/models/pos_order.py
+++ b/addons/point_of_sale/models/pos_order.py
@@ -1018,7 +1018,10 @@ class ReportSaleDetails(models.AbstractModel):
for tax in line_taxes['taxes']:
taxes.setdefault(tax['id'], {'name': tax['name'], 'tax_amount':0.0, 'base_amount':0.0})
taxes[tax['id']]['tax_amount'] += tax['amount']
- taxes[tax['id']]['base_amount'] += line.price_subtotal
+ taxes[tax['id']]['base_amount'] += tax['base']
+ else:
+ taxes.setdefault(0, {'name': _('No Taxes'), 'tax_amount':0.0, 'base_amount':0.0})
+ taxes[0]['base_amount'] += line.price_subtotal_incl
st_line_ids = self.env["account.bank.statement.line"].search([('pos_statement_id', 'in', orders.ids)]).ids
if st_line_ids:
diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js
index 14b9285f38d..99fdc1ec7db 100644
--- a/addons/point_of_sale/static/src/js/models.js
+++ b/addons/point_of_sale/static/src/js/models.js
@@ -331,7 +331,7 @@ exports.PosModel = Backbone.Model.extend({
ids: function(self){ return [self.config.currency_id[0]]; },
loaded: function(self, currencies){
self.currency = currencies[0];
- if (self.currency.rounding > 0) {
+ if (self.currency.rounding > 0 && self.currency.rounding < 1) {
self.currency.decimals = Math.ceil(Math.log(1.0 / self.currency.rounding) / Math.log(10));
} else {
self.currency.decimals = 0;
@@ -528,7 +528,7 @@ exports.PosModel = Backbone.Model.extend({
var fields = typeof model.fields === 'function' ? model.fields(self,tmp) : model.fields;
var domain = typeof model.domain === 'function' ? model.domain(self,tmp) : model.domain;
- var context = typeof model.context === 'function' ? model.context(self,tmp) : model.context;
+ var context = typeof model.context === 'function' ? model.context(self,tmp) : model.context || {};
var ids = typeof model.ids === 'function' ? model.ids(self,tmp) : model.ids;
var order = typeof model.order === 'function' ? model.order(self,tmp): model.order;
progress += progress_step;
@@ -536,7 +536,7 @@ exports.PosModel = Backbone.Model.extend({
if( model.model ){
var params = {
model: model.model,
- context: context,
+ context: _.extend(context, session.user_context || {}),
};
if (model.ids) {
diff --git a/addons/portal/i18n/zh_CN.po b/addons/portal/i18n/zh_CN.po
index 15f8b956a8e..bdbd987e9f2 100644
--- a/addons/portal/i18n/zh_CN.po
+++ b/addons/portal/i18n/zh_CN.po
@@ -3,9 +3,9 @@
# * portal
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
-# Martin Trigaux <mat@odoo.com>, 2017
-# fausthuang <faust_huang@hotmail.com>, 2017
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
+# Martin Trigaux, 2017
+# fausthuang, 2017
# waveyeung <waveyeung@qq.com>, 2017
# Talway <9010446@qq.com>, 2017
# Siyuan Gu <siyuancn@hotmail.com>, 2017
@@ -117,6 +117,8 @@ msgid ""
"Confirm\n"
" <span class=\"fa fa-long-arrow-right\"/>"
msgstr ""
+"确认\n"
+"<span class=\"fa fa-long-arrow-right\"/>"
#. module: portal
#: model:ir.model.fields,field_description:portal.field_portal_wizard_user_partner_id
diff --git a/addons/portal/static/src/js/portal_chatter.js b/addons/portal/static/src/js/portal_chatter.js
index a35a97ed09b..c91771174c1 100644
--- a/addons/portal/static/src/js/portal_chatter.js
+++ b/addons/portal/static/src/js/portal_chatter.js
@@ -52,21 +52,28 @@ var PortalChatter = Widget.extend({
params: this._messageFetchPrepareParams()
}), this._loadTemplates()
).then(function(result){
- // bind events
- self.on("change:messages", self, self._renderMessages);
- self.on("change:message_count", self, function(){
- self._renderMessageCount();
- self.set('pager', self._pager(self._current_page));
- });
- self.on("change:pager", self, self._renderPager);
- self.on("change:domain", self, self._onChangeDomain);
- // set options and parameters
- self.options = _.extend(self.options, result['options'] || {});
- self.set('message_count', self.options['message_count']);
- self.set('messages', self.preprocessMessages(result['messages']));
+ self.result = result
return result;
});
},
+ /**
+ * @override
+ */
+ start: function () {
+ // bind events
+ this.on("change:messages", this, this._renderMessages);
+ this.on("change:message_count", this, function(){
+ this._renderMessageCount();
+ this.set('pager', this._pager(this._current_page));
+ });
+ this.on("change:pager", this, this._renderPager);
+ this.on("change:domain", this, this._onChangeDomain);
+ // set options and parameters
+ this.options = _.extend(this.options, this.result['options'] || {});
+ this.set('message_count', this.options['message_count']);
+ this.set('messages', this.preprocessMessages(this.result['messages']));
+ return this._super.apply(this, arguments);
+ },
//--------------------------------------------------------------------------
// Public
diff --git a/addons/pos_restaurant/i18n/zh_CN.po b/addons/pos_restaurant/i18n/zh_CN.po
index 68bde60ad89..b08ecbfcdbc 100644
--- a/addons/pos_restaurant/i18n/zh_CN.po
+++ b/addons/pos_restaurant/i18n/zh_CN.po
@@ -3,17 +3,18 @@
# * pos_restaurant
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# Joray <13637815@qq.com>, 2017
# Gary Wei <Gary.wei@elico-corp.com>, 2017
# liulixia <liu.lixia@elico-corp.com>, 2017
+# 老窦 北京 <2662059195@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.saas~18\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-20 09:52+0000\n"
"PO-Revision-Date: 2017-09-20 09:52+0000\n"
-"Last-Translator: liulixia <liu.lixia@elico-corp.com>, 2017\n"
+"Last-Translator: 老窦 北京 <2662059195@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -29,7 +30,7 @@ msgstr "<strong>楼层名称: </strong>"
#. module: pos_restaurant
#: model:ir.ui.view,arch_db:pos_restaurant.view_restaurant_floor_kanban
msgid "<strong>Point of Sale: </strong>"
-msgstr ""
+msgstr "<strong>POS:</strong>"
#. module: pos_restaurant
#: model:ir.model.fields,help:pos_restaurant.field_restaurant_floor_background_image
@@ -67,7 +68,7 @@ msgstr "增加备注"
#. module: pos_restaurant
#: model:ir.ui.view,arch_db:pos_restaurant.pos_config_view_form_inherit_restaurant
msgid "Add notes to orderlines"
-msgstr ""
+msgstr "添加备注到订单行"
#. module: pos_restaurant
#: model:ir.model.fields,help:pos_restaurant.field_pos_config_iface_orderline_notes
diff --git a/addons/project/i18n/zh_CN.po b/addons/project/i18n/zh_CN.po
index 129818c94fe..569b1c3f790 100644
--- a/addons/project/i18n/zh_CN.po
+++ b/addons/project/i18n/zh_CN.po
@@ -3,19 +3,19 @@
# * project
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# 苏州远鼎 <tiexinliu@126.com>, 2016
-# Bo Cao <cao.poobo@hotmail.com>, 2017
+# Bo Cao, 2017
# Ted Wang <feiyuwang2012@gmail.com>, 2017
# Talway <9010446@qq.com>, 2017
# liAnGjiA <liangjia@qq.com>, 2017
# liulixia <liu.lixia@elico-corp.com>, 2017
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
# Gary Wei <Gary.wei@elico-corp.com>, 2017
# 卓忆科技 <zhanghao@jointd.com>, 2017
# Maie <m@maie.name>, 2017
# 老窦 北京 <2662059195@qq.com>, 2017
-# fausthuang <faust_huang@hotmail.com>, 2017
+# fausthuang, 2017
# Luke <cialuo@qq.com>, 2017
msgid ""
msgstr ""
@@ -488,7 +488,7 @@ msgstr "已归档"
#. module: project
#: model:ir.ui.view,arch_db:project.view_task_form2
msgid "Assign to Me"
-msgstr ""
+msgstr "分配给我"
#. module: project
#: model:ir.model.fields,field_description:project.field_report_project_task_user_date_start
@@ -750,7 +750,7 @@ msgstr "创建一个新的项目"
#. module: project
#: model:ir.model.fields,field_description:project.field_project_task_merge_wizard_create_new_task
msgid "Create a new task"
-msgstr ""
+msgstr "创建一个新任务"
#. module: project
#: model:ir.model.fields,field_description:project.field_project_project_create_uid
diff --git a/addons/purchase/i18n/nl.po b/addons/purchase/i18n/nl.po
index 9ba019a647d..5550bf3682a 100644
--- a/addons/purchase/i18n/nl.po
+++ b/addons/purchase/i18n/nl.po
@@ -5,7 +5,7 @@
# Translators:
# Yenthe Van Ginneken <yenthespam@gmail.com>, 2016
# Stephan Van Dyck <stephan.vandyck@vanroey.be>, 2016
-# Martin Trigaux <mat@odoo.com>, 2016
+# Martin Trigaux, 2016
# Erwin van der Ploeg <erwin@odooexperts.nl>, 2016
# Eric Geens <ericgeens@yahoo.com>, 2016
# Cas Vissers <casvissers@brahoo.nl>, 2016
@@ -2005,6 +2005,11 @@ msgid ""
"on-demand flow. The requested delivery address will be the customer delivery"
" address and not your warehouse."
msgstr ""
+"Dit voegt een dropshipping-route toe, welke toegepast kan worden op "
+"producten om uw leveranciers te vragen om direct aan uw klanten te leveren. "
+"Een dropship product genereert een inkoop offerte aanvraag zodra de "
+"verkooporder is bevestigd. Het proces is compleet gebaseerd op vraag. Het "
+"afleveradres is het afleveradres van de klant en niet van uw magazijn."
#. module: purchase
#: model:ir.ui.view,arch_db:purchase.purchase_order_form
diff --git a/addons/purchase/models/account_invoice.py b/addons/purchase/models/account_invoice.py
index 02d02844a82..ef23444c32c 100644
--- a/addons/purchase/models/account_invoice.py
+++ b/addons/purchase/models/account_invoice.py
@@ -94,13 +94,11 @@ class AccountInvoice(models.Model):
self.purchase_id = False
return {}
- @api.onchange('currency_id', 'date_invoice')
+ @api.onchange('currency_id')
def _onchange_currency_id(self):
if self.currency_id:
for line in self.invoice_line_ids.filtered(lambda r: r.purchase_line_id):
- if line.purchase_id.currency_id != self.currency_id:
- line.price_unit = line.purchase_id.currency_id.with_context(date=self.date_invoice)\
- .compute(line.purchase_line_id.price_unit, self.currency_id, round=False)
+ line.price_unit = line.purchase_id.currency_id.with_context(date=self.date_invoice).compute(line.purchase_line_id.price_unit, self.currency_id, round=False)
@api.onchange('invoice_line_ids')
def _onchange_origin(self):
diff --git a/addons/rating/i18n/zh_CN.po b/addons/rating/i18n/zh_CN.po
index 1a45a298433..b3cfbcede0c 100644
--- a/addons/rating/i18n/zh_CN.po
+++ b/addons/rating/i18n/zh_CN.po
@@ -6,14 +6,15 @@
# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# Shenglan Chen <dodolobox@gmail.com>, 2016
# Eddie Lim <bhweelim@yahoo.com>, 2017
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
+# 老窦 北京 <2662059195@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.saas~18\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-20 09:53+0000\n"
"PO-Revision-Date: 2017-09-20 09:53+0000\n"
-"Last-Translator: Martin Trigaux <mat@odoo.com>, 2017\n"
+"Last-Translator: 老窦 北京 <2662059195@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -31,7 +32,7 @@ msgstr ""
#. module: rating
#: model:ir.ui.view,arch_db:rating.rating_rating_view_form
msgid "<span class=\"o_stat_text\">Resource</span>"
-msgstr ""
+msgstr "<span class=\"o_stat_text\">资源</span>"
#. module: rating
#: model:ir.model.fields,help:rating.field_rating_rating_access_token
@@ -120,7 +121,7 @@ msgstr "分组"
#: model:ir.ui.view,arch_db:rating.rating_rating_view_search
#: selection:rating.rating,rating_text:0
msgid "Highly dissatisfied"
-msgstr ""
+msgstr "非常不满意"
#. module: rating
#: model:ir.model.fields,field_description:rating.field_rating_mixin_id
diff --git a/addons/repair/i18n/zh_CN.po b/addons/repair/i18n/zh_CN.po
index 231cf8baa1a..460d8758bbc 100644
--- a/addons/repair/i18n/zh_CN.po
+++ b/addons/repair/i18n/zh_CN.po
@@ -27,12 +27,12 @@ msgstr ""
#. module: mrp_repair
#: model:mail.template,report_name:mrp_repair.mail_template_mrp_repair_quotation
msgid "${(object.name or '').replace('/','_')}"
-msgstr ""
+msgstr "${(object.name or ‘’).replace(‘/‘,’_’)}"
#. module: mrp_repair
#: model:mail.template,subject:mrp_repair.mail_template_mrp_repair_quotation
msgid "${object.partner_id.name} Repair Orders (Ref ${object.name or 'n/a' })"
-msgstr ""
+msgstr "${object.partner_id.name} 维修单 (Ref ${object.name or ’n/a’ })"
#. module: mrp_repair
#: model:ir.ui.view,arch_db:mrp_repair.report_mrprepairorder
@@ -54,6 +54,12 @@ msgid ""
"* The 'Done' status is set when repairing is completed.\n"
"* The 'Cancelled' status is used when user cancel repair order."
msgstr ""
+"*“草稿”状态用于用户正在编码新的和未经确认的维修订单。\n"
+"*用户确认维修订单时使用“确认”状态。\n"
+"*“准备维修”状态用于开始维修,用户只有在维修订单确认后才能开始维修。\n"
+"*“待开票”状态用于在维修完成之前或之后生成发票。\n"
+"*维修完成后,“完成”状态将被设置。\n"
+"*用户取消维修订单时使用“取消”状态。"
#. module: mrp_repair
#: model:mail.template,body_html:mrp_repair.mail_template_mrp_repair_quotation
@@ -73,6 +79,20 @@ msgid ""
" <p>Thank you,</p>\n"
" </data>"
msgstr ""
+"<?xml version=\"1.0\"?>\n"
+"<data><p>Dear ${object.partner_id.name}</p>\n"
+" <p>\n"
+" Here is your repair order ${doc_name} <strong>${object.name}</strong>\n"
+" % if object.origin:\n"
+" (with reference: ${object.origin} )\n"
+" % endif\n"
+" % if object.invoice_method != ‘none’:\n"
+" amounting in <strong>${object.amount_total} ${object.pricelist_id.currency_id.name}.</strong>\n"
+" % endif\n"
+" </p>\n"
+" <p>You can reply to this email if you have any questions.</p>\n"
+" <p>Thank you,</p>\n"
+" </data>"
#. module: mrp_repair
#: model:ir.ui.view,arch_db:mrp_repair.report_mrprepairorder
@@ -82,17 +102,17 @@ msgstr "<i>(添加)</i>"
#. module: mrp_repair
#: model:ir.ui.view,arch_db:mrp_repair.report_mrprepairorder
msgid "<strong>Lot/Serial Number:</strong>"
-msgstr ""
+msgstr "<strong>批次/序列号</strong>"
#. module: mrp_repair
#: model:ir.ui.view,arch_db:mrp_repair.report_mrprepairorder
msgid "<strong>Operations</strong>"
-msgstr ""
+msgstr "<strong>操作</strong>"
#. module: mrp_repair
#: model:ir.ui.view,arch_db:mrp_repair.report_mrprepairorder
msgid "<strong>Parts</strong>"
-msgstr ""
+msgstr "<strong>零件</strong>"
#. module: mrp_repair
#: model:ir.ui.view,arch_db:mrp_repair.report_mrprepairorder
@@ -122,7 +142,7 @@ msgstr "<strong>总计</strong>"
#. module: mrp_repair
#: model:ir.ui.view,arch_db:mrp_repair.report_mrprepairorder
msgid "<strong>Warranty:</strong>"
-msgstr ""
+msgstr "<strong>保证:</strong>"
#. module: mrp_repair
#: selection:mrp.repair.line,type:0
@@ -153,7 +173,7 @@ msgstr "修理前"
#: code:addons/mrp_repair/models/mrp_repair.py:237
#, python-format
msgid "Can only confirm draft repairs."
-msgstr ""
+msgstr "只能确认草稿维修单。"
#. module: mrp_repair
#: model:ir.ui.view,arch_db:mrp_repair.view_cancel_repair
@@ -567,7 +587,7 @@ msgstr "业务伙伴"
#: model:ir.model.fields,field_description:mrp_repair.field_mrp_repair_operations
#: model:ir.ui.view,arch_db:mrp_repair.view_repair_order_form
msgid "Parts"
-msgstr ""
+msgstr "零件"
#. module: mrp_repair
#: model:ir.ui.view,arch_db:mrp_repair.report_mrprepairorder
@@ -715,25 +735,25 @@ msgstr "修理参考"
#: code:addons/mrp_repair/models/mrp_repair.py:203
#, python-format
msgid "Repair must be canceled in order to reset it to draft."
-msgstr ""
+msgstr "必须取消维修单,以便将其重置为草稿。"
#. module: mrp_repair
#: code:addons/mrp_repair/models/mrp_repair.py:408
#, python-format
msgid "Repair must be confirmed before starting reparation."
-msgstr ""
+msgstr "维修单必须确认后才能进行维修。"
#. module: mrp_repair
#: code:addons/mrp_repair/models/mrp_repair.py:436
#, python-format
msgid "Repair must be repaired in order to make the product moves."
-msgstr ""
+msgstr "维修单必须维修后,才能移动"
#. module: mrp_repair
#: code:addons/mrp_repair/models/mrp_repair.py:419
#, python-format
msgid "Repair must be under repair in order to end reparation."
-msgstr ""
+msgstr "维修单必须维修,以便结束赔偿。"
#. module: mrp_repair
#: code:addons/mrp_repair/models/mrp_repair.py:251
@@ -865,7 +885,7 @@ msgstr "修理单在序列号上用质保期,这样是为了标明是否要给
msgid ""
"The status of a repair line is set automatically to the one of the linked "
"repair order."
-msgstr ""
+msgstr "修复线的状态自动设置为链接修复顺序之一。"
#. module: mrp_repair
#: model:ir.ui.view,arch_db:mrp_repair.view_cancel_repair
@@ -960,7 +980,7 @@ msgstr "你必须在修理单上选择业务伙伴的发票地址!"
msgid ""
"You have to select a pricelist in the Repair form !\n"
" Please set one before choosing a product."
-msgstr ""
+msgstr "您必须在维修表单中选择一个价目表! 在选择产品之前请设置一个。"
#. module: mrp_repair
#: model:ir.model,name:mrp_repair.model_stock_traceability_report
@@ -970,4 +990,4 @@ msgstr "stock.traceability.report"
#. module: mrp_repair
#: model:ir.model,name:mrp_repair.model_stock_warn_insufficient_qty_repair
msgid "stock.warn.insufficient.qty.repair"
-msgstr ""
+msgstr "stock.warn.insufficient.qty.repair"
diff --git a/addons/resource/models/resource.py b/addons/resource/models/resource.py
index 5a34afa53a4..b7e2cb4ab62 100644
--- a/addons/resource/models/resource.py
+++ b/addons/resource/models/resource.py
@@ -142,6 +142,8 @@ class ResourceCalendar(models.Model):
)
def _interval_and(self, interval, interval_dst):
+ if interval.start_datetime > interval_dst.end_datetime or interval.end_datetime < interval_dst.start_datetime:
+ return None
return self._interval_obj(
interval.start_datetime > interval_dst.start_datetime and interval.start_datetime or interval_dst.start_datetime,
interval.end_datetime < interval_dst.end_datetime and interval.end_datetime or interval_dst.end_datetime,
@@ -406,10 +408,10 @@ class ResourceCalendar(models.Model):
start_datetime=datetime.datetime.combine(day_date, start_time),
end_datetime=datetime.datetime.combine(day_date, end_time))
- final_intervals = [
- self._interval_and(leave_interval, work_interval)
- for leave_interval in leaves_intervals
- for work_interval in working_intervals]
+ final_intervals = [i for i in
+ [self._interval_and(leave_interval, work_interval)
+ for leave_interval in leaves_intervals
+ for work_interval in working_intervals] if i]
# adapt tz
return [self._interval_new(
diff --git a/addons/resource/tests/test_resource.py b/addons/resource/tests/test_resource.py
index 617d6f9b79e..f31a89399dd 100644
--- a/addons/resource/tests/test_resource.py
+++ b/addons/resource/tests/test_resource.py
@@ -55,6 +55,12 @@ class TestIntervals(TestResourceCommon):
# Third interval: 04, 17-21, 18-19 being inside 17-21
self.assertEqual(cleaned_intervals[2][:2], (Datetime.from_string('2013-02-04 17:00:00'), Datetime.from_string('2013-02-04 21:00:00')))
+ def test_interval_and(self):
+ self.assertEqual(self.env['resource.calendar']._interval_and(self.intervals[0], self.intervals[1]),
+ self.calendar._interval_new(Datetime.from_string('2013-02-04 09:00:00'), Datetime.from_string('2013-02-04 11:00:00')))
+ self.assertEqual(self.env['resource.calendar']._interval_and(self.intervals[2], self.intervals[3]),
+ None)
+
def test_interval_remove(self):
working_interval = self.calendar._interval_new(Datetime.from_string('2013-02-04 08:00:00'), Datetime.from_string('2013-02-04 18:00:00'))
result = self.env['resource.calendar']._interval_remove_leaves(working_interval, self.intervals)
diff --git a/addons/sale/models/sale.py b/addons/sale/models/sale.py
index 21b664352f6..a646f5e0ed3 100644
--- a/addons/sale/models/sale.py
+++ b/addons/sale/models/sale.py
@@ -826,8 +826,9 @@ class SaleOrderLine(models.Model):
# Prevent writing on a locked SO.
protected_fields = self._get_protected_fields()
if 'done' in self.mapped('order_id.state') and any(f in values.keys() for f in protected_fields):
+ protected_fields_modified = list(set(protected_fields) & set(values.keys()))
fields = self.env['ir.model.fields'].search([
- ('name', 'in', protected_fields), ('model', '=', self._name)
+ ('name', 'in', protected_fields_modified), ('model', '=', self._name)
])
raise UserError(
_('It is forbidden to modify the following fields in a locked order:\n%s')
diff --git a/addons/sms/i18n/es.po b/addons/sms/i18n/es.po
index ca92d2ad558..0c0f318e646 100644
--- a/addons/sms/i18n/es.po
+++ b/addons/sms/i18n/es.po
@@ -5,17 +5,18 @@
# Translators:
# José Matias Zuazo <jose.zuazo@tpsistemas.com.ar>, 2017
# e2f_es_ t6 <e2f_es_t6@outlook.com>, 2017
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
# Pedro M. Baeza <pedro.baeza@gmail.com>, 2017
# Inigo Zuluaga <inigo_zuluaga@yahoo.es>, 2017
# Alejandro Santana <alejandrosantana@anubia.es>, 2017
+# Sarai Osorio <sarai.osorio@jarsa.com.mx>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-10-10 11:35+0000\n"
"PO-Revision-Date: 2017-10-10 11:35+0000\n"
-"Last-Translator: Alejandro Santana <alejandrosantana@anubia.es>, 2017\n"
+"Last-Translator: Sarai Osorio <sarai.osorio@jarsa.com.mx>, 2018\n"
"Language-Team: Spanish (https://www.transifex.com/odoo/teams/41243/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -64,7 +65,7 @@ msgstr "ID (identificación)"
#: code:addons/sms/models/mail_thread.py:53
#, python-format
msgid "Insufficient credit, unable to send SMS message: %s"
-msgstr ""
+msgstr "Crédito insuficiente, no puede enviar mensajes SMS:%s"
#. module: sms
#: model:ir.model.fields,field_description:sms.field_sms_api___last_update
@@ -91,13 +92,14 @@ msgstr "Mensaje"
#: code:addons/sms/wizard/send_sms.py:48
#, python-format
msgid "Missing mobile number for %s."
-msgstr ""
+msgstr "Falta el número de móvil para%s."
#. module: sms
#: code:addons/sms/models/mail_thread.py:55
#, python-format
msgid "No mobile number defined, unable to send SMS message: %s"
msgstr ""
+"Sin número de teléfono definido, no se puede enviar mensaje de texto: %s"
#. module: sms
#: model:ir.model.fields,field_description:sms.field_sms_send_sms_recipients
@@ -108,7 +110,7 @@ msgstr "Destinatarios"
#: code:addons/sms/models/mail_thread.py:48
#, python-format
msgid "SMS message sent: %s"
-msgstr ""
+msgstr "Mensaje SMS enviado: %s"
#. module: sms
#: model:ir.ui.view,arch_db:sms.send_sms_view_form
@@ -119,19 +121,19 @@ msgstr "Enviar"
#: model:ir.actions.act_window,name:sms.send_sms_action
#: model:ir.actions.act_window,name:sms.send_sms_form_action
msgid "Send SMS"
-msgstr ""
+msgstr "Enviar SMS"
#. module: sms
#: model:ir.ui.view,arch_db:sms.send_sms_view_form
msgid "Send an SMS"
-msgstr ""
+msgstr "Enviar un SMS"
#. module: sms
#: model:ir.model,name:sms.model_sms_api
msgid "sms.api"
-msgstr ""
+msgstr "sms.api"
#. module: sms
#: model:ir.model,name:sms.model_sms_send_sms
msgid "sms.send_sms"
-msgstr ""
+msgstr "sms.send_sms"
diff --git a/addons/sms/wizard/send_sms.py b/addons/sms/wizard/send_sms.py
index 844933d092a..139f542e597 100644
--- a/addons/sms/wizard/send_sms.py
+++ b/addons/sms/wizard/send_sms.py
@@ -35,7 +35,7 @@ class SendSMS(models.TransientModel):
def _sms_sanitization(self, partner, field_name):
number = partner[field_name]
- if _sms_phonenumbers_lib_imported:
+ if number and _sms_phonenumbers_lib_imported:
country = self._phone_get_country(partner)
country_code = country.code if country else None
try:
diff --git a/addons/stock/views/stock_picking_views.xml b/addons/stock/views/stock_picking_views.xml
index 5d8aac0c355..f9c5d607995 100644
--- a/addons/stock/views/stock_picking_views.xml
+++ b/addons/stock/views/stock_picking_views.xml
@@ -244,7 +244,7 @@
<field name="backorder_id" readonly="1" attrs="{'invisible': [('backorder_id','=',False)]}"/>
</group>
<group>
- <field name="scheduled_date" attrs="{'readonly': [('id', '=', False)]}"/>
+ <field name="scheduled_date" attrs="{'readonly': [('id', '=', False)], 'required': [('id', '!=', False)]}"/>
<field name="origin" placeholder="e.g. PO0032"/>
<field name="owner_id" groups="stock.group_tracking_owner"/>
<div groups="stock.group_tracking_owner" colspan="2" col="2">
diff --git a/addons/stock_account/views/stock_account_views.xml b/addons/stock_account/views/stock_account_views.xml
index e169a2b7a8d..bd9f7f523f8 100644
--- a/addons/stock_account/views/stock_account_views.xml
+++ b/addons/stock_account/views/stock_account_views.xml
@@ -43,9 +43,9 @@
<field name="inherit_id" ref="stock.view_stock_return_picking_form"/>
<field name="model">stock.return.picking</field>
<field name="arch" type="xml">
- <field name="uom_id" position="after">
+ <xpath expr="//field[@name='product_return_moves']/tree" position="inside">
<field name="to_refund"/>
- </field>
+ </xpath>
</field>
</record>
diff --git a/addons/web/i18n/zh_CN.po b/addons/web/i18n/zh_CN.po
index b9f131801ae..4a4ac82e4ff 100644
--- a/addons/web/i18n/zh_CN.po
+++ b/addons/web/i18n/zh_CN.po
@@ -4,8 +4,8 @@
#
# Translators:
# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
-# Martin Trigaux <mat@odoo.com>, 2016
-# fausthuang <faust_huang@hotmail.com>, 2016
+# Martin Trigaux, 2016
+# fausthuang, 2016
# Gary Wei <Gary.wei@elico-corp.com>, 2016
# Talway <9010446@qq.com>, 2016
# xiaobin wu <bd5dml@gmail.com>, 2016
@@ -18,13 +18,14 @@
# 菜小蛇 <lttlsnk@gmail.com>, 2016
# 苏州远鼎 <tiexinliu@126.com>, 2017
# 卓忆科技 <zhanghao@jointd.com>, 2017
+# 山西清水欧度(QQ:54773801) <54773801@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server saas~11.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-12-13 14:37+0000\n"
"PO-Revision-Date: 2017-12-13 14:37+0000\n"
-"Last-Translator: 卓忆科技 <zhanghao@jointd.com>, 2017\n"
+"Last-Translator: 山西清水欧度(QQ:54773801) <54773801@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -51,7 +52,7 @@ msgstr " [我]"
#: code:addons/web/static/src/js/chrome/search_filters.js:226
#, python-format
msgid " and "
-msgstr ""
+msgstr " 与"
#. module: web
#. openerp-web
@@ -154,6 +155,9 @@ msgid ""
" &lt;body class=\"ie9\"&gt;\n"
" &lt;![endif]--&gt;"
msgstr ""
+"&lt;!—[if lt IE 10]&gt;\n"
+" &lt;body class=“ie9”&gt;\n"
+" &lt;![endif]—&gt;"
#. module: web
#: model:ir.ui.view,arch_db:web.minimal_layout
@@ -200,7 +204,7 @@ msgstr "'%s' 不是正确的整数"
#: code:addons/web/static/src/js/fields/field_utils.js:483
#, python-format
msgid "'%s' is not a correct monetary field"
-msgstr ""
+msgstr "‘%s’ 不是正确的货币字段"
#. module: web
#. openerp-web
@@ -228,7 +232,7 @@ msgstr "(无标签)"
#: code:addons/web/static/src/js/fields/field_utils.js:239
#, python-format
msgid "1 record"
-msgstr ""
+msgstr "1条记录"
#. module: web
#: model:ir.ui.view,arch_db:web.menu_secondary
@@ -247,21 +251,21 @@ msgstr "<span>Odoo</span>"
msgid ""
"A popup window with your report was blocked. You may need to change your "
"browser settings to allow popup windows for this page."
-msgstr ""
+msgstr "你的报告弹出窗口被封锁了。您可能需要更改浏览器设置,以允许此页的弹出窗口。"
#. module: web
#. openerp-web
#: code:addons/web/static/src/xml/base.xml:589
#, python-format
msgid "ALL"
-msgstr ""
+msgstr "所有"
#. module: web
#. openerp-web
#: code:addons/web/static/src/xml/base.xml:590
#, python-format
msgid "ANY"
-msgstr ""
+msgstr "任何"
#. module: web
#. openerp-web
@@ -452,7 +456,7 @@ msgstr "发生了错误"
msgid ""
"An unknown CORS error occured. The error probably originates from a "
"JavaScript file served from a different origin."
-msgstr ""
+msgstr "发生未知的CORS错误。 该错误可能来自不同来源的JavaScript文件。"
#. module: web
#. openerp-web
@@ -548,7 +552,7 @@ msgstr "柱状图"
msgid ""
"Binary fields can not be exported to Excel unless their content is "
"base64-encoded. That does not seem to be the case for %s."
-msgstr ""
+msgstr "二进制字段不能导出到Excel,除非他们的内容是Base64编码。这似乎不适用于 %s。"
#. module: web
#. openerp-web
@@ -1229,6 +1233,9 @@ msgid ""
"\n"
"Tip: try to flip axis, filter further or reduce the number of measures."
msgstr ""
+"为了兼容Excel,如果列数超过256,则不能导出数据。\n"
+"\n"
+"提示:尝试翻转轴,进一步过滤或减少测量次数。"
#. module: web
#. openerp-web
@@ -1290,7 +1297,7 @@ msgstr ""
#: code:addons/web/static/src/js/core/dialog.js:250
#, python-format
msgid "I am sure about this."
-msgstr ""
+msgstr "我确信这一点。"
#. module: web
#. openerp-web
@@ -1335,7 +1342,7 @@ msgstr "无效的数据"
msgid ""
"Invalid database name. Only alphanumerical characters, underscore, hyphen "
"and dot are allowed."
-msgstr ""
+msgstr "数据库名称无效。只允许字母数字字符,下划线,连字符和点。"
#. module: web
#. openerp-web
@@ -1364,7 +1371,7 @@ msgstr "非法的模式"
#: code:addons/web/static/src/js/widgets/debug_manager.js:208
#, python-format
msgid "JS Mobile Tests"
-msgstr ""
+msgstr "JS移动端测试"
#. module: web
#. openerp-web
@@ -1471,7 +1478,7 @@ msgstr "M2O搜索字段目前不支持多个默认值"
#. module: web
#: model:ir.ui.view,arch_db:web.external_layout_boxed
msgid "Mail:"
-msgstr ""
+msgstr "Mail:"
#. module: web
#: model:ir.ui.view,arch_db:web.login_layout
@@ -1498,14 +1505,14 @@ msgstr "匹配"
#: code:addons/web/static/src/xml/base.xml:603
#, python-format
msgid "Match records with"
-msgstr ""
+msgstr "配记录"
#. module: web
#. openerp-web
#: code:addons/web/static/src/xml/base.xml:601
#, python-format
msgid "Match records with the following rule:"
-msgstr ""
+msgstr "根据以下规则匹配记录:"
#. module: web
#. openerp-web
@@ -1612,7 +1619,7 @@ msgstr "我的Odoo.com帐号"
#: code:addons/web/static/src/xml/base.xml:591
#, python-format
msgid "NONE"
-msgstr ""
+msgstr "无"
#. module: web
#. openerp-web
@@ -1835,7 +1842,7 @@ msgstr "仅整型数值是合法的。"
#, python-format
msgid ""
"Only employee can access this database. Please contact the administrator."
-msgstr ""
+msgstr "只有员工才能访问这个数据库。请与管理员联系。"
#. module: web
#. openerp-web
@@ -1941,7 +1948,7 @@ msgstr "透视表"
#: code:addons/web/static/src/js/views/list/list_renderer.js:327
#, python-format
msgid "Please click on the \"save\" button first"
-msgstr ""
+msgstr "请先点击“保存”按钮"
#. module: web
#. openerp-web
@@ -1993,7 +2000,7 @@ msgstr ""
#, python-format
msgid ""
"Please use the copy button to report the error to your support service."
-msgstr ""
+msgstr "请使用复制按钮将错误报告给您的支持服务。"
#. module: web
#: model:ir.ui.view,arch_db:web.menu_secondary
@@ -2112,7 +2119,7 @@ msgstr "恢复记录"
#: code:addons/web/static/src/xml/base.xml:223
#, python-format
msgid "Run JS Mobile Tests"
-msgstr ""
+msgstr "运行JS 移动端测试"
#. module: web
#. openerp-web
@@ -2380,7 +2387,7 @@ msgstr ""
#: code:addons/web/static/src/js/widgets/switch_company_menu.js:44
#, python-format
msgid "Tap on the list to change company"
-msgstr ""
+msgstr "点击列表更改公司"
#. module: web
#. openerp-web
@@ -2401,7 +2408,7 @@ msgstr "电话:"
#: code:addons/web/static/src/js/widgets/domain_selector.js:567
#, python-format
msgid "The domain you entered is not properly formed"
-msgstr ""
+msgstr "您输入的域格式不正确。"
#. module: web
#. openerp-web
@@ -2410,7 +2417,7 @@ msgstr ""
msgid ""
"The field chain is not valid. Did you maybe use a non-existing field name or"
" followed a non-relational field?"
-msgstr ""
+msgstr "字段链无效。 你可能使用了一个不存在的字段名称,或者跟着一个非关系的字段?"
#. module: web
#. openerp-web
@@ -2446,7 +2453,7 @@ msgstr "你提供的原密码是错误的,密码没有改变"
msgid ""
"The record has been modified, your changes will be discarded. Do you want to"
" proceed?"
-msgstr ""
+msgstr "记录已被修改,您的更改将被丢弃。你想继续吗?"
#. module: web
#. openerp-web
@@ -2470,7 +2477,7 @@ msgstr "字段类型 '%s' 必须是一个关联到 'ir.attachment'模型的 man
msgid ""
"There are too many rows (%s rows, limit: 65535) to export as Excel 97-2003 "
"(.xls) format. Consider splitting the export."
-msgstr ""
+msgstr "有太多行 (%s行, 限制: 65535) 导出为 Excel 97-2003 (. xls) 格式。考虑拆分导出。"
#. module: web
#. openerp-web
@@ -2484,7 +2491,7 @@ msgstr "上传文件时发生了问题"
#: code:addons/web/static/src/js/widgets/domain_selector.js:459
#, python-format
msgid "This domain is not supported."
-msgstr ""
+msgstr "此域不受支持"
#. module: web
#. openerp-web
@@ -2725,17 +2732,17 @@ msgstr "警告"
#. module: web
#: model:ir.ui.view,arch_db:web.benchmark_suite
msgid "Web Benchmarks"
-msgstr ""
+msgstr "Web 基准"
#. module: web
#: model:ir.ui.view,arch_db:web.qunit_mobile_suite
msgid "Web Mobile Tests"
-msgstr ""
+msgstr "Web 移动端测试"
#. module: web
#: model:ir.ui.view,arch_db:web.qunit_suite
msgid "Web Tests"
-msgstr ""
+msgstr "Web 测试"
#. module: web
#: model:ir.ui.view,arch_db:web.external_layout_boxed
@@ -2826,7 +2833,7 @@ msgstr "正要创建新的 %s,确认它真的不存在吗?"
#: code:addons/web/static/src/js/widgets/model_field_selector.js:455
#, python-format
msgid "You cannot follow relations for this field chain construction"
-msgstr ""
+msgstr "无法跟踪此字段链结构的关系。"
#. module: web
#: code:addons/web/controllers/main.py:787
@@ -2885,13 +2892,15 @@ msgid ""
"shown in html.<br><br><a href=\"http://wkhtmltopdf.org/\" "
"target=\"_blank\">wkhtmltopdf.org</a>"
msgstr ""
+"你安装的 Wkhtmltopdf 似乎坏了。该报告将以 html 格式显示。<br> <br> <a "
+"href=“http://wkhtmltopdf.org/“ target=“_blank”> wkhtmltopdf.org </a>"
#. module: web
#. openerp-web
#: code:addons/web/static/src/js/views/kanban/kanban_record.js:199
#, python-format
msgid "[No widget %s]"
-msgstr ""
+msgstr "[没有小部件 %s]"
#. module: web
#. openerp-web
@@ -2945,7 +2954,7 @@ msgstr "base"
#: code:addons/web/static/src/js/widgets/domain_selector.js:28
#, python-format
msgid "child of"
-msgstr ""
+msgstr "子类"
#. module: web
#. openerp-web
@@ -3005,14 +3014,14 @@ msgstr "是"
#: code:addons/web/static/src/js/chrome/search_filters.js:183
#, python-format
msgid "is after"
-msgstr ""
+msgstr "在之后"
#. module: web
#. openerp-web
#: code:addons/web/static/src/js/chrome/search_filters.js:184
#, python-format
msgid "is before"
-msgstr ""
+msgstr "在之前"
#. module: web
#. openerp-web
@@ -3092,7 +3101,7 @@ msgstr "为真"
#: code:addons/web/static/src/js/core/utils.js:111
#, python-format
msgid "kMGTPE"
-msgstr ""
+msgstr "kMGTPE"
#. module: web
#. openerp-web
@@ -3123,7 +3132,7 @@ msgstr "少于及等于"
#: code:addons/web/static/src/xml/base.xml:686
#, python-format
msgid "not"
-msgstr ""
+msgstr "不是"
#. module: web
#. openerp-web
@@ -3144,35 +3153,35 @@ msgstr "不是一个有效的数字"
#: code:addons/web/static/src/js/widgets/domain_selector.js:24
#, python-format
msgid "not contains"
-msgstr ""
+msgstr "不包含"
#. module: web
#. openerp-web
#: code:addons/web/static/src/js/widgets/domain_selector.js:26
#, python-format
msgid "not in"
-msgstr ""
+msgstr "不在"
#. module: web
#. openerp-web
#: code:addons/web/static/src/js/widgets/domain_selector.js:658
#, python-format
msgid "not set (false)"
-msgstr ""
+msgstr "未设置 (否)"
#. module: web
#. openerp-web
#: code:addons/web/static/src/xml/base.xml:605
#, python-format
msgid "of the following rules:"
-msgstr ""
+msgstr "以下规则:"
#. module: web
#. openerp-web
#: code:addons/web/static/src/xml/base.xml:620
#, python-format
msgid "of:"
-msgstr ""
+msgstr "的:"
#. module: web
#. openerp-web
@@ -3187,7 +3196,7 @@ msgstr "或"
#: code:addons/web/static/src/js/widgets/domain_selector.js:29
#, python-format
msgid "parent of"
-msgstr ""
+msgstr "父类"
#. module: web
#. openerp-web
@@ -3208,11 +3217,11 @@ msgstr "剩余)"
#: code:addons/web/static/src/xml/base.xml:686
#, python-format
msgid "set"
-msgstr ""
+msgstr "设置"
#. module: web
#. openerp-web
#: code:addons/web/static/src/js/widgets/domain_selector.js:658
#, python-format
msgid "set (true)"
-msgstr ""
+msgstr "设置(真)"
diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js
index c9375c2d4b9..75aa1acd164 100644
--- a/addons/web/static/src/js/fields/basic_fields.js
+++ b/addons/web/static/src/js/fields/basic_fields.js
@@ -1082,6 +1082,7 @@ var UrlWidget = InputField.extend({
_renderReadonly: function () {
this.$el.text(this.attrs.text || this.value)
.addClass('o_form_uri o_text_overflow')
+ .attr('target', '_blank')
.attr('href', this.value);
}
});
diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js
index 1ee40bfccdb..eba8dc90704 100644
--- a/addons/web/static/src/js/fields/relational_fields.js
+++ b/addons/web/static/src/js/fields/relational_fields.js
@@ -1105,6 +1105,7 @@ var FieldX2Many = AbstractField.extend({
* @param {OdooEvent} event
*/
_onResequence: function (event) {
+ event.stopPropagation();
var self = this;
this.trigger_up('freeze_order', {id: this.value.id});
var rowIDs = event.data.rowIDs.slice();
diff --git a/addons/web/static/src/js/fields/special_fields.js b/addons/web/static/src/js/fields/special_fields.js
index 19db97fe985..6bd5d03ac69 100644
--- a/addons/web/static/src/js/fields/special_fields.js
+++ b/addons/web/static/src/js/fields/special_fields.js
@@ -20,7 +20,8 @@ var FieldTimezoneMismatch = FieldSelection.extend({
* @override
*/
start: function () {
- this._datetime = setInterval(this._renderDateTimeTimezone.bind(this), 1000);
+ var interval = navigator.platform.toUpperCase().indexOf('MAC') >= 0 ? 60000 : 1000;
+ this._datetime = setInterval(this._renderDateTimeTimezone.bind(this), interval);
return this._super.apply(this, arguments);
},
/**
diff --git a/addons/web/static/src/js/views/kanban/kanban_column.js b/addons/web/static/src/js/views/kanban/kanban_column.js
index 038e7f53d30..e66601816c2 100644
--- a/addons/web/static/src/js/views/kanban/kanban_column.js
+++ b/addons/web/static/src/js/views/kanban/kanban_column.js
@@ -102,7 +102,7 @@ var KanbanColumn = Widget.extend({
// should find a way to use the touch events to make sortable work.
this.$el.sortable({
connectWith: '.o_kanban_group',
- containment: this.draggable ? '.o_kanban_view' : 'parent',
+ containment: this.draggable ? false : 'parent',
revert: 0,
delay: 0,
items: '> .o_kanban_record:not(.o_updating)',
diff --git a/addons/web/static/src/less/webclient.less b/addons/web/static/src/less/webclient.less
index 1ad894de3de..af76b82faba 100644
--- a/addons/web/static/src/less/webclient.less
+++ b/addons/web/static/src/less/webclient.less
@@ -80,39 +80,37 @@ div.o_boolean_toggle {
width: 32px !important;
height: 18px;
- & > label {
- & > input {
+ > input {
display: none;
}
- & > .slider {
+ .slider {
+ position: absolute;
+ cursor: pointer;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background-color: #a0a0a0;
+ border-radius: 24px;
+
+ &:before {
position: absolute;
- cursor: pointer;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- background-color: #a0a0a0;
- border-radius: 24px;
-
- &:before {
- position: absolute;
- content: "";
- height: 12px;
- width: 12px;
- left: 3px;
- bottom: 3px;
- background-color: white;
- border-radius: 50%;
- }
+ content: "";
+ height: 12px;
+ width: 12px;
+ left: 3px;
+ bottom: 3px;
+ background-color: white;
+ border-radius: 50%;
}
+ }
- & > input:checked + .slider {
- background-color: @odoo-brand-optional;
+ > input:checked + .slider {
+ background-color: @odoo-brand-optional;
- &:before {
- .translate(14px; 0px);
- }
+ &:before {
+ .translate(14px; 0px);
}
}
}
diff --git a/addons/web/static/tests/fields/basic_fields_tests.js b/addons/web/static/tests/fields/basic_fields_tests.js
index 44f00d1d7f9..8488076b3f0 100644
--- a/addons/web/static/tests/fields/basic_fields_tests.js
+++ b/addons/web/static/tests/fields/basic_fields_tests.js
@@ -1111,7 +1111,7 @@ QUnit.module('basic_fields', {
QUnit.module('UrlWidget');
QUnit.test('url widget in form view', function (assert) {
- assert.expect(8);
+ assert.expect(9);
var form = createView({
View: FormView,
@@ -1131,6 +1131,8 @@ QUnit.module('basic_fields', {
"should have a anchor with correct classes");
assert.strictEqual(form.$('a.o_form_uri.o_field_widget.o_text_overflow').attr('href'), 'yop',
"should have proper href link");
+ assert.strictEqual(form.$('a.o_form_uri.o_field_widget.o_text_overflow').attr('target'), '_blank',
+ "should have target attribute set to _blank");
assert.strictEqual(form.$('a.o_form_uri.o_field_widget.o_text_overflow').text(), 'yop',
"the value should be displayed properly");
diff --git a/addons/web/static/tests/fields/relational_fields_tests.js b/addons/web/static/tests/fields/relational_fields_tests.js
index b30f70757e0..beb47c2a22d 100644
--- a/addons/web/static/tests/fields/relational_fields_tests.js
+++ b/addons/web/static/tests/fields/relational_fields_tests.js
@@ -1321,6 +1321,93 @@ QUnit.module('relational_fields', {
form.destroy();
});
+ QUnit.test('X2Many sequence list in modal', function (assert) {
+ assert.expect(5);
+
+ this.data.partner.fields.sequence = {string: 'Sequence', type: 'integer'};
+ this.data.partner.records[0].sequence = 1;
+ this.data.partner.records[1].sequence = 2;
+ this.data.partner.onchanges = {
+ sequence: function (obj) {
+ if (obj.id === 2) {
+ obj.sequence = 1;
+ assert.step('onchange sequence');
+ }
+ },
+ };
+
+ this.data.product.fields.turtle_ids = {string: 'Turtles', type: 'one2many', relation: 'turtle'};
+ this.data.product.records[0].turtle_ids = [1];
+
+ this.data.turtle.fields.partner_types_ids = {string: "Partner", type: "one2many", relation: 'partner'};
+ this.data.turtle.fields.type_id = {string: "Partner Type", type: "many2one", relation: 'partner_type'};
+
+ this.data.partner_type.fields.partner_ids = {string: "Partner", type: "one2many", relation: 'partner'};
+ this.data.partner_type.records[0].partner_ids = [1,2];
+
+ testUtils.createAsyncView({
+ View: FormView,
+ model: 'product',
+ data: this.data,
+ arch: '<form>' +
+ '<field name="name"/>' +
+ '<field name="turtle_ids" widget="one2many_list">' +
+ '<tree string="Turtles" editable="bottom">' +
+ '<field name="type_id"/>' +
+ '</tree>' +
+ '</field>' +
+ '</form>',
+ archs: {
+ 'partner_type,false,form': '<form><field name="partner_ids"/></form>',
+ 'partner,false,list': '<tree string="Vendors">' +
+ '<field name="display_name"/>' +
+ '<field name="sequence" widget="handle"/>' +
+ '</tree>',
+ },
+ res_id: 37,
+ mockRPC: function (route, args) {
+ if (route === '/web/dataset/call_kw/product/read') {
+ return $.when([{id: 37, name: 'xphone', display_name: 'leonardo', turtle_ids: [1]}]);
+ }
+ if (route === '/web/dataset/call_kw/turtle/read') {
+ return $.when([{id: 1, type_id: [12, 'gold']}]);
+ }
+ if (route === '/web/dataset/call_kw/partner_type/get_formview_id') {
+ return $.when(false)
+ }
+ if (route === '/web/dataset/call_kw/partner_type/read') {
+ return $.when([{id: 12, partner_ids: [1,2], display_name: 'gold'}])
+ }
+ if (route === '/web/dataset/call_kw/partner_type/write') {
+ assert.step('partner_type write');
+ }
+ return this._super.apply(this, arguments);
+ },
+ }).then(function(form) {
+ form.$buttons.find('.o_form_button_edit').click();
+ form.$('.o_data_cell').click();
+ form.$('.o_external_button').click();
+
+ var $modal = $('.modal-dialog');
+ assert.equal($modal.length, 1,
+ 'There should be 1 modal opened');
+
+ var $handles = $modal.find('.ui-sortable-handle');
+ assert.equal($handles.length, 2,
+ 'There should be 2 sequence handlers');
+
+ testUtils.dragAndDrop($handles.eq(1), $modal.find('tbody tr').first());
+
+ // Saving the modal and then the original model
+ $modal.find('.modal-footer .btn-primary').click();
+ form.$buttons.find('.o_form_button_save').click();
+
+ assert.verifySteps(['onchange sequence', 'partner_type write']);
+
+ form.destroy();
+ });
+ });
+
QUnit.test('autocompletion in a many2one, in form view with a domain', function (assert) {
assert.expect(1);
diff --git a/addons/web_diagram/i18n/zh_CN.po b/addons/web_diagram/i18n/zh_CN.po
index b2597d443c0..ad0af717861 100644
--- a/addons/web_diagram/i18n/zh_CN.po
+++ b/addons/web_diagram/i18n/zh_CN.po
@@ -3,15 +3,16 @@
# * web_diagram
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2017
-# Martin Trigaux <mat@odoo.com>, 2017
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
+# Martin Trigaux, 2016
+# 山西清水欧度(QQ:54773801) <54773801@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.saas~18\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-20 09:54+0000\n"
"PO-Revision-Date: 2017-09-20 09:54+0000\n"
-"Last-Translator: Martin Trigaux <mat@odoo.com>, 2017\n"
+"Last-Translator: 山西清水欧度(QQ:54773801) <54773801@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -34,14 +35,14 @@ msgstr "活动"
msgid ""
"Are you sure you want to remove this node ? This will remove its connected "
"transitions as well."
-msgstr ""
+msgstr "你确定要删除这个节点? 这也将删除其连接的转换。"
#. module: web_diagram
#. openerp-web
#: code:addons/web_diagram/static/src/js/diagram_controller.js:172
#, python-format
msgid "Are you sure you want to remove this transition?"
-msgstr ""
+msgstr "你确定要删除这个转换吗?"
#. module: web_diagram
#. openerp-web
@@ -71,7 +72,7 @@ msgstr "新建节点"
#: code:addons/web_diagram/static/src/js/diagram_controller.js:160
#, python-format
msgid "Open:"
-msgstr ""
+msgstr "打开"
#. module: web_diagram
#. openerp-web
diff --git a/addons/web_editor/i18n/zh_CN.po b/addons/web_editor/i18n/zh_CN.po
index fd2945a38c5..900425d9274 100644
--- a/addons/web_editor/i18n/zh_CN.po
+++ b/addons/web_editor/i18n/zh_CN.po
@@ -3,25 +3,26 @@
# * web_editor
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
-# fausthuang <faust_huang@hotmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
+# fausthuang, 2016
# Xia Fajin <xia.fajin@elico-corp.com>, 2016
# Xu Lei <xulei8@qq.com>, 2016
# Talway <9010446@qq.com>, 2016
-# Martin Trigaux <mat@odoo.com>, 2016
+# Martin Trigaux, 2016
# liAnGjiA <liangjia@qq.com>, 2016
# SHOM <shanmuxin@yeah.net>, 2016
# mrshelly <mrshelly@hotmail.com>, 2016
# Gary Wei <Gary.wei@elico-corp.com>, 2016
# THL <wt39181819@gmail.com>, 2016
# waveyeung <waveyeung@qq.com>, 2016
+# 山西清水欧度(QQ:54773801) <54773801@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.saas~18\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-09-20 09:54+0000\n"
"PO-Revision-Date: 2017-09-20 09:54+0000\n"
-"Last-Translator: waveyeung <waveyeung@qq.com>, 2016\n"
+"Last-Translator: 山西清水欧度(QQ:54773801) <54773801@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -51,7 +52,7 @@ msgstr "25% 黑"
#. module: web_editor
#: model:ir.ui.view,arch_db:web_editor.colorpicker
msgid "25% White"
-msgstr ""
+msgstr "25% 白"
#. module: web_editor
#: model:ir.ui.view,arch_db:web_editor.colorpicker
@@ -85,14 +86,14 @@ msgstr "<i class=\"fa fa-th-large\"/> 首个面板"
msgid ""
"A server error occured. Please check you correctly signed in and that the "
"file you are saving is well-formed."
-msgstr ""
+msgstr "服务器发生错误。 请检查您是否正确登录,并且保存的文件格式正确。"
#. module: web_editor
#. openerp-web
#: code:addons/web_editor/static/src/xml/editor.xml:198
#, python-format
msgid "Accepts"
-msgstr ""
+msgstr " 接受"
#. module: web_editor
#. openerp-web
@@ -144,7 +145,7 @@ msgstr "居右"
#. module: web_editor
#: model:ir.ui.view,arch_db:web_editor.colorpicker
msgid "Alpha"
-msgstr ""
+msgstr "Alpha"
#. module: web_editor
#. openerp-web
@@ -158,7 +159,7 @@ msgstr "替代上传"
#: code:addons/web_editor/static/src/xml/editor.xml:315
#, python-format
msgid "Assign a focal point that will always be visible"
-msgstr ""
+msgstr "指定一个总是可见的焦点"
#. module: web_editor
#: model:ir.model.fields,field_description:web_editor.field_ir_attachment_local_url
@@ -232,7 +233,7 @@ msgstr "背景宽度"
#. module: web_editor
#: model:ir.ui.view,arch_db:web_editor.colorpicker
msgid "Beta"
-msgstr ""
+msgstr "Beta"
#. module: web_editor
#: model:ir.ui.view,arch_db:web_editor.colorpicker
@@ -258,7 +259,7 @@ msgstr "加粗"
#: code:addons/web_editor/static/src/js/widgets/ace.js:827
#, python-format
msgid "Careful !"
-msgstr ""
+msgstr "小心!"
#. module: web_editor
#. openerp-web
@@ -337,7 +338,7 @@ msgstr "待翻译的内容"
#: code:addons/web_editor/static/src/xml/editor.xml:194
#, python-format
msgid "Copy-paste your URL or embed code here"
-msgstr ""
+msgstr "复制粘贴您的URL或在这里嵌入代码"
#. module: web_editor
#. openerp-web
@@ -375,7 +376,7 @@ msgstr "定制"
#: code:addons/web_editor/static/src/xml/editor.xml:198
#, python-format
msgid "Dailymotion"
-msgstr ""
+msgstr "Dailymotion"
#. module: web_editor
#: model:ir.ui.view,arch_db:web_editor.colorpicker
@@ -394,7 +395,7 @@ msgstr "默认"
#: code:addons/web_editor/static/src/xml/editor.xml:387
#, python-format
msgid "Define if/how the background image will be repeated"
-msgstr ""
+msgstr "定义背景图像是否重复"
#. module: web_editor
#: model:ir.ui.view,arch_db:web_editor.colorpicker
@@ -413,7 +414,7 @@ msgstr "说明"
#: code:addons/web_editor/static/src/xml/editor.xml:34
#, python-format
msgid "Description (alt tag)"
-msgstr ""
+msgstr "描述(ALT标签)"
#. module: web_editor
#. openerp-web
@@ -483,14 +484,14 @@ msgstr "编辑"
#. module: web_editor
#: model:ir.ui.view,arch_db:web_editor.colorpicker
msgid "Epsilon"
-msgstr ""
+msgstr "Epsilon"
#. module: web_editor
#. openerp-web
#: code:addons/web_editor/static/src/js/widgets/ace.js:93
#, python-format
msgid "Expected "
-msgstr ""
+msgstr "预期"
#. module: web_editor
#. openerp-web
@@ -572,7 +573,7 @@ msgstr "全屏"
#. module: web_editor
#: model:ir.ui.view,arch_db:web_editor.colorpicker
msgid "Gamma"
-msgstr ""
+msgstr "Gamma"
#. module: web_editor
#: model:ir.ui.view,arch_db:web_editor.colorpicker
@@ -587,7 +588,7 @@ msgstr "深灰"
#. module: web_editor
#: model:ir.ui.view,arch_db:web_editor.colorpicker
msgid "Gray Darker"
-msgstr ""
+msgstr "暗灰色"
#. module: web_editor
#: model:ir.ui.view,arch_db:web_editor.colorpicker
@@ -597,7 +598,7 @@ msgstr "浅灰"
#. module: web_editor
#: model:ir.ui.view,arch_db:web_editor.colorpicker
msgid "Gray Lighter"
-msgstr ""
+msgstr "亮灰色"
#. module: web_editor
#: model:ir.model,name:web_editor.model_ir_http
@@ -665,35 +666,35 @@ msgstr "这是用来帮助你提高翻译效率的可视化工具:"
#: code:addons/web_editor/static/src/xml/editor.xml:219
#, python-format
msgid "Hide Dailymotion logo"
-msgstr ""
+msgstr "隐藏Dailymotion标志"
#. module: web_editor
#. openerp-web
#: code:addons/web_editor/static/src/xml/editor.xml:216
#, python-format
msgid "Hide Youtube logo"
-msgstr ""
+msgstr "隐藏Youtube标志"
#. module: web_editor
#. openerp-web
#: code:addons/web_editor/static/src/xml/editor.xml:213
#, python-format
msgid "Hide fullscreen button"
-msgstr ""
+msgstr "隐藏全屏按钮"
#. module: web_editor
#. openerp-web
#: code:addons/web_editor/static/src/xml/editor.xml:210
#, python-format
msgid "Hide player controls"
-msgstr ""
+msgstr "隐藏播放器控件"
#. module: web_editor
#. openerp-web
#: code:addons/web_editor/static/src/xml/editor.xml:222
#, python-format
msgid "Hide sharing button"
-msgstr ""
+msgstr "隐藏分享按钮"
#. module: web_editor
#. openerp-web
@@ -714,7 +715,7 @@ msgstr "ID"
msgid ""
"If you discard the current edition, all unsaved changes will be lost. You "
"can cancel to return to the edition mode."
-msgstr ""
+msgstr "如果放弃当前版本,则所有未保存的更改都将丢失。 您可以取消返回到编辑模式。"
#. module: web_editor
#. openerp-web
@@ -723,7 +724,7 @@ msgstr ""
msgid ""
"If you reset this file, all your customizations will be lost as it will be "
"reverted to the default file."
-msgstr ""
+msgstr "如果您重置此文件,所有您的自定义将丢失,因为它将被还原为默认文件。"
#. module: web_editor
#. openerp-web
@@ -746,14 +747,14 @@ msgstr "图像网址"
msgid ""
"In this mode, you can only translate texts. To change the structure of the page, you must edit the master page.\n"
" Each modification on the master page is automatically applied to all translated versions."
-msgstr ""
+msgstr "在这种模式下,您只能翻译文本。若要更改页的结构,必须编辑母版页。 母版页上的每一项修改都会自动应用于所有已翻译的版本。"
#. module: web_editor
#. openerp-web
#: code:addons/web_editor/static/src/xml/ace.xml:23
#, python-format
msgid "Include All LESS Files"
-msgstr ""
+msgstr "包括所有LESS文件"
#. module: web_editor
#. openerp-web
@@ -807,7 +808,7 @@ msgstr "插入视频"
#: code:addons/web_editor/static/src/xml/editor.xml:198
#, python-format
msgid "Instagram"
-msgstr ""
+msgstr "Instagram"
#. module: web_editor
#. openerp-web
@@ -842,7 +843,7 @@ msgstr "键盘快捷键"
#: code:addons/web_editor/static/src/xml/ace.xml:11
#, python-format
msgid "LESS (CSS)"
-msgstr ""
+msgstr "LESS (CSS)"
#. module: web_editor
#. openerp-web
@@ -872,7 +873,7 @@ msgstr "最后更新时间"
#: code:addons/web_editor/static/src/js/widgets/ace.js:360
#, python-format
msgid "Less file: %s"
-msgstr ""
+msgstr "Less 文件: %s"
#. module: web_editor
#. openerp-web
@@ -907,7 +908,7 @@ msgstr "链接到"
#: code:addons/web_editor/static/src/xml/editor.xml:207
#, python-format
msgid "Loop"
-msgstr ""
+msgstr "循环"
#. module: web_editor
#. openerp-web
@@ -971,7 +972,7 @@ msgstr "确定"
#: code:addons/web_editor/static/src/js/editor/translator.js:93
#, python-format
msgid "Ok, never show me this again"
-msgstr ""
+msgstr "好了, 别再给我看这个"
#. module: web_editor
#. openerp-web
@@ -1043,7 +1044,7 @@ msgstr "预览"
#: code:addons/web_editor/static/src/xml/editor.xml:57
#, python-format
msgid "Previous"
-msgstr ""
+msgstr "以前"
#. module: web_editor
#: model:ir.ui.view,arch_db:web_editor.colorpicker
@@ -1154,7 +1155,7 @@ msgstr "设置为默认"
#: code:addons/web_editor/static/src/js/widgets/ace.js:485
#, python-format
msgid "Reseting views is not supported yet"
-msgstr ""
+msgstr "不支持重置视图"
#. module: web_editor
#. openerp-web
@@ -1212,7 +1213,7 @@ msgstr "搜索联系人"
#: code:addons/web_editor/static/src/xml/snippets.xml:17
#, python-format
msgid "Select Parent Container"
-msgstr ""
+msgstr "选择父容器"
#. module: web_editor
#. openerp-web
@@ -1240,14 +1241,14 @@ msgstr "从文件中选择"
#: code:addons/web_editor/static/src/js/widgets/ace.js:567
#, python-format
msgid "Server error"
-msgstr ""
+msgstr "服务器错误"
#. module: web_editor
#. openerp-web
#: code:addons/web_editor/static/src/xml/editor.xml:365
#, python-format
msgid "Set the starting position of the background image."
-msgstr ""
+msgstr "设置背景图像的起始位置。"
#. module: web_editor
#. openerp-web
@@ -1263,7 +1264,7 @@ msgstr "设置透明"
msgid ""
"Sets the width and height of the background image in percent of the parent "
"element."
-msgstr ""
+msgstr "设置背景图像的宽度和高度,以父元素的百分比表示。"
#. module: web_editor
#. openerp-web
@@ -1371,21 +1372,21 @@ msgstr ""
#: code:addons/web_editor/static/src/js/widgets/widgets.js:871
#, python-format
msgid "The provided url does not reference any supported video"
-msgstr ""
+msgstr "提供的网址不存在任何支持的视频"
#. module: web_editor
#. openerp-web
#: code:addons/web_editor/static/src/js/widgets/widgets.js:865
#, python-format
msgid "The provided url is not valid"
-msgstr ""
+msgstr "提供的网址无效"
#. module: web_editor
#. openerp-web
#: code:addons/web_editor/static/src/js/editor/rte.summernote.js:53
#, python-format
msgid "Theme colors"
-msgstr ""
+msgstr "主题颜色"
#. module: web_editor
#. openerp-web
@@ -1428,7 +1429,7 @@ msgstr "已翻译的内容"
#: code:addons/web_editor/static/src/js/editor/translator.js:91
#, python-format
msgid "Translation Info"
-msgstr ""
+msgstr "翻译信息"
#. module: web_editor
#. openerp-web
@@ -1443,7 +1444,7 @@ msgstr "透明"
#: code:addons/web_editor/static/src/xml/editor.xml:248
#, python-format
msgid "URL or Email"
-msgstr ""
+msgstr "网址或电子邮件"
#. module: web_editor
#. openerp-web
@@ -1464,7 +1465,7 @@ msgstr "取消"
#: code:addons/web_editor/static/src/js/widgets/ace.js:86
#, python-format
msgid "Unexpected "
-msgstr ""
+msgstr "意外"
#. module: web_editor
#. openerp-web
@@ -1535,21 +1536,21 @@ msgstr "视频网址?"
#: code:addons/web_editor/static/src/xml/editor.xml:193
#, python-format
msgid "Video code"
-msgstr ""
+msgstr "视频代码"
#. module: web_editor
#. openerp-web
#: code:addons/web_editor/static/src/xml/editor.xml:198
#, python-format
msgid "Vimeo"
-msgstr ""
+msgstr "Vimeo"
#. module: web_editor
#. openerp-web
#: code:addons/web_editor/static/src/xml/editor.xml:198
#, python-format
msgid "Vine.co"
-msgstr ""
+msgstr "Vine.co"
#. module: web_editor
#: model:ir.ui.view,arch_db:web_editor.colorpicker
@@ -1567,7 +1568,7 @@ msgstr "白"
#: code:addons/web_editor/static/src/xml/ace.xml:10
#, python-format
msgid "XML (HTML)"
-msgstr ""
+msgstr "XML (HTML)"
#. module: web_editor
#. openerp-web
@@ -1588,14 +1589,14 @@ msgstr "你将进入翻译模式。"
#: code:addons/web_editor/static/src/xml/editor.xml:198
#, python-format
msgid "Youku"
-msgstr ""
+msgstr "Youku"
#. module: web_editor
#. openerp-web
#: code:addons/web_editor/static/src/xml/editor.xml:198
#, python-format
msgid "Youtube"
-msgstr ""
+msgstr "Youtube"
#. module: web_editor
#. openerp-web
@@ -1619,7 +1620,7 @@ msgstr "自动"
#: code:addons/web_editor/static/src/xml/editor.xml:113
#, python-format
msgid "https://www.odoo.com/logo.png"
-msgstr ""
+msgstr "https://www.odoo.com/logo.png"
#. module: web_editor
#: model:ir.model,name:web_editor.model_ir_attachment
@@ -1721,7 +1722,7 @@ msgstr "ir.ui.view"
#: code:addons/web_editor/static/src/xml/editor.xml:198
#, python-format
msgid "videos"
-msgstr ""
+msgstr "视频"
#. module: web_editor
#: model:ir.model,name:web_editor.model_web_editor_converter_test
diff --git a/addons/web_editor/static/src/js/backend/fields.js b/addons/web_editor/static/src/js/backend/fields.js
index cbdb6cbb88b..b84fcd21c91 100644
--- a/addons/web_editor/static/src/js/backend/fields.js
+++ b/addons/web_editor/static/src/js/backend/fields.js
@@ -409,7 +409,19 @@ var FieldTextHtml = AbstractField.extend({
var layoutInfo = self.editor.rte.editable().data('layoutInfo');
$.summernote.pluginEvents.codeview(undefined, undefined, layoutInfo, false);
}
+ var $ancestors = self.$iframe.filter(':not(:visible)').parentsUntil(':visible').addBack();
+ var ancestorsStyle = [];
+ // temporarily force displaying iframe (needed for firefox)
+ _.each($ancestors, function (el) {
+ var $el = $(el);
+ ancestorsStyle.unshift($el.attr('style') || null);
+ $el.css({display: 'initial', visibility: 'hidden', height: 1});
+ });
self.editor.snippetsMenu && self.editor.snippetsMenu.cleanForSave();
+ _.each($ancestors, function (el) {
+ var $el = $(el);
+ $el.attr('style', ancestorsStyle.pop());
+ });
self._setValue(self.$content.html());
});
},
diff --git a/addons/web_editor/static/src/js/editor/rte.js b/addons/web_editor/static/src/js/editor/rte.js
index b23975f002f..7ad20c0e614 100644
--- a/addons/web_editor/static/src/js/editor/rte.js
+++ b/addons/web_editor/static/src/js/editor/rte.js
@@ -281,8 +281,10 @@ var RTEWidget = Widget.extend({
.each(function () {
var $node = $(this);
+ // fallback for firefox iframe display:none see https://github.com/odoo/odoo/pull/22610
+ var computedStyles = window.getComputedStyle(this) || window.parent.getComputedStyle(this);
// add class to display inline-block for empty t-field
- if (window.getComputedStyle(this).display === 'inline' && $node.data('oe-type') !== 'image') {
+ if (computedStyles.display === 'inline' && $node.data('oe-type') !== 'image') {
$node.addClass('o_is_inline_editable');
}
});
@@ -651,26 +653,16 @@ var RTEWidget = Widget.extend({
self.historyRecordUndo($target, 'activate', true);
});
- // To Fix Google Chrome Tripleclick Issue, which selects the ending
- // whitespace characters (so Tripleclicking then typing text will remove
- // the whole paragraph instead of its content).
- // http://stackoverflow.com/questions/38467334/why-does-google-chrome-always-add-space-after-selected-text
- if ($.browser.chrome === true && ev.originalEvent.detail === 3) {
- var currentSelection = range.create();
- if (currentSelection.sc.parentNode === currentSelection.ec) {
- _selectSC(currentSelection);
- } else if (currentSelection.eo === 0) {
- var $hasNext = $(currentSelection.sc).parent();
- while (!$hasNext.next().length && !$hasNext.is('body')) {
- $hasNext = $hasNext.parent();
- }
- if ($hasNext.next()[0] === currentSelection.ec) {
- _selectSC(currentSelection);
- }
- }
- }
- function _selectSC(selection) {
- range.create(selection.sc, selection.so, selection.sc, selection.sc.length).select();
+ // Browsers select different content from one to another after a
+ // triple click (especially: if triple-clicking on a paragraph on
+ // Chrome, blank characters of the element following the paragraph are
+ // selected too)
+ //
+ // The triple click behavior is reimplemented for all browsers here
+ if (ev.originalEvent.detail === 3) {
+ // Select the whole content inside the deepest DOM element that was
+ // triple-clicked
+ range.create(ev.target, 0, ev.target, ev.target.childNodes.length).select();
}
},
});
diff --git a/addons/web_editor/static/src/js/editor/rte.summernote.js b/addons/web_editor/static/src/js/editor/rte.summernote.js
index 60431b86e57..d2613f42635 100644
--- a/addons/web_editor/static/src/js/editor/rte.summernote.js
+++ b/addons/web_editor/static/src/js/editor/rte.summernote.js
@@ -421,6 +421,9 @@ dom.isImg = function (node) {
};
var fn_is_forbidden_node = dom.isForbiddenNode || function () {};
dom.isForbiddenNode = function (node) {
+ if (node.tagName === "BR") {
+ return false;
+ }
return fn_is_forbidden_node(node) || $(node).is(".media_iframe_video");
};
var fn_is_img_font = dom.isImgFont || function () {};
diff --git a/addons/web_editor/static/src/js/editor/summernote.js b/addons/web_editor/static/src/js/editor/summernote.js
index 8ce2ed692da..59609eab8a5 100644
--- a/addons/web_editor/static/src/js/editor/summernote.js
+++ b/addons/web_editor/static/src/js/editor/summernote.js
@@ -694,10 +694,16 @@ dom.isRemovableEmptyNode = function (node) {
dom.isForbiddenNode = function (node) {
return node.tagName === "BR" || $(node).is(".fa, img");
};
-dom.listBetween = function (sc, ec) {
+/**
+ * @todo 'so' and 'eo' were added as a bugfix and are not given everytime. They
+ * however should be as the function may be wrong without them (for example,
+ * when asking the list between an element and its parent, as there is no path
+ * from the beginning of the former to the beginning of the later).
+ */
+dom.listBetween = function (sc, ec, so, eo) {
var nodes = [];
var ancestor = dom.commonAncestor(sc, ec);
- dom.walkPoint({'node': sc, 'offset': 0}, {'node': ec, 'offset': 0}, function (point) {
+ dom.walkPoint({'node': sc, 'offset': so || 0}, {'node': ec, 'offset': eo || 0}, function (point) {
if (ancestor !== point.node || ancestor === sc || ancestor === ec) {
nodes.push(point.node);
}
@@ -1869,7 +1875,7 @@ $.summernote.pluginEvents.formatBlock = function (event, editor, layoutInfo, sTa
}
// fix by odoo because if you select a style in a li with no p tag all the ul is wrapped by the style tag
- var nodes = dom.listBetween(r.sc, r.ec);
+ var nodes = dom.listBetween(r.sc, r.ec, r.so, r.eo);
for (var i=0; i<nodes.length; i++) {
if (dom.isBR(nodes[i]) || (dom.isText(nodes[i]) && dom.isVisibleText(nodes[i])) || dom.isB(nodes[i]) || dom.isU(nodes[i]) || dom.isS(nodes[i]) || dom.isI(nodes[i]) || dom.isFont(nodes[i])) {
var ancestor = dom.ancestor(nodes[i], isFormatNode);
@@ -1984,6 +1990,14 @@ eventHandler.modules.editor.currentStyle = function (target) {
if (r)
styleInfo.image = r.isOnImg();
}
+ // Fix when the target is a link: the text-align buttons state should
+ // indicate the alignment of the link in the parent, not the text inside
+ // the link (which is not possible to customize with summernote). Summernote fixed
+ // this in their newest version... by just not showing the active button
+ // for alignments.
+ if (styleInfo.anchor) {
+ styleInfo['text-align'] = $(styleInfo.anchor).parent().css('text-align');
+ }
return styleInfo;
};
diff --git a/addons/web_editor/static/src/js/widgets/ace.js b/addons/web_editor/static/src/js/widgets/ace.js
index 80bb28a4c01..6c28c1e2332 100644
--- a/addons/web_editor/static/src/js/widgets/ace.js
+++ b/addons/web_editor/static/src/js/widgets/ace.js
@@ -742,7 +742,7 @@ var ViewEditor = Widget.extend({
var text = data.text || '';
if (!isSelected) {
- text = Array($elem.data('level')).join('-') + ' ' + text;
+ text = Array($elem.data('level') + 1).join('-') + ' ' + text;
}
var $div = $('<div/>', {
text: text,
diff --git a/addons/web_editor/static/tests/web_editor_tests.js b/addons/web_editor/static/tests/web_editor_tests.js
index 3f46edde64c..2ea6078c44b 100644
--- a/addons/web_editor/static/tests/web_editor_tests.js
+++ b/addons/web_editor/static/tests/web_editor_tests.js
@@ -136,12 +136,12 @@ QUnit.test('field html_frame widget', function (assert) {
model: 'mass.mailing',
data: this.data,
arch: '<form string="Partners">' +
- '<field name="body" widget="html_frame" options="{\'editor_url\': \'/test\'}"/>' +
+ '<field name="body" widget="html_frame" options="{\'editor_url\': \'/logo\'}"/>' +
'</form>',
res_id: 1,
session: {user_context: {lang: "en_us"}},
mockRPC: function (route) {
- if (_.str.startsWith(route, '/test')) {
+ if (_.str.startsWith(route, '/logo')) {
// those tests will be executed twice, once in readonly and once in edit
assert.ok(route.search('model=mass.mailing') > 0,
"the route should specify the correct model");
@@ -200,7 +200,7 @@ QUnit.test('html_frame does not crash when saving in readonly', function (assert
data: this.data,
arch: '<form string="Partners">' +
'<sheet>' +
- '<field name="body" widget="html_frame" options="{\'editor_url\': \'/test\'}"/>' +
+ '<field name="body" widget="html_frame" options="{\'editor_url\': \'/logo\'}"/>' +
'</sheet>' +
'</form>',
res_id: 1,
@@ -208,7 +208,7 @@ QUnit.test('html_frame does not crash when saving in readonly', function (assert
if (args.method) {
assert.step(args.method);
}
- if (_.str.startsWith(route, '/test')) {
+ if (_.str.startsWith(route, '/logo')) {
// manually call the callback to simulate that the iframe has
// been loaded (note: just the content, not the editor)
window.odoo[$.deparam(route).callback + '_content'].call();
@@ -237,7 +237,7 @@ QUnit.test('html_frame does not crash when saving in edit mode (editor not loade
arch: '<form string="Partners">' +
'<sheet>' +
'<field name="display_name"/>' +
- '<field name="body" widget="html_frame" options="{\'editor_url\': \'/test\'}"/>' +
+ '<field name="body" widget="html_frame" options="{\'editor_url\': \'/logo\'}"/>' +
'</sheet>' +
'</form>',
res_id: 1,
@@ -245,7 +245,7 @@ QUnit.test('html_frame does not crash when saving in edit mode (editor not loade
if (args.method) {
assert.step(args.method);
}
- if (_.str.startsWith(route, '/test')) {
+ if (_.str.startsWith(route, '/logo')) {
// manually call the callback to simulate that the iframe has
// been partially loaded (just the content, not the editor)
window.odoo[$.deparam(route).callback + '_content']();
@@ -279,7 +279,7 @@ QUnit.test('html_frame saving in edit mode (editor and content fully loaded)', f
arch: '<form string="Partners">' +
'<sheet>' +
'<field name="display_name"/>' +
- '<field name="body" widget="html_frame" options="{\'editor_url\': \'/test\'}"/>' +
+ '<field name="body" widget="html_frame" options="{\'editor_url\': \'/logo\'}"/>' +
'</sheet>' +
'</form>',
res_id: 1,
@@ -290,7 +290,7 @@ QUnit.test('html_frame saving in edit mode (editor and content fully loaded)', f
writeDeferred.resolve();
}
}
- if (_.str.startsWith(route, '/test')) {
+ if (_.str.startsWith(route, '/logo')) {
// manually call the callback to simulate that the iframe has
// been fully loaded (content + editor)
var callback = $.deparam(route).callback;
diff --git a/addons/website/i18n/zh_CN.po b/addons/website/i18n/zh_CN.po
index fdc5be757f0..ccc60056af5 100644
--- a/addons/website/i18n/zh_CN.po
+++ b/addons/website/i18n/zh_CN.po
@@ -6,9 +6,9 @@
# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# Talway <9010446@qq.com>, 2016
# niulin lnc. <admin@niulin.net>, 2016
-# fausthuang <faust_huang@hotmail.com>, 2016
+# fausthuang, 2016
# waveyeung <waveyeung@qq.com>, 2016
-# Martin Trigaux <mat@odoo.com>, 2016
+# Martin Trigaux, 2016
# Maie <m@maie.name>, 2016
# 菜小蛇 <lttlsnk@gmail.com>, 2016
# xiaobin wu <bd5dml@gmail.com>, 2016
@@ -21,7 +21,7 @@
# Wei "oldrev" Li <liwei@sandwych.com>, 2016
# SHOM <shanmuxin@yeah.net>, 2016
# 苏州远鼎 <tiexinliu@126.com>, 2016
-# Bo Cao <cao.poobo@hotmail.com>, 2017
+# Bo Cao, 2017
# Liping Wang <lynn.config@gmail.com>, 2017
# Jeff Yu - Elico Corp <jeff.yu@elico-corp.com>, 2017
# 老窦 北京 <2662059195@qq.com>, 2017
@@ -111,6 +111,8 @@ msgid ""
",\n"
" the #1"
msgstr ""
+",\n"
+"此 #1"
#. module: website
#: model:ir.ui.view,arch_db:website.show_website_info
@@ -143,7 +145,7 @@ msgstr ""
#. module: website
#: model:ir.ui.view,arch_db:website.default_csv
msgid "1,2,3"
-msgstr ""
+msgstr "1,2,3"
#. module: website
#: model:ir.ui.view,arch_db:website.snippet_options
@@ -286,7 +288,7 @@ msgstr "<i class=\"fa fa-clock-o\"/>幻灯片播放速度"
#. module: website
#: model:ir.ui.view,arch_db:website.snippets
msgid "<i class=\"fa fa-diamond\"/> Feature"
-msgstr ""
+msgstr "特征"
#. module: website
#: model:ir.ui.view,arch_db:website.snippet_options
diff --git a/addons/website/models/ir_http.py b/addons/website/models/ir_http.py
index 84813d7eca5..c87d7226893 100644
--- a/addons/website/models/ir_http.py
+++ b/addons/website/models/ir_http.py
@@ -124,12 +124,6 @@ class Http(models.AbstractModel):
return False
@classmethod
- def _serve_404(cls):
- req_page = request.httprequest.path
- page404 = 'website.%s' % (request.website.is_publisher() and 'page_404' or '404')
- return request.render(page404, {'path': req_page[1:]})
-
- @classmethod
def _serve_redirect(cls):
req_page = request.httprequest.path
domain = [
@@ -153,7 +147,7 @@ class Http(models.AbstractModel):
if redirect:
return request.redirect(redirect.url_to, code=redirect.type)
- return cls._serve_404()
+ return False
@classmethod
def _handle_exception(cls, exception):
@@ -212,11 +206,16 @@ class Http(models.AbstractModel):
status_code=code,
)
+ view_id = code
+ if request.website.is_publisher() and isinstance(exception, werkzeug.exceptions.NotFound):
+ view_id = 'page_404'
+ values['path'] = request.httprequest.path[1:]
+
if not request.uid:
cls._auth_method_public()
try:
- html = request.env['ir.ui.view'].render_template('website.%s' % code, values)
+ html = request.env['ir.ui.view'].render_template('website.%s' % view_id, values)
except Exception:
html = request.env['ir.ui.view'].render_template('website.http_error', values)
return werkzeug.wrappers.Response(html, status=code, content_type='text/html;charset=utf-8')
diff --git a/addons/website_blog/i18n/zh_CN.po b/addons/website_blog/i18n/zh_CN.po
index cce05abcd7c..9bb211d3142 100644
--- a/addons/website_blog/i18n/zh_CN.po
+++ b/addons/website_blog/i18n/zh_CN.po
@@ -3,10 +3,10 @@
# * website_blog
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# liAnGjiA <liangjia@qq.com>, 2016
-# Martin Trigaux <mat@odoo.com>, 2016
-# fausthuang <faust_huang@hotmail.com>, 2016
+# Martin Trigaux, 2016
+# fausthuang, 2016
# Talway <9010446@qq.com>, 2016
# Eddie Lim <bhweelim@yahoo.com>, 2016
# waveyeung <waveyeung@qq.com>, 2016
@@ -16,13 +16,14 @@
# n37r06u3 <n37r06u3@gmail.com>, 2016
# 苏州远鼎 <tiexinliu@126.com>, 2016
# THL <wt39181819@gmail.com>, 2017
+# 老窦 北京 <2662059195@qq.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-10-24 09:00+0000\n"
"PO-Revision-Date: 2017-10-24 09:00+0000\n"
-"Last-Translator: THL <wt39181819@gmail.com>, 2017\n"
+"Last-Translator: 老窦 北京 <2662059195@qq.com>, 2018\n"
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -725,7 +726,7 @@ msgstr "发布选项"
#. module: website_blog
#: model:ir.model.fields,field_description:website_blog.field_blog_post_post_date
msgid "Publishing date"
-msgstr ""
+msgstr "发布日期"
#. module: website_blog
#: model:ir.ui.view,arch_db:website_blog.website_blog
diff --git a/addons/website_blog/models/website_blog.py b/addons/website_blog/models/website_blog.py
index 25d7d363ef8..ade0212e0da 100644
--- a/addons/website_blog/models/website_blog.py
+++ b/addons/website_blog/models/website_blog.py
@@ -209,7 +209,7 @@ class BlogPost(models.Model):
def write(self, vals):
result = True
for post in self:
- copy_vals = vals
+ copy_vals = dict(vals)
if 'website_published' in vals and 'published_date' not in vals and (post.published_date or '') <= fields.Datetime.now():
copy_vals['published_date'] = vals['website_published'] and fields.Datetime.now() or False
result &= super(BlogPost, self).write(copy_vals)
diff --git a/addons/website_sale/i18n/zh_CN.po b/addons/website_sale/i18n/zh_CN.po
index b8f9801021b..469c140b95b 100644
--- a/addons/website_sale/i18n/zh_CN.po
+++ b/addons/website_sale/i18n/zh_CN.po
@@ -5,8 +5,8 @@
# Translators:
# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# Talway <9010446@qq.com>, 2016
-# fausthuang <faust_huang@hotmail.com>, 2016
-# Martin Trigaux <mat@odoo.com>, 2016
+# fausthuang, 2016
+# Martin Trigaux, 2016
# waveyeung <waveyeung@qq.com>, 2016
# Luke <cialuo@qq.com>, 2016
# glovebx <ruinning@163.com>, 2016
@@ -49,12 +49,12 @@ msgstr "&amp;nbsp;"
#. module: website_sale
#: model:ir.ui.view,arch_db:website_sale.cart_lines
msgid "/shop/cart"
-msgstr ""
+msgstr "/shop/cart"
#. module: website_sale
#: model:ir.ui.view,arch_db:website_sale.payment
msgid "/shop/payment"
-msgstr ""
+msgstr "/shop/payment"
#. module: website_sale
#: model:ir.ui.view,arch_db:website_sale.product
@@ -595,7 +595,7 @@ msgstr ""
#. module: website_sale
#: model:ir.ui.view,arch_db:website_sale.cart
msgid "Click here"
-msgstr ""
+msgstr "点击这里"
#. module: website_sale
#. openerp-web
diff --git a/addons/website_sale/views/templates.xml b/addons/website_sale/views/templates.xml
index 1a13577b0bb..ab59f8ffed9 100644
--- a/addons/website_sale/views/templates.xml
+++ b/addons/website_sale/views/templates.xml
@@ -420,8 +420,8 @@
<div id="o-carousel-product" class="carousel slide" data-ride="carousel" data-interval="0">
<div class="carousel-outer">
<div class="carousel-inner">
- <div class="item active" itemprop="image" t-field="product.image" t-options="{'widget': 'image', 'class': 'product_detail_img js_variant_img', 'alt-field': 'name', 'zoom': 'image', 'unique': product['__last_update']}"/>
- <div t-if="variant_img" class="item" itemprop="image" t-field="product.product_variant_id.image" t-options="{'widget': 'image', 'class': 'product_detail_img', 'alt-field': 'name', 'zoom': 'image', 'unique': product['__last_update'] + (product.product_variant_id['__last_update'] or '')}"/>
+ <div t-if="variant_img" class="item active" itemprop="image" t-field="product.product_variant_id.image" t-options="{'widget': 'image', 'class': 'product_detail_img js_variant_img', 'alt-field': 'name', 'zoom': 'image', 'unique': product['__last_update'] + (product.product_variant_id['__last_update'] or '')}"/>
+ <div t-attf-class="item#{'' if variant_img else ' active'}" itemprop="image" t-field="product.image" t-options="{'widget': 'image', 'class': 'product_detail_img', 'alt-field': 'name', 'zoom': 'image', 'unique': product['__last_update']}"/>
<t t-if="len(image_ids)" t-foreach="image_ids" t-as="pimg">
<div class="item" t-field="pimg.image" t-options='{"widget": "image", "class": "product_detail_img", "alt-field": "name", "zoom": "image" }'/>
</t>
@@ -440,11 +440,11 @@
</div>
<ol class="carousel-indicators" t-if="len(image_ids) or variant_img">
- <li data-target="#o-carousel-product" data-slide-to="0" class="active">
- <img class="img img-responsive js_variant_img_small" t-attf-src="/website/image/product.template/{{product.id}}/image/90x90" t-att-alt="product.name"/>
+ <li t-if="variant_img" data-target="#o-carousel-product" data-slide-to="0" class="active">
+ <img class="img img-responsive js_variant_img_small" t-attf-src="/website/image/product.product/{{product.product_variant_id.id}}/image/90x90" t-att-alt="product.name"/>
</li>
- <li t-if="variant_img" data-target="#o-carousel-product" data-slide-to="1" class="">
- <img class="img img-responsive" t-attf-src="/website/image/product.product/{{product.product_variant_id.id}}/image/90x90" t-att-alt="product.name"/>
+ <li data-target="#o-carousel-product" t-att-data-slide-to="1 if variant_img else 0" t-att-class="'' if variant_img else 'active'">
+ <img class="img img-responsive" t-attf-src="/website/image/product.template/{{product.id}}/image/90x90" t-att-alt="product.name"/>
</li>
<t t-if="len(image_ids)" t-foreach="image_ids" t-as="pimg">
<li data-target="#o-carousel-product" t-att-data-slide-to="pimg_index + (variant_img and 2 or 1)">
@@ -521,7 +521,7 @@
<div t-field="alt_product.image_small" t-options="{'widget': 'image', 'class': 'img-rounded shadow o_alternative_product' }" />
<h5>
<a t-attf-href="/shop/product/#{ slug(alt_product) }" style="display: block">
- <span t-att-title="alt_product.name" t-field="alt_product.name" style="display: block;" />
+ <span t-att-title="alt_product.name" t-field="alt_product.name" class="o_text_overflow" style="display: block;" />
</a>
</h5>
</div>
diff --git a/addons/website_sale_stock/i18n/zh_CN.po b/addons/website_sale_stock/i18n/zh_CN.po
index 7866a70e980..ddcf0f2728b 100644
--- a/addons/website_sale_stock/i18n/zh_CN.po
+++ b/addons/website_sale_stock/i18n/zh_CN.po
@@ -3,7 +3,7 @@
# * website_sale_stock
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# Gary Wei <Gary.wei@elico-corp.com>, 2016
# waveyeung <waveyeung@qq.com>, 2017
# liAnGjiA <liangjia@qq.com>, 2017
@@ -67,7 +67,7 @@ msgstr "<strong>交货单</strong>"
#: model:ir.ui.view,arch_db:website_sale_stock.website_sale_stock_cart_lines
#: model:ir.ui.view,arch_db:website_sale_stock.website_sale_stock_payment
msgid "<strong>Warning!</strong>"
-msgstr ""
+msgstr "<strong>警告!</strong>"
#. module: website_sale_stock
#: model:ir.model.fields,help:website_sale_stock.field_product_product_inventory_availability
diff --git a/addons/website_slides/i18n/zh_CN.po b/addons/website_slides/i18n/zh_CN.po
index a824833b794..326c2dab723 100644
--- a/addons/website_slides/i18n/zh_CN.po
+++ b/addons/website_slides/i18n/zh_CN.po
@@ -3,12 +3,12 @@
# * website_slides
#
# Translators:
-# Jeffery CHEN <jeffery9@gmail.com>, 2016
-# fausthuang <faust_huang@hotmail.com>, 2016
+# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
+# fausthuang, 2016
# Siyuan Gu <siyuancn@hotmail.com>, 2016
# liAnGjiA <liangjia@qq.com>, 2016
# waveyeung <waveyeung@qq.com>, 2016
-# Martin Trigaux <mat@odoo.com>, 2016
+# Martin Trigaux, 2016
# Talway <9010446@qq.com>, 2016
# 菜小蛇 <lttlsnk@gmail.com>, 2016
# Wei "oldrev" Li <liwei@sandwych.com>, 2016
@@ -336,7 +336,7 @@ msgstr ""
#. module: website_slides
#: model:slide.tag,name:website_slides.tag1
msgid "CMS"
-msgstr ""
+msgstr "CMS"
#. module: website_slides
#: model:ir.model.fields,field_description:website_slides.field_slide_channel_can_see
@@ -416,7 +416,7 @@ msgstr "频道"
#. module: website_slides
#: model:slide.slide,name:website_slides.slide_10
msgid "Company Culture"
-msgstr ""
+msgstr "企业文化"
#. module: website_slides
#: model:ir.model.fields,field_description:website_slides.field_slide_slide_datas