[MERGE] sync with trunk
bzr revid: mat@openerp.com-20131119084834-hl9hv380nhlfs7it
This commit is contained in:
Vendored
+7
-1
@@ -47,7 +47,13 @@ Depends:
|
||||
Conflicts: tinyerp-server, openerp-server, openerp-web
|
||||
Replaces: tinyerp-server, openerp-server, openerp-web
|
||||
Recommends:
|
||||
graphviz, ghostscript, postgresql, python-matplotlib, poppler-utils
|
||||
antiword,
|
||||
graphviz,
|
||||
ghostscript,
|
||||
postgresql,
|
||||
python-gevent,
|
||||
python-matplotlib,
|
||||
poppler-utils
|
||||
Description: OpenERP Enterprise Resource Management
|
||||
OpenERP, previously known as TinyERP, is a complete ERP and CRM. The main
|
||||
features are accounting (analytic and financial), stock management, sales and
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:37+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:29+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:38+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:30+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:38+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:30+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:38+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:30+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:39+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
+821
-555
File diff suppressed because it is too large
Load Diff
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:39+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:39+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
"X-Poedit-Language: Czech\n"
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:39+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:33+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -12,8 +12,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:41+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:33+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
"X-Poedit-Country: GREECE\n"
|
||||
"X-Poedit-Language: Greek\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:39+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
@@ -1107,7 +1107,7 @@ msgstr "Email Preferences"
|
||||
#: code:addons/base/ir/ir_fields.py:195
|
||||
#, python-format
|
||||
msgid "'%s' does not seem to be a valid date for field '%%(field)s'"
|
||||
msgstr ""
|
||||
msgstr "'%s' does not seem to be a valid date for field '%%(field)s'"
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
@@ -1257,7 +1257,7 @@ msgstr "Andorra, Principality of"
|
||||
#. module: base
|
||||
#: field:ir.rule,perm_read:0
|
||||
msgid "Apply for Read"
|
||||
msgstr ""
|
||||
msgstr "Apply for Read"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.mn
|
||||
@@ -1349,7 +1349,7 @@ msgstr "Document model"
|
||||
#. module: base
|
||||
#: view:res.users:0
|
||||
msgid "Change the user password."
|
||||
msgstr ""
|
||||
msgstr "Change the user password."
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
@@ -1488,12 +1488,12 @@ msgstr "The country name must be unique!"
|
||||
#. module: base
|
||||
#: field:ir.module.module,installed_version:0
|
||||
msgid "Latest Version"
|
||||
msgstr ""
|
||||
msgstr "Latest Version"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.rule:0
|
||||
msgid "Delete Access Right"
|
||||
msgstr ""
|
||||
msgstr "Delete Access Right"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_mail_server.py:214
|
||||
@@ -1520,7 +1520,7 @@ msgstr "Cayman Islands"
|
||||
#. module: base
|
||||
#: view:ir.rule:0
|
||||
msgid "Record Rule"
|
||||
msgstr ""
|
||||
msgstr "Record Rule"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.kr
|
||||
@@ -1546,7 +1546,7 @@ msgstr "Contributors"
|
||||
#. module: base
|
||||
#: field:ir.rule,perm_unlink:0
|
||||
msgid "Apply for Delete"
|
||||
msgstr ""
|
||||
msgstr "Apply for Delete"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.property,type:0
|
||||
@@ -1556,12 +1556,12 @@ msgstr "Char"
|
||||
#. module: base
|
||||
#: field:ir.module.category,visible:0
|
||||
msgid "Visible"
|
||||
msgstr ""
|
||||
msgstr "Visible"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.client,name:base.action_client_base_menu
|
||||
msgid "Open Settings Menu"
|
||||
msgstr ""
|
||||
msgstr "Open Settings Menu"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
@@ -1621,6 +1621,10 @@ msgid ""
|
||||
" for uploading to OpenERP's translation "
|
||||
"platform,"
|
||||
msgstr ""
|
||||
"TGZ format: this is a compressed archive containing a PO file, directly "
|
||||
"suitable\n"
|
||||
" for uploading to OpenERP's translation "
|
||||
"platform,"
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
@@ -1647,7 +1651,7 @@ msgstr "Tests"
|
||||
#. module: base
|
||||
#: field:ir.actions.report.xml,attachment:0
|
||||
msgid "Save as Attachment Prefix"
|
||||
msgstr ""
|
||||
msgstr "Save as Attachment Prefix"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.ui.view_sc,res_id:0
|
||||
@@ -1684,7 +1688,7 @@ msgstr "Haiti"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_fr_hr_payroll
|
||||
msgid "French Payroll"
|
||||
msgstr ""
|
||||
msgstr "French Payroll"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.ui.view:0
|
||||
@@ -1843,7 +1847,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: model:res.country,name:base.mf
|
||||
msgid "Saint Martin (French part)"
|
||||
msgstr ""
|
||||
msgstr "Saint Martin (French part)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_exports
|
||||
@@ -1863,6 +1867,15 @@ msgid ""
|
||||
" * the main taxes used in Luxembourg\n"
|
||||
" * default fiscal position for local, intracom, extracom "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"This is the base module to manage the accounting chart for Luxembourg.\n"
|
||||
"======================================================================\n"
|
||||
"\n"
|
||||
" * the Luxembourg Official Chart of Accounts (law of June 2009 + 2011 "
|
||||
"chart and Taxes),\n"
|
||||
" * the Tax Code Chart for Luxembourg\n"
|
||||
" * the main taxes used in Luxembourg\n"
|
||||
" * default fiscal position for local, intracom, extracom "
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/wizard/base_update_translations.py:39
|
||||
@@ -1874,7 +1887,7 @@ msgstr "No language with code \"%s\" exists"
|
||||
#: model:ir.module.category,name:base.module_category_social_network
|
||||
#: model:ir.module.module,shortdesc:base.module_mail
|
||||
msgid "Social Network"
|
||||
msgstr ""
|
||||
msgstr "Social Network"
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
@@ -1884,12 +1897,12 @@ msgstr "%Y - Year with century."
|
||||
#. module: base
|
||||
#: view:res.company:0
|
||||
msgid "Report Footer Configuration"
|
||||
msgstr ""
|
||||
msgstr "Report Footer Configuration"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.translation,comments:0
|
||||
msgid "Translation comments"
|
||||
msgstr ""
|
||||
msgstr "Translation comments"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_lunch
|
||||
@@ -1947,6 +1960,8 @@ msgid ""
|
||||
"The field on the current object that links to the target object record (must "
|
||||
"be a many2one, or an integer field with the record ID)"
|
||||
msgstr ""
|
||||
"The field on the current object that links to the target object record (must "
|
||||
"be a many2one, or an integer field with the record ID)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_res_bank
|
||||
@@ -1972,7 +1987,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: help:res.partner,website:0
|
||||
msgid "Website of Partner or Company"
|
||||
msgstr ""
|
||||
msgstr "Website of Partner or Company"
|
||||
|
||||
#. module: base
|
||||
#: help:base.language.install,overwrite:0
|
||||
@@ -2032,7 +2047,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_portal_project_issue
|
||||
msgid "Portal Issue"
|
||||
msgstr ""
|
||||
msgstr "Portal Issue"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_tools
|
||||
@@ -2052,6 +2067,10 @@ msgid ""
|
||||
"Launch Manually Once: after having been launched manually, it sets "
|
||||
"automatically to Done."
|
||||
msgstr ""
|
||||
"Manual: Launched manually.\n"
|
||||
"Automatic: Runs whenever the system is reconfigured.\n"
|
||||
"Launch Manually Once: after having been launched manually, it sets "
|
||||
"automatically to Done."
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,image_small:0
|
||||
@@ -13849,7 +13868,7 @@ msgstr "ir.sequence.type"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_be_hr_payroll_account
|
||||
msgid "Belgium - Payroll with Accounting"
|
||||
msgstr ""
|
||||
msgstr "Belgium - Payroll with Accounting"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.export,format:0
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:45+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
@@ -7260,7 +7260,7 @@ msgstr "El nombre del grupo no puede empezar con \"-\""
|
||||
#: view:ir.module.module:0
|
||||
#: model:ir.ui.menu,name:base.module_mi
|
||||
msgid "Apps"
|
||||
msgstr "Aplicaciones"
|
||||
msgstr "Tienda de aplicaciones"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.ui.view_sc:0
|
||||
@@ -17750,7 +17750,7 @@ msgstr ""
|
||||
#: model:ir.actions.act_window,name:base.open_module_tree
|
||||
#: model:ir.ui.menu,name:base.menu_module_tree
|
||||
msgid "Installed Modules"
|
||||
msgstr "Módulos instalados"
|
||||
msgstr "Módulos locales"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_users.py:170
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:39+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:40+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:40+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:40+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
"Language: \n"
|
||||
|
||||
#. module: base
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:39+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:41+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -15,8 +15,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:41+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:39+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:32+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:38+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -9,8 +9,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:43+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
"X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n"
|
||||
"X-Poedit-Language: Persian\n"
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:49+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:41+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:32+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:32+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
@@ -15529,7 +15529,8 @@ msgstr "Partenaires clients"
|
||||
#. module: base
|
||||
#: sql_constraint:res.users:0
|
||||
msgid "You can not have two users with the same login !"
|
||||
msgstr "VOus ne pouvez pas avoir deux utilsiateurs avec le même login !"
|
||||
msgstr ""
|
||||
"Vous ne pouvez pas avoir deux utilisateurs avec le même identifiant !"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_res_request_history
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:40+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:41+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:33+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:41+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:33+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:41+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:33+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:41+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:33+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:44+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
"Language: hr\n"
|
||||
|
||||
#. module: base
|
||||
@@ -3189,7 +3189,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: field:res.company,rml_header1:0
|
||||
msgid "Company Tagline"
|
||||
msgstr ""
|
||||
msgstr "Slogan tvrtke"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_users.py:674
|
||||
@@ -3994,7 +3994,7 @@ msgstr "12. %w ==> 5 ( Petak je 6ti dan)"
|
||||
#. module: base
|
||||
#: constraint:res.partner.category:0
|
||||
msgid "Error ! You can not create recursive categories."
|
||||
msgstr "Graška ! Ne može se stvoriti kategorije s rekurzijom."
|
||||
msgstr "Greška! Ne možete kreirati rekurzivne kategorije."
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
@@ -8815,6 +8815,10 @@ msgid ""
|
||||
"\n"
|
||||
"(Document type: %s)"
|
||||
msgstr ""
|
||||
"Za ovu vrstu dokumenta imate pravo pristupa samo onima koje ste vi "
|
||||
"kreirali.\n"
|
||||
"\n"
|
||||
"(Vrstu dokumenta: %s)"
|
||||
|
||||
#. module: base
|
||||
#: view:base.language.export:0
|
||||
@@ -9872,7 +9876,7 @@ msgstr "Kreirano"
|
||||
#: help:ir.actions.server,model_id:0
|
||||
msgid ""
|
||||
"Select the object on which the action will work (read, write, create)."
|
||||
msgstr "Odaberite objekt na koje će akcija raditi (read, write, create)."
|
||||
msgstr "Odaberite objekt na koje će akcija raditi (čitaj, piši, kreiraj)."
|
||||
|
||||
#. module: base
|
||||
#: field:base.language.import,name:0
|
||||
|
||||
@@ -7,14 +7,14 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 6.0\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
|
||||
"PO-Revision-Date: 2013-03-14 10:08+0000\n"
|
||||
"Last-Translator: krnkris <Unknown>\n"
|
||||
"PO-Revision-Date: 2013-10-15 13:13+0000\n"
|
||||
"Last-Translator: tdombos <Unknown>\n"
|
||||
"Language-Team: Hungarian <openerp-hungarian-team@lists.launchpad.net>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:41+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:34+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
@@ -6230,7 +6230,7 @@ msgstr "Kenya"
|
||||
#: model:ir.actions.act_window,name:base.action_translation
|
||||
#: model:ir.ui.menu,name:base.menu_action_translation
|
||||
msgid "Translated Terms"
|
||||
msgstr "Lefordított feltételek"
|
||||
msgstr "Lefordított kifejezések"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
@@ -12491,7 +12491,7 @@ msgstr "This method does not exist anymore"
|
||||
#: model:ir.actions.act_window,name:base.action_wizard_update_translations
|
||||
#: model:ir.ui.menu,name:base.menu_wizard_update_translations
|
||||
msgid "Synchronize Terms"
|
||||
msgstr "Feltételek szinkronizáása"
|
||||
msgstr "Kifejezések szinkronizáása"
|
||||
|
||||
#. module: base
|
||||
#: field:res.lang,thousands_sep:0
|
||||
@@ -13640,7 +13640,7 @@ msgstr "Érvénytelen adatbázis azonosító '%s' ehhez a mezőhöz '%%(field)s'
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
msgid "Update Languague Terms"
|
||||
msgstr "Nyelvi feltételek frissítése"
|
||||
msgstr "Nyelvi kifejezések frissítése"
|
||||
|
||||
#. module: base
|
||||
#: field:workflow.activity,join_mode:0
|
||||
|
||||
@@ -9,8 +9,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:38+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:30+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:34+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:34+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:34+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
+114
-111
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:34+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
@@ -62,7 +62,7 @@ msgstr "ビューアーキテクチャ"
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_sale_stock
|
||||
msgid "Quotation, Sale Orders, Delivery & Invoicing Control"
|
||||
msgstr "見積書、販売オーダ、出荷、請求書コントロール"
|
||||
msgstr "見積、受注、出荷、請求書コントロール"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.sequence,implementation:0
|
||||
@@ -94,7 +94,7 @@ msgstr "店舗用タッチスクリーン画面"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll
|
||||
msgid "Indian Payroll"
|
||||
msgstr ""
|
||||
msgstr "インド給与管理"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.cron,model:0
|
||||
@@ -135,11 +135,14 @@ msgid ""
|
||||
"The module adds google user in res user.\n"
|
||||
"========================================\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"このモジュールはユーザマスタにGoogleユーザを追加します。\n"
|
||||
"========================================\n"
|
||||
|
||||
#. module: base
|
||||
#: help:res.partner,employee:0
|
||||
msgid "Check this box if this contact is an Employee."
|
||||
msgstr ""
|
||||
msgstr "この連絡先が従業員である場合はチェック。"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.model.fields,domain:0
|
||||
@@ -169,7 +172,7 @@ msgstr "ターゲットウィンドウ"
|
||||
#. module: base
|
||||
#: field:ir.actions.report.xml,report_rml:0
|
||||
msgid "Main Report File Path"
|
||||
msgstr ""
|
||||
msgstr "メインレポートファイルパス"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale_analytic_plans
|
||||
@@ -287,12 +290,12 @@ msgstr "販売管理"
|
||||
msgid ""
|
||||
"The internal user that is in charge of communicating with this contact if "
|
||||
"any."
|
||||
msgstr ""
|
||||
msgstr "この連絡先との連携を担当する内部ユーザ"
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
msgid "Search Partner"
|
||||
msgstr "パートナ検索"
|
||||
msgstr "取引先検索"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.module.category,module_nr:0
|
||||
@@ -613,7 +616,7 @@ msgstr "スペイン語(ベネズエラ)/ Español (VE)"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_hr_timesheet_invoice
|
||||
msgid "Invoice on Timesheets"
|
||||
msgstr "勤務表による請求書"
|
||||
msgstr "タイムシートを基に請求"
|
||||
|
||||
#. module: base
|
||||
#: view:base.module.upgrade:0
|
||||
@@ -668,7 +671,7 @@ msgstr "未翻訳"
|
||||
#. module: base
|
||||
#: view:ir.mail_server:0
|
||||
msgid "Outgoing Mail Server"
|
||||
msgstr ""
|
||||
msgstr "送信メールサーバ"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.act_window,context:0
|
||||
@@ -855,7 +858,7 @@ msgstr "セキュリティと認証"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_web_calendar
|
||||
msgid "Web Calendar"
|
||||
msgstr ""
|
||||
msgstr "ウェブカレンダ"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
@@ -866,7 +869,7 @@ msgstr "スウェーデン語 / svenska"
|
||||
#: field:base.language.export,name:0
|
||||
#: field:ir.attachment,datas_fname:0
|
||||
msgid "File Name"
|
||||
msgstr ""
|
||||
msgstr "ファイル名"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.rs
|
||||
@@ -962,7 +965,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
msgid "My Partners"
|
||||
msgstr "Myパートナ"
|
||||
msgstr "自分の取引先"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.zw
|
||||
@@ -1261,7 +1264,7 @@ msgstr "国の名前は固有であるべきです。"
|
||||
#. module: base
|
||||
#: field:ir.module.module,installed_version:0
|
||||
msgid "Latest Version"
|
||||
msgstr ""
|
||||
msgstr "最新バージョン"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.rule:0
|
||||
@@ -1649,7 +1652,7 @@ msgstr "%Y - 世紀を含む年"
|
||||
#. module: base
|
||||
#: view:res.company:0
|
||||
msgid "Report Footer Configuration"
|
||||
msgstr ""
|
||||
msgstr "レポートフッタ設定調整"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.translation,comments:0
|
||||
@@ -1998,7 +2001,7 @@ msgstr "7. %H:%M:%S ==> 18:25:20"
|
||||
#: view:res.partner:0
|
||||
#: field:res.partner.category,partner_ids:0
|
||||
msgid "Partners"
|
||||
msgstr "パートナ"
|
||||
msgstr "取引先"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner.category,parent_left:0
|
||||
@@ -2019,7 +2022,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: field:res.partner.bank,footer:0
|
||||
msgid "Display on Reports"
|
||||
msgstr "表示(レポート)"
|
||||
msgstr "レポート表記"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_project_timesheet
|
||||
@@ -2596,7 +2599,7 @@ msgstr "オブジェクト名は x_ で始める必要があり、特殊文字
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_auth_oauth_signup
|
||||
msgid "Signup with OAuth2 Authentication"
|
||||
msgstr ""
|
||||
msgstr "OAuth2認証によるサインアップ"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.model,state:0
|
||||
@@ -2623,12 +2626,12 @@ msgstr "ギリシャ語 / Ελληνικά"
|
||||
#. module: base
|
||||
#: field:res.company,custom_footer:0
|
||||
msgid "Custom Footer"
|
||||
msgstr ""
|
||||
msgstr "フッターのカスタマイズ"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale_crm
|
||||
msgid "Opportunity to Quotation"
|
||||
msgstr "商談から見積り"
|
||||
msgstr "商談から見積"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_sale_analytic_plans
|
||||
@@ -3134,7 +3137,7 @@ msgstr "韓国語(韓国)/ 한국어 (KR)"
|
||||
#. module: base
|
||||
#: help:ir.model.fields,model:0
|
||||
msgid "The technical name of the model this field belongs to"
|
||||
msgstr "この項目が属するモデルの専門的名前"
|
||||
msgstr "この項目が属するモデルの技術名称"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.server,action_id:0
|
||||
@@ -3165,7 +3168,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: field:res.company,rml_header1:0
|
||||
msgid "Company Tagline"
|
||||
msgstr ""
|
||||
msgstr "会社スローガン"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_users.py:674
|
||||
@@ -3370,12 +3373,12 @@ msgstr "オーストリア"
|
||||
#: model:ir.ui.menu,name:base.menu_calendar_configuration
|
||||
#: selection:ir.ui.view,type:0
|
||||
msgid "Calendar"
|
||||
msgstr "カレンダー"
|
||||
msgstr "カレンダ"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_knowledge_management
|
||||
msgid "Knowledge"
|
||||
msgstr ""
|
||||
msgstr "ナレッジ"
|
||||
|
||||
#. module: base
|
||||
#: field:workflow.activity,signal_send:0
|
||||
@@ -3408,7 +3411,7 @@ msgid ""
|
||||
"Manage the contact titles you want to have available in your system and the "
|
||||
"way you want to print them in letters and other documents. Some example: "
|
||||
"Mr., Mrs. "
|
||||
msgstr "手紙や他のドキュメントの印刷において利用する際の適切な連絡先のタイトルを管理します。 幾つかの例:男子や夫人の敬称 "
|
||||
msgstr "手紙やその他のドキュメント印刷にて使用する連絡先敬称を管理します(例えば「様」、「御中」など)。 "
|
||||
|
||||
#. module: base
|
||||
#: view:ir.model.access:0
|
||||
@@ -3477,7 +3480,7 @@ msgstr "生年月日"
|
||||
#: model:ir.actions.act_window,name:base.action_partner_title_contact
|
||||
#: model:ir.ui.menu,name:base.menu_partner_title_contact
|
||||
msgid "Contact Titles"
|
||||
msgstr "役職"
|
||||
msgstr "連絡先敬称"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_product_manufacturer
|
||||
@@ -3700,7 +3703,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: view:base.language.import:0
|
||||
msgid "_Import"
|
||||
msgstr "インポート"
|
||||
msgstr "インポート(_I)"
|
||||
|
||||
#. module: base
|
||||
#: field:res.users,action_id:0
|
||||
@@ -3753,7 +3756,7 @@ msgstr "ルール間の影響"
|
||||
#: field:res.company,rml_footer:0
|
||||
#: field:res.company,rml_footer_readonly:0
|
||||
msgid "Report Footer"
|
||||
msgstr ""
|
||||
msgstr "レポートフッタ"
|
||||
|
||||
#. module: base
|
||||
#: selection:res.lang,direction:0
|
||||
@@ -3791,7 +3794,7 @@ msgstr "レポート"
|
||||
#: field:res.partner,title:0
|
||||
#: field:res.partner.title,name:0
|
||||
msgid "Title"
|
||||
msgstr "役職"
|
||||
msgstr "敬称"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.property,res_id:0
|
||||
@@ -4436,7 +4439,7 @@ msgstr "式"
|
||||
#. module: base
|
||||
#: view:res.company:0
|
||||
msgid "Header/Footer"
|
||||
msgstr "ヘッダー / フッター"
|
||||
msgstr "ヘッダ/フッタ"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.mail_server,sequence:0
|
||||
@@ -4448,7 +4451,7 @@ msgstr "メールサーバを特に指定しないメールは最も高い優先
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_sale
|
||||
msgid "Quotations, Sales Orders, Invoicing"
|
||||
msgstr ""
|
||||
msgstr "見積、受注、請求"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,parent_id:0
|
||||
@@ -4482,7 +4485,7 @@ msgstr "モジュール .ZIPファイル"
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_17
|
||||
msgid "Telecom sector"
|
||||
msgstr "遠距離通信部門"
|
||||
msgstr "通信セクター"
|
||||
|
||||
#. module: base
|
||||
#: field:workflow.transition,trigger_model:0
|
||||
@@ -4497,7 +4500,7 @@ msgstr "`code`は固有であるべきです。"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_knowledge
|
||||
msgid "Knowledge Management System"
|
||||
msgstr ""
|
||||
msgstr "ナレッジ管理システム"
|
||||
|
||||
#. module: base
|
||||
#: view:workflow.activity:0
|
||||
@@ -4811,7 +4814,7 @@ msgstr "郵便番号"
|
||||
#: view:ir.module.module:0
|
||||
#: field:ir.module.module,author:0
|
||||
msgid "Author"
|
||||
msgstr "著者"
|
||||
msgstr "作成者"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.todo:0
|
||||
@@ -4970,7 +4973,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_7
|
||||
msgid "IT Services"
|
||||
msgstr ""
|
||||
msgstr "ITサービス"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_specific_industry_applications
|
||||
@@ -5037,7 +5040,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_event_sale
|
||||
msgid "Events Sales"
|
||||
msgstr ""
|
||||
msgstr "イベント販売"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.ls
|
||||
@@ -5161,7 +5164,7 @@ msgstr "キー"
|
||||
#. module: base
|
||||
#: field:res.company,rml_header:0
|
||||
msgid "RML Header"
|
||||
msgstr "RMLヘッダー"
|
||||
msgstr "RMLヘッダ"
|
||||
|
||||
#. module: base
|
||||
#: help:res.country,address_format:0
|
||||
@@ -5341,7 +5344,7 @@ msgstr "各モジュールは固有でなければなりません。"
|
||||
#: model:ir.module.category,name:base.module_category_localization
|
||||
#: model:ir.ui.menu,name:base.menu_localisation
|
||||
msgid "Localization"
|
||||
msgstr "ローカル化"
|
||||
msgstr "ローカライズ"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_web_api
|
||||
@@ -5420,12 +5423,12 @@ msgstr ""
|
||||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_partner_category_form
|
||||
msgid "Partner Tags"
|
||||
msgstr ""
|
||||
msgstr "取引先タグ"
|
||||
|
||||
#. module: base
|
||||
#: view:res.company:0
|
||||
msgid "Preview Header/Footer"
|
||||
msgstr ""
|
||||
msgstr "ヘッダ/フッタプレビュー"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.ui.menu,parent_id:0
|
||||
@@ -5716,7 +5719,7 @@ msgstr ""
|
||||
#: field:workflow,name:0
|
||||
#: field:workflow.activity,name:0
|
||||
msgid "Name"
|
||||
msgstr "名前"
|
||||
msgstr "名称"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.act_window,multi:0
|
||||
@@ -5944,7 +5947,7 @@ msgstr "インストール言語"
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_11
|
||||
msgid "Services"
|
||||
msgstr ""
|
||||
msgstr "サービス業"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.translation:0
|
||||
@@ -6393,7 +6396,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_account_cancel
|
||||
msgid "Cancel Journal Entries"
|
||||
msgstr "仕訳帳入力のキャンセル"
|
||||
msgstr "仕訳取消"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,tz_offset:0
|
||||
@@ -6530,7 +6533,7 @@ msgstr "フランス語 / Français"
|
||||
#. module: base
|
||||
#: view:ir.module.module:0
|
||||
msgid "Created Menus"
|
||||
msgstr "作成済メニュー"
|
||||
msgstr "作成メニュー"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/module.py:502
|
||||
@@ -6797,7 +6800,7 @@ msgstr "時刻の書式"
|
||||
#. module: base
|
||||
#: field:res.company,rml_header3:0
|
||||
msgid "RML Internal Header for Landscape Reports"
|
||||
msgstr ""
|
||||
msgstr "ランドスケープレポート用RML内部ヘッダ"
|
||||
|
||||
#. module: base
|
||||
#: model:res.groups,name:base.group_partner_manager
|
||||
@@ -6807,7 +6810,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: view:ir.module.module:0
|
||||
msgid "Defined Reports"
|
||||
msgstr "レポートの定義"
|
||||
msgstr "定義レポート"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_project_gtd
|
||||
@@ -6919,7 +6922,7 @@ msgstr "ボツワナ"
|
||||
#. module: base
|
||||
#: view:res.partner.title:0
|
||||
msgid "Partner Titles"
|
||||
msgstr "パートナのタイトル"
|
||||
msgstr "取引先タイトル"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_fields.py:196
|
||||
@@ -7033,7 +7036,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: help:ir.model.fields,relation:0
|
||||
msgid "For relationship fields, the technical name of the target model"
|
||||
msgstr "その目的モデルの関係項目のための技術的な名前"
|
||||
msgstr "関係項目につき、ターゲットモデルの技術名称"
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
@@ -7093,7 +7096,7 @@ msgstr "遷移"
|
||||
#: model:ir.module.module,shortdesc:base.module_hr_timesheet
|
||||
#: model:ir.module.module,shortdesc:base.module_hr_timesheet_sheet
|
||||
msgid "Timesheets"
|
||||
msgstr "勤務表"
|
||||
msgstr "タイムシート"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.values,company_id:0
|
||||
@@ -7276,7 +7279,7 @@ msgstr "署名"
|
||||
#. module: base
|
||||
#: field:res.partner.category,complete_name:0
|
||||
msgid "Full Name"
|
||||
msgstr "氏名"
|
||||
msgstr "名称"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.attachment:0
|
||||
@@ -7369,7 +7372,7 @@ msgstr ""
|
||||
#: view:res.partner:0
|
||||
#: field:res.partner,child_ids:0
|
||||
msgid "Contacts"
|
||||
msgstr "コンタクト"
|
||||
msgstr "連絡先"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.fo
|
||||
@@ -7395,7 +7398,7 @@ msgstr "エクアドル - 会計"
|
||||
#. module: base
|
||||
#: field:res.partner.category,name:0
|
||||
msgid "Category Name"
|
||||
msgstr "分類名"
|
||||
msgstr "カテゴリ名"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.mp
|
||||
@@ -7480,7 +7483,7 @@ msgstr "コンテンツが別のデータ項目にある場合、メインレポ
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_14
|
||||
msgid "Manufacturer"
|
||||
msgstr ""
|
||||
msgstr "製造業"
|
||||
|
||||
#. module: base
|
||||
#: help:res.users,company_id:0
|
||||
@@ -7744,7 +7747,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: field:res.company,rml_header2:0
|
||||
msgid "RML Internal Header"
|
||||
msgstr "RML内部ヘッダー"
|
||||
msgstr "RML内部ヘッダ"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.act_window,search_view_id:0
|
||||
@@ -7967,7 +7970,7 @@ msgstr ""
|
||||
#: view:res.partner:0
|
||||
#: field:res.partner,user_id:0
|
||||
msgid "Salesperson"
|
||||
msgstr ""
|
||||
msgstr "営業担当者"
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
@@ -8049,7 +8052,7 @@ msgstr "全ての x で繰り返す"
|
||||
#. module: base
|
||||
#: model:res.partner.bank.type,name:base.bank_normal
|
||||
msgid "Normal Bank Account"
|
||||
msgstr "通常の銀行口座"
|
||||
msgstr "普通口座"
|
||||
|
||||
#. module: base
|
||||
#: field:change.password.user,wizard_id:0
|
||||
@@ -8118,7 +8121,7 @@ msgstr "フランス語(スイス)/ Français (CH)"
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_13
|
||||
msgid "Distributor"
|
||||
msgstr ""
|
||||
msgstr "代理店"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.server,subject:0
|
||||
@@ -8274,7 +8277,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: field:res.partner.category,parent_id:0
|
||||
msgid "Parent Category"
|
||||
msgstr "親分類"
|
||||
msgstr "親カテゴリ"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.fi
|
||||
@@ -8448,7 +8451,7 @@ msgstr "香港"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_portal_sale
|
||||
msgid "Portal Sale"
|
||||
msgstr ""
|
||||
msgstr "販売ポータル"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.default,ref_id:0
|
||||
@@ -8647,7 +8650,7 @@ msgstr ""
|
||||
#: model:ir.module.module,shortdesc:base.module_hr_attendance
|
||||
#: model:res.groups,name:base.group_hr_attendance
|
||||
msgid "Attendances"
|
||||
msgstr "参加"
|
||||
msgstr "勤怠"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_warning
|
||||
@@ -8717,7 +8720,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_view_base_module_update
|
||||
msgid "Update Modules List"
|
||||
msgstr "モジュールリストの更新"
|
||||
msgstr "モジュールリスト更新"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/module.py:359
|
||||
@@ -8783,7 +8786,7 @@ msgstr "スロベニア語 / slovenščina"
|
||||
#. module: base
|
||||
#: field:res.currency,position:0
|
||||
msgid "Symbol Position"
|
||||
msgstr ""
|
||||
msgstr "記号位置"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_l10n_de
|
||||
@@ -8896,7 +8899,7 @@ msgstr "複数のアクション"
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_mail
|
||||
msgid "Discussions, Mailing Lists, News"
|
||||
msgstr ""
|
||||
msgstr "ディスカッション、メーリングリスト、ニュース"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_fleet
|
||||
@@ -8997,7 +9000,7 @@ msgstr "ユーザエラー"
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_project_issue
|
||||
msgid "Support, Bug Tracker, Helpdesk"
|
||||
msgstr ""
|
||||
msgstr "サポート、バグ追跡、ヘルプデスク"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.ae
|
||||
@@ -9022,12 +9025,12 @@ msgstr "このドキュメントはデフォルト属性として使用されて
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_5
|
||||
msgid "Silver"
|
||||
msgstr ""
|
||||
msgstr "シルバー"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner.title,shortcut:0
|
||||
msgid "Abbreviation"
|
||||
msgstr ""
|
||||
msgstr "略称"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_crm_case_job_req_main
|
||||
@@ -9313,7 +9316,7 @@ msgstr "なし"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_hr_holidays
|
||||
msgid "Leave Management"
|
||||
msgstr ""
|
||||
msgstr "休暇管理"
|
||||
|
||||
#. module: base
|
||||
#: model:res.company,overdue_msg:base.main_company
|
||||
@@ -9412,12 +9415,12 @@ msgstr ""
|
||||
#. module: base
|
||||
#: field:res.request,ref_partner_id:0
|
||||
msgid "Partner Ref."
|
||||
msgstr "パートナの参照"
|
||||
msgstr "取引先参照"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_hr_expense
|
||||
msgid "Expense Management"
|
||||
msgstr ""
|
||||
msgstr "経費管理"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.attachment,create_date:0
|
||||
@@ -9727,7 +9730,7 @@ msgstr "カスタム"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale_margin
|
||||
msgid "Margins in Sales Orders"
|
||||
msgstr "受注オーダーのマージン"
|
||||
msgstr "受注マージン"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_purchase
|
||||
@@ -9997,7 +10000,7 @@ msgstr "インストールする"
|
||||
#: model:ir.module.module,shortdesc:base.module_base
|
||||
#: field:res.currency,base:0
|
||||
msgid "Base"
|
||||
msgstr "ベース"
|
||||
msgstr "基本"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.model.data,model:0
|
||||
@@ -10185,7 +10188,7 @@ msgstr "間隔の単位"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_portal_stock
|
||||
msgid "Portal Stock"
|
||||
msgstr ""
|
||||
msgstr "在庫ポータル"
|
||||
|
||||
#. module: base
|
||||
#: field:workflow.activity,kind:0
|
||||
@@ -10251,7 +10254,7 @@ msgstr "データベース内の目的レコードのID"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_account_analytic_analysis
|
||||
msgid "Contracts Management"
|
||||
msgstr "コンタクト管理"
|
||||
msgstr "契約管理"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
@@ -10478,7 +10481,7 @@ msgstr "この会社に関連した銀行口座"
|
||||
#: model:ir.ui.menu,name:base.menu_sales
|
||||
#: model:ir.ui.menu,name:base.next_id_64
|
||||
msgid "Sales"
|
||||
msgstr "受注"
|
||||
msgstr "販売"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.server,child_ids:0
|
||||
@@ -10555,7 +10558,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_portal_hr_employees
|
||||
msgid "Portal HR employees"
|
||||
msgstr ""
|
||||
msgstr "従業員ポータル"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
@@ -10814,7 +10817,7 @@ msgstr "ユーザ自身がダッシュボードビュー(Webクライアント
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale_stock
|
||||
msgid "Sales and Warehouse Management"
|
||||
msgstr ""
|
||||
msgstr "販売・倉庫管理"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_hr_recruitment
|
||||
@@ -11049,7 +11052,7 @@ msgstr "Eメール"
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_12
|
||||
msgid "Office Supplies"
|
||||
msgstr ""
|
||||
msgstr "オフィス用品"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.attachment,res_model:0
|
||||
@@ -11158,7 +11161,7 @@ msgstr "カスケード"
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_crm
|
||||
msgid "Leads, Opportunities, Phone Calls"
|
||||
msgstr ""
|
||||
msgstr "リード、案件、電話"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,description:base.module_category_knowledge_management
|
||||
@@ -11221,7 +11224,7 @@ msgstr "マーケティングキャンペーン"
|
||||
#. module: base
|
||||
#: field:res.country.state,name:0
|
||||
msgid "State Name"
|
||||
msgstr "状態の名前"
|
||||
msgstr "州名"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.attachment,type:0
|
||||
@@ -11820,7 +11823,7 @@ msgstr "トリガーのシグナル"
|
||||
#: model:ir.actions.act_window,name:base.action_country_state
|
||||
#: model:ir.ui.menu,name:base.menu_country_state_partner
|
||||
msgid "Fed. States"
|
||||
msgstr "連邦"
|
||||
msgstr "州"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.model:0
|
||||
@@ -12021,7 +12024,7 @@ msgstr "ループ式"
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_16
|
||||
msgid "Retailer"
|
||||
msgstr ""
|
||||
msgstr "小売業"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.model.fields:0
|
||||
@@ -12052,7 +12055,7 @@ msgstr "リファレンスガイド"
|
||||
#: selection:res.partner.title,domain:0
|
||||
#: model:res.request.link,name:base.req_link_partner
|
||||
msgid "Partner"
|
||||
msgstr "パートナ"
|
||||
msgstr "取引先"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_mail_server.py:482
|
||||
@@ -12309,7 +12312,7 @@ msgstr "条件"
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.action_partner_other_form
|
||||
msgid "Other Partners"
|
||||
msgstr "その他のパートナ"
|
||||
msgstr "他の取引先"
|
||||
|
||||
#. module: base
|
||||
#: field:base.language.install,state:0
|
||||
@@ -12324,7 +12327,7 @@ msgstr "その他のパートナ"
|
||||
#: view:workflow.workitem:0
|
||||
#: field:workflow.workitem,state:0
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
msgstr "ステータス"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.action_currency_form
|
||||
@@ -12336,7 +12339,7 @@ msgstr "通貨"
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_8
|
||||
msgid "Consultancy Services"
|
||||
msgstr ""
|
||||
msgstr "コンサルティングサービス"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.values,value:0
|
||||
@@ -12446,7 +12449,7 @@ msgstr "調達"
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_6
|
||||
msgid "Bronze"
|
||||
msgstr ""
|
||||
msgstr "ブロンズ"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_hr_payroll_account
|
||||
@@ -12476,7 +12479,7 @@ msgstr "作成月"
|
||||
#. module: base
|
||||
#: field:ir.module.module,demo:0
|
||||
msgid "Demo Data"
|
||||
msgstr ""
|
||||
msgstr "デモデータ"
|
||||
|
||||
#. module: base
|
||||
#: model:res.partner.title,shortcut:base.res_partner_title_mister
|
||||
@@ -12491,7 +12494,7 @@ msgstr "モルディブ"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_portal_crm
|
||||
msgid "Portal CRM"
|
||||
msgstr ""
|
||||
msgstr "CRMポータル"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.next_id_4
|
||||
@@ -12633,7 +12636,7 @@ msgstr "銀行"
|
||||
#: model:ir.module.category,name:base.module_category_point_of_sale
|
||||
#: model:ir.module.module,shortdesc:base.module_point_of_sale
|
||||
msgid "Point of Sale"
|
||||
msgstr ""
|
||||
msgstr "POS"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_mail
|
||||
@@ -12988,7 +12991,7 @@ msgstr "設定"
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_9
|
||||
msgid "Components Buyer"
|
||||
msgstr ""
|
||||
msgstr "部材バイヤー"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_web_tests_demo
|
||||
@@ -13052,7 +13055,7 @@ msgstr "選択オプションの式は[('key','Label'), ...] の形式である
|
||||
#. module: base
|
||||
#: field:res.company,company_registry:0
|
||||
msgid "Company Registry"
|
||||
msgstr "会社のレジストリ"
|
||||
msgstr "会社レジストリ"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.report.xml:0
|
||||
@@ -13240,7 +13243,7 @@ msgstr "不明"
|
||||
#. module: base
|
||||
#: field:res.currency,symbol:0
|
||||
msgid "Symbol"
|
||||
msgstr "シンボル"
|
||||
msgstr "記号"
|
||||
|
||||
#. module: base
|
||||
#: help:res.partner,image_medium:0
|
||||
@@ -13356,7 +13359,7 @@ msgstr "依存関係:"
|
||||
#. module: base
|
||||
#: field:res.company,vat:0
|
||||
msgid "Tax ID"
|
||||
msgstr "税金ID"
|
||||
msgstr "税ID"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_account_bank_statement_extensions
|
||||
@@ -13391,7 +13394,7 @@ msgstr "ザイール"
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_project
|
||||
msgid "Projects, Tasks"
|
||||
msgstr ""
|
||||
msgstr "プロジェクト、タスク"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.attachment,res_id:0
|
||||
@@ -13446,7 +13449,7 @@ msgstr "右括弧"
|
||||
#. module: base
|
||||
#: view:base.module.update:0
|
||||
msgid "Update Module List"
|
||||
msgstr "モジュールリストの更新"
|
||||
msgstr "モジュールリスト更新"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_users.py:685
|
||||
@@ -13701,7 +13704,7 @@ msgstr "宛先の活動"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_project_issue
|
||||
msgid "Issue Tracker"
|
||||
msgstr ""
|
||||
msgstr "課題管理"
|
||||
|
||||
#. module: base
|
||||
#: view:base.module.update:0
|
||||
@@ -13785,7 +13788,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
msgid "Supplier Partners"
|
||||
msgstr "仕入先パートナ"
|
||||
msgstr "仕入先取引先"
|
||||
|
||||
#. module: base
|
||||
#: view:res.config.installer:0
|
||||
@@ -13800,7 +13803,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
msgid "Customer Partners"
|
||||
msgstr "顧客パートナ"
|
||||
msgstr "顧客取引先"
|
||||
|
||||
#. module: base
|
||||
#: sql_constraint:res.users:0
|
||||
@@ -14047,7 +14050,7 @@ msgstr "ルクセンブルク"
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_base_calendar
|
||||
msgid "Personal & Shared Calendar"
|
||||
msgstr ""
|
||||
msgstr "個人および共有カレンダ"
|
||||
|
||||
#. module: base
|
||||
#: selection:res.request,priority:0
|
||||
@@ -14161,7 +14164,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_account_voucher
|
||||
msgid "Send Invoices and Track Payments"
|
||||
msgstr ""
|
||||
msgstr "請求書送付、支払追跡"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_crm_config_lead
|
||||
@@ -14359,7 +14362,7 @@ msgstr "アクションの用途"
|
||||
#. module: base
|
||||
#: field:ir.module.module,name:0
|
||||
msgid "Technical Name"
|
||||
msgstr ""
|
||||
msgstr "技術名称"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_workflow_workitem
|
||||
@@ -14940,7 +14943,7 @@ msgstr "国"
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_15
|
||||
msgid "Wholesaler"
|
||||
msgstr ""
|
||||
msgstr "卸売業"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_base_vat
|
||||
@@ -15043,7 +15046,7 @@ msgstr "リネームは一度に1カラムしかできません。"
|
||||
#. module: base
|
||||
#: selection:ir.translation,type:0
|
||||
msgid "Report/Template"
|
||||
msgstr "レポート / テンプレート"
|
||||
msgstr "レポート/テンプレート"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_budget
|
||||
@@ -15254,7 +15257,7 @@ msgstr "クロアチア"
|
||||
msgid ""
|
||||
"Do you confirm the uninstallation of this module? This will permanently "
|
||||
"erase all data currently stored by the module!"
|
||||
msgstr ""
|
||||
msgstr "このモジュールを本当にアンインストールしてよいですか?このアクションにより、このモジュール依存のデータが全て消失します。"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.server,mobile:0
|
||||
@@ -15267,7 +15270,7 @@ msgstr "携帯電話番号"
|
||||
#: model:ir.model,name:base.model_res_partner_category
|
||||
#: view:res.partner.category:0
|
||||
msgid "Partner Categories"
|
||||
msgstr "パートナ分類"
|
||||
msgstr "取引先カテゴリ"
|
||||
|
||||
#. module: base
|
||||
#: view:base.module.upgrade:0
|
||||
@@ -15298,7 +15301,7 @@ msgstr "セーシェル"
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_4
|
||||
msgid "Gold"
|
||||
msgstr ""
|
||||
msgstr "ゴールド"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_company.py:173
|
||||
@@ -15379,7 +15382,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: field:res.partner.bank,partner_id:0
|
||||
msgid "Account Owner"
|
||||
msgstr "アカウント所有者"
|
||||
msgstr "口座所有者"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_procurement
|
||||
@@ -15501,7 +15504,7 @@ msgstr "ワークフローインスタンス"
|
||||
#: code:addons/base/res/res_partner.py:684
|
||||
#, python-format
|
||||
msgid "Partners: "
|
||||
msgstr "パートナ: "
|
||||
msgstr "取引先: "
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
@@ -15538,7 +15541,7 @@ msgstr "コンテキスト"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale_mrp
|
||||
msgid "Sales and MRP Management"
|
||||
msgstr "受注とMRP管理"
|
||||
msgstr "販売・MRP管理"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,help:base.action_partner_form
|
||||
@@ -15556,7 +15559,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_2
|
||||
msgid "Prospect"
|
||||
msgstr "見込み客"
|
||||
msgstr "見込客"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_stock_invoice_directly
|
||||
@@ -15611,7 +15614,7 @@ msgstr "ロシア語 / русский язык"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_auth_signup
|
||||
msgid "Signup"
|
||||
msgstr ""
|
||||
msgstr "サインアップ"
|
||||
|
||||
#~ msgid "Code (eg:en__US)"
|
||||
#~ msgstr "コード(例:en_US)"
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:40+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:32+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:34+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:35+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:43+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:35+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:43+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:35+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:43+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:35+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:43+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:35+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
@@ -12022,6 +12022,31 @@ msgid ""
|
||||
" Reporting / Accounting / **Follow-ups Analysis\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Төлөгдөөгүй нэхэмжлэлүүдэд олон шаттай дуудлаг хийх, захиадал явуулах ажлыг "
|
||||
"автоматжуулах модуль.\n"
|
||||
"=========================================================================\n"
|
||||
"\n"
|
||||
"Дараах менюгээр олон шатлалтай дуудлагуудыг тодорхойлж болно:\n"
|
||||
"---------------------------------------------------------------\n"
|
||||
" Тохиргоо / Мөшгөлтийн Түвшин\n"
|
||||
" \n"
|
||||
"Нэгэнт тодорхойлсон бол дараах менюгээр орж дуудлагуудын автоматаар тогтмол "
|
||||
"хэвлэж болно:\n"
|
||||
"-----------------------------------------------------------------------------"
|
||||
"-------------------------\n"
|
||||
" Төлбөрийн Мөшгөлт / Имэйл болон захидал илгээх\n"
|
||||
"\n"
|
||||
"Энэ нь PDF үүсгэх / имэйл илгээх / гар үйлдлүүдийг олон шатлалтай дуудлага "
|
||||
"дээр үндэслэн үүсгэдэг. \n"
|
||||
"Ялгаатай компаниудад ялгаатай бодлогыг тодорхойлж болно. \n"
|
||||
"\n"
|
||||
"Хэрэв тухайлсан харилцагч/дансны бичилт дээр мөшгөлтийг шалгахыг хүсвэл "
|
||||
"дараах менюгээр хийх боломжтой:\n"
|
||||
"-----------------------------------------------------------------------------"
|
||||
"-------------------------------------\n"
|
||||
" Тайлан / Санхүү / **Мөшгөлтийн шинжилгээ\n"
|
||||
"\n"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_model.py:735
|
||||
@@ -12196,6 +12221,20 @@ msgid ""
|
||||
"You can define the different phases of interviews and easily rate the "
|
||||
"applicant from the kanban view.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Ажлын байр, ажилтан авах процессийг удирдана\n"
|
||||
"================================================\n"
|
||||
"\n"
|
||||
"Энэ модуль нь ажлыг хөтлөх, амралтыг хөтлөх, өргөдөл болон ярилцлагыг хөтлөх "
|
||||
"зэрэг ажлыг хялбараар хийх боломжийг олгодог...\n"
|
||||
"\n"
|
||||
"Энэ нь имэйл үүдтэй уялддаг бөгөөд <jobs@yourcompany.com> гэсэн хаяг руу "
|
||||
"ирсэн имэйлээс өргөдлүүдийг татан авдаг. Мөн баримтын модультай уялдсан "
|
||||
"байдаг бөгөөд файлаар ирсэн CV-үүдийг хадгалж дараа хайлт хийх боломжийг "
|
||||
"бүрдүүлдэг. Үүнтэй төстэйгээр Санал асуулга модультай уялдаж ярилцлагыг "
|
||||
"хөтлөдөг. \n"
|
||||
"Ярилцлагын ялгаатай шатуудыг тодорхойлж эдгээртээ үнэлгээ өгөх зэрэг ажлыг "
|
||||
"канбан харагдацаас хялбараар хийж болдог.\n"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.model.fields,model:0
|
||||
@@ -12242,7 +12281,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: help:res.partner,ean13:0
|
||||
msgid "BarCode"
|
||||
msgstr ""
|
||||
msgstr "Зураасан код"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.model.fields,model_id:0
|
||||
@@ -12423,7 +12462,7 @@ msgstr "Оффисын Хангамжууд"
|
||||
#. module: base
|
||||
#: field:ir.attachment,res_model:0
|
||||
msgid "Resource Model"
|
||||
msgstr "Нөөцийн модел"
|
||||
msgstr "Нөөц модел"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/custom.py:555
|
||||
@@ -12721,6 +12760,9 @@ msgid ""
|
||||
"Allow users to sign up through OAuth2 Provider.\n"
|
||||
"===============================================\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"OAuth2-р хэрэглэгчид бүртгүүлэх, нэвтрэх боломжийг олгодог.\n"
|
||||
"===============================================\n"
|
||||
|
||||
#. module: base
|
||||
#: field:change.password.user,user_id:0
|
||||
@@ -12744,7 +12786,7 @@ msgstr "Пуэрто Рико"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_web_tests_demo
|
||||
msgid "Demonstration of web/javascript tests"
|
||||
msgstr ""
|
||||
msgstr "Веб/javascript тестийн жишээ, үзүүлэн"
|
||||
|
||||
#. module: base
|
||||
#: field:workflow.transition,signal:0
|
||||
@@ -13076,6 +13118,13 @@ msgid ""
|
||||
"\n"
|
||||
"The decimal precision is configured per company.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Үнийн нарийвчлалыг тохируулахыг олон зорилгоор ашиглаж болно: санхүү, "
|
||||
"борлуулалт, худалдан авалт\n"
|
||||
"============================================================================="
|
||||
"====================\n"
|
||||
"\n"
|
||||
"Аравны нарийвчлал нь компанийн хүрээнд хийгдэнэ.\n"
|
||||
|
||||
#. module: base
|
||||
#: selection:res.company,paper_format:0
|
||||
@@ -13175,6 +13224,9 @@ msgid ""
|
||||
"(if you delete a native ACL, it will be re-created when you reload the "
|
||||
"module."
|
||||
msgstr ""
|
||||
"Идэвхтэй талбарыг сонгоогүй тохиолдолд ACL-г устгалгүйгээр идэвхгүй болгоно. "
|
||||
"(Анхны эх ACL-г устгасан байлаа ч модулийг ахин ачаалахад дахин шинээр "
|
||||
"үүсдэг)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_fields_converter
|
||||
@@ -13230,6 +13282,17 @@ msgid ""
|
||||
"into mail.message with attachments.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Энэ модуль нь Outlook Залгаасыг өгдөг.\n"
|
||||
"=========================================\n"
|
||||
"\n"
|
||||
"Outlook залгаас нь MS Outlook дотороосоо имэйлдээ OpenERP обьекуудтыг \n"
|
||||
"сонгох хавсаргах боломжийг олгодог. Харилцагч, даалгавар, төсөл, "
|
||||
"шинжилгээний данс \n"
|
||||
"гэх мэт дуртай обьектоо сонгож имэйлдээ оруулж mail.message обьектот "
|
||||
"хавсралтын хамт\n"
|
||||
"архивладаг.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_bo
|
||||
@@ -17186,6 +17249,15 @@ msgid ""
|
||||
" </p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"<p class=\"oe_view_nocontent_create\">\n"
|
||||
" Хаягийн дэвтэртэй холбогч нэмэхээр бол дарна.\n"
|
||||
" </p><p>\n"
|
||||
" OpenERP нь захиалагчтай холбоотой бүх үйл ажиллагааг хялбар "
|
||||
"хөтлөдөг, үүнд: \n"
|
||||
" захиалагчтай харилцсан харилцаа, бизнес боломжийн түүх, "
|
||||
"баримтууд гэх мэт.\n"
|
||||
" </p>\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_2
|
||||
@@ -17228,6 +17300,17 @@ msgid ""
|
||||
"on a supplier purchase order into several accounts and analytic plans.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Шинжилгээний тархалт болон худалдан авалтын захиалгын менежментийг хийх "
|
||||
"суурь модуль.\n"
|
||||
"====================================================================\n"
|
||||
"\n"
|
||||
"Шинжилгээний хэд хэдэн төлөвлөгөөг үүсгэх боломжийг хэрэглэгчид олгодог. Энэ "
|
||||
"нь нийлүүлэгчийн\n"
|
||||
"худалдан авалтын захиалгын нэг мөр дээр олон данс болон шинжилгээний "
|
||||
"төлөвлөгөөг сонгож, хуваах \n"
|
||||
"боломжийг олгодог.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.lk
|
||||
@@ -17247,7 +17330,7 @@ msgstr "Орос хэл / русский язык"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_auth_signup
|
||||
msgid "Signup"
|
||||
msgstr ""
|
||||
msgstr "Бүртгүүлэх"
|
||||
|
||||
#, python-format
|
||||
#~ msgid "new"
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:43+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:35+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
+117
-79
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:39+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:32+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
@@ -58,7 +58,7 @@ msgstr ""
|
||||
#: field:ir.ui.view,arch:0
|
||||
#: field:ir.ui.view.custom,arch:0
|
||||
msgid "View Architecture"
|
||||
msgstr "Opbouw weergave"
|
||||
msgstr "Hiërarchie bekijken"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_sale_stock
|
||||
@@ -78,7 +78,7 @@ msgstr "Hongaars / Magyar"
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (PY) / Español (PY)"
|
||||
msgstr "Spaans (PY) / Spanja (PY)"
|
||||
msgstr "Spaans (PY) / Español (PY)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,description:base.module_category_project_management
|
||||
@@ -153,11 +153,12 @@ msgid ""
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Deze module voegt een Google gebruiker toe in res.user\n"
|
||||
"======================================================\n"
|
||||
|
||||
#. module: base
|
||||
#: help:res.partner,employee:0
|
||||
msgid "Check this box if this contact is an Employee."
|
||||
msgstr "Vink dit aan als deze gebruiker een werknemer is"
|
||||
msgstr "Vink dit aan als deze gebruiker een werknemer is."
|
||||
|
||||
#. module: base
|
||||
#: help:ir.model.fields,domain:0
|
||||
@@ -210,13 +211,14 @@ msgid ""
|
||||
"reports."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Genereer je facturen vanuit uitgaven, tijdsregistraties.\n"
|
||||
"Genereer uw facturen vanuit uitgaven, tijdsregistraties.\n"
|
||||
" ========================================================\n"
|
||||
" \n"
|
||||
"Module voor het genereren van facturen op basis van uitgaven (Personen, "
|
||||
"uitgaven, enz).\n"
|
||||
"Module voor het genereren van facturen op basis van kosten (Personen, "
|
||||
"uitgaven, ...).\n"
|
||||
" \n"
|
||||
"Je kunt prijslijsten definieren in een grootboek rapportage."
|
||||
"U kunt prijslijsten definieren in een grootboek rapportage, maak enkele "
|
||||
"theoretische omzet rapportages."
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_sequence.py:134
|
||||
@@ -252,7 +254,7 @@ msgstr "ir.ui.view.custom"
|
||||
#: code:addons/base/ir/ir_model.py:374
|
||||
#, python-format
|
||||
msgid "Renaming sparse field \"%s\" is not allowed"
|
||||
msgstr "Hiernoenen sparse field \"%s\" is niet toegestaan"
|
||||
msgstr "Hernoenen sparse veld \"%s\" is niet toegestaan"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sz
|
||||
@@ -319,7 +321,7 @@ msgid ""
|
||||
"any."
|
||||
msgstr ""
|
||||
"De interne gebruiker die verantwoordelijk is voor de communicatie met deze "
|
||||
"contactpersoon indien aanwezig."
|
||||
"contactpersoon indien van toepassing."
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
@@ -491,9 +493,9 @@ msgid ""
|
||||
"Invalid date/time format directive specified. Please refer to the list of "
|
||||
"allowed directives, displayed when you edit a language."
|
||||
msgstr ""
|
||||
"Ongeldige datum / tijd-formaat richtlijn gespecificeerd. Raadpleeg de lijst "
|
||||
"met toegestane richtlijnen welke worden weergegeven wanneer u bewerken van "
|
||||
"een taal."
|
||||
"Ongeldige datum/tijd-formaat richtlijn gespecificeerd. Raadpleeg de lijst "
|
||||
"met toegestane richtlijnen welke worden weergegeven wanneer u een taal "
|
||||
"bewerkt."
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:4153
|
||||
@@ -502,7 +504,7 @@ msgid ""
|
||||
"One of the records you are trying to modify has already been deleted "
|
||||
"(Document type: %s)."
|
||||
msgstr ""
|
||||
"Een van de records die u probeert te wijzigen is al verwijderd )document "
|
||||
"Een van de records die u probeert te wijzigen is al verwijderd (Document "
|
||||
"type: %s)."
|
||||
|
||||
#. module: base
|
||||
@@ -541,12 +543,12 @@ msgstr "Volgende assistent"
|
||||
#. module: base
|
||||
#: field:res.lang,date_format:0
|
||||
msgid "Date Format"
|
||||
msgstr "Datumopmaak"
|
||||
msgstr "Datumnotatie"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_base_report_designer
|
||||
msgid "OpenOffice Report Designer"
|
||||
msgstr "OpenOffice overzicht ontwerper"
|
||||
msgstr "OpenOffice Rapport Ontwerper"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.an
|
||||
@@ -667,7 +669,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (VE) / Español (VE)"
|
||||
msgstr "Spaans (VE) / Spanje (VE)"
|
||||
msgstr "Spaans (VE) / Español (VE)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_hr_timesheet_invoice
|
||||
@@ -883,7 +885,7 @@ msgstr "De naam van het bedrijf moet uniek zijn!"
|
||||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_base_action_rule_admin
|
||||
msgid "Automated Actions"
|
||||
msgstr "Automatische acties"
|
||||
msgstr "Geautomatiseerde acties"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_ro
|
||||
@@ -1006,7 +1008,7 @@ msgstr "base.language.export"
|
||||
#. module: base
|
||||
#: model:res.country,name:base.pg
|
||||
msgid "Papua New Guinea"
|
||||
msgstr "Papua Nieuw-Guinea"
|
||||
msgstr "Papoea-Nieuw-Guinea"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.report.xml,report_type:0
|
||||
@@ -1344,7 +1346,7 @@ msgstr "Nieuwste versie"
|
||||
#. module: base
|
||||
#: view:ir.rule:0
|
||||
msgid "Delete Access Right"
|
||||
msgstr "Tegangsrechten verwijderen."
|
||||
msgstr "Toegangsrechten verwijderen"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_mail_server.py:214
|
||||
@@ -1452,7 +1454,7 @@ msgstr "Veld assistent"
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (GT) / Español (GT)"
|
||||
msgstr "Spaans (GT) / Spanje (GT)"
|
||||
msgstr "Spaans (GT) / Español (GT)"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.mail_server,smtp_port:0
|
||||
@@ -1483,7 +1485,7 @@ msgid ""
|
||||
"decimal number [00,53]. All days in a new year preceding the first Monday "
|
||||
"are considered to be in week 0."
|
||||
msgstr ""
|
||||
"%W - Weeknummer van het jaar (Maandag als eerste dag van de maand) als "
|
||||
"%W - Weeknummer van het jaar (Maandag als eerste dag van de week) als "
|
||||
"decimaal getal [00,53]. Alle dagen in het nieuwe jaar voorafgaande aan de "
|
||||
"eerste maandag vallen in week 0."
|
||||
|
||||
@@ -1646,13 +1648,13 @@ msgid ""
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Deze module installaeert de basis voor IBAN (International Bank Account "
|
||||
"Number) bank rekeningen controleert op geldigheid.\n"
|
||||
"Deze module installeert de basis voor IBAN (International Bank Account "
|
||||
"Number) bankrekeningen en controleert deze op geldigheid.\n"
|
||||
"============================================================================="
|
||||
"========================\n"
|
||||
"=====================================\n"
|
||||
"\n"
|
||||
"De mogelijkheid om correcte local rekeningen op te halen uit een IBAN "
|
||||
"rekening met een een enkele opdacht.\n"
|
||||
"De mogelijkheid om correcte normale rekeningnummers te halen uit een IBAN "
|
||||
"rekeningnummer met een een enkele opdacht.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
@@ -1675,6 +1677,12 @@ msgid ""
|
||||
"=============\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Deze module voegt claim menu en features aan uw portaal toe indien claim en "
|
||||
"portal zijn geïnstalleerd.\n"
|
||||
"============================================================================="
|
||||
"=========================\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,help:base.action_res_partner_bank_account_form
|
||||
@@ -1812,8 +1820,8 @@ msgid ""
|
||||
"Helps you manage your purchase-related processes such as requests for "
|
||||
"quotations, supplier invoices, etc..."
|
||||
msgstr ""
|
||||
"Helpt de inkoop-gerelateerde processen te beheren zoals inkoop "
|
||||
"prijsaanvragen, inkoopfacturen, etc..."
|
||||
"Helpt de inkoop-gerelateerde processen te beheren zoals aanvragen van "
|
||||
"offertes, inkoopfacturen, etc..."
|
||||
|
||||
#. module: base
|
||||
#: help:res.partner,website:0
|
||||
@@ -1974,7 +1982,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: model:res.country,name:base.kg
|
||||
msgid "Kyrgyz Republic (Kyrgyzstan)"
|
||||
msgstr "Kyrgyzstan"
|
||||
msgstr "Kirgizië"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_accountant
|
||||
@@ -2008,8 +2016,7 @@ msgstr ""
|
||||
#: code:addons/base/ir/ir_fields.py:164
|
||||
#, python-format
|
||||
msgid "Unknown value '%s' for boolean field '%%(field)s', assuming '%s'"
|
||||
msgstr ""
|
||||
"Onbekende waarde '%s' voor boolean veld'%%(field)s', ervan uitgaande dat '%s'"
|
||||
msgstr "Onbekende waarde '%s' voor boolean veld '%%(field)s', neem '%s' aan"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.nl
|
||||
@@ -2045,12 +2052,12 @@ msgstr "Voertuig, lease, verzekeringen, kosten"
|
||||
#: view:ir.model.access:0
|
||||
#: field:ir.model.access,perm_read:0
|
||||
msgid "Read Access"
|
||||
msgstr "Lezen"
|
||||
msgstr "Leesrechten"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.attachment,res_id:0
|
||||
msgid "The record id this is attached to"
|
||||
msgstr "Het record is waaraan dit is verbonden"
|
||||
msgstr "Het record id waaraan dit is verbonden"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_share
|
||||
@@ -2348,12 +2355,12 @@ msgstr "Spaans / Español"
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Korean (KP) / 한국어 (KP)"
|
||||
msgstr "Koreans (KP) / Korea (KP)"
|
||||
msgstr "Koreaans (KP) / 한국어 (KP)"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.ax
|
||||
msgid "Åland Islands"
|
||||
msgstr "Åland-eilanden"
|
||||
msgstr "Ålandseilanden"
|
||||
|
||||
#. module: base
|
||||
#: field:res.company,logo:0
|
||||
@@ -2512,7 +2519,7 @@ msgstr "Groepen"
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (CL) / Español (CL)"
|
||||
msgstr "Spaans (CL) / Spanje (CL)"
|
||||
msgstr "Spaans (CL) / Español (CL)"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.bz
|
||||
@@ -2532,6 +2539,10 @@ msgid ""
|
||||
"=================================\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Anonieme gebruikers toegang geven tot uw Portaal.\n"
|
||||
"=====================================================\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.ge
|
||||
@@ -2750,7 +2761,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_auth_oauth_signup
|
||||
msgid "Signup with OAuth2 Authentication"
|
||||
msgstr "Inloggen met OAuth2 Authenticatie"
|
||||
msgstr "Registreren met OAuth2 Authenticatie"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.model,state:0
|
||||
@@ -2804,6 +2815,10 @@ msgid ""
|
||||
"==================================\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Verenigde Staten - Grootboekschema.\n"
|
||||
"======================================\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.act_url,target:0
|
||||
@@ -2962,6 +2977,9 @@ msgid ""
|
||||
"Module to attach a google document to any model.\n"
|
||||
"================================================\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Module om een google document aan een model te koppelen.\n"
|
||||
"============================================================\n"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_fields.py:333
|
||||
@@ -3311,7 +3329,7 @@ msgstr "Norfolkeiland"
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Korean (KR) / 한국어 (KR)"
|
||||
msgstr "Koreans(KR) / Korea (KR)"
|
||||
msgstr "Koreaans (KR) / 한국어 (KR)"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.model.fields,model:0
|
||||
@@ -3429,7 +3447,7 @@ msgstr "Armenië"
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_hr_evaluation
|
||||
msgid "Periodical Evaluations, Appraisals, Surveys"
|
||||
msgstr "Periodieke evaluaties, beoordelingen en enquêtes,"
|
||||
msgstr "Periodieke evaluaties, beoordelingen, enquêtes"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.ir_property_form
|
||||
@@ -3683,7 +3701,7 @@ msgstr "Personeels enquêtes"
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (DO) / Español (DO)"
|
||||
msgstr "Spaans (DO) / Spanje (DO)"
|
||||
msgstr "Spaans (DO) / Español (DO)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_workflow_activity
|
||||
@@ -3717,7 +3735,7 @@ msgstr "Uruguay"
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Finnish / Suomi"
|
||||
msgstr "Fins / Finland"
|
||||
msgstr "Fins / Suomi"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.config_parameter:0
|
||||
@@ -3990,7 +4008,7 @@ msgstr "Recursiviteit ontdekt."
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_et
|
||||
msgid "Ethiopia - Accounting"
|
||||
msgstr "Boekhouding - Ethiopië"
|
||||
msgstr "Ethiopië - Boekhouding"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/module.py:366
|
||||
@@ -4541,7 +4559,7 @@ msgstr "Te starten actie"
|
||||
#: field:ir.model.constraint,name:0
|
||||
#: selection:ir.translation,type:0
|
||||
msgid "Constraint"
|
||||
msgstr "Begrenzing"
|
||||
msgstr "Beperking"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.values,key:0
|
||||
@@ -4552,7 +4570,7 @@ msgstr "Standaard adres"
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_lunch
|
||||
msgid "Lunch Order, Meal, Food"
|
||||
msgstr "Lunch orders, maaltijden en voeding"
|
||||
msgstr "Lunch orders, maaltijden, consumpties"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.model.fields:0
|
||||
@@ -4721,7 +4739,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_project_timesheet
|
||||
msgid "Bill Time on Tasks"
|
||||
msgstr "Tijd of taken factureren"
|
||||
msgstr "Tijd op taken factureren"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_marketing
|
||||
@@ -4744,11 +4762,15 @@ msgid ""
|
||||
"==========================\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"OpenERP Web Kalender weergave.\n"
|
||||
"==================================\n"
|
||||
"\n"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (HN) / Español (HN)"
|
||||
msgstr "Spaans (HN) / Spanje (HN)"
|
||||
msgstr "Spaans (HN) / Español (HN)"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.sequence.type:0
|
||||
@@ -4855,6 +4877,15 @@ msgid ""
|
||||
" * Commitment Date\n"
|
||||
" * Effective Date\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Extra datum informatie toevoegen aan een verkooporder.\n"
|
||||
"=====================================================\n"
|
||||
"\n"
|
||||
"U kunt de volgende extra datums toevoegen aan een verkooporder:\n"
|
||||
"-----------------------------------------------------------------------\n"
|
||||
" * Datum Verzoek\n"
|
||||
" * Datum Toezegging\n"
|
||||
" * Datum Uitvoering\n"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.server,srcmodel_id:0
|
||||
@@ -4920,7 +4951,7 @@ msgstr "Open een venster"
|
||||
#. module: base
|
||||
#: model:res.country,name:base.gq
|
||||
msgid "Equatorial Guinea"
|
||||
msgstr "Equatoriaal Guinea"
|
||||
msgstr "Equatoriaal-Guinea"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_web_api
|
||||
@@ -5002,7 +5033,7 @@ msgstr "Stel in als te doen"
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
msgid "%c - Appropriate date and time representation."
|
||||
msgstr "%c - Passende weergave datum en tijd"
|
||||
msgstr "%c - Passende datum en tijd weergave."
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/res/res_config.py:420
|
||||
@@ -5013,6 +5044,7 @@ msgid ""
|
||||
"Click 'Continue' and enjoy your OpenERP experience..."
|
||||
msgstr ""
|
||||
"Uw database is nu volledig geconfigureerd.\n"
|
||||
"\n"
|
||||
"Klik op 'Doorgaan' en geniet van uw OpenERP beleving..."
|
||||
|
||||
#. module: base
|
||||
@@ -5064,7 +5096,7 @@ msgstr "Rechten"
|
||||
#. module: base
|
||||
#: field:ir.mail_server,smtp_host:0
|
||||
msgid "SMTP Server"
|
||||
msgstr "SMTP-server"
|
||||
msgstr "SMTP Server"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/module.py:320
|
||||
@@ -5072,7 +5104,7 @@ msgstr "SMTP-server"
|
||||
msgid "You try to remove a module that is installed or will be installed"
|
||||
msgstr ""
|
||||
"U probeert een module te verwijderen die geïnstalleerd is of nog moet worden "
|
||||
"geïnstalleerd."
|
||||
"geïnstalleerd"
|
||||
|
||||
#. module: base
|
||||
#: view:base.module.upgrade:0
|
||||
@@ -5082,7 +5114,7 @@ msgstr "De geselecteerde modules zijn bijgewerkt / geïnstalleerd !"
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (PR) / Español (PR)"
|
||||
msgstr "Spaans (PR) / Spanja (PR)"
|
||||
msgstr "Spaans (PR) / Español (PR)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_crm_profiling
|
||||
@@ -5137,7 +5169,7 @@ msgstr "Inkoop"
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Portuguese (BR) / Português (BR)"
|
||||
msgstr ""
|
||||
msgstr "Portugees (BR) / Português (BR)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_needaction_mixin
|
||||
@@ -5157,7 +5189,7 @@ msgstr "IT Services"
|
||||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_specific_industry_applications
|
||||
msgid "Specific Industry Applications"
|
||||
msgstr "Specificeer industrie toepassingen"
|
||||
msgstr "Specifieke industriële toepassingen"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_google_docs
|
||||
@@ -5245,12 +5277,12 @@ msgstr "Kenia"
|
||||
#: model:ir.actions.act_window,name:base.action_translation
|
||||
#: model:ir.ui.menu,name:base.menu_action_translation
|
||||
msgid "Translated Terms"
|
||||
msgstr "Vertaalde regels"
|
||||
msgstr "Vertaalde uitdrukkingen"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Abkhazian / аҧсуа"
|
||||
msgstr "Abchazisch / Abchazië"
|
||||
msgstr "Abchazisch / аҧсуа"
|
||||
|
||||
#. module: base
|
||||
#: view:base.module.configuration:0
|
||||
@@ -5301,7 +5333,7 @@ msgstr "Opslaan"
|
||||
#. module: base
|
||||
#: field:ir.actions.report.xml,report_xml:0
|
||||
msgid "XML Path"
|
||||
msgstr "XML Path"
|
||||
msgstr "XML Pad"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.bj
|
||||
@@ -5401,14 +5433,14 @@ msgstr "Beveiliging"
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Portuguese / Português"
|
||||
msgstr ""
|
||||
msgstr "Portugees / Português"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_model.py:372
|
||||
#, python-format
|
||||
msgid "Changing the storing system for field \"%s\" is not allowed."
|
||||
msgstr ""
|
||||
"Het veranderen van het opsla systeem voor veld \"%s\" is niet toegestaan."
|
||||
"Het veranderen van het opslagsysteem voor veld \"%s\" is niet toegestaan."
|
||||
|
||||
#. module: base
|
||||
#: help:res.partner.bank,company_id:0
|
||||
@@ -5436,7 +5468,7 @@ msgstr "Geïnstalleerd"
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Ukrainian / українська"
|
||||
msgstr "Oekraïens / Oekraïne"
|
||||
msgstr "Oekraïens / українська"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sn
|
||||
@@ -5493,7 +5525,7 @@ msgstr "Expressie om aan te voldoen om de transitie te maken."
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (PA) / Español (PA)"
|
||||
msgstr "Spaans (PA) / Spanja (PA)"
|
||||
msgstr "Spaans (PA) / Español (PA)"
|
||||
|
||||
#. module: base
|
||||
#: view:res.currency:0
|
||||
@@ -5525,7 +5557,7 @@ msgstr "Ieder model moet uniek zijn!"
|
||||
#: model:ir.module.category,name:base.module_category_localization
|
||||
#: model:ir.ui.menu,name:base.menu_localisation
|
||||
msgid "Localization"
|
||||
msgstr "Vertalingen"
|
||||
msgstr "Lokalisatie"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_web_api
|
||||
@@ -5613,7 +5645,7 @@ msgstr "Relatie labels"
|
||||
#. module: base
|
||||
#: view:res.company:0
|
||||
msgid "Preview Header/Footer"
|
||||
msgstr "Bekijk kop/voet"
|
||||
msgstr "Bekijk kop-/voettekst"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.ui.menu,parent_id:0
|
||||
@@ -5624,7 +5656,7 @@ msgstr "Hoofdmenu"
|
||||
#. module: base
|
||||
#: field:res.partner.bank,owner_name:0
|
||||
msgid "Account Owner Name"
|
||||
msgstr "Naam eigenaar rekening"
|
||||
msgstr "Naam rekeningeigenaar"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_model.py:420
|
||||
@@ -5683,7 +5715,7 @@ msgstr "Filter Naam"
|
||||
#: view:res.partner:0
|
||||
#: field:res.request,history:0
|
||||
msgid "History"
|
||||
msgstr "Historie"
|
||||
msgstr "Geschiedenis"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.im
|
||||
@@ -5704,12 +5736,12 @@ msgstr "De modulenaam moet uniek zijn !"
|
||||
#. module: base
|
||||
#: model:res.country,name:base.bv
|
||||
msgid "Bouvet Island"
|
||||
msgstr "Bouvet-eiland"
|
||||
msgstr "Bouveteiland"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.model.constraint,type:0
|
||||
msgid "Constraint Type"
|
||||
msgstr "Constraint soort"
|
||||
msgstr "Soort Beperking"
|
||||
|
||||
#. module: base
|
||||
#: field:res.company,child_ids:0
|
||||
@@ -5939,7 +5971,7 @@ msgstr "ir.actions.act_url"
|
||||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_translation_app
|
||||
msgid "Application Terms"
|
||||
msgstr "Applicatie-termen"
|
||||
msgstr "Applicatie uitdrukkingen"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,help:base.open_module_tree
|
||||
@@ -5973,12 +6005,12 @@ msgstr "Engels (GB)"
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Japanese / 日本語"
|
||||
msgstr "Japans / Japan"
|
||||
msgstr "Japans / 日本語"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_base_language_import
|
||||
msgid "Language Import"
|
||||
msgstr "Taal import"
|
||||
msgstr "Taal Importeren"
|
||||
|
||||
#. module: base
|
||||
#: help:workflow.transition,act_from:0
|
||||
@@ -6090,7 +6122,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: view:ir.translation:0
|
||||
msgid "Comments"
|
||||
msgstr "Reacties"
|
||||
msgstr "Opmerkingen"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.et
|
||||
@@ -6196,6 +6228,12 @@ msgid ""
|
||||
"===============================================\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Gebruikers toestaan om te registreren en hun wachtwoord opnieuw in te "
|
||||
"stellen\n"
|
||||
"============================================================================="
|
||||
"\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_usability
|
||||
@@ -6278,7 +6316,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Spanish (BO) / Español (BO)"
|
||||
msgstr "Spaans (BO) / Spaans (BO)"
|
||||
msgstr "Spaans (BO) / Español (BO)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_board
|
||||
@@ -6300,7 +6338,7 @@ msgstr "Overzicht toegangscontrole"
|
||||
#. module: base
|
||||
#: model:res.country,name:base.um
|
||||
msgid "USA Minor Outlying Islands"
|
||||
msgstr "VS Kleine Buitengaatse Eilanden"
|
||||
msgstr "Kleine afgelegen eilanden van de Verenigde Staten"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.cron,numbercall:0
|
||||
@@ -6342,7 +6380,7 @@ msgstr "Initiële datum"
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Gujarati / ગુજરાતી"
|
||||
msgstr "Gujarati / India"
|
||||
msgstr "Gujarati / ગુજરાતી"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/module.py:361
|
||||
@@ -6356,7 +6394,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_be_hr_payroll
|
||||
msgid "Belgium - Payroll"
|
||||
msgstr "Loonadministratie - België"
|
||||
msgstr "België - Loonadministratie"
|
||||
|
||||
#. module: base
|
||||
#: view:workflow.activity:0
|
||||
@@ -6741,7 +6779,7 @@ msgstr "Prijs nauwkeurigheid"
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
msgid "Latvian / latviešu valoda"
|
||||
msgstr "Lets / Letland"
|
||||
msgstr "Lets / latviešu valoda"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
@@ -7004,7 +7042,7 @@ msgstr "Soms BIC of Swift genoemd."
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_in
|
||||
msgid "Indian - Accounting"
|
||||
msgstr "Boekhouding - India"
|
||||
msgstr "India - Boekhouding"
|
||||
|
||||
#. module: base
|
||||
#: field:res.lang,time_format:0
|
||||
@@ -15159,7 +15197,7 @@ msgstr "Limiet"
|
||||
#. module: base
|
||||
#: model:res.groups,name:base.group_hr_user
|
||||
msgid "Officer"
|
||||
msgstr "Manager"
|
||||
msgstr "Functionaris"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:787
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:47+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:40+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:44+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:44+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:46+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:39+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -8,13 +8,13 @@ msgstr ""
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
|
||||
"PO-Revision-Date: 2013-01-05 18:18+0000\n"
|
||||
"Last-Translator: ERPSystems.ro <mihai@erpsystems.ro>\n"
|
||||
"Last-Translator: ERPSystems.ro <Unknown>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:44+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:44+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
@@ -307,6 +307,13 @@ msgid ""
|
||||
"\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Чилийский бухгалтерский учет и налоги в соответствии с действующими "
|
||||
"положениями\n"
|
||||
"==============================================\n"
|
||||
"Plan contable chileno e impuestos de acuerdo a disposiciones vigentes\n"
|
||||
"\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale
|
||||
@@ -429,6 +436,8 @@ msgid ""
|
||||
"There is already a shared filter set as default for %(model)s, delete or "
|
||||
"change it before setting a new default"
|
||||
msgstr ""
|
||||
"Уже существует общий фильтр по умолчанию для %(model)s, удалите или измените "
|
||||
"его прежде чем устанавливать новый по умолчанию"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:2649
|
||||
@@ -597,6 +606,15 @@ msgid ""
|
||||
"that have no counterpart in the general financial accounts.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Модуль для определения объекта аналитического учета.\n"
|
||||
"===============================================\n"
|
||||
"\n"
|
||||
"В OpenERP, аналитические счета связаны с общими счетами, но рассматриваются\n"
|
||||
"полностью независимо. Таким образом, вы можете ввести различные "
|
||||
"аналитические операции\n"
|
||||
"которые не дублируются в общие финансовые счета.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_idea
|
||||
@@ -620,6 +638,19 @@ msgid ""
|
||||
"* Use emails to automatically confirm and send acknowledgements for any "
|
||||
"event registration\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Организация и управление событиями.\n"
|
||||
"======================================\n"
|
||||
"\n"
|
||||
"Модуль мероприятий позволяет Вам эффективно организовывать события и все "
|
||||
"задачи связанные с: планификацией, регистрацией отслеживания,\n"
|
||||
"посещаемостью, и т.д.\n"
|
||||
"\n"
|
||||
"Основные характеристики\n"
|
||||
"------------\n"
|
||||
"* Управление своими Мероприятиями и Регистрациями\n"
|
||||
"* Использовать электронную почту для автоматического подтверждения и "
|
||||
"отправлять подтверждения для регистрации любого события\n"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
@@ -877,7 +908,7 @@ msgstr "Иордания"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_hr
|
||||
msgid "Croatia - RRIF 2012 COA"
|
||||
msgstr ""
|
||||
msgstr "Хорватия - RRIF 2012 COA"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.cron,nextcall:0
|
||||
@@ -2534,6 +2565,10 @@ msgid ""
|
||||
"=================================\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Позволить неавторизованным пользователям доступ к Порталу.\n"
|
||||
"=================================\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.ge
|
||||
@@ -2918,6 +2953,40 @@ msgid ""
|
||||
"* Monthly Turnover (Graph)\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Управление предложениями цен и заказами покупателей \n"
|
||||
"==================================\n"
|
||||
"\n"
|
||||
"This application allows you to manage your sales goals in an effective and "
|
||||
"efficient manner by keeping track of all sales orders and history.\n"
|
||||
"\n"
|
||||
"It handles the full sales workflow:\n"
|
||||
"\n"
|
||||
"* **Quotation** -> **Sales order** -> **Invoice**\n"
|
||||
"\n"
|
||||
"Preferences (only with Warehouse Management installed)\n"
|
||||
"------------------------------------------------------\n"
|
||||
"\n"
|
||||
"If you also installed the Warehouse Management, you can deal with the "
|
||||
"following preferences:\n"
|
||||
"\n"
|
||||
"* Shipping: Choice of delivery at once or partial delivery\n"
|
||||
"* Invoicing: choose how invoices will be paid\n"
|
||||
"* Incoterms: International Commercial terms\n"
|
||||
"\n"
|
||||
"You can choose flexible invoicing methods:\n"
|
||||
"\n"
|
||||
"* *On Demand*: Invoices are created manually from Sales Orders when needed\n"
|
||||
"* *On Delivery Order*: Invoices are generated from picking (delivery)\n"
|
||||
"* *Before Delivery*: A Draft invoice is created and must be paid before "
|
||||
"delivery\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"The Dashboard for the Sales Manager will include\n"
|
||||
"------------------------------------------------\n"
|
||||
"* My Quotations\n"
|
||||
"* Monthly Turnover (Graph)\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.act_window,res_id:0
|
||||
@@ -3020,6 +3089,14 @@ msgid ""
|
||||
"This module is currently not compatible with the ``user_ldap`` module and\n"
|
||||
"will disable LDAP authentication completely if installed at the same time.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Зашифрованные пароли\n"
|
||||
"==================\n"
|
||||
"\n"
|
||||
"Взаимодействие с LDAP - авторизацией\n"
|
||||
"-------------------------------------\n"
|
||||
"This module is currently not compatible with the ``user_ldap`` module and\n"
|
||||
"will disable LDAP authentication completely if installed at the same time.\n"
|
||||
|
||||
#. module: base
|
||||
#: model:res.groups,name:base.group_hr_manager
|
||||
@@ -3205,6 +3282,15 @@ msgid ""
|
||||
" * ``base_stage``: stage management\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Этот модуль обрабатывает состояния и стадии. Он является производным от "
|
||||
"классов crm_base и crm_case для crm. \n"
|
||||
"============================================================================="
|
||||
"======================\n"
|
||||
"\n"
|
||||
" * ``base_state``: управление состояниями \n"
|
||||
" * ``base_stage``: управление стадиями\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_web_linkedin
|
||||
@@ -7907,7 +7993,7 @@ msgstr "Следующее число в этой нумерации"
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
msgid "at"
|
||||
msgstr ""
|
||||
msgstr "в"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.rule:0
|
||||
@@ -8744,7 +8830,7 @@ msgstr "Гонконг"
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_portal_sale
|
||||
msgid "Portal Sale"
|
||||
msgstr ""
|
||||
msgstr "Портал: продажи"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.default,ref_id:0
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:45+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:45+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:38+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:30+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:44+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:49+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:41+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:45+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:37+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
@@ -59,7 +59,7 @@ msgstr "Visa arkitektur"
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_sale_stock
|
||||
msgid "Quotation, Sale Orders, Delivery & Invoicing Control"
|
||||
msgstr ""
|
||||
msgstr "Offerter, säljordrar, leverans & faktura kontroll"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.sequence,implementation:0
|
||||
@@ -88,7 +88,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_point_of_sale
|
||||
msgid "Touchscreen Interface for Shops"
|
||||
msgstr ""
|
||||
msgstr "Pekskärmsinterface för affärer"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll
|
||||
@@ -139,7 +139,7 @@ msgstr ""
|
||||
#. module: base
|
||||
#: help:res.partner,employee:0
|
||||
msgid "Check this box if this contact is an Employee."
|
||||
msgstr ""
|
||||
msgstr "Markera här om kontakten är en anställd"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.model.fields,domain:0
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:45+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:45+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:46+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:46+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:46+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:46+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:41+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -14,8 +14,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:46+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:38+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-10-11 04:48+0000\n"
|
||||
"X-Generator: Launchpad (build 16799)\n"
|
||||
"X-Launchpad-Export-Date: 2013-11-12 05:40+0000\n"
|
||||
"X-Generator: Launchpad (build 16820)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
||||
@@ -37,6 +37,7 @@ import ir_config_parameter
|
||||
import osv_memory_autovacuum
|
||||
import ir_mail_server
|
||||
import ir_fields
|
||||
import ir_http
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ import re
|
||||
|
||||
from openerp import tools
|
||||
from openerp.osv import fields,osv
|
||||
from openerp import SUPERUSER_ID
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -142,9 +143,10 @@ class ir_attachment(osv.osv):
|
||||
if attach.store_fname:
|
||||
self._file_delete(cr, uid, location, attach.store_fname)
|
||||
fname = self._file_write(cr, uid, location, value)
|
||||
super(ir_attachment, self).write(cr, uid, [id], {'store_fname': fname, 'file_size': file_size}, context=context)
|
||||
# SUPERUSER_ID as probably don't have write access, trigger during create
|
||||
super(ir_attachment, self).write(cr, SUPERUSER_ID, [id], {'store_fname': fname, 'file_size': file_size}, context=context)
|
||||
else:
|
||||
super(ir_attachment, self).write(cr, uid, [id], {'db_datas': value, 'file_size': file_size}, context=context)
|
||||
super(ir_attachment, self).write(cr, SUPERUSER_ID, [id], {'db_datas': value, 'file_size': file_size}, context=context)
|
||||
return True
|
||||
|
||||
_name = 'ir.attachment'
|
||||
@@ -186,8 +188,6 @@ class ir_attachment(osv.osv):
|
||||
In the 'document' module, it is overriden to relax this hard rule, since
|
||||
more complex ones apply there.
|
||||
"""
|
||||
if not ids:
|
||||
return
|
||||
res_ids = {}
|
||||
if ids:
|
||||
if isinstance(ids, (int, long)):
|
||||
@@ -261,10 +261,14 @@ class ir_attachment(osv.osv):
|
||||
return len(result) if count else list(result)
|
||||
|
||||
def read(self, cr, uid, ids, fields_to_read=None, context=None, load='_classic_read'):
|
||||
if isinstance(ids, (int, long)):
|
||||
ids = [ids]
|
||||
self.check(cr, uid, ids, 'read', context=context)
|
||||
return super(ir_attachment, self).read(cr, uid, ids, fields_to_read, context, load)
|
||||
|
||||
def write(self, cr, uid, ids, vals, context=None):
|
||||
if isinstance(ids, (int, long)):
|
||||
ids = [ids]
|
||||
self.check(cr, uid, ids, 'write', context=context, values=vals)
|
||||
if 'file_size' in vals:
|
||||
del vals['file_size']
|
||||
@@ -275,6 +279,8 @@ class ir_attachment(osv.osv):
|
||||
return super(ir_attachment, self).copy(cr, uid, id, default, context)
|
||||
|
||||
def unlink(self, cr, uid, ids, context=None):
|
||||
if isinstance(ids, (int, long)):
|
||||
ids = [ids]
|
||||
self.check(cr, uid, ids, 'unlink', context=context)
|
||||
location = self.pool.get('ir.config_parameter').get_param(cr, uid, 'ir_attachment.location')
|
||||
if location:
|
||||
@@ -284,7 +290,7 @@ class ir_attachment(osv.osv):
|
||||
return super(ir_attachment, self).unlink(cr, uid, ids, context)
|
||||
|
||||
def create(self, cr, uid, values, context=None):
|
||||
self.check(cr, uid, [], mode='create', context=context, values=values)
|
||||
self.check(cr, uid, [], mode='write', context=context, values=values)
|
||||
if 'file_size' in values:
|
||||
del values['file_size']
|
||||
return super(ir_attachment, self).create(cr, uid, values, context)
|
||||
|
||||
@@ -184,7 +184,7 @@ class ir_fields_converter(orm.Model):
|
||||
|
||||
def _str_id(self, cr, uid, model, column, value, context=None):
|
||||
return value, []
|
||||
_str_to_char = _str_to_text = _str_to_binary = _str_id
|
||||
_str_to_reference = _str_to_char = _str_to_text = _str_to_binary = _str_id
|
||||
|
||||
def _str_to_date(self, cr, uid, model, column, value, context=None):
|
||||
try:
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
#----------------------------------------------------------
|
||||
# ir_http modular http routing
|
||||
#----------------------------------------------------------
|
||||
import logging
|
||||
import re
|
||||
|
||||
import werkzeug.exceptions
|
||||
import werkzeug.routing
|
||||
|
||||
import openerp
|
||||
from openerp import http
|
||||
from openerp.http import request
|
||||
from openerp.osv import osv, orm
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
# FIXME: replace by proxy on request.uid?
|
||||
_uid = object()
|
||||
|
||||
class ModelConverter(werkzeug.routing.BaseConverter):
|
||||
|
||||
def __init__(self, url_map, model=False):
|
||||
super(ModelConverter, self).__init__(url_map)
|
||||
self.model = model
|
||||
self.regex = '([0-9]+)'
|
||||
|
||||
def to_python(self, value):
|
||||
m = re.match(self.regex, value)
|
||||
return request.registry[self.model].browse(
|
||||
request.cr, _uid, int(m.group(1)), context=request.context)
|
||||
|
||||
def to_url(self, value):
|
||||
return value.id
|
||||
|
||||
class ModelsConverter(werkzeug.routing.BaseConverter):
|
||||
|
||||
def __init__(self, url_map, model=False):
|
||||
super(ModelsConverter, self).__init__(url_map)
|
||||
self.model = model
|
||||
# TODO add support for slug in the form [A-Za-z0-9-] bla-bla-89 -> id 89
|
||||
self.regex = '([0-9,]+)'
|
||||
|
||||
def to_python(self, value):
|
||||
# TODO:
|
||||
# - raise routing.ValidationError() if no browse record can be createdm
|
||||
# - support slug
|
||||
return request.registry[self.model].browse(request.cr, _uid, [int(i) for i in value.split(',')], context=request.context)
|
||||
|
||||
def to_url(self, value):
|
||||
return ",".join(i.id for i in value)
|
||||
|
||||
class ir_http(osv.AbstractModel):
|
||||
_name = 'ir.http'
|
||||
|
||||
_description = "HTTP routing"
|
||||
|
||||
def _get_converters(self):
|
||||
return {'model': ModelConverter, 'models': ModelsConverter}
|
||||
|
||||
def _find_handler(self):
|
||||
return self.routing_map().bind_to_environ(request.httprequest.environ).match()
|
||||
|
||||
def _auth_method_user(self):
|
||||
request.uid = request.session.uid
|
||||
if not request.uid:
|
||||
raise http.SessionExpiredException("Session expired")
|
||||
|
||||
def _auth_method_admin(self):
|
||||
if not request.db:
|
||||
raise http.SessionExpiredException("No valid database for request %s" % request.httprequest)
|
||||
request.uid = openerp.SUPERUSER_ID
|
||||
|
||||
def _auth_method_none(self):
|
||||
request.disable_db = True
|
||||
request.uid = None
|
||||
|
||||
def _authenticate(self, func, arguments):
|
||||
auth_method = getattr(func, "auth", "user")
|
||||
if request.session.uid:
|
||||
try:
|
||||
request.session.check_security()
|
||||
# what if error in security.check()
|
||||
# -> res_users.check()
|
||||
# -> res_users.check_credentials()
|
||||
except http.SessionExpiredException:
|
||||
request.session.logout()
|
||||
raise http.SessionExpiredException("Session expired for request %s" % request.httprequest)
|
||||
getattr(self, "_auth_method_%s" % auth_method)()
|
||||
return auth_method
|
||||
|
||||
def _handle_404(self, exception):
|
||||
raise exception
|
||||
|
||||
def _handle_403(self, exception):
|
||||
raise exception
|
||||
|
||||
def _handle_500(self, exception):
|
||||
raise exception
|
||||
|
||||
def _dispatch(self):
|
||||
# locate the controller method
|
||||
try:
|
||||
func, arguments = self._find_handler()
|
||||
except werkzeug.exceptions.NotFound, e:
|
||||
return self._handle_404(e)
|
||||
|
||||
# check authentication level
|
||||
try:
|
||||
auth_method = self._authenticate(func, arguments)
|
||||
except werkzeug.exceptions.NotFound, e:
|
||||
return self._handle_403(e)
|
||||
|
||||
# post process arg to set uid on browse records
|
||||
for arg in arguments.itervalues():
|
||||
if isinstance(arg, orm.browse_record) and arg._uid is _uid:
|
||||
arg._uid = request.uid
|
||||
|
||||
# set and execute handler
|
||||
try:
|
||||
request.set_handler(func, arguments, auth_method)
|
||||
result = request.dispatch()
|
||||
if isinstance(result, Exception):
|
||||
raise result
|
||||
except Exception, e:
|
||||
fn = getattr(self, '_handle_%s' % getattr(e, 'code', 500),
|
||||
self._handle_500)
|
||||
return fn(e)
|
||||
|
||||
return result
|
||||
|
||||
def routing_map(self):
|
||||
if not hasattr(self, '_routing_map'):
|
||||
_logger.info("Generating routing map")
|
||||
cr = request.cr
|
||||
m = request.registry.get('ir.module.module')
|
||||
ids = m.search(cr, openerp.SUPERUSER_ID, [('state', '=', 'installed'), ('name', '!=', 'web')], context=request.context)
|
||||
installed = set(x['name'] for x in m.read(cr, 1, ids, ['name'], context=request.context))
|
||||
mods = ['', "web"] + sorted(installed)
|
||||
self._routing_map = http.routing_map(mods, False, converters=self._get_converters())
|
||||
|
||||
return self._routing_map
|
||||
|
||||
# vim:et:
|
||||
@@ -198,6 +198,7 @@ class ir_model(osv.osv):
|
||||
select=vals.get('select_level', '0'),
|
||||
update_custom_fields=True)
|
||||
self.pool[vals['model']]._auto_init(cr, ctx)
|
||||
self.pool[vals['model']]._auto_end(cr, ctx) # actually create FKs!
|
||||
openerp.modules.registry.RegistryManager.signal_registry_change(cr.dbname)
|
||||
return res
|
||||
|
||||
@@ -356,6 +357,7 @@ class ir_model_fields(osv.osv):
|
||||
select=vals.get('select_level', '0'),
|
||||
update_custom_fields=True)
|
||||
self.pool[vals['model']]._auto_init(cr, ctx)
|
||||
self.pool[vals['model']]._auto_end(cr, ctx) # actually create FKs!
|
||||
openerp.modules.registry.RegistryManager.signal_registry_change(cr.dbname)
|
||||
|
||||
return res
|
||||
@@ -470,6 +472,7 @@ class ir_model_fields(osv.osv):
|
||||
for col_name, col_prop, val in patch_struct[1]:
|
||||
setattr(obj._columns[col_name], col_prop, val)
|
||||
obj._auto_init(cr, ctx)
|
||||
obj._auto_end(cr, ctx) # actually create FKs!
|
||||
openerp.modules.registry.RegistryManager.signal_registry_change(cr.dbname)
|
||||
return res
|
||||
|
||||
|
||||
@@ -161,18 +161,18 @@ class ir_translation(osv.osv):
|
||||
'''
|
||||
if context is None:
|
||||
context = {}
|
||||
res = {}
|
||||
res = dict.fromkeys(ids, False)
|
||||
for record in self.browse(cr, uid, ids, context=context):
|
||||
if record.type != 'model':
|
||||
res[record.id] = record.src
|
||||
else:
|
||||
model_name, field = record.name.split(',')
|
||||
model = self.pool.get(model_name)
|
||||
#We need to take the context without the language information, because we want to read the
|
||||
#value store in db and not on the one associate with current language.
|
||||
context_wo_lang = context.copy()
|
||||
context_wo_lang.pop('lang', None)
|
||||
res[record.id] = model.read(cr, uid, record.res_id, [field], context=context_wo_lang)[field]
|
||||
if model and model.exists(cr, uid, record.res_id, context=context):
|
||||
# Pass context without lang, need to read real stored field, not translation
|
||||
context_no_lang = dict(context, lang=None)
|
||||
result = model.read(cr, uid, record.res_id, [field], context=context_no_lang)
|
||||
res[record.id] = result[field] if result else False
|
||||
return res
|
||||
|
||||
def _set_src(self, cr, uid, id, name, value, args, context=None):
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
<field name="lang"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="module" group="base.group_no_one"/>
|
||||
<field name="type"/>
|
||||
<field name="res_id"/>
|
||||
</group>
|
||||
|
||||
@@ -47,33 +47,8 @@ class base_module_import(osv.osv_memory):
|
||||
}
|
||||
|
||||
def importzip(self, cr, uid, ids, context):
|
||||
(data,) = self.browse(cr, uid, ids , context=context)
|
||||
module_data = data.module_file
|
||||
zip_data = base64.decodestring(module_data)
|
||||
fp = StringIO()
|
||||
fp.write(zip_data)
|
||||
try:
|
||||
file_data = zipfile.ZipFile(fp, 'r')
|
||||
except zipfile.BadZipfile:
|
||||
raise osv.except_osv(_('Error!'), _('File is not a zip file!'))
|
||||
init_file_name = sorted(file_data.namelist())[0]
|
||||
module_name = os.path.split(init_file_name)[0]
|
||||
|
||||
file_path = os.path.join(ADDONS_PATH, '%s.zip' % module_name)
|
||||
try:
|
||||
zip_file = open(file_path, 'wb')
|
||||
except IOError:
|
||||
raise osv.except_osv(_('Error!'),
|
||||
_('Can not create the module file: %s!') % \
|
||||
(file_path,) )
|
||||
zip_file.write(zip_data)
|
||||
zip_file.close()
|
||||
|
||||
self.pool.get('ir.module.module').update_list(cr, uid,
|
||||
{'module_name': module_name,})
|
||||
self.write(cr, uid, ids, {'state':'done', 'module_name': module_name},
|
||||
context)
|
||||
return False
|
||||
#TODO: drop this model and the corresponding view/action in trunk
|
||||
raise NotImplementedError('This feature is not available')
|
||||
|
||||
def action_module_open(self, cr, uid, ids, context):
|
||||
(data,) = self.browse(cr, uid, ids , context=context)
|
||||
|
||||
@@ -102,13 +102,10 @@ class res_config_configurable(osv.osv_memory):
|
||||
res = next.action_launch(context=context)
|
||||
res['nodestroy'] = False
|
||||
return res
|
||||
# reload the client; open the first available root menu
|
||||
menu_obj = self.pool['ir.ui.menu']
|
||||
menu_ids = menu_obj.search(cr, uid, [('parent_id', '=', False)], context=context)
|
||||
|
||||
return {
|
||||
'type': 'ir.actions.client',
|
||||
'tag': 'reload',
|
||||
'params': {'menu_id': menu_ids and menu_ids[0] or False},
|
||||
}
|
||||
|
||||
def start(self, cr, uid, ids, context=None):
|
||||
|
||||
@@ -249,8 +249,8 @@ class res_currency_rate(osv.osv):
|
||||
_description = "Currency Rate"
|
||||
|
||||
_columns = {
|
||||
'name': fields.date('Date', required=True, select=True),
|
||||
'rate': fields.float('Rate', digits=(12,6), help='The rate of the currency to the currency of rate 1'),
|
||||
'name': fields.datetime('Date', required=True, select=True),
|
||||
'rate': fields.float('Rate', digits=(12, 6), help='The rate of the currency to the currency of rate 1'),
|
||||
'currency_id': fields.many2one('res.currency', 'Currency', readonly=True),
|
||||
'currency_rate_type_id': fields.many2one('res.currency.rate.type', 'Currency Rate Type', help="Allow you to define your own currency rate types, like 'Average' or 'Year to Date'. Leave empty if you simply want to use the normal 'spot' rate type"),
|
||||
}
|
||||
|
||||
@@ -329,7 +329,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Partner">
|
||||
<field name="name"
|
||||
filter_domain="['|','|',('name','ilike',self),('parent_id','ilike',self),('ref','=',self)]"/>
|
||||
filter_domain="['|','|',('display_name','ilike',self),('ref','=',self),('email,'ilike',self)]"/>
|
||||
<filter help="My Partners" icon="terp-personal+" domain="[('user_id','=',uid)]"/>
|
||||
<separator/>
|
||||
<filter string="Persons" name="type_person" domain="[('is_company','=',0)]"/>
|
||||
|
||||
@@ -171,13 +171,6 @@ class res_users(osv.osv):
|
||||
def on_change_login(self, cr, uid, ids, login, context=None):
|
||||
return {'value': {'email': login}}
|
||||
|
||||
def on_change_company_id(self, cr, uid, ids, company_id):
|
||||
return {'warning' : {
|
||||
'title': _("Company Switch Warning"),
|
||||
'message': _("Please keep in mind that documents currently displayed may not be relevant after switching to another company. If you have unsaved changes, please make sure to save and close all forms before switching to a different company. (You can click on Cancel in the User Preferences now)"),
|
||||
}
|
||||
}
|
||||
|
||||
def onchange_state(self, cr, uid, ids, state_id, context=None):
|
||||
partner_ids = [user.partner_id.id for user in self.browse(cr, uid, ids, context=context)]
|
||||
return self.pool.get('res.partner').onchange_state(cr, uid, partner_ids, state_id, context=context)
|
||||
|
||||
@@ -231,7 +231,7 @@
|
||||
<field name="model">res.users</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Users">
|
||||
<field name="name" filter_domain="['|', ('name','ilike',self), ('login','ilike',self)]" string="User"/>
|
||||
<field name="name" filter_domain="['|', '|', ('name','ilike',self), ('login','ilike',self), ('email,'ilike',self)]" string="User"/>
|
||||
<field name="company_ids" string="Company" groups="base.group_multi_company"/>
|
||||
</search>
|
||||
</field>
|
||||
@@ -283,7 +283,7 @@
|
||||
<field name="lang" readonly="0"/>
|
||||
<field name="tz" readonly="0"/>
|
||||
<field name="company_id" widget="selection" readonly="0"
|
||||
groups="base.group_multi_company" on_change="on_change_company_id(company_id)"/>
|
||||
groups="base.group_multi_company"/>
|
||||
</group>
|
||||
<group string="Email Preferences">
|
||||
<field name="email" widget="email" readonly="0"/>
|
||||
|
||||
@@ -168,6 +168,11 @@ def main(args):
|
||||
import_translation()
|
||||
sys.exit(0)
|
||||
|
||||
# This needs to be done now to ensure the use of the multiprocessing
|
||||
# signaling mecanism for registries loaded with -d
|
||||
if config['workers']:
|
||||
openerp.multi_process = True
|
||||
|
||||
# preload registryies, needed for -u --stop_after_init
|
||||
rc = 0
|
||||
if config['db_name']:
|
||||
|
||||
+1050
-28
File diff suppressed because it is too large
Load Diff
@@ -166,11 +166,15 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
|
||||
# upgrading the module information
|
||||
modobj.write(cr, SUPERUSER_ID, [module_id], modobj.get_values_from_terp(package.data))
|
||||
_load_data(cr, module_name, idref, mode, kind='data')
|
||||
if hasattr(package, 'demo') or (package.dbdemo and package.state != 'installed'):
|
||||
has_demo = hasattr(package, 'demo') or (package.dbdemo and package.state != 'installed')
|
||||
if has_demo:
|
||||
status['progress'] = (index + 0.75) / len(graph)
|
||||
_load_data(cr, module_name, idref, mode, kind='demo')
|
||||
cr.execute('update ir_module_module set demo=%s where id=%s', (True, module_id))
|
||||
|
||||
migrations.migrate_module(package, 'post')
|
||||
|
||||
if has_demo:
|
||||
# launch tests only in demo mode, as most tests will depend
|
||||
# on demo data. Other tests can be added into the regular
|
||||
# 'data' section, but should probably not alter the data,
|
||||
@@ -186,8 +190,6 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
|
||||
|
||||
processed_modules.append(package.name)
|
||||
|
||||
migrations.migrate_module(package, 'post')
|
||||
|
||||
ver = adapt_version(package.data['version'])
|
||||
# Set new modules and dependencies
|
||||
modobj.write(cr, SUPERUSER_ID, [module_id], {'state': 'installed', 'latest_version': ver})
|
||||
|
||||
@@ -305,18 +305,16 @@ class RegistryManager(object):
|
||||
r, c = cr.fetchone()
|
||||
# Check if the model registry must be reloaded (e.g. after the
|
||||
# database has been updated by another process).
|
||||
if registry.base_registry_signaling_sequence != r:
|
||||
if registry.base_registry_signaling_sequence > 1 and registry.base_registry_signaling_sequence != r:
|
||||
changed = True
|
||||
_logger.info("Reloading the model registry after database signaling.")
|
||||
registry = cls.new(db_name)
|
||||
registry.base_registry_signaling_sequence = r
|
||||
# Check if the model caches must be invalidated (e.g. after a write
|
||||
# occured on another process). Don't clear right after a registry
|
||||
# has been reload.
|
||||
elif registry.base_cache_signaling_sequence != c:
|
||||
elif registry.base_cache_signaling_sequence > 1 and registry.base_cache_signaling_sequence != c:
|
||||
changed = True
|
||||
_logger.info("Invalidating all model caches after database signaling.")
|
||||
registry.base_cache_signaling_sequence = c
|
||||
registry.clear_caches()
|
||||
registry.reset_any_cache_cleared()
|
||||
# One possible reason caches have been invalidated is the
|
||||
@@ -326,6 +324,8 @@ class RegistryManager(object):
|
||||
for column in model._columns.values():
|
||||
if hasattr(column, 'digits_change'):
|
||||
column.digits_change(cr)
|
||||
registry.base_registry_signaling_sequence = r
|
||||
registry.base_cache_signaling_sequence = c
|
||||
finally:
|
||||
cr.close()
|
||||
return changed
|
||||
|
||||
@@ -1012,7 +1012,7 @@ class expression(object):
|
||||
|
||||
else:
|
||||
if field._type == 'datetime' and right and len(right) == 10:
|
||||
if operator in ('>', '>='):
|
||||
if operator in ('>', '>=', '='):
|
||||
right += ' 00:00:00'
|
||||
elif operator in ('<', '<='):
|
||||
right += ' 23:59:59'
|
||||
|
||||
+25
-19
@@ -116,8 +116,7 @@ class _column(object):
|
||||
self.groups = False # CSV list of ext IDs of groups that can access this field
|
||||
self.deprecated = False # Optional deprecation warning
|
||||
for a in args:
|
||||
if args[a]:
|
||||
setattr(self, a, args[a])
|
||||
setattr(self, a, args[a])
|
||||
|
||||
def restart(self):
|
||||
pass
|
||||
@@ -207,27 +206,29 @@ class reference(_column):
|
||||
return model.name_get(cr, uid, [int(res_id)], context=context)[0][1]
|
||||
return tools.ustr(value)
|
||||
|
||||
# takes a string (encoded in utf8) and returns a string (encoded in utf8)
|
||||
def _symbol_set_char(self, symb):
|
||||
|
||||
#TODO:
|
||||
# * we need to remove the "symb==False" from the next line BUT
|
||||
# for now too many things rely on this broken behavior
|
||||
# * the symb==None test should be common to all data types
|
||||
if symb is None or symb == False:
|
||||
return None
|
||||
|
||||
# we need to convert the string to a unicode object to be able
|
||||
# to evaluate its length (and possibly truncate it) reliably
|
||||
u_symb = tools.ustr(symb)
|
||||
return u_symb[:self.size].encode('utf8')
|
||||
|
||||
class char(_column):
|
||||
_type = 'char'
|
||||
|
||||
def __init__(self, string="unknown", size=None, **args):
|
||||
_column.__init__(self, string=string, size=size or None, **args)
|
||||
self._symbol_set = (self._symbol_c, self._symbol_set_char)
|
||||
|
||||
# takes a string (encoded in utf8) and returns a string (encoded in utf8)
|
||||
def _symbol_set_char(self, symb):
|
||||
#TODO:
|
||||
# * we need to remove the "symb==False" from the next line BUT
|
||||
# for now too many things rely on this broken behavior
|
||||
# * the symb==None test should be common to all data types
|
||||
if symb is None or symb == False:
|
||||
return None
|
||||
|
||||
# we need to convert the string to a unicode object to be able
|
||||
# to evaluate its length (and possibly truncate it) reliably
|
||||
u_symb = tools.ustr(symb)
|
||||
|
||||
return u_symb[:self.size].encode('utf8')
|
||||
# self._symbol_set_char defined to keep the backward compatibility
|
||||
self._symbol_f = self._symbol_set_char = lambda x: _symbol_set_char(self, x)
|
||||
self._symbol_set = (self._symbol_c, self._symbol_f)
|
||||
|
||||
|
||||
class text(_column):
|
||||
@@ -1116,6 +1117,11 @@ class function(_column):
|
||||
self._symbol_f = integer._symbol_f
|
||||
self._symbol_set = integer._symbol_set
|
||||
|
||||
if type == 'char':
|
||||
self._symbol_c = char._symbol_c
|
||||
self._symbol_f = lambda x: _symbol_set_char(self, x)
|
||||
self._symbol_set = (self._symbol_c, self._symbol_f)
|
||||
|
||||
def digits_change(self, cr):
|
||||
if self._type == 'float':
|
||||
if self.digits_compute:
|
||||
@@ -1367,7 +1373,7 @@ class dummy(function):
|
||||
def __init__(self, *arg, **args):
|
||||
self.arg = arg
|
||||
self._relations = []
|
||||
super(dummy, self).__init__(self._fnct_read, arg, self._fnct_write, fnct_inv_arg=arg, fnct_search=None, **args)
|
||||
super(dummy, self).__init__(self._fnct_read, arg, self._fnct_write, fnct_inv_arg=arg, fnct_search=self._fnct_search, **args)
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# Serialized fields
|
||||
|
||||
+35
-25
@@ -1010,8 +1010,10 @@ class BaseModel(object):
|
||||
raise except_orm('Error',
|
||||
('Invalid function definition %s in object %s !\nYou must use the definition: store={object:(fnct, fields, priority, time length)}.' % (store_field, self._name)))
|
||||
self.pool._store_function.setdefault(object, [])
|
||||
self.pool._store_function[object].append((self._name, store_field, fnct, tuple(fields2) if fields2 else None, order, length))
|
||||
self.pool._store_function[object].sort(lambda x, y: cmp(x[4], y[4]))
|
||||
t = (self._name, store_field, fnct, tuple(fields2) if fields2 else None, order, length)
|
||||
if not t in self.pool._store_function[object]:
|
||||
self.pool._store_function[object].append((self._name, store_field, fnct, tuple(fields2) if fields2 else None, order, length))
|
||||
self.pool._store_function[object].sort(lambda x, y: cmp(x[4], y[4]))
|
||||
|
||||
for (key, _, msg) in self._sql_constraints:
|
||||
self.pool._sql_error[self._table+'_'+key] = msg
|
||||
@@ -2887,8 +2889,12 @@ class BaseModel(object):
|
||||
"""
|
||||
Record the creation of a constraint for this model, to make it possible
|
||||
to delete it later when the module is uninstalled. Type can be either
|
||||
'f' or 'u' depending on the constraing being a foreign key or not.
|
||||
'f' or 'u' depending on the constraint being a foreign key or not.
|
||||
"""
|
||||
if not self._module:
|
||||
# no need to save constraints for custom models as they're not part
|
||||
# of any module
|
||||
return
|
||||
assert type in ('f', 'u')
|
||||
cr.execute("""
|
||||
SELECT 1 FROM ir_model_constraint, ir_module_module
|
||||
@@ -4583,9 +4589,9 @@ class BaseModel(object):
|
||||
return browse_null()
|
||||
|
||||
def _store_get_values(self, cr, uid, ids, fields, context):
|
||||
"""Returns an ordered list of fields.functions to call due to
|
||||
"""Returns an ordered list of fields.function to call due to
|
||||
an update operation on ``fields`` of records with ``ids``,
|
||||
obtained by calling the 'store' functions of these fields,
|
||||
obtained by calling the 'store' triggers of these fields,
|
||||
as setup by their 'store' attribute.
|
||||
|
||||
:return: [(priority, model_name, [record_ids,], [function_fields,])]
|
||||
@@ -4594,42 +4600,46 @@ class BaseModel(object):
|
||||
stored_functions = self.pool._store_function.get(self._name, [])
|
||||
|
||||
# use indexed names for the details of the stored_functions:
|
||||
model_name_, func_field_to_compute_, id_mapping_fnct_, trigger_fields_, priority_ = range(5)
|
||||
model_name_, func_field_to_compute_, target_ids_func_, trigger_fields_, priority_ = range(5)
|
||||
|
||||
# only keep functions that should be triggered for the ``fields``
|
||||
# only keep store triggers that should be triggered for the ``fields``
|
||||
# being written to.
|
||||
to_compute = [f for f in stored_functions \
|
||||
triggers_to_compute = [f for f in stored_functions \
|
||||
if ((not f[trigger_fields_]) or set(fields).intersection(f[trigger_fields_]))]
|
||||
|
||||
mapping = {}
|
||||
for function in to_compute:
|
||||
# use admin user for accessing objects having rules defined on store fields
|
||||
target_ids = [id for id in function[id_mapping_fnct_](self, cr, SUPERUSER_ID, ids, context) if id]
|
||||
to_compute_map = {}
|
||||
target_id_results = {}
|
||||
for store_trigger in triggers_to_compute:
|
||||
target_func_id_ = id(store_trigger[target_ids_func_])
|
||||
if not target_func_id_ in target_id_results:
|
||||
# use admin user for accessing objects having rules defined on store fields
|
||||
target_id_results[target_func_id_] = [i for i in store_trigger[target_ids_func_](self, cr, SUPERUSER_ID, ids, context) if i]
|
||||
target_ids = target_id_results[target_func_id_]
|
||||
|
||||
# the compound key must consider the priority and model name
|
||||
key = (function[priority_], function[model_name_])
|
||||
key = (store_trigger[priority_], store_trigger[model_name_])
|
||||
for target_id in target_ids:
|
||||
mapping.setdefault(key, {}).setdefault(target_id,set()).add(tuple(function))
|
||||
to_compute_map.setdefault(key, {}).setdefault(target_id,set()).add(tuple(store_trigger))
|
||||
|
||||
# Here mapping looks like:
|
||||
# { (10, 'model_a') : { target_id1: [ (function_1_tuple, function_2_tuple) ], ... }
|
||||
# (20, 'model_a') : { target_id2: [ (function_3_tuple, function_4_tuple) ], ... }
|
||||
# (99, 'model_a') : { target_id1: [ (function_5_tuple, function_6_tuple) ], ... }
|
||||
# Here to_compute_map looks like:
|
||||
# { (10, 'model_a') : { target_id1: [ (trigger_1_tuple, trigger_2_tuple) ], ... }
|
||||
# (20, 'model_a') : { target_id2: [ (trigger_3_tuple, trigger_4_tuple) ], ... }
|
||||
# (99, 'model_a') : { target_id1: [ (trigger_5_tuple, trigger_6_tuple) ], ... }
|
||||
# }
|
||||
|
||||
# Now we need to generate the batch function calls list
|
||||
# call_map =
|
||||
# { (10, 'model_a') : [(10, 'model_a', [record_ids,], [function_fields,])] }
|
||||
call_map = {}
|
||||
for ((priority,model), id_map) in mapping.iteritems():
|
||||
functions_ids_maps = {}
|
||||
for ((priority,model), id_map) in to_compute_map.iteritems():
|
||||
trigger_ids_maps = {}
|
||||
# function_ids_maps =
|
||||
# { (function_1_tuple, function_2_tuple) : [target_id1, target_id2, ..] }
|
||||
for id, functions in id_map.iteritems():
|
||||
functions_ids_maps.setdefault(tuple(functions), []).append(id)
|
||||
for functions, ids in functions_ids_maps.iteritems():
|
||||
call_map.setdefault((priority,model),[]).append((priority, model, ids,
|
||||
[f[func_field_to_compute_] for f in functions]))
|
||||
for target_id, triggers in id_map.iteritems():
|
||||
trigger_ids_maps.setdefault(tuple(triggers), []).append(target_id)
|
||||
for triggers, target_ids in trigger_ids_maps.iteritems():
|
||||
call_map.setdefault((priority,model),[]).append((priority, model, target_ids,
|
||||
[t[func_field_to_compute_] for t in triggers]))
|
||||
ordered_keys = call_map.keys()
|
||||
ordered_keys.sort()
|
||||
result = []
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
#-----------------------------------------------------------
|
||||
import datetime
|
||||
import errno
|
||||
import fcntl
|
||||
import logging
|
||||
import os
|
||||
import os.path
|
||||
@@ -21,6 +20,11 @@ import time
|
||||
import traceback
|
||||
|
||||
import werkzeug.serving
|
||||
|
||||
try:
|
||||
import fcntl
|
||||
except ImportError:
|
||||
pass
|
||||
try:
|
||||
from setproctitle import setproctitle
|
||||
except ImportError:
|
||||
@@ -828,7 +832,6 @@ def start():
|
||||
global server
|
||||
load_server_wide_modules()
|
||||
if config['workers']:
|
||||
openerp.multi_process = True
|
||||
server = PreforkServer(openerp.service.wsgi_server.application)
|
||||
elif openerp.evented:
|
||||
server = GeventServer(openerp.service.wsgi_server.application)
|
||||
|
||||
@@ -22,11 +22,11 @@
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from lxml import etree
|
||||
import unittest2
|
||||
from . import test_mail_examples
|
||||
from openerp.tools import html_sanitize, html_email_clean, append_content_to_html, plaintext2html
|
||||
|
||||
|
||||
class TestSanitizer(unittest2.TestCase):
|
||||
""" Test the html sanitizer that filters html to remove unwanted attributes """
|
||||
|
||||
@@ -76,15 +76,19 @@ class TestSanitizer(unittest2.TestCase):
|
||||
("<META HTTP-EQUIV=\"Link\" Content=\"<http://ha.ckers.org/xss.css>; REL=stylesheet\">"), # remote style sheet 3
|
||||
("<STYLE>BODY{-moz-binding:url(\"http://ha.ckers.org/xssmoz.xml#xss\")}</STYLE>"), # remote style sheet 4
|
||||
("<IMG STYLE=\"xss:expr/*XSS*/ession(alert('XSS'))\">"), # style attribute using a comment to break up expression
|
||||
("""<!--[if gte IE 4]>
|
||||
<SCRIPT>alert('XSS');</SCRIPT>
|
||||
<![endif]-->"""), # down-level hidden block
|
||||
]
|
||||
for content in cases:
|
||||
html = html_sanitize(content)
|
||||
self.assertNotIn('javascript', html, 'html_sanitize did not remove a malicious javascript')
|
||||
self.assertTrue('ha.ckers.org' not in html or 'http://ha.ckers.org/xss.css' in html, 'html_sanitize did not remove a malicious code in %s (%s)' % (content, html))
|
||||
|
||||
# Raise an exception if the node is an empty string without any root tag
|
||||
with self.assertRaises(etree.ParserError):
|
||||
content = "<!--[if gte IE 4]><SCRIPT>alert('XSS');</SCRIPT><![endif]-->" # down-level hidden block
|
||||
html = html_sanitize(content, silent=False)
|
||||
|
||||
|
||||
|
||||
def test_html(self):
|
||||
sanitized_html = html_sanitize(test_mail_examples.MISC_HTML_SOURCE)
|
||||
for tag in ['<div', '<b', '<i', '<u', '<strike', '<li', '<blockquote', '<a href']:
|
||||
@@ -149,6 +153,59 @@ class TestCleaner(unittest2.TestCase):
|
||||
for text in out_lst:
|
||||
self.assertNotIn(text, new_html, 'html_email_cleaner did not remove unwanted content')
|
||||
|
||||
def test_05_shorten(self):
|
||||
# TEST: shorten length
|
||||
test_str = '''<div>
|
||||
<span>
|
||||
</span>
|
||||
<p>Hello, <span>Raoul</span>
|
||||
<bold>You</bold> are
|
||||
pretty</p>
|
||||
<span>Really</span>
|
||||
</div>
|
||||
'''
|
||||
# shorten at 'H' of Hello -> should shorten after Hello,
|
||||
html = html_email_clean(test_str, shorten=True, max_length=1, remove=True)
|
||||
self.assertIn('Hello,', html, 'html_email_cleaner: shorten error or too short')
|
||||
self.assertNotIn('Raoul', html, 'html_email_cleaner: shorten error or too long')
|
||||
self.assertIn('read more', html, 'html_email_cleaner: shorten error about read more inclusion')
|
||||
# shorten at 'are' -> should shorten after are
|
||||
html = html_email_clean(test_str, shorten=True, max_length=17, remove=True)
|
||||
self.assertIn('Hello,', html, 'html_email_cleaner: shorten error or too short')
|
||||
self.assertIn('Raoul', html, 'html_email_cleaner: shorten error or too short')
|
||||
self.assertIn('are', html, 'html_email_cleaner: shorten error or too short')
|
||||
self.assertNotIn('pretty', html, 'html_email_cleaner: shorten error or too long')
|
||||
self.assertNotIn('Really', html, 'html_email_cleaner: shorten error or too long')
|
||||
self.assertIn('read more', html, 'html_email_cleaner: shorten error about read more inclusion')
|
||||
|
||||
# TEST: shorten in quote
|
||||
test_str = '''<div> Blahble
|
||||
bluih blouh
|
||||
<blockquote>This is a quote
|
||||
<span>And this is quite a long quote, after all.</span>
|
||||
</blockquote>
|
||||
</div>'''
|
||||
# shorten in the quote
|
||||
html = html_email_clean(test_str, shorten=True, max_length=25, remove=True)
|
||||
self.assertIn('Blahble', html, 'html_email_cleaner: shorten error or too short')
|
||||
self.assertIn('bluih', html, 'html_email_cleaner: shorten error or too short')
|
||||
self.assertIn('blouh', html, 'html_email_cleaner: shorten error or too short')
|
||||
self.assertNotIn('quote', html, 'html_email_cleaner: shorten error or too long')
|
||||
self.assertIn('read more', html, 'html_email_cleaner: shorten error about read more inclusion')
|
||||
# shorten in second word
|
||||
html = html_email_clean(test_str, shorten=True, max_length=9, remove=True)
|
||||
self.assertIn('Blahble', html, 'html_email_cleaner: shorten error or too short')
|
||||
self.assertIn('bluih', html, 'html_email_cleaner: shorten error or too short')
|
||||
self.assertNotIn('blouh', html, 'html_email_cleaner: shorten error or too short')
|
||||
self.assertNotIn('quote', html, 'html_email_cleaner: shorten error or too long')
|
||||
self.assertIn('read more', html, 'html_email_cleaner: shorten error about read more inclusion')
|
||||
# shorten waaay too large
|
||||
html = html_email_clean(test_str, shorten=True, max_length=900, remove=True)
|
||||
self.assertIn('Blahble', html, 'html_email_cleaner: shorten error or too short')
|
||||
self.assertIn('bluih', html, 'html_email_cleaner: shorten error or too short')
|
||||
self.assertIn('blouh', html, 'html_email_cleaner: shorten error or too short')
|
||||
self.assertNotIn('quote', html, 'html_email_cleaner: shorten error or too long')
|
||||
|
||||
def test_10_email_text(self):
|
||||
""" html_email_clean test for text-based emails """
|
||||
new_html = html_email_clean(test_mail_examples.TEXT_1, remove=True)
|
||||
@@ -223,6 +280,19 @@ class TestCleaner(unittest2.TestCase):
|
||||
for ext in test_mail_examples.THUNDERBIRD_1_OUT:
|
||||
self.assertNotIn(ext, new_html, 'html_email_cleaner did not erase signature / quoted content')
|
||||
|
||||
def test_70_read_more(self):
|
||||
new_html = html_email_clean(test_mail_examples.BUG1, remove=True, shorten=True, max_length=100)
|
||||
for ext in test_mail_examples.BUG_1_IN:
|
||||
self.assertIn(ext, new_html, 'html_email_cleaner wrongly removed valid content')
|
||||
for ext in test_mail_examples.BUG_1_OUT:
|
||||
self.assertNotIn(ext, new_html, 'html_email_cleaner did not removed invalid content')
|
||||
|
||||
new_html = html_email_clean(test_mail_examples.BUG2, remove=True, shorten=True, max_length=250)
|
||||
for ext in test_mail_examples.BUG_2_IN:
|
||||
self.assertIn(ext, new_html, 'html_email_cleaner wrongly removed valid content')
|
||||
for ext in test_mail_examples.BUG_2_OUT:
|
||||
self.assertNotIn(ext, new_html, 'html_email_cleaner did not removed invalid content')
|
||||
|
||||
def test_90_misc(self):
|
||||
# False boolean for text must return empty string
|
||||
new_html = html_email_clean(False)
|
||||
|
||||
@@ -637,3 +637,322 @@ MSOFFICE_3 = """<div>
|
||||
|
||||
MSOFFICE_3_IN = ['I saw your boss yesterday']
|
||||
MSOFFICE_3_OUT = ['I noticed you recently downloaded OpenERP.', 'You indicated that you wish', 'Belgium: +32.81.81.37.00']
|
||||
|
||||
|
||||
# ------------------------------------------------------------
|
||||
# Test cases coming from bugs
|
||||
# ------------------------------------------------------------
|
||||
|
||||
# bug: read more not apparent, strange message in read more span
|
||||
BUG1 = """<pre>Hi Migration Team,
|
||||
|
||||
Paragraph 1, blah blah blah blah blah blah blah blah blah blah blah blah
|
||||
blah blah blah blah blah blah blah blah blah blah blah blah blah blah
|
||||
blah blah blah blah blah blah blah blah blah blah blah blah blah blah
|
||||
blah blah blah blah blah blah blah blah blah blah blah blah blah blah
|
||||
blah blah blah blah blah blah blah blah blah blah blah blah blah blah
|
||||
blah blah blah blah blah blah blah blah blah blah blah blah blah blah
|
||||
blah blah blah blah blah blah blah blah.
|
||||
|
||||
Paragraph 2, blah blah blah blah blah blah blah blah blah blah blah blah
|
||||
blah blah blah blah blah blah blah blah blah blah blah blah blah blah
|
||||
blah blah blah blah blah blah blah blah blah blah blah blah blah blah
|
||||
blah blah blah blah blah blah blah blah blah blah blah blah blah blah
|
||||
blah blah blah blah blah blah blah blah blah blah blah blah blah blah
|
||||
blah blah blah blah blah blah blah blah blah blah blah blah blah blah
|
||||
blah blah blah blah blah blah blah blah.
|
||||
|
||||
Paragraph 3, blah blah blah blah blah blah blah blah blah blah blah blah
|
||||
blah blah blah blah blah blah blah blah blah blah blah blah blah blah
|
||||
blah blah blah blah blah blah blah blah blah blah blah blah blah blah
|
||||
blah blah blah blah blah blah blah blah blah blah blah blah blah blah
|
||||
blah blah blah blah blah blah blah blah blah blah blah blah blah blah
|
||||
blah blah blah blah blah blah blah blah blah blah blah blah blah blah
|
||||
blah blah blah blah blah blah blah blah.
|
||||
|
||||
Thanks.
|
||||
|
||||
Regards,
|
||||
|
||||
--
|
||||
Olivier Laurent
|
||||
Migration Manager
|
||||
OpenERP SA
|
||||
Chaussée de Namur, 40
|
||||
B-1367 Gérompont
|
||||
Tel: +32.81.81.37.00
|
||||
Web: http://www.openerp.com</pre>"""
|
||||
|
||||
BUG_1_IN = [
|
||||
'Hi Migration Team',
|
||||
'Paragraph 1'
|
||||
]
|
||||
BUG_1_OUT = [
|
||||
'Olivier Laurent',
|
||||
'Chaussée de Namur',
|
||||
'81.81.37.00',
|
||||
'openerp.com',
|
||||
]
|
||||
|
||||
|
||||
BUG2 = """
|
||||
<div>
|
||||
<br>
|
||||
<div class="moz-forward-container"><br>
|
||||
<br>
|
||||
-------- Original Message --------
|
||||
<table class="moz-email-headers-table" border="0" cellpadding="0" cellspacing="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th nowrap="" valign="BASELINE" align="RIGHT">Subject:
|
||||
</th>
|
||||
<td>Fwd: TR: OpenERP S.A. Payment Reminder</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th nowrap="" valign="BASELINE" align="RIGHT">Date: </th>
|
||||
<td>Wed, 16 Oct 2013 14:11:13 +0200</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th nowrap="" valign="BASELINE" align="RIGHT">From: </th>
|
||||
<td>Christine Herrmann <a class="moz-txt-link-rfc2396E" href="mailto:che@openerp.com"><che@openerp.com></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th nowrap="" valign="BASELINE" align="RIGHT">To: </th>
|
||||
<td><a class="moz-txt-link-abbreviated" href="mailto:online@openerp.com">online@openerp.com</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<br>
|
||||
<div class="moz-forward-container"><br>
|
||||
<br>
|
||||
-------- Message original --------
|
||||
<table class="moz-email-headers-table" border="0" cellpadding="0" cellspacing="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th nowrap="" valign="BASELINE" align="RIGHT">Sujet:
|
||||
</th>
|
||||
<td>TR: OpenERP S.A. Payment Reminder</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th nowrap="" valign="BASELINE" align="RIGHT">Date :
|
||||
</th>
|
||||
<td>Wed, 16 Oct 2013 10:34:45 -0000</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th nowrap="" valign="BASELINE" align="RIGHT">De : </th>
|
||||
<td>Ida Siwatala <a class="moz-txt-link-rfc2396E" href="mailto:infos@inzoservices.com"><infos@inzoservices.com></a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th nowrap="" valign="BASELINE" align="RIGHT">Répondre
|
||||
|
||||
à : </th>
|
||||
<td><a class="moz-txt-link-abbreviated" href="mailto:catchall@openerp.my.openerp.com">catchall@openerp.my.openerp.com</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th nowrap="" valign="BASELINE" align="RIGHT">Pour :
|
||||
</th>
|
||||
<td>Christine Herrmann (che) <a class="moz-txt-link-rfc2396E" href="mailto:che@openerp.com"><che@openerp.com></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br>
|
||||
<br>
|
||||
<div>
|
||||
<div class="WordSection1">
|
||||
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Bonjour,</span></p>
|
||||
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"></span></p>
|
||||
<p> </p>
|
||||
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Pourriez-vous
|
||||
|
||||
me faire un retour sur ce point.</span></p>
|
||||
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"></span></p>
|
||||
<p> </p>
|
||||
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Cordialement</span></p>
|
||||
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"></span></p>
|
||||
<p> </p>
|
||||
<div>
|
||||
<div style="border:none;border-top:solid #B5C4DF
|
||||
1.0pt;padding:3.0pt 0cm 0cm 0cm">
|
||||
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">De :</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">
|
||||
Ida Siwatala [<a class="moz-txt-link-freetext" href="mailto:infos@inzoservices.com">mailto:infos@inzoservices.com</a>]
|
||||
<br>
|
||||
<b>Envoyé :</b> vendredi 4 octobre 2013 20:03<br>
|
||||
<b>À :</b> 'Followers of
|
||||
INZO-services-8-all-e-Maxime-Lisbonne-77176-Savigny-le-temple-France'<br>
|
||||
<b>Objet :</b> RE: OpenERP S.A. Payment Reminder</span></p>
|
||||
</div>
|
||||
</div>
|
||||
<p> </p>
|
||||
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Bonsoir,</span></p>
|
||||
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"></span></p>
|
||||
<p> </p>
|
||||
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Je
|
||||
|
||||
me permets de revenir vers vous par écrit , car j’ai
|
||||
fait 2 appels vers votre service en exposant mon
|
||||
problème, mais je n’ai pas eu de retour.</span></p>
|
||||
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Cela
|
||||
|
||||
fait un mois que j’ai fait la souscription de votre
|
||||
produit, mais je me rends compte qu’il est pas adapté à
|
||||
ma situation ( fonctionnalité manquante et surtout je
|
||||
n’ai pas beaucoup de temps à passer à résoudre des
|
||||
bugs). </span></p>
|
||||
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">C’est
|
||||
|
||||
pourquoi , j’ai demandé qu’un accord soit trouvé avec
|
||||
vous pour annuler le contrat (tout en vous payant le
|
||||
mois d’utilisation de septembre).</span></p>
|
||||
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"></span></p>
|
||||
<p> </p>
|
||||
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Pourriez-vous
|
||||
|
||||
me faire un retour sur ce point.</span></p>
|
||||
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"></span></p>
|
||||
<p> </p>
|
||||
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Cordialement,</span></p>
|
||||
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"></span></p>
|
||||
<p> </p>
|
||||
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Ida
|
||||
|
||||
Siwatala</span></p>
|
||||
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"></span></p>
|
||||
<p> </p>
|
||||
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">De :</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">
|
||||
<a href="mailto:che@openerp.com">che@openerp.com</a>
|
||||
[<a href="mailto:che@openerp.com">mailto:che@openerp.com</a>]
|
||||
<br>
|
||||
<b>Envoyé :</b> vendredi 4 octobre 2013 17:41<br>
|
||||
<b>À :</b> <a href="mailto:infos@inzoservices.com">infos@inzoservices.com</a><br>
|
||||
<b>Objet :</b> OpenERP S.A. Payment Reminder</span></p>
|
||||
<p> </p>
|
||||
<div>
|
||||
<p style="background:white"><span style="font-size:9.0pt;font-family:"Arial","sans-serif";color:#222222">Dear
|
||||
|
||||
INZO services,</span></p>
|
||||
<p style="background:white"><span style="font-size:9.0pt;font-family:"Arial","sans-serif";color:#222222">Exception
|
||||
|
||||
made if there was a mistake of ours, it seems that the
|
||||
following amount stays unpaid. Please, take
|
||||
appropriate measures in order to carry out this
|
||||
payment in the next 8 days. </span></p>
|
||||
<p class="MsoNormal" style="background:white"><span style="font-size:9.0pt;font-family:"Arial","sans-serif";color:#222222"></span></p>
|
||||
<p> </p>
|
||||
<table class="MsoNormalTable" style="width:100.0%;border:outset 1.5pt" width="100%" border="1" cellpadding="0">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="padding:.75pt .75pt .75pt .75pt">
|
||||
<p class="MsoNormal">Date de facturation</p>
|
||||
</td>
|
||||
<td style="padding:.75pt .75pt .75pt .75pt">
|
||||
<p class="MsoNormal">Description</p>
|
||||
</td>
|
||||
<td style="padding:.75pt .75pt .75pt .75pt">
|
||||
<p class="MsoNormal">Reference</p>
|
||||
</td>
|
||||
<td style="padding:.75pt .75pt .75pt .75pt">
|
||||
<p class="MsoNormal">Due Date</p>
|
||||
</td>
|
||||
<td style="padding:.75pt .75pt .75pt .75pt">
|
||||
<p class="MsoNormal">Amount (€)</p>
|
||||
</td>
|
||||
<td style="padding:.75pt .75pt .75pt .75pt">
|
||||
<p class="MsoNormal">Lit.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:.75pt .75pt .75pt .75pt">
|
||||
<p class="MsoNormal"><b>2013-09-24</b></p>
|
||||
</td>
|
||||
<td style="padding:.75pt .75pt .75pt .75pt">
|
||||
<p class="MsoNormal"><b>2013/1121</b></p>
|
||||
</td>
|
||||
<td style="padding:.75pt .75pt .75pt .75pt">
|
||||
<p class="MsoNormal"><b>Enterprise - Inzo Services
|
||||
- Juillet 2013</b></p>
|
||||
</td>
|
||||
<td style="padding:.75pt .75pt .75pt .75pt">
|
||||
<p class="MsoNormal"><b>2013-09-24</b></p>
|
||||
</td>
|
||||
<td style="padding:.75pt .75pt .75pt .75pt">
|
||||
<p class="MsoNormal"><b>420.0</b></p>
|
||||
</td>
|
||||
<td style="padding:.75pt .75pt .75pt .75pt"><br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding:.75pt .75pt .75pt .75pt"><br>
|
||||
</td>
|
||||
<td style="border:none;padding:.75pt .75pt .75pt
|
||||
.75pt"><br>
|
||||
</td>
|
||||
<td style="border:none;padding:.75pt .75pt .75pt
|
||||
.75pt"><br>
|
||||
</td>
|
||||
<td style="border:none;padding:.75pt .75pt .75pt
|
||||
.75pt"><br>
|
||||
</td>
|
||||
<td style="border:none;padding:.75pt .75pt .75pt
|
||||
.75pt"><br>
|
||||
</td>
|
||||
<td style="border:none;padding:.75pt .75pt .75pt
|
||||
.75pt"><br>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p class="MsoNormal" style="text-align:center;background:white" align="center"><span style="font-size:9.0pt;font-family:"Arial","sans-serif";color:#222222">Amount
|
||||
|
||||
due : 420.00 € </span></p>
|
||||
<p style="background:white"><span style="font-size:9.0pt;font-family:"Arial","sans-serif";color:#222222">Would
|
||||
|
||||
your payment have been carried out after this mail was
|
||||
sent, please ignore this message. Do not hesitate to
|
||||
contact our accounting department. </span></p>
|
||||
<p class="MsoNormal" style="background:white"><span style="font-size:9.0pt;font-family:"Arial","sans-serif";color:#222222"><br>
|
||||
Best Regards, <br>
|
||||
Aurore Lesage <br>
|
||||
OpenERP<br>
|
||||
Chaussée de Namur, 40 <br>
|
||||
B-1367 Grand Rosières <br>
|
||||
Tel: +32.81.81.37.00 - Fax: +32.81.73.35.01 <br>
|
||||
E-mail : <a href="mailto:ale@openerp.com">ale@openerp.com</a> <br>
|
||||
Web: <a href="http://www.openerp.com">http://www.openerp.com</a></span></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
--<br>
|
||||
INZO services <small>Sent by <a style="color:inherit" href="http://www.openerp.com">OpenERP
|
||||
S.A.</a> using <a style="color:inherit" href="https://www.openerp.com/">OpenERP</a>.</small>
|
||||
<small>Access your messages and documents <a style="color:inherit" href="https://accounts.openerp.com?db=openerp#action=mail.action_mail_redirect&login=che&message_id=5750830">in
|
||||
|
||||
OpenERP</a></small> <br>
|
||||
<pre class="moz-signature" cols="72">--
|
||||
Christine Herrmann
|
||||
|
||||
OpenERP
|
||||
Chaussée de Namur, 40
|
||||
B-1367 Grand Rosières
|
||||
Tel: +32.81.81.37.00 - Fax: +32.81.73.35.01
|
||||
|
||||
Web: <a class="moz-txt-link-freetext" href="http://www.openerp.com">http://www.openerp.com</a> </pre>
|
||||
<br>
|
||||
</div>
|
||||
<br>
|
||||
<br>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
</div>"""
|
||||
|
||||
BUG_2_IN = [
|
||||
'read more',
|
||||
'...',
|
||||
]
|
||||
BUG_2_OUT = [
|
||||
'Fwd: TR: OpenERP S.A'
|
||||
'fait un mois'
|
||||
]
|
||||
|
||||
+80
-33
@@ -175,6 +175,51 @@ def html_email_clean(html, remove=False, shorten=False, max_length=300):
|
||||
iteration += 1
|
||||
new_node = _insert_new_node(node, -1, new_node_tag, text[idx:] + (cur_node.tail or ''), None, {})
|
||||
|
||||
def _truncate_node(node, position, simplify_whitespaces=True):
|
||||
""" Truncate a node text at a given position. This algorithm will shorten
|
||||
at the end of the word whose ending character exceeds position.
|
||||
|
||||
:param bool simplify_whitespaces: whether to try to count all successive
|
||||
whitespaces as one character. This
|
||||
option should not be True when trying
|
||||
to keep 'pre' consistency.
|
||||
"""
|
||||
if node.text is None:
|
||||
node.text = ''
|
||||
|
||||
truncate_idx = -1
|
||||
if simplify_whitespaces:
|
||||
cur_char_nbr = 0
|
||||
word = None
|
||||
node_words = node.text.strip(' \t\r\n').split()
|
||||
for word in node_words:
|
||||
cur_char_nbr += len(word)
|
||||
if cur_char_nbr >= position:
|
||||
break
|
||||
if word:
|
||||
truncate_idx = node.text.find(word) + len(word)
|
||||
else:
|
||||
truncate_idx = position
|
||||
if truncate_idx == -1 or truncate_idx > len(node.text):
|
||||
truncate_idx = len(node.text)
|
||||
|
||||
# compose new text bits
|
||||
innertext = node.text[0:truncate_idx]
|
||||
outertext = node.text[truncate_idx:]
|
||||
node.text = innertext
|
||||
|
||||
# create <span> ... <a href="#">read more</a></span> node
|
||||
read_more_node = _create_node('span', ' ... ', None, {'class': 'oe_mail_expand'})
|
||||
read_more_link_node = _create_node('a', 'read more', None, {'href': '#', 'class': 'oe_mail_expand'})
|
||||
read_more_node.append(read_more_link_node)
|
||||
# create outertext node
|
||||
overtext_node = _create_node('span', outertext)
|
||||
# tag node
|
||||
overtext_node.set('in_overlength', '1')
|
||||
# add newly created nodes in dom
|
||||
node.append(read_more_node)
|
||||
node.append(overtext_node)
|
||||
|
||||
if not html or not isinstance(html, basestring):
|
||||
return html
|
||||
html = ustr(html)
|
||||
@@ -197,17 +242,16 @@ def html_email_clean(html, remove=False, shorten=False, max_length=300):
|
||||
html = '<div>%s</div>' % html
|
||||
root = lxml.html.fromstring(html)
|
||||
|
||||
# remove all tails and replace them by a span element, because managing text and tails can be a pain in the ass
|
||||
for node in root.getiterator():
|
||||
quote_tags = re.compile(r'(\n(>)+[^\n\r]*)')
|
||||
signature = re.compile(r'([-]{2,}[\s]?[\r\n]{1,2}[\s\S]+)')
|
||||
for node in root.iter():
|
||||
# remove all tails and replace them by a span element, because managing text and tails can be a pain in the ass
|
||||
if node.tail:
|
||||
tail_node = _create_node('span', node.tail)
|
||||
node.tail = None
|
||||
node.addnext(tail_node)
|
||||
|
||||
# form node and tag text-based quotes and signature
|
||||
quote_tags = re.compile(r'(\n(>)+[^\n\r]*)')
|
||||
signature = re.compile(r'([-]{2,}[\s]?[\r\n]{1,2}[^.]+)')
|
||||
for node in root.getiterator():
|
||||
# form node and tag text-based quotes and signature
|
||||
_tag_matching_regex_in_text(quote_tags, node, 'span', {'text_quote': '1'})
|
||||
_tag_matching_regex_in_text(signature, node, 'span', {'text_signature': '1'})
|
||||
|
||||
@@ -219,21 +263,26 @@ def html_email_clean(html, remove=False, shorten=False, max_length=300):
|
||||
quote_begin = False
|
||||
overlength = False
|
||||
cur_char_nbr = 0
|
||||
for node in root.getiterator():
|
||||
for node in root.iter():
|
||||
# do not take into account multiple spaces that are displayed as max 1 space in html
|
||||
node_text = ' '.join((node.text and node.text.strip(' \t\r\n') or '').split())
|
||||
|
||||
# root: try to tag the client used to write the html
|
||||
if 'WordSection1' in node.get('class', '') or 'MsoNormal' in node.get('class', ''):
|
||||
root.set('msoffice', '1')
|
||||
if 'SkyDrivePlaceholder' in node.get('class', '') or 'SkyDrivePlaceholder' in node.get('id', ''):
|
||||
root.set('hotmail', '1')
|
||||
|
||||
# state of the parsing
|
||||
# state of the parsing: flag quotes and tails to remove
|
||||
if quote_begin:
|
||||
node.set('in_quote', '1')
|
||||
node.set('tail_remove', '1')
|
||||
# state of the parsing: flag when being in over-length content
|
||||
if overlength:
|
||||
node.set('in_overlength', '1')
|
||||
node.set('tail_remove', '1')
|
||||
|
||||
# find quote in msoffice / hotmail / blockquote / text quote and signatures
|
||||
if root.get('msoffice') and node.tag == 'div' and 'border-top:solid' in node.get('style', ''):
|
||||
quote_begin = True
|
||||
node.set('in_quote', '1')
|
||||
@@ -242,42 +291,37 @@ def html_email_clean(html, remove=False, shorten=False, max_length=300):
|
||||
quote_begin = True
|
||||
node.set('in_quote', '1')
|
||||
node.set('tail_remove', '1')
|
||||
if node.tag == 'blockquote' or node.get('text_quote') or node.get('text_signature'):
|
||||
node.set('in_quote', '1')
|
||||
|
||||
# shorten:
|
||||
# 1/ truncate the text at the next available space
|
||||
# 2/ create a 'read more' node, next to current node
|
||||
# 3/ add the truncated text in a new node, next to 'read more' node
|
||||
if shorten and not overlength and cur_char_nbr + len(node.text or '') > max_length:
|
||||
if shorten and not overlength and cur_char_nbr + len(node_text) > max_length:
|
||||
node_to_truncate = node
|
||||
while node_to_truncate.get('in_quote') and node_to_truncate.getparent() is not None:
|
||||
node_to_truncate = node_to_truncate.getparent()
|
||||
overlength = True
|
||||
# truncate text
|
||||
innertext = node.text[0:(max_length - cur_char_nbr)]
|
||||
outertext = node.text[(max_length - cur_char_nbr):]
|
||||
stop_idx = outertext.find(' ')
|
||||
if stop_idx == -1:
|
||||
stop_idx = len(outertext)
|
||||
node.text = innertext + outertext[0:stop_idx]
|
||||
# create <span> ... <a href="#">read more</a></span> node
|
||||
read_more_node = _create_node('span', ' ... ', None, {'class': 'oe_mail_expand'})
|
||||
read_more_link_node = _create_node('a', 'read more', None, {'href': '#', 'class': 'oe_mail_expand'})
|
||||
read_more_node.append(read_more_link_node)
|
||||
# create outertext node
|
||||
new_node = _create_node('span', outertext[stop_idx:])
|
||||
# add newly created nodes in dom
|
||||
node.addnext(new_node)
|
||||
node.addnext(read_more_node)
|
||||
# tag node
|
||||
new_node.set('in_overlength', '1')
|
||||
node_to_truncate.set('truncate', '1')
|
||||
if node_to_truncate == node:
|
||||
node_to_truncate.set('truncate_position', str(max_length - cur_char_nbr))
|
||||
else:
|
||||
node_to_truncate.set('truncate_position', str(len(node.text or '')))
|
||||
cur_char_nbr += len(node_text)
|
||||
|
||||
cur_char_nbr += len(node.text or '')
|
||||
# Tree modification
|
||||
# ------------------------------------------------------------
|
||||
|
||||
if node.tag == 'blockquote' or node.get('text_quote') or node.get('text_signature'):
|
||||
node.set('in_quote', '1')
|
||||
for node in root.iter():
|
||||
if node.get('truncate'):
|
||||
_truncate_node(node, int(node.get('truncate_position', '0')), node.tag != 'pre')
|
||||
|
||||
# Post processing
|
||||
# ------------------------------------------------------------
|
||||
|
||||
to_remove = []
|
||||
for node in root.getiterator():
|
||||
for node in root.iter():
|
||||
if node.get('in_quote') or node.get('in_overlength'):
|
||||
# copy the node tail into parent text
|
||||
if node.tail and not node.get('tail_remove'):
|
||||
@@ -286,17 +330,20 @@ def html_email_clean(html, remove=False, shorten=False, max_length=300):
|
||||
to_remove.append(node)
|
||||
if node.get('tail_remove'):
|
||||
node.tail = ''
|
||||
# clean node
|
||||
for attribute_name in ['in_quote', 'tail_remove', 'in_overlength', 'msoffice', 'hotmail', 'truncate', 'truncate_position']:
|
||||
node.attrib.pop(attribute_name, None)
|
||||
for node in to_remove:
|
||||
if remove:
|
||||
node.getparent().remove(node)
|
||||
else:
|
||||
if not 'oe_mail_expand' in node.get('class', ''): # trick: read more link should be displayed even if it's in overlength
|
||||
node_class = node.get('class', '') + ' ' + 'oe_mail_cleaned'
|
||||
node_class = node.get('class', '') + ' oe_mail_cleaned'
|
||||
node.set('class', node_class)
|
||||
|
||||
# html: \n that were tail of elements have been encapsulated into <span> -> back to \n
|
||||
html = etree.tostring(root, pretty_print=False)
|
||||
linebreaks = re.compile(r'<span>([\s]*[\r\n]+[\s]*)<\/span>', re.IGNORECASE | re.DOTALL)
|
||||
linebreaks = re.compile(r'<span[^>]*>([\s]*[\r\n]+[\s]*)<\/span>', re.IGNORECASE | re.DOTALL)
|
||||
html = _replace_matching_regex(linebreaks, html, '\n')
|
||||
|
||||
return html
|
||||
|
||||
Reference in New Issue
Block a user