diff --git a/bin/openerp-server.py b/bin/openerp-server.py deleted file mode 100755 index c61a22858c0..00000000000 --- a/bin/openerp-server.py +++ /dev/null @@ -1,19 +0,0 @@ -#! /usr/bin/env python -# -*- coding: UTF-8 -*- - -import os -import sys - -if __name__ == "__main__": - print '-' * 70 - print "DEPRECATED: you are starting the OpenERP server with its old path," - print "please use the new executable (available in the parent directory)." - print '-' * 70 - - # Change to the parent directory ... - os.chdir(os.path.normpath(os.path.dirname(__file__))) - os.chdir('..') - # ... and execute the new executable. - os.execv('openerp-server', sys.argv) - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/debian/control b/debian/control index 7a1bfb62bb8..acd4a72c44b 100644 --- a/debian/control +++ b/debian/control @@ -23,6 +23,7 @@ Depends: python-libxslt1, python-lxml, python-mako, + python-mock, python-openid, python-psutil, python-psycopg2, @@ -33,6 +34,7 @@ Depends: python-reportlab, python-simplejson, python-tz, + python-unittest2, python-vatnumber, python-vobject, python-webdav, diff --git a/openerp/__init__.py b/openerp/__init__.py index c874a22c0e2..c9db7076e71 100644 --- a/openerp/__init__.py +++ b/openerp/__init__.py @@ -40,7 +40,6 @@ import service import sql_db import test import tools -import wizard import workflow # backward compatilbility # TODO: This is for the web addons, can be removed later. diff --git a/openerp/addons/base/i18n/es.po b/openerp/addons/base/i18n/es.po index 29fce787179..19b3e20976f 100644 --- a/openerp/addons/base/i18n/es.po +++ b/openerp/addons/base/i18n/es.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-08-20 15:29+0000\n" -"Last-Translator: OpenERP Administrators \n" +"PO-Revision-Date: 2012-12-09 23:26+0000\n" +"Last-Translator: lambdasoftware \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: 2012-12-04 05:00+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:36+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -24,6 +24,10 @@ msgid "" "================================================\n" " " msgstr "" +"\n" +"Módulo para la emisión e impresión de cheques\n" +"================================================\n" +" " #. module: base #: model:res.country,name:base.sh @@ -59,7 +63,7 @@ msgstr "Estructura de la vista" #. module: base #: model:ir.module.module,summary:base.module_sale_stock msgid "Quotation, Sale Orders, Delivery & Invoicing Control" -msgstr "" +msgstr "Presupuesto, órdenes de venta, entrega y control de facturación" #. module: base #: selection:ir.sequence,implementation:0 @@ -88,7 +92,7 @@ msgstr "" #. module: base #: model:ir.module.module,summary:base.module_point_of_sale msgid "Touchscreen Interface for Shops" -msgstr "" +msgstr "Interfaz de pantalla táctil para tiendas" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll @@ -140,7 +144,7 @@ msgstr "" #. module: base #: help:res.partner,employee:0 msgid "Check this box if this contact is an Employee." -msgstr "" +msgstr "Marque si el contacto es un empleado" #. module: base #: help:ir.model.fields,domain:0 @@ -171,7 +175,7 @@ msgstr "Ventana destino" #. module: base #: field:ir.actions.report.xml,report_rml:0 msgid "Main Report File Path" -msgstr "" +msgstr "Ruta de archivo del informe principal" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_analytic_plans @@ -269,7 +273,7 @@ msgstr "creado." #. module: base #: field:ir.actions.report.xml,report_xsl:0 msgid "XSL Path" -msgstr "" +msgstr "Ruta XSL" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_tr @@ -295,7 +299,7 @@ msgstr "Inuktitut / ᐃᓄᒃᑎᑐᑦ" #. module: base #: model:res.groups,name:base.group_multi_currency msgid "Multi Currencies" -msgstr "" +msgstr "Multidivisas" #. module: base #: model:ir.module.module,description:base.module_l10n_cl @@ -319,6 +323,7 @@ msgid "" "The internal user that is in charge of communicating with this contact if " "any." msgstr "" +"El usuario interno encargado de comunicarse con este contacto si lo hubiese." #. module: base #: view:res.partner:0 @@ -531,12 +536,12 @@ msgstr "" #. module: base #: field:ir.model.relation,name:0 msgid "Relation Name" -msgstr "" +msgstr "Nombre de relación" #. module: base #: view:ir.rule:0 msgid "Create Access Right" -msgstr "" +msgstr "Otorge derecho de acceso" #. module: base #: model:res.country,name:base.tv @@ -576,7 +581,7 @@ msgstr "" #. module: base #: view:workflow.transition:0 msgid "Workflow Transition" -msgstr "" +msgstr "Transición del flujo de trabajo" #. module: base #: model:res.country,name:base.gf @@ -699,7 +704,7 @@ msgstr "Colombia" #. module: base #: model:res.partner.title,name:base.res_partner_title_mister msgid "Mister" -msgstr "" +msgstr "Señor" #. module: base #: help:res.country,code:0 @@ -728,7 +733,7 @@ msgstr "Sin traducir" #. module: base #: view:ir.mail_server:0 msgid "Outgoing Mail Server" -msgstr "" +msgstr "Servidor de correo saliente" #. module: base #: help:ir.actions.act_window,context:0 @@ -922,7 +927,7 @@ msgstr "Sueco / svenska" #: field:base.language.export,name:0 #: field:ir.attachment,datas_fname:0 msgid "File Name" -msgstr "" +msgstr "Nombre del archivo" #. module: base #: model:res.country,name:base.rs @@ -1019,7 +1024,7 @@ msgstr "Preferencias de email" #: code:addons/base/ir/ir_fields.py:196 #, python-format msgid "'%s' does not seem to be a valid date for field '%%(field)s'" -msgstr "" +msgstr "'%s' no parece ser una fecha valida para el campo '%%(field)s'" #. module: base #: view:res.partner:0 @@ -1151,7 +1156,7 @@ msgstr "Usuarios google" #. module: base #: model:ir.module.module,shortdesc:base.module_fleet msgid "Fleet Management" -msgstr "" +msgstr "Gestión de flotas" #. module: base #: help:ir.server.object.lines,value:0 @@ -2716,7 +2721,7 @@ msgstr "Nombre de acceso rápido" #. module: base #: field:res.partner,contact_address:0 msgid "Complete Address" -msgstr "" +msgstr "Dirección completa" #. module: base #: help:ir.actions.act_window,limit:0 @@ -2788,7 +2793,7 @@ msgstr "ID de registro" #. module: base #: view:ir.filters:0 msgid "My Filters" -msgstr "" +msgstr "Mis filtros" #. module: base #: field:ir.actions.server,email:0 @@ -2874,7 +2879,7 @@ msgstr "Responsable" #: code:addons/base/ir/ir_model.py:718 #, python-format msgid "Sorry, you are not allowed to access this document." -msgstr "" +msgstr "Lo siento, no está autorizado para acceder a este documento." #. module: base #: model:res.country,name:base.py @@ -2889,7 +2894,7 @@ msgstr "Fiji" #. module: base #: view:ir.actions.report.xml:0 msgid "Report Xml" -msgstr "" +msgstr "Informe Xml" #. module: base #: model:ir.module.module,description:base.module_purchase @@ -2960,7 +2965,7 @@ msgstr "Hededado" #: code:addons/base/ir/ir_fields.py:147 #, python-format msgid "yes" -msgstr "" +msgstr "Sí" #. module: base #: field:ir.model.fields,serialization_field_id:0 @@ -3051,7 +3056,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_web_linkedin msgid "LinkedIn Integration" -msgstr "" +msgstr "Integración con LinkedIn" #. module: base #: code:addons/orm.py:2021 @@ -3365,7 +3370,7 @@ msgstr "Calendario" #. module: base #: model:ir.module.category,name:base.module_category_knowledge_management msgid "Knowledge" -msgstr "" +msgstr "Conocimiento" #. module: base #: field:workflow.activity,signal_send:0 @@ -3530,7 +3535,7 @@ msgstr "workflow.actividad" #. module: base #: view:base.language.export:0 msgid "Export Complete" -msgstr "" +msgstr "Exportación completada" #. module: base #: help:ir.ui.view_sc,res_id:0 @@ -3559,7 +3564,7 @@ msgstr "Finlandés / Suomi" #. module: base #: view:ir.config_parameter:0 msgid "System Properties" -msgstr "" +msgstr "Propiedades de sistema" #. module: base #: field:ir.sequence,prefix:0 @@ -3616,7 +3621,7 @@ msgstr "" #. module: base #: field:base.language.export,modules:0 msgid "Modules To Export" -msgstr "" +msgstr "Módulos a exportar" #. module: base #: model:res.country,name:base.mt @@ -3719,7 +3724,7 @@ msgstr "Antártida" #. module: base #: view:res.partner:0 msgid "Persons" -msgstr "" +msgstr "Personas" #. module: base #: view:base.language.import:0 @@ -3898,7 +3903,7 @@ msgstr "Tayiko / اردو" #: code:addons/orm.py:3870 #, python-format msgid "Access Denied" -msgstr "" +msgstr "Acceso denegado" #. module: base #: field:res.company,name:0 @@ -3991,7 +3996,7 @@ msgstr "%x - Representación apropiada de fecha." #. module: base #: view:res.partner:0 msgid "Tag" -msgstr "" +msgstr "Etiqueta" #. module: base #: view:res.lang:0 @@ -4043,7 +4048,7 @@ msgstr "" #. module: base #: model:res.country,name:base.sk msgid "Slovakia" -msgstr "" +msgstr "Eslovaquia" #. module: base #: model:res.country,name:base.nr @@ -4594,7 +4599,7 @@ msgstr "" #. module: base #: field:ir.module.module,latest_version:0 msgid "Installed Version" -msgstr "" +msgstr "Versión instalada" #. module: base #: field:ir.module.module,license:0 @@ -4890,7 +4895,7 @@ msgstr "Flujos" #. module: base #: model:ir.ui.menu,name:base.next_id_73 msgid "Purchase" -msgstr "" +msgstr "Compra" #. module: base #: selection:base.language.install,lang:0 @@ -5049,7 +5054,7 @@ msgstr "Establecer a NULL" #. module: base #: view:res.users:0 msgid "Save" -msgstr "" +msgstr "Guardar" #. module: base #: field:ir.actions.report.xml,report_xml:0 @@ -5243,7 +5248,7 @@ msgstr "Tasas" #. module: base #: model:ir.module.module,shortdesc:base.module_email_template msgid "Email Templates" -msgstr "" +msgstr "Plantillas de correo electrónico" #. module: base #: model:res.country,name:base.sy @@ -5392,7 +5397,7 @@ msgstr "" #. module: base #: view:ir.rule:0 msgid "Write Access Right" -msgstr "" +msgstr "Permiso de escritura" #. module: base #: model:ir.actions.act_window,help:base.action_res_groups @@ -5427,7 +5432,7 @@ msgstr "Historial" #. module: base #: model:res.country,name:base.im msgid "Isle of Man" -msgstr "" +msgstr "Isla de Man" #. module: base #: help:ir.actions.client,res_model:0 @@ -6104,7 +6109,7 @@ msgstr "Nombre del recurso" #. module: base #: field:res.partner,is_company:0 msgid "Is a Company" -msgstr "" +msgstr "¿Es una empresa?" #. module: base #: selection:ir.cron,interval_type:0 @@ -6184,7 +6189,7 @@ msgstr "" #. module: base #: sql_constraint:ir.filters:0 msgid "Filter names must be unique" -msgstr "" +msgstr "Los nombres de filtro deben ser únicos" #. module: base #: help:multi_company.default,object_id:0 @@ -6199,7 +6204,7 @@ msgstr "" #. module: base #: field:ir.filters,is_default:0 msgid "Default filter" -msgstr "" +msgstr "Filtro por defecto" #. module: base #: report:ir.module.reference:0 @@ -6927,7 +6932,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_anonymous msgid "Anonymous" -msgstr "" +msgstr "Anónimo" #. module: base #: model:ir.module.module,description:base.module_base_import @@ -7434,7 +7439,7 @@ msgstr "" #. module: base #: model:res.partner.category,name:base.res_partner_category_14 msgid "Manufacturer" -msgstr "" +msgstr "Fabricante" #. module: base #: help:res.users,company_id:0 @@ -8050,7 +8055,7 @@ msgstr "Francés (CH) / Français (CH)" #. module: base #: model:res.partner.category,name:base.res_partner_category_13 msgid "Distributor" -msgstr "" +msgstr "Distribuidor" #. module: base #: help:ir.actions.server,subject:0 @@ -15506,7 +15511,7 @@ msgstr "" #. module: base #: view:res.partner:0 msgid "Internal Notes" -msgstr "" +msgstr "Notas internas" #. module: base #: selection:res.partner.address,type:0 @@ -15548,7 +15553,7 @@ msgstr "Empresas: " #. module: base #: view:res.partner:0 msgid "Is a Company?" -msgstr "" +msgstr "¿Es una empresa?" #. module: base #: code:addons/base/res/res_company.py:159 @@ -15570,7 +15575,7 @@ msgstr "Crear objeto" #. module: base #: model:res.country,name:base.ss msgid "South Sudan" -msgstr "" +msgstr "Sudán del Sur" #. module: base #: field:ir.filters,context:0 diff --git a/openerp/addons/base/i18n/es_DO.po b/openerp/addons/base/i18n/es_DO.po index 1c7eabea1d8..8855ee6a517 100644 --- a/openerp/addons/base/i18n/es_DO.po +++ b/openerp/addons/base/i18n/es_DO.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-server\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-12-03 14:56+0000\n" +"PO-Revision-Date: 2012-12-07 15:49+0000\n" "Last-Translator: Carlos Matos Villar \n" "Language-Team: Spanish (Dominican Republic) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:02+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-08 04:58+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -3240,12 +3240,12 @@ msgstr "" #: code:addons/base/ir/ir_fields.py:147 #, python-format msgid "yes" -msgstr "" +msgstr "Sí" #. module: base #: field:ir.model.fields,serialization_field_id:0 msgid "Serialization Field" -msgstr "" +msgstr "Campo serializacion" #. module: base #: model:ir.module.module,description:base.module_l10n_be_hr_payroll @@ -3270,7 +3270,7 @@ msgstr "" #: code:addons/base/ir/ir_fields.py:175 #, python-format msgid "'%s' does not seem to be an integer for field '%%(field)s'" -msgstr "" +msgstr "'%s' No parece haber un entero para el campo '%%(field)s'" #. module: base #: model:ir.module.category,description:base.module_category_report_designer @@ -3278,11 +3278,13 @@ msgid "" "Lets you install various tools to simplify and enhance OpenERP's report " "creation." msgstr "" +"Permite instalar varias herramientas para simplificar y mejorar la creación " +"de informes OpenERP." #. module: base #: view:res.lang:0 msgid "%y - Year without century [00,99]." -msgstr "" +msgstr "%y - Año sin el siglo [00,99]." #. module: base #: model:ir.module.module,description:base.module_account_anglo_saxon @@ -3306,11 +3308,30 @@ msgid "" "purchase price and fixed product standard price are booked on a separate \n" "account." msgstr "" +"\n" +"Este modulo soporta la metodología de cuentas Anglo-Saxon cambiando la " +"cuenta lógica con transacciones de Stock.\n" +"=============================================================================" +"=======================\n" +"\n" +"La diferencia entre la cuenta de países Anglo-Saxon y el Rin \n" +"(o también llamada Cuenta Continental) países es el momento de tomar el " +"Costo de Ventas versus el Costo de Ventas. Las cuentas Anglo-Saxons toman el " +"costo cuando las facturas de ventas son creadas, las cuentas continentales " +"serán \n" +"tomadas de el costo en el momento que los bienes sean enviados.\n" +"\n" +"Este modulo agregará esta funcionalidad usando una cuenta provisional, para " +"almacenar los valores de bienes enviados y volveremos a reservar contra esta " +"cuenta provisional cuando la factura es creada para transferir este monto a " +"la cuenta de débito o crédito. En segundo lugar, los precios difieren entre " +"los precios del producto estándar se anotan en una cuenta \n" +"separada." #. module: base #: model:res.country,name:base.si msgid "Slovenia" -msgstr "" +msgstr "Eslovenia" #. module: base #: model:ir.module.module,description:base.module_base_status @@ -3325,18 +3346,27 @@ msgid "" " * ``base_stage``: stage management\n" " " msgstr "" +"\n" +"Este modulo se encarga de estado y etapa. Esto se deriva desde las clases " +"crm_base y crm_case de crm.\n" +"=============================================================================" +"=======================\n" +"\n" +" *''base_state'':estado administrativo\n" +" *''base_stage'':etapa administrativa\n" +" " #. module: base #: model:ir.module.module,shortdesc:base.module_web_linkedin msgid "LinkedIn Integration" -msgstr "" +msgstr "Integración LinkedIn" #. module: base #: code:addons/orm.py:2021 #: code:addons/orm.py:2032 #, python-format msgid "Invalid Object Architecture!" -msgstr "" +msgstr "¡Estructura del objeto no válida!" #. module: base #: code:addons/base/ir/ir_model.py:364 @@ -3350,27 +3380,27 @@ msgstr "" #: code:addons/base/module/wizard/base_update_translations.py:38 #, python-format msgid "Error!" -msgstr "" +msgstr "¡Error!" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_fr_rib msgid "French RIB Bank Details" -msgstr "" +msgstr "Detalles CC del banco francés" #. module: base #: view:res.lang:0 msgid "%p - Equivalent of either AM or PM." -msgstr "" +msgstr "%p - Equivalente a AM o PM." #. module: base #: view:ir.actions.server:0 msgid "Iteration Actions" -msgstr "" +msgstr "Acciones de iteración" #. module: base #: help:multi_company.default,company_id:0 msgid "Company where the user is connected" -msgstr "" +msgstr "Compañía en la que pertenece el usuario." #. module: base #: model:res.groups,comment:base.group_sale_manager @@ -3378,18 +3408,20 @@ msgid "" "the user will have an access to the sales configuration as well as statistic " "reports." msgstr "" +"El usuario tendrá un acceso a la configuración de ventas así como informes y " +"estadísticas." #. module: base #: model:res.country,name:base.nz msgid "New Zealand" -msgstr "" +msgstr "Nueva Zelanda" #. module: base #: field:ir.exports.line,name:0 #: view:ir.model.fields:0 #: field:res.partner.bank.type.field,name:0 msgid "Field Name" -msgstr "" +msgstr "Nombre de campo" #. module: base #: model:ir.actions.act_window,help:base.action_country @@ -3398,28 +3430,31 @@ msgid "" "partner records. You can create or delete countries to make sure the ones " "you are working on will be maintained." msgstr "" +"Muestra y gestiona la lista de todos los países que pueden asignarse a los " +"registros de sus empresas. Puede crear o eliminar países para mantener " +"aquellos con los que trabaja." #. module: base #: model:res.country,name:base.nf msgid "Norfolk Island" -msgstr "" +msgstr "Isla Norfolk" #. module: base #: selection:base.language.install,lang:0 msgid "Korean (KR) / 한국어 (KR)" -msgstr "" +msgstr "Coreano (KR) / 한국어 (KR)" #. module: base #: help:ir.model.fields,model:0 msgid "The technical name of the model this field belongs to" -msgstr "" +msgstr "El nombre técnico del modelo al que pertenece este campo." #. module: base #: field:ir.actions.server,action_id:0 #: selection:ir.actions.server,state:0 #: view:ir.values:0 msgid "Client Action" -msgstr "" +msgstr "Acción del cliente" #. module: base #: model:ir.module.module,description:base.module_subscription @@ -3443,7 +3478,7 @@ msgstr "" #. module: base #: constraint:res.company:0 msgid "Error! You can not create recursive companies." -msgstr "" +msgstr "¡Error! No se pueden crear compañías recursivas." #. module: base #: code:addons/base/res/res_users.py:671 @@ -3453,7 +3488,7 @@ msgstr "" #: view:res.users:0 #, python-format msgid "Application" -msgstr "" +msgstr "Aplicación" #. module: base #: model:res.groups,comment:base.group_hr_manager @@ -3461,6 +3496,8 @@ msgid "" "the user will have an access to the human resources configuration as well as " "statistic reports." msgstr "" +"El usuario tendrá acceso a la configuración de recursos humanos así como " +"reportes estáticos." #. module: base #: model:ir.module.module,description:base.module_web_shortcuts @@ -3476,33 +3513,43 @@ msgid "" "shortcut.\n" " " msgstr "" +"\n" +"Habilita accesos directos en el cliente web.\n" +"=========================================\n" +"\n" +"Agregar un icono de acceso directo en la bandeja del sistema en orden de " +"acceder a los accesos directos del usuario (Si los hay).\n" +"\n" +"Agregar un icono de acceso directo detrás del titulo de vistas en orden a " +"agregar/eliminar un acceso directo.\n" +" " #. module: base #: field:ir.actions.client,params_store:0 msgid "Params storage" -msgstr "" +msgstr "Almacenamiento de parámetros" #. module: base #: code:addons/base/module/module.py:499 #, python-format msgid "Can not upgrade module '%s'. It is not installed." -msgstr "" +msgstr "No puede actualizar el módulo '% s'. No está instalado" #. module: base #: model:res.country,name:base.cu msgid "Cuba" -msgstr "" +msgstr "Cuba" #. module: base #: code:addons/report_sxw.py:441 #, python-format msgid "Unknown report type: %s" -msgstr "" +msgstr "Tipo de informe desconocido: %s" #. module: base #: model:ir.module.module,summary:base.module_hr_expense msgid "Expenses Validation, Invoicing" -msgstr "" +msgstr "Gastos de Validación, Facturación" #. module: base #: model:ir.module.module,description:base.module_l10n_be_hr_payroll_account @@ -3516,23 +3563,23 @@ msgstr "" #. module: base #: model:res.country,name:base.am msgid "Armenia" -msgstr "" +msgstr "Armenia" #. module: base #: model:ir.module.module,summary:base.module_hr_evaluation msgid "Periodical Evaluations, Appraisals, Surveys" -msgstr "" +msgstr "Evaluaciones Periodicas, Tasaciones, Encuentas" #. module: base #: model:ir.actions.act_window,name:base.ir_property_form #: model:ir.ui.menu,name:base.menu_ir_property_form_all msgid "Configuration Parameters" -msgstr "" +msgstr "Parámetros de configuración" #. module: base #: constraint:ir.cron:0 msgid "Invalid arguments" -msgstr "" +msgstr "Argumentos no válidos" #. module: base #: model:ir.module.module,description:base.module_l10n_fr_hr_payroll @@ -3565,18 +3612,18 @@ msgstr "" #. module: base #: model:res.country,name:base.se msgid "Sweden" -msgstr "" +msgstr "Suecia" #. module: base #: field:ir.actions.report.xml,report_file:0 msgid "Report File" -msgstr "" +msgstr "Archivo de reporte" #. module: base #: selection:ir.actions.act_window.view,view_mode:0 #: selection:ir.ui.view,type:0 msgid "Gantt" -msgstr "" +msgstr "Gantt" #. module: base #: model:ir.module.module,description:base.module_l10n_in_hr_payroll @@ -3603,14 +3650,14 @@ msgstr "" #: code:addons/orm.py:3839 #, python-format msgid "Missing document(s)" -msgstr "" +msgstr "Documentos Perdidos" #. module: base #: model:ir.model,name:base.model_res_partner_bank_type #: field:res.partner.bank,state:0 #: view:res.partner.bank.type:0 msgid "Bank Account Type" -msgstr "" +msgstr "Tipo de cuenta bancaria" #. module: base #: view:base.language.export:0 @@ -3622,12 +3669,12 @@ msgstr "" #. module: base #: field:res.partner,image:0 msgid "Image" -msgstr "" +msgstr "Imágen" #. module: base #: model:res.country,name:base.at msgid "Austria" -msgstr "" +msgstr "Austria" #. module: base #: selection:ir.actions.act_window.view,view_mode:0 @@ -3635,17 +3682,17 @@ msgstr "" #: model:ir.ui.menu,name:base.menu_calendar_configuration #: selection:ir.ui.view,type:0 msgid "Calendar" -msgstr "" +msgstr "Calendario" #. module: base #: model:ir.module.category,name:base.module_category_knowledge_management msgid "Knowledge" -msgstr "" +msgstr "Conocimiento" #. module: base #: field:workflow.activity,signal_send:0 msgid "Signal (subflow.*)" -msgstr "" +msgstr "Señal (subflow.*)" #. module: base #: code:addons/orm.py:4652 @@ -3655,16 +3702,19 @@ msgid "" "separated list of valid field names (optionally followed by asc/desc for the " "direction)" msgstr "" +"Se ha indicado un \"order\" no válido. Una especificación \"order\" válida " +"es una lista separada por comas de nombres de campos válidos (opcionalmente " +"seguidos por asc/desc para indicar la dirección)" #. module: base #: model:ir.model,name:base.model_ir_module_module_dependency msgid "Module dependency" -msgstr "" +msgstr "Dependencias de módulos" #. module: base #: model:res.country,name:base.bd msgid "Bangladesh" -msgstr "" +msgstr "Bangladés" #. module: base #: model:ir.actions.act_window,help:base.action_partner_title_contact @@ -3673,13 +3723,16 @@ msgid "" "way you want to print them in letters and other documents. Some example: " "Mr., Mrs. " msgstr "" +"Gestione los títulos de contacto que quiere tener disponibles en su sistema " +"y la forma en la que quiere que aparezcan impresos en cartas y otros " +"documentos. Por ejemplo: Sr., Sra. " #. module: base #: view:ir.model.access:0 #: view:res.groups:0 #: field:res.groups,model_access:0 msgid "Access Controls" -msgstr "" +msgstr "Controles de acceso" #. module: base #: code:addons/base/ir/ir_model.py:273 @@ -3688,27 +3741,29 @@ msgid "" "The Selection Options expression is not a valid Pythonic expression.Please " "provide an expression in the [('key','Label'), ...] format." msgstr "" +"La expresión de opciones de selección no es una expresión Pythonica válida. " +"Proporcione una expresión en el formato [('clave', 'Etiqueta'), ...]." #. module: base #: model:res.groups,name:base.group_survey_user msgid "Survey / User" -msgstr "" +msgstr "Encuesta / Usuario" #. module: base #: view:ir.module.module:0 #: field:ir.module.module,dependencies_id:0 msgid "Dependencies" -msgstr "" +msgstr "Dependencias" #. module: base #: field:multi_company.default,company_id:0 msgid "Main Company" -msgstr "" +msgstr "Empresa principal" #. module: base #: field:ir.ui.menu,web_icon_hover:0 msgid "Web Icon File (hover)" -msgstr "" +msgstr "Archivo icono web (flotar)" #. module: base #: model:ir.module.module,description:base.module_document @@ -3735,16 +3790,38 @@ msgid "" "database,\n" " but in the servers rootpad like /server/bin/filestore.\n" msgstr "" +"\n" +"Este es un documento completo de gestión de sistemas.\n" +"====================================================\n" +"\n" +" *Autenticación de Usuarios\n" +" *Indexación de Documentos:- .pptx y .docx archivos no soportados en la " +"plataforma de Windows.\n" +" *Tablero para Documentos que incluidos:\n" +" *Nuevos Archivos (Lista)\n" +" *Archivos por tipos de Recursos (Gráficos)\n" +" *Archivos por Socios (Gráficos)\n" +" *Tamaño de Archivos por Mes (Gráficos)\n" +"\n" +"Atención:\n" +"-------\n" +" - Cuando usted instala este modulo en una compañía en curso que tiene " +"archivos PDF \n" +" previamente almacenados dentro de una base de datos, usted perderá " +"todo.\n" +" - Después de la instalación de este Modulo los PDF ya no se almacenan " +"dentro la Base de Datos,\n" +" pero en la raíz del servidor como /server/bin/filestore.\n" #. module: base #: help:res.currency,name:0 msgid "Currency Code (ISO 4217)" -msgstr "" +msgstr "Código de moneda (ISO 4217)" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_contract msgid "Employee Contracts" -msgstr "" +msgstr "Contratos de los empleados" #. module: base #: view:ir.actions.server:0 @@ -3752,50 +3829,52 @@ msgid "" "If you use a formula type, use a python expression using the variable " "'object'." msgstr "" +"Si utiliza un tipo fórmula, introduzca una expresión Python que incluya la " +"variable 'object'." #. module: base #: field:res.partner,birthdate:0 #: field:res.partner.address,birthdate:0 msgid "Birthdate" -msgstr "" +msgstr "Fecha de nacimiento" #. module: base #: 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 "Títulos de contacto" #. module: base #: model:ir.module.module,shortdesc:base.module_product_manufacturer msgid "Products Manufacturers" -msgstr "" +msgstr "Fabricantes de los productos" #. module: base #: code:addons/base/ir/ir_mail_server.py:238 #, python-format msgid "SMTP-over-SSL mode unavailable" -msgstr "" +msgstr "Modo SMTP sobre SSL no disponible" #. module: base #: model:ir.module.module,shortdesc:base.module_survey #: model:ir.ui.menu,name:base.next_id_10 msgid "Survey" -msgstr "" +msgstr "Encuesta" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (DO) / Español (DO)" -msgstr "" +msgstr "Spanish (DO) / Español (DO)" #. module: base #: model:ir.model,name:base.model_workflow_activity msgid "workflow.activity" -msgstr "" +msgstr "workflow.activity" #. module: base #: view:base.language.export:0 msgid "Export Complete" -msgstr "" +msgstr "Exportación completada" #. module: base #: help:ir.ui.view_sc,res_id:0 @@ -3803,47 +3882,49 @@ msgid "" "Reference of the target resource, whose model/table depends on the 'Resource " "Name' field." msgstr "" +"Referencia al recurso destino, cuyo modelo/tabla dependa del campo 'Nombre " +"recurso'." #. module: base #: field:ir.model.fields,select_level:0 msgid "Searchable" -msgstr "" +msgstr "Búsquedas" #. module: base #: model:res.country,name:base.uy msgid "Uruguay" -msgstr "" +msgstr "Uruguay" #. module: base #: selection:base.language.install,lang:0 msgid "Finnish / Suomi" -msgstr "" +msgstr "Finlandés / Suomi" #. module: base #: view:ir.config_parameter:0 msgid "System Properties" -msgstr "" +msgstr "Propiedades del Sistema" #. module: base #: field:ir.sequence,prefix:0 msgid "Prefix" -msgstr "" +msgstr "Prefijo" #. module: base #: selection:base.language.install,lang:0 msgid "German / Deutsch" -msgstr "" +msgstr "Alemán / Deutsch" #. module: base #: view:ir.actions.server:0 msgid "Fields Mapping" -msgstr "" +msgstr "Mapeo de campos" #. module: base #: model:res.partner.title,name:base.res_partner_title_sir #: model:res.partner.title,shortcut:base.res_partner_title_sir msgid "Sir" -msgstr "" +msgstr "Sr." #. module: base #: model:ir.module.module,description:base.module_l10n_ca @@ -3857,26 +3938,34 @@ msgid "" "Canadian accounting charts and localizations.\n" " " msgstr "" +"\n" +"Este es el modulo para administrar el Ingles y Frances - Plan de Cuentas " +"Canadienses en OpenERP.\n" +"=============================================================================" +"=======\n" +"\n" +"Plan de Cuentas Canadiense y Localización.\n" +" " #. module: base #: view:base.module.import:0 msgid "Select module package to import (.zip file):" -msgstr "" +msgstr "Seleccione el paquete del módulo que quiere importar (archivo .zip):" #. module: base #: view:ir.filters:0 msgid "Personal" -msgstr "" +msgstr "Personal" #. module: base #: field:base.language.export,modules:0 msgid "Modules To Export" -msgstr "" +msgstr "Modulos a Exportar" #. module: base #: model:res.country,name:base.mt msgid "Malta" -msgstr "" +msgstr "Malta" #. module: base #: code:addons/base/ir/ir_model.py:724 @@ -3888,12 +3977,12 @@ msgstr "" #. module: base #: field:ir.actions.server,fields_lines:0 msgid "Field Mappings." -msgstr "" +msgstr "Mapeo de campos." #. module: base #: selection:res.request,priority:0 msgid "High" -msgstr "" +msgstr "Alta" #. module: base #: model:ir.module.module,description:base.module_mrp @@ -3931,6 +4020,38 @@ msgid "" "* Work Order Analysis\n" " " msgstr "" +"\n" +"Gestiona el proceso Manufacturero en OpenERP\n" +"=============================================\n" +"\n" +"El modulo de manufacturación les permite cubrir la planificación, " +"ordenación, stocks y la manufacturación o ensamblaje de productos desde " +"materias primas y componentes. Esto maneja el consumo y producción de " +"productos acorde a una lista de materiales y las operaciones necesarias en " +"maquinaria, herramientas o recursos humanos de acuerdo a las rutas.\n" +"\n" +"Soporta una integración completa y planificación de bienes stockable, " +"consumibles o servicios. Los servicios son completamente integrados con el " +"resto de el sistema. Para las instancias, usted puede ajustar un servicio de " +"subcontratación en una lista de materiales para automáticamente comprar por " +"encargo del conjunto de la producción.\n" +"\n" +"Características Claves\n" +"--------------\n" +"*Crear para Stock/Crear para Orden\n" +"*Lista de Materiales Multi-Niveles, Sin Limites\n" +"*Rutas Multi-Niveles, Sin Limites\n" +"*Rutas y Centro de Trabajo integrado con cuentas analíticas\n" +"*Calculo de Agenda Periodica \n" +"*Permite buscar listas de materiales en una estructura completa que incluye " +"hijas y lista de materiales fantasmas.\n" +"\n" +"Tablero / Reportes para MRP incluirá:\n" +"------------------------------------\n" +"*Adquisiciones en Excepción (Gráfico)\n" +"*Variación de Valor Stock\n" +"*Análisis de Orden de Trabajo\n" +" " #. module: base #: view:ir.attachment:0 @@ -3940,13 +4061,13 @@ msgstr "" #: view:ir.module.module:0 #: field:ir.module.module,description:0 msgid "Description" -msgstr "" +msgstr "Descripción" #. module: base #: model:ir.actions.act_window,name:base.action_workflow_instance_form #: model:ir.ui.menu,name:base.menu_workflow_instance msgid "Instances" -msgstr "" +msgstr "Instancias" #. module: base #: model:ir.module.module,description:base.module_purchase_requisition @@ -3960,61 +4081,69 @@ msgid "" "easily\n" "keep track and order all your purchase orders.\n" msgstr "" +"\n" +"Este modulo les permite gestionar sus requisiciones de compras.\n" +"===========================================================\n" +"\n" +"Cuando una orden de compra es creada, usted tiene la oportunidad de guardar\n" +"la requisición relacionada. Este nuevo objeto reagrupará y les permitirá " +"fácilmente\n" +"mantener el rastreo y orden de todas sus ordenes de compras.\n" #. module: base #: help:ir.mail_server,smtp_host:0 msgid "Hostname or IP of SMTP server" -msgstr "" +msgstr "Nombre de host o dirección IP del servidor SMTP" #. module: base #: model:res.country,name:base.aq msgid "Antarctica" -msgstr "" +msgstr "Antártida" #. module: base #: view:res.partner:0 msgid "Persons" -msgstr "" +msgstr "Personas" #. module: base #: view:base.language.import:0 msgid "_Import" -msgstr "" +msgstr "_Importar" #. module: base #: field:res.users,action_id:0 msgid "Home Action" -msgstr "" +msgstr "Acción inicial" #. module: base #: field:res.lang,grouping:0 msgid "Separator Format" -msgstr "" +msgstr "Separador de Formato" #. module: base #: model:ir.module.module,shortdesc:base.module_report_webkit msgid "Webkit Report Engine" -msgstr "" +msgstr "Motor de informes Webkit" #. module: base #: model:ir.ui.menu,name:base.next_id_9 msgid "Database Structure" -msgstr "" +msgstr "Estructura de la base de datos" #. module: base #: model:ir.actions.act_window,name:base.action_partner_mass_mail msgid "Mass Mailing" -msgstr "" +msgstr "Email Masivo" #. module: base #: model:res.country,name:base.yt msgid "Mayotte" -msgstr "" +msgstr "Mayotte" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_todo msgid "Tasks on CRM" -msgstr "" +msgstr "Tareas del CRM" #. module: base #: help:ir.model.fields,relation_field:0 @@ -4022,27 +4151,29 @@ msgid "" "For one2many fields, the field on the target model that implement the " "opposite many2one relationship" msgstr "" +"Para campos one2many, el campo del modelo destino que implementa la relación " +"inversa many2one." #. module: base #: view:ir.rule:0 msgid "Interaction between rules" -msgstr "" +msgstr "Interacción entre reglas" #. module: base #: field:res.company,rml_footer:0 #: field:res.company,rml_footer_readonly:0 msgid "Report Footer" -msgstr "" +msgstr "Pie del informe" #. module: base #: selection:res.lang,direction:0 msgid "Right-to-Left" -msgstr "" +msgstr "Derecha-a-izquierda" #. module: base #: model:res.country,name:base.sx msgid "Sint Maarten (Dutch part)" -msgstr "" +msgstr "Sint Maarten (parte holandesa)" #. module: base #: view:ir.actions.act_window:0 @@ -4050,45 +4181,46 @@ msgstr "" #: view:ir.filters:0 #: model:ir.model,name:base.model_ir_filters msgid "Filters" -msgstr "" +msgstr "Filtros" #. module: base #: model:ir.actions.act_window,name:base.ir_cron_act #: view:ir.cron:0 #: model:ir.ui.menu,name:base.menu_ir_cron_act msgid "Scheduled Actions" -msgstr "" +msgstr "Acciones programadas" #. module: base #: model:ir.module.category,name:base.module_category_reporting #: model:ir.ui.menu,name:base.menu_lunch_reporting #: model:ir.ui.menu,name:base.menu_reporting msgid "Reporting" -msgstr "" +msgstr "Informes" #. module: base #: field:res.partner,title:0 #: field:res.partner.address,title:0 #: field:res.partner.title,name:0 msgid "Title" -msgstr "" +msgstr "Título" #. module: base #: help:ir.property,res_id:0 msgid "If not set, acts as a default value for new resources" msgstr "" +"Si no se especifica actúa como valor por defecto para los nuevos recursos." #. module: base #: code:addons/orm.py:4213 #, python-format msgid "Recursivity Detected." -msgstr "" +msgstr "Se ha detectado recursividad." #. module: base #: code:addons/base/module/module.py:345 #, python-format msgid "Recursion error in modules dependencies !" -msgstr "" +msgstr "¡Error de recurrencia entre dependencias de módulos!" #. module: base #: model:ir.module.module,description:base.module_analytic_user_function @@ -4116,28 +4248,28 @@ msgstr "" #. module: base #: view:ir.model:0 msgid "Create a Menu" -msgstr "" +msgstr "Crear un menú" #. module: base #: model:res.country,name:base.tg msgid "Togo" -msgstr "" +msgstr "Togo" #. module: base #: field:ir.actions.act_window,res_model:0 #: field:ir.actions.client,res_model:0 msgid "Destination Model" -msgstr "" +msgstr "Modelo de Destino" #. module: base #: selection:ir.sequence,implementation:0 msgid "Standard" -msgstr "" +msgstr "Estándar" #. module: base #: model:res.country,name:base.ru msgid "Russian Federation" -msgstr "" +msgstr "Federación Rusa" #. module: base #: selection:base.language.install,lang:0 @@ -4150,12 +4282,12 @@ msgstr "" #: code:addons/orm.py:3870 #, python-format msgid "Access Denied" -msgstr "" +msgstr "Acceso denegado" #. module: base #: field:res.company,name:0 msgid "Company Name" -msgstr "" +msgstr "Nombre de la compañía" #. module: base #: code:addons/orm.py:2811 @@ -4164,32 +4296,36 @@ msgid "" "Invalid value for reference field \"%s.%s\" (last part must be a non-zero " "integer): \"%s\"" msgstr "" +"Valor no válido para el campo de referencia \"%s.%s\" (la última parte debe " +"ser un entero distinto de cero): \"%s\"" #. module: base #: model:ir.actions.act_window,name:base.action_country #: model:ir.ui.menu,name:base.menu_country_partner msgid "Countries" -msgstr "" +msgstr "Países" #. module: base #: selection:ir.translation,type:0 msgid "RML (deprecated - use Report)" -msgstr "" +msgstr "RML (obsoleto - usar Informe)" #. module: base #: sql_constraint:ir.translation:0 msgid "Language code of translation item must be among known languages" msgstr "" +"El código de idioma del elemento de traducción debe estar dentro de los " +"lenguajes conocidos" #. module: base #: view:ir.rule:0 msgid "Record rules" -msgstr "" +msgstr "Reglas de registro" #. module: base #: view:ir.actions.todo:0 msgid "Search Actions" -msgstr "" +msgstr "Acciones de búsqueda" #. module: base #: model:ir.module.module,description:base.module_base_calendar @@ -4206,11 +4342,23 @@ msgid "" "If you need to manage your meetings, you should install the CRM module.\n" " " msgstr "" +"\n" +"Esta es una característica completa del calendario del sistema.\n" +"======================================================\n" +"\n" +"Esto Soporta:\n" +"------------\n" +" - Calendario de Eventos\n" +" - Eventos Recurrentes\n" +"\n" +"Si usted necesita gestionar sus reuniones, usted debería instalar el Modulo " +"CRM.\n" +" " #. module: base #: model:res.country,name:base.je msgid "Jersey" -msgstr "" +msgstr "Jersey" #. module: base #: model:ir.module.module,description:base.module_auth_anonymous @@ -4220,51 +4368,55 @@ msgid "" "==================================\n" " " msgstr "" +"\n" +"Permite el acceso anónimo a OpenERP.\n" +"====================================\n" +" " #. module: base #: view:res.lang:0 msgid "12. %w ==> 5 ( Friday is the 6th day)" -msgstr "" +msgstr "12. %w ==> 5 (viernes es el 6º día)" #. module: base #: constraint:res.partner.category:0 msgid "Error ! You can not create recursive categories." -msgstr "" +msgstr "¡Error! No puede crear categorías recursivas." #. module: base #: view:res.lang:0 msgid "%x - Appropriate date representation." -msgstr "" +msgstr "%x - Representación apropiada de fecha." #. module: base #: view:res.partner:0 msgid "Tag" -msgstr "" +msgstr "Etiqueta" #. module: base #: view:res.lang:0 msgid "%d - Day of the month [01,31]." -msgstr "" +msgstr "%d - Día del mes [01,31]." #. module: base #: model:res.country,name:base.tj msgid "Tajikistan" -msgstr "" +msgstr "Tajikistán" #. module: base #: selection:ir.module.module,license:0 msgid "GPL-2 or later version" -msgstr "" +msgstr "GPL-2 o versión posterior" #. module: base #: selection:workflow.activity,kind:0 msgid "Stop All" -msgstr "" +msgstr "Detener todo" #. module: base #: field:res.company,paper_format:0 msgid "Paper Format" -msgstr "" +msgstr "Formato de papel" #. module: base #: model:ir.module.module,description:base.module_note_pad @@ -4277,6 +4429,13 @@ msgid "" "invite.\n" "\n" msgstr "" +"\n" +"Este modulo actualiza memos dentro de OpenERP para usar un pad externo\n" +"===================================================================\n" +"\n" +"Se usa para actualizar sus memos de texto en tiempo real con los siguientes " +"usuarios que usted invite.\n" +"\n" #. module: base #: code:addons/base/module/module.py:609 @@ -4285,27 +4444,29 @@ msgid "" "Can not create the module file:\n" " %s" msgstr "" +"No se puede crear el archivo del módulo:\n" +" %s" #. module: base #: model:res.country,name:base.sk msgid "Slovakia" -msgstr "" +msgstr "Eslovaquia" #. module: base #: model:res.country,name:base.nr msgid "Nauru" -msgstr "" +msgstr "Nauru" #. module: base #: code:addons/base/res/res_company.py:152 #, python-format msgid "Reg" -msgstr "" +msgstr "Reg" #. module: base #: model:ir.model,name:base.model_ir_property msgid "ir.property" -msgstr "" +msgstr "ir.property" #. module: base #: selection:ir.actions.act_window,view_type:0 @@ -4313,12 +4474,12 @@ msgstr "" #: view:ir.ui.view:0 #: selection:ir.ui.view,type:0 msgid "Form" -msgstr "" +msgstr "Formulario" #. module: base #: model:res.country,name:base.pf msgid "Polynesia (French)" -msgstr "" +msgstr "Polinesia (Francesa)" #. module: base #: model:ir.module.module,description:base.module_l10n_it @@ -4330,16 +4491,20 @@ msgid "" "Italian accounting chart and localization.\n" " " msgstr "" +"\n" +"Plan de cuentas y localización italiana.\n" +"==============================\n" +" " #. module: base #: model:res.country,name:base.me msgid "Montenegro" -msgstr "" +msgstr "Montenegro" #. module: base #: model:ir.module.module,shortdesc:base.module_fetchmail msgid "Email Gateway" -msgstr "" +msgstr "Pasarela de e-mail" #. module: base #: code:addons/base/ir/ir_mail_server.py:466 @@ -4348,22 +4513,24 @@ msgid "" "Mail delivery failed via SMTP server '%s'.\n" "%s: %s" msgstr "" +"La entrega de correo falló vía el servidor SMTP '%s'.\n" +"%s: %s" #. module: base #: model:res.country,name:base.tk msgid "Tokelau" -msgstr "" +msgstr "Tokelauano" #. module: base #: view:ir.cron:0 #: view:ir.module.module:0 msgid "Technical Data" -msgstr "" +msgstr "Datos técnicos" #. module: base #: model:ir.model,name:base.model_ir_ui_view msgid "ir.ui.view" -msgstr "" +msgstr "ir.ui.view" #. module: base #: model:ir.module.module,description:base.module_account_bank_statement_extensions @@ -4387,73 +4554,93 @@ msgid "" " and iban account numbers\n" " " msgstr "" +"\n" +"Modulo que extiende el objeto estándar account_bank_statement_line para " +"probar el soporte e-banking.\n" +"=============================================================================" +"=======================\n" +"\n" +"Este Modulo Agrega:\n" +"--------------\n" +" - Fecha de Divisa\n" +" - Pagos por Lotes\n" +" - Trazabilidad de cambios a lineas declaradas de banco\n" +" - Vistas declararas de Lineas de Banco\n" +" - Reporte de Balances de Declaraciones de Banco\n" +" - mejoras en el rendimiento para la importación digital del estado de " +"cuenta bancario (vía \n" +" 'e-banking_import' contexto de bandera)\n" +" - name_search en res.partner.bank mejorado para permitir la búsqueda en " +"el Banco \n" +" y el número de cuenta de IBAN\n" +" " #. module: base #: selection:ir.module.module,state:0 #: selection:ir.module.module.dependency,state:0 msgid "To be upgraded" -msgstr "" +msgstr "Para ser actualizado" #. module: base #: model:res.country,name:base.ly msgid "Libya" -msgstr "" +msgstr "Libia" #. module: base #: model:res.country,name:base.cf msgid "Central African Republic" -msgstr "" +msgstr "República Centro Africana" #. module: base #: model:res.country,name:base.li msgid "Liechtenstein" -msgstr "" +msgstr "Liechtenstein" #. module: base #: model:ir.module.module,shortdesc:base.module_project_issue_sheet msgid "Timesheet on Issues" -msgstr "" +msgstr "Parte de horas para las incidencias" #. module: base #: model:res.partner.title,name:base.res_partner_title_ltd msgid "Ltd" -msgstr "" +msgstr "Ltd" #. module: base #: field:res.partner,ean13:0 msgid "EAN13" -msgstr "" +msgstr "EAN13" #. module: base #: code:addons/orm.py:2247 #, python-format msgid "Invalid Architecture!" -msgstr "" +msgstr "¡Estructura no válida!" #. module: base #: model:res.country,name:base.pt msgid "Portugal" -msgstr "" +msgstr "Portugal" #. module: base #: model:ir.module.module,shortdesc:base.module_share msgid "Share any Document" -msgstr "" +msgstr "Compartir cualquier documento" #. module: base #: model:ir.module.module,summary:base.module_crm msgid "Leads, Opportunities, Phone Calls" -msgstr "" +msgstr "Conduce, Oportunidades, Llamadas Teléfono" #. module: base #: view:res.lang:0 msgid "6. %d, %m ==> 05, 12" -msgstr "" +msgstr "6. %d, %m ==> 05, 12" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_it msgid "Italy - Accounting" -msgstr "" +msgstr "Italia - Contabilidad" #. module: base #: field:ir.actions.act_url,help:0 @@ -4465,7 +4652,7 @@ msgstr "" #: field:ir.actions.server,help:0 #: field:ir.actions.wizard,help:0 msgid "Action description" -msgstr "" +msgstr "Descripción de la acción" #. module: base #: model:ir.module.module,description:base.module_l10n_ma @@ -4491,6 +4678,9 @@ msgid "" "its dependencies are satisfied. If the module has no dependency, it is " "always installed." msgstr "" +"Un módulo auto-instalable se instala automáticamente por el sistema cuando " +"todas sus dependencias han sido satisfechas. Si el módulo no tiene " +"dependencias, será instalado siempre." #. module: base #: model:ir.actions.act_window,name:base.res_lang_act_window @@ -4498,7 +4688,7 @@ msgstr "" #: model:ir.ui.menu,name:base.menu_res_lang_act_window #: view:res.lang:0 msgid "Languages" -msgstr "" +msgstr "Idiomas" #. module: base #: model:ir.module.module,description:base.module_point_of_sale @@ -4528,16 +4718,41 @@ msgid "" "* Refund previous sales\n" " " msgstr "" +"\n" +"Rápido y Fácil proceso de ventas.\n" +"=================================\n" +"\n" +"Este modulo les permite gestionar sus tiendas de ventas muy fácilmente con " +"una completa interfaz táctil web.\n" +"Esto es compatible con todas las Tabletas y las iPad's ofreciendo múltiples " +"métodos de pago. \n" +"\n" +"La selección de productos puede ser hecha en varias formas: \n" +"\n" +"*Usando un lector de código de barra\n" +"*Navegando a través de las categorías de productos o vía una búsqueda de " +"texto.\n" +"\n" +"Características Principales\n" +"------------------\n" +"*Rápida codificación de las ventas\n" +"*Elija un método (la vía rápida) o dividir el pago entre varios métodos de " +"pago\n" +"*Calculo de la cantidad de dinero a regresar\n" +"*Crear y confirmar la lista de recolección automática\n" +"*Le Permite al usuario crear una factura automática\n" +"*Reembolso de ventas anteriores\n" +" " #. module: base #: model:ir.module.category,name:base.module_category_localization_account_charts msgid "Account Charts" -msgstr "" +msgstr "Planes de cuentas" #. module: base #: model:ir.ui.menu,name:base.menu_event_main msgid "Events Organization" -msgstr "" +msgstr "Organización de Envetos" #. module: base #: model:ir.actions.act_window,name:base.action_partner_customer_form @@ -4545,27 +4760,27 @@ msgstr "" #: model:ir.ui.menu,name:base.menu_partner_form #: view:res.partner:0 msgid "Customers" -msgstr "" +msgstr "Clientes" #. module: base #: model:res.country,name:base.au msgid "Australia" -msgstr "" +msgstr "Australia" #. module: base #: report:ir.module.reference:0 msgid "Menu :" -msgstr "" +msgstr "Menú :" #. module: base #: selection:ir.model.fields,state:0 msgid "Base Field" -msgstr "" +msgstr "Campo base" #. module: base #: model:ir.module.category,name:base.module_category_managing_vehicles_and_contracts msgid "Managing vehicles and contracts" -msgstr "" +msgstr "Gestión de Vehiculos y Contratos" #. module: base #: model:ir.module.module,description:base.module_base_setup @@ -4580,62 +4795,70 @@ msgid "" "\n" " " msgstr "" +"\n" +"Módulo que permite configurar el sistema cuando se instala una nueva base de " +"datos.\n" +"===================================================================\n" +"\n" +"Muestra una lista de aplicaciones para instalar.\n" +"\n" +" " #. module: base #: model:ir.model,name:base.model_res_config msgid "res.config" -msgstr "" +msgstr "res.config" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_pl msgid "Poland - Accounting" -msgstr "" +msgstr "Polonia - Contabilidad" #. module: base #: view:ir.cron:0 msgid "Action to Trigger" -msgstr "" +msgstr "Acción a activar" #. module: base #: field:ir.model.constraint,name:0 #: selection:ir.translation,type:0 msgid "Constraint" -msgstr "" +msgstr "Restricción" #. module: base #: selection:ir.values,key:0 #: selection:res.partner,type:0 #: selection:res.partner.address,type:0 msgid "Default" -msgstr "" +msgstr "Por defecto" #. module: base #: model:ir.module.module,summary:base.module_lunch msgid "Lunch Order, Meal, Food" -msgstr "" +msgstr "Orden de Almuerso, Comida, Alimento" #. module: base #: view:ir.model.fields:0 #: field:ir.model.fields,required:0 #: field:res.partner.bank.type.field,required:0 msgid "Required" -msgstr "" +msgstr "Requerido" #. module: base #: model:res.country,name:base.ro msgid "Romania" -msgstr "" +msgstr "Rumanía" #. module: base #: field:ir.module.module,summary:0 #: field:res.request.history,name:0 msgid "Summary" -msgstr "" +msgstr "Resumen" #. module: base #: model:ir.module.category,name:base.module_category_hidden_dependency msgid "Dependency" -msgstr "" +msgstr "Dependencia" #. module: base #: model:ir.module.module,description:base.module_portal @@ -4659,16 +4882,34 @@ msgid "" "very handy when used in combination with the module 'share'.\n" " " msgstr "" +"\n" +"Personaliza el acceso a su base de datos de OpenERP a usuarios externos " +"mediante la creación de portales.\n" +"=============================================================================" +"=====================\n" +"Un portal define un menú de usuario especifico y derechos de acceso para sus " +"miembros. Este\n" +"menú puede ser visto por los miembros del portal, usuarios anónimos y otros " +"usuarios que\n" +"tienen el acceso a características técnicas (por ejemplo: El Administrado).\n" +"También, cada miembro del portal esta enlazado a un socio especifico.\n" +"\n" +"El modulo también asocia grupos de usuarios al portal de usuarios (agregando " +"un grupo en\n" +"el portal automáticamente los agrega al portal de usuarios, etc). Esa " +"característica es\n" +"muy útil cuando se usa en combinación con el modulo 'Compartir'.\n" +" " #. module: base #: field:multi_company.default,expression:0 msgid "Expression" -msgstr "" +msgstr "Expresión" #. module: base #: view:res.company:0 msgid "Header/Footer" -msgstr "" +msgstr "Cabecera / Pie de página" #. module: base #: help:ir.mail_server,sequence:0 @@ -4676,11 +4917,14 @@ msgid "" "When no specific mail server is requested for a mail, the highest priority " "one is used. Default priority is 10 (smaller number = higher priority)" msgstr "" +"Cuando para un correo no se especifica un servidor de correo en concreto, se " +"usa el de mayor prioridad. La prioridad por defecto es 10 (número más " +"pequeño = más prioridad)" #. module: base #: field:res.partner,parent_id:0 msgid "Related Company" -msgstr "" +msgstr "Compañías Relacionadas" #. module: base #: help:ir.actions.act_url,help:0 @@ -4695,52 +4939,54 @@ msgid "" "Optional help text for the users with a description of the target view, such " "as its usage and purpose." msgstr "" +"Texto de ayuda opcional para los usuarios con una descripción de la vista " +"destino, como su uso y su propósito." #. module: base #: model:res.country,name:base.va msgid "Holy See (Vatican City State)" -msgstr "" +msgstr "Santa Sede (Ciudad Estado del Vaticano)" #. module: base #: field:base.module.import,module_file:0 msgid "Module .ZIP file" -msgstr "" +msgstr "Archivo .ZIP del módulo" #. module: base #: model:res.partner.category,name:base.res_partner_category_17 msgid "Telecom sector" -msgstr "" +msgstr "Sector de telecomunicaciones" #. module: base #: field:workflow.transition,trigger_model:0 msgid "Trigger Object" -msgstr "" +msgstr "Objeto del disparo" #. module: base #: sql_constraint:ir.sequence.type:0 msgid "`code` must be unique." -msgstr "" +msgstr "'código' debe ser único." #. module: base #: model:ir.module.module,shortdesc:base.module_knowledge msgid "Knowledge Management System" -msgstr "" +msgstr "Sistema de Gestión del Conocimiento" #. module: base #: view:workflow.activity:0 #: field:workflow.activity,in_transitions:0 msgid "Incoming Transitions" -msgstr "" +msgstr "Transiciones entrantes" #. module: base #: field:ir.values,value_unpickle:0 msgid "Default value or action reference" -msgstr "" +msgstr "Valor por defecto o referencia de acción" #. module: base #: model:res.country,name:base.sr msgid "Suriname" -msgstr "" +msgstr "Surinam" #. module: base #: model:ir.module.module,description:base.module_account_sequence @@ -4760,11 +5006,27 @@ msgid "" " * Number Padding\n" " " msgstr "" +"\n" +"Este modulo mantiene secuencias de números internas para entradas de " +"cuentas.\n" +"=============================================================================" +"=\n" +"\n" +"Les permite configurar de secuencias de cuentas para darles mantenimiento. \n" +"\n" +"Usted puede personalizar los siguientes atributos de la secuencia:\n" +"---------------------------------------------------------\n" +" *Prefijo\n" +" *Sufijo\n" +" *Proximo Número\n" +" *Incremento de Número\n" +" *Número de Relleno\n" +" " #. module: base #: model:ir.module.module,shortdesc:base.module_project_timesheet msgid "Bill Time on Tasks" -msgstr "" +msgstr "Facturar tiempo en tareas" #. module: base #: model:ir.module.category,name:base.module_category_marketing @@ -4772,12 +5034,12 @@ msgstr "" #: model:ir.ui.menu,name:base.marketing_menu #: model:ir.ui.menu,name:base.menu_report_marketing msgid "Marketing" -msgstr "" +msgstr "Mercadeo" #. module: base #: view:res.partner.bank:0 msgid "Bank account" -msgstr "" +msgstr "Cuenta bancaria" #. module: base #: model:ir.module.module,description:base.module_web_calendar @@ -4787,53 +5049,57 @@ msgid "" "==========================\n" "\n" msgstr "" +"\n" +"Vista de Calendario Web OpenERP.\n" +"===============================\n" +"\n" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (HN) / Español (HN)" -msgstr "" +msgstr "Español (HN) / Español (HN)" #. module: base #: view:ir.sequence.type:0 msgid "Sequence Type" -msgstr "" +msgstr "Tipo de secuencia" #. module: base #: view:base.language.export:0 msgid "Unicode/UTF-8" -msgstr "" +msgstr "Unicode/UTF-8" #. module: base #: selection:base.language.install,lang:0 msgid "Hindi / हिंदी" -msgstr "" +msgstr "Hindi / हिंदी" #. module: base #: view:base.language.install:0 #: model:ir.actions.act_window,name:base.action_view_base_language_install #: model:ir.ui.menu,name:base.menu_view_base_language_install msgid "Load a Translation" -msgstr "" +msgstr "Cargar una Traducción" #. module: base #: field:ir.module.module,latest_version:0 msgid "Installed Version" -msgstr "" +msgstr "Versión instalada" #. module: base #: field:ir.module.module,license:0 msgid "License" -msgstr "" +msgstr "Licencia" #. module: base #: field:ir.attachment,url:0 msgid "Url" -msgstr "" +msgstr "Url" #. module: base #: selection:ir.translation,type:0 msgid "SQL Constraint" -msgstr "" +msgstr "Restricción SQL" #. module: base #: help:ir.ui.menu,groups_id:0 @@ -4842,6 +5108,9 @@ msgid "" "groups. If this field is empty, OpenERP will compute visibility based on the " "related object's read access." msgstr "" +"Si tiene grupos, la visibilidad del menú se basará en esos grupos. Si el " +"campo está vacío, OpenERP otorgará la visibilidad basándose en los permisos " +"de lectura de los objetos asociados." #. module: base #: field:ir.actions.server,srcmodel_id:0 @@ -4853,7 +5122,7 @@ msgstr "" #: field:ir.model.relation,model:0 #: view:ir.values:0 msgid "Model" -msgstr "" +msgstr "Modelo" #. module: base #: view:base.language.install:0 @@ -4861,6 +5130,8 @@ msgid "" "The selected language has been successfully installed. You must change the " "preferences of the user and open a new menu to view the changes." msgstr "" +"El idioma seleccionado ha sido instalado con éxito. Deberá cambiar las " +"preferencias del usuario y abrir un nuevo menú para apreciar los cambios." #. module: base #: field:ir.actions.act_window.view,view_id:0 @@ -4868,7 +5139,7 @@ msgstr "" #: selection:ir.translation,type:0 #: view:ir.ui.view:0 msgid "View" -msgstr "" +msgstr "Vista" #. module: base #: model:ir.module.module,description:base.module_crm_partner_assign @@ -4888,21 +5159,36 @@ msgid "" "You can also use the geolocalization without using the GPS coordinates.\n" " " msgstr "" +"\n" +"Este es el modulo usado por OpenERP SA para redirigir clientes a sus socios, " +"basados en geolocalización.\n" +"=============================================================================" +"======================\n" +"\n" +"Usted puede geolocalizar sus oportunidades mediante el uso de este modulo.\n" +"\n" +"Use la geolocalización cuando se asignen oportunidades a los socios.\n" +"Determine las coordenadas GPS de acuerdo a la dirección de el socio.\n" +"\n" +"Los socios mas apropiados pueden ser asignados.\n" +"Usted puede también usar la geolocalización sin el uso de las coordenadas de " +"GPS.\n" +" " #. module: base #: view:ir.actions.act_window:0 msgid "Open a Window" -msgstr "" +msgstr "Abrir una ventana" #. module: base #: model:res.country,name:base.gq msgid "Equatorial Guinea" -msgstr "" +msgstr "Guinea ecuatorial" #. module: base #: model:ir.module.module,shortdesc:base.module_web_api msgid "OpenERP Web API" -msgstr "" +msgstr "Aplicación Web OpenERP" #. module: base #: model:ir.module.module,description:base.module_l10n_fr_rib @@ -4946,22 +5232,58 @@ msgid "" "Accounts in OpenERP: the first with the type 'RIB', the second with the type " "'IBAN'. \n" msgstr "" +"\n" +"Este modulo deja a los usuarios entrar a los detalles del banco de Socios en " +"el formato RIB (Estándar Francés para los detalles de bancos)\n" +"=============================================================================" +"=========================\n" +"\n" +"Las Cuentas de Banco RIB pueden ser entradas en la pestaña de " +"\"Contabilidad\" de el formulario de el Socio mediante la especificación de " +"cuenta tipo \"RIB\". \n" +"\n" +"Los cuatros campos estándares RIB se convertirán en mandatarios:\n" +"------------------------------------------------------ \n" +" - Código de Banco\n" +" - Código de Oficina\n" +" - Número de Cuenta\n" +" - Clave RIB\n" +" \n" +"Como una medida de seguridad, OpenERP verificará las claves RIB cuando " +"quiera que un RIB sea guardado, y \n" +"se rechazará al fichero de datos si la clave es incorrecta. Por favor tenga " +"en mente que esto solo puede suceder cuando el usuario presione el botón " +"'Guardar', por ejemplo en el Formulario de Socios. Desde cada cuenta " +"bancaria debe relacionar a un banco, los usuarios deberán entrar los códigos " +"de banco RIB en el Formulario de Banco - esto será el pre-llenado el código " +"RIB de el banco cuando ellos seleccionen el Banco. Para hacer esto más " +"fácil, este modulo también les permitirá a los usuarios encontrar Bancos " +"usando sus códigos RIB.\n" +"\n" +"El modulo base_iban puede ser un agregado útil a este modulo, porque los " +"bancos Franceses\n" +"ahora están progresivamente adoptando el formato IBAN internacional en vez " +"de el Formato RIB.\n" +"Los códigos RIB y IBAN para una sola cuenta puede ser entrado mediante la " +"grabación de dos Cuentas de\n" +"Bancos en OpenERP: La primera con el tipo 'RIB', la segunda con el tipo " +"'IBAN'. \n" #. module: base #: model:ir.model,name:base.model_ir_actions_report_xml #: selection:ir.ui.menu,action:0 msgid "ir.actions.report.xml" -msgstr "" +msgstr "ir.actions.report.xml" #. module: base #: model:res.country,name:base.ps msgid "Palestinian Territory, Occupied" -msgstr "" +msgstr "Territorio Palestino Ocupado" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ch msgid "Switzerland - Accounting" -msgstr "" +msgstr "Suiza - Contabilidad" #. module: base #: field:res.bank,zip:0 @@ -4970,18 +5292,18 @@ msgstr "" #: field:res.partner.address,zip:0 #: field:res.partner.bank,zip:0 msgid "Zip" -msgstr "" +msgstr "C.P." #. module: base #: view:ir.module.module:0 #: field:ir.module.module,author:0 msgid "Author" -msgstr "" +msgstr "Autor" #. module: base #: view:res.lang:0 msgid "%c - Appropriate date and time representation." -msgstr "" +msgstr "%c - Representación apropiada de fecha y hora." #. module: base #: code:addons/base/res/res_config.py:388 @@ -4991,31 +5313,34 @@ msgid "" "\n" "Click 'Continue' and enjoy your OpenERP experience..." msgstr "" +"Su base de datos está ahora completamente configurada.\n" +"\n" +"Haga clic en 'Continuar' y disfrute de su experiencia OpenERP ..." #. module: base #: model:ir.module.category,description:base.module_category_marketing msgid "Helps you manage your marketing campaigns step by step." -msgstr "" +msgstr "Le ayuda a gestionar sus campañas de marketing paso a paso." #. module: base #: selection:base.language.install,lang:0 msgid "Hebrew / עִבְרִי" -msgstr "" +msgstr "Hebreo / עִבְרִי" #. module: base #: model:res.country,name:base.bo msgid "Bolivia" -msgstr "" +msgstr "Bolivia" #. module: base #: model:res.country,name:base.gh msgid "Ghana" -msgstr "" +msgstr "Ghana" #. module: base #: field:res.lang,direction:0 msgid "Direction" -msgstr "" +msgstr "Dirección" #. module: base #: view:ir.actions.act_window:0 @@ -5028,34 +5353,35 @@ msgstr "" #: model:ir.ui.menu,name:base.menu_action_ui_view #: view:ir.ui.view:0 msgid "Views" -msgstr "" +msgstr "Vistas" #. module: base #: view:res.groups:0 #: field:res.groups,rule_groups:0 msgid "Rules" -msgstr "" +msgstr "Reglas" #. module: base #: field:ir.mail_server,smtp_host:0 msgid "SMTP Server" -msgstr "" +msgstr "Servidor SMTP" #. module: base #: code:addons/base/module/module.py:299 #, python-format msgid "You try to remove a module that is installed or will be installed" msgstr "" +"Está tratando de eliminar un módulo que está instalado o será instalado" #. module: base #: view:base.module.upgrade:0 msgid "The selected modules have been updated / installed !" -msgstr "" +msgstr "¡Los módulos seleccionados han sido actualizados / instalados !" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (PR) / Español (PR)" -msgstr "" +msgstr "Español (PR) / Español (PR)" #. module: base #: model:ir.module.module,description:base.module_crm_profiling @@ -5078,11 +5404,30 @@ msgid "" "since it's the same which has been renamed.\n" " " msgstr "" +"\n" +"Este modulo permite a los usuarios realizar la segmentación dentro de los " +"socios.\n" +"=============================================================================" +"\n" +"\n" +"Estos usan los criterios de perfiles desde el modulo de segmentación " +"anterior y probar este. \n" +"Gracias al nuevo concepto de cuestionarios. Usted ahora puede reagrupar " +"preguntas en un \n" +"cuestionario y directamente usarlo sobre un socio.\n" +"\n" +"Esto también ha sido fusionado con la herramienta de segmentación CRM y SRM " +"anterior porque ellos \n" +"estaban superponiendo.\n" +"\n" +" **Nota:** Este modulo no es compatible con el modulo de segmentación, ya " +"que es el mismo al que se le ha cambiado el nombre.\n" +" " #. module: base #: model:res.country,name:base.gt msgid "Guatemala" -msgstr "" +msgstr "Guatemala" #. module: base #: help:ir.actions.server,message:0 @@ -5091,18 +5436,21 @@ msgid "" "the same values as those available in the condition field, e.g. `Dear [[ " "object.partner_id.name ]]`" msgstr "" +"Contenido del e-mail, que debe contener expresiones encerradas en dobles " +"corchetes basadas en los mismos valores disponibles en el campo condición. " +"Por ejemplo: 'Estimado [[ object.partner_id.name ]]'" #. module: base #: model:ir.actions.act_window,name:base.action_workflow_form #: model:ir.ui.menu,name:base.menu_workflow #: model:ir.ui.menu,name:base.menu_workflow_root msgid "Workflows" -msgstr "" +msgstr "Flujos de Trabajo" #. module: base #: model:ir.ui.menu,name:base.next_id_73 msgid "Purchase" -msgstr "" +msgstr "Compra" #. module: base #: selection:base.language.install,lang:0 @@ -5112,33 +5460,33 @@ msgstr "" #. module: base #: model:ir.model,name:base.model_ir_needaction_mixin msgid "ir.needaction_mixin" -msgstr "" +msgstr "ir.needaction_mixin" #. module: base #: view:base.language.export:0 msgid "This file was generated using the universal" -msgstr "" +msgstr "Este archivo fue generado usando el universal" #. module: base #: model:res.partner.category,name:base.res_partner_category_7 msgid "IT Services" -msgstr "" +msgstr "Servicios TI" #. module: base #: model:ir.module.category,name:base.module_category_specific_industry_applications msgid "Specific Industry Applications" -msgstr "" +msgstr "Aplicaciones específicas de la industria" #. module: base #: model:ir.module.module,shortdesc:base.module_google_docs msgid "Google Docs integration" -msgstr "" +msgstr "Documentos Integrados de Google" #. module: base #: code:addons/base/ir/ir_fields.py:328 #, python-format msgid "name" -msgstr "" +msgstr "nombre" #. module: base #: model:ir.module.module,description:base.module_mrp_operations @@ -5179,22 +5527,22 @@ msgstr "" #. module: base #: view:res.config.installer:0 msgid "Skip" -msgstr "" +msgstr "Saltar" #. module: base #: model:ir.module.module,shortdesc:base.module_event_sale msgid "Events Sales" -msgstr "" +msgstr "Eventos de Ventas" #. module: base #: model:res.country,name:base.ls msgid "Lesotho" -msgstr "" +msgstr "Lesoto" #. module: base #: view:base.language.export:0 msgid ", or your preferred text editor" -msgstr "" +msgstr ", O usted preferiría un editor de texto?" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_partner_assign @@ -5204,64 +5552,64 @@ msgstr "" #. module: base #: model:res.country,name:base.ke msgid "Kenya" -msgstr "" +msgstr "Kenia" #. module: base #: model:ir.actions.act_window,name:base.action_translation #: model:ir.ui.menu,name:base.menu_action_translation msgid "Translated Terms" -msgstr "" +msgstr "Términos traducidos" #. module: base #: selection:base.language.install,lang:0 msgid "Abkhazian / аҧсуа" -msgstr "" +msgstr "Abkhazian / аҧсуа" #. module: base #: view:base.module.configuration:0 msgid "System Configuration Done" -msgstr "" +msgstr "Configuración del sistema realizada" #. module: base #: code:addons/orm.py:1540 #, python-format msgid "Error occurred while validating the field(s) %s: %s" -msgstr "" +msgstr "Ha ocurrido un error mientras se validaban los campo(s) %s: %s" #. module: base #: view:ir.property:0 msgid "Generic" -msgstr "" +msgstr "Genérico" #. module: base #: model:ir.module.module,shortdesc:base.module_document_ftp msgid "Shared Repositories (FTP)" -msgstr "" +msgstr "Repositorios compartidos (FTP)" #. module: base #: model:res.country,name:base.sm msgid "San Marino" -msgstr "" +msgstr "San Marino" #. module: base #: model:res.country,name:base.bm msgid "Bermuda" -msgstr "" +msgstr "Bermudas" #. module: base #: model:res.country,name:base.pe msgid "Peru" -msgstr "" +msgstr "Perú" #. module: base #: selection:ir.model.fields,on_delete:0 msgid "Set NULL" -msgstr "" +msgstr "Establecer a NULL" #. module: base #: view:res.users:0 msgid "Save" -msgstr "" +msgstr "Grabar" #. module: base #: field:ir.actions.report.xml,report_xml:0 @@ -5271,23 +5619,23 @@ msgstr "" #. module: base #: model:res.country,name:base.bj msgid "Benin" -msgstr "" +msgstr "Benín" #. module: base #: model:ir.actions.act_window,name:base.action_res_partner_bank_type_form #: model:ir.ui.menu,name:base.menu_action_res_partner_bank_typeform msgid "Bank Account Types" -msgstr "" +msgstr "Tipos de cuentas bancarias" #. module: base #: help:ir.sequence,suffix:0 msgid "Suffix value of the record for the sequence" -msgstr "" +msgstr "Valor del sufijo del registro para la secuencia." #. module: base #: help:ir.mail_server,smtp_user:0 msgid "Optional username for SMTP authentication" -msgstr "" +msgstr "Nombre de usuario opcional para la autenticación SMTP" #. module: base #: model:ir.model,name:base.model_ir_actions_actions @@ -5297,18 +5645,18 @@ msgstr "" #. module: base #: selection:ir.model.fields,select_level:0 msgid "Not Searchable" -msgstr "" +msgstr "No puede ser buscado" #. module: base #: view:ir.config_parameter:0 #: field:ir.config_parameter,key:0 msgid "Key" -msgstr "" +msgstr "Clave" #. module: base #: field:res.company,rml_header:0 msgid "RML Header" -msgstr "" +msgstr "Cabecera RML" #. module: base #: help:res.country,address_format:0 @@ -5327,139 +5675,156 @@ msgid "" " \n" "%(country_code)s: the code of the country" msgstr "" +"Puede colocar aquí el formato habitual que se usa en las direcciones " +"pertenecientes a este país.\n" +"\n" +"Puede usar patrones de cadena de estilo python con todos los campos de la " +"dirección (por ejemplo, usar '%(street)s' para mostrar el campo 'street') " +"más:\n" +"\n" +"%(state_name)s: para el nombre de la provincia, región o estado\n" +"\n" +"%(state_code)s: para el código de la provincia, región o estado\n" +"\n" +"%(country_name)s: para el nombre del país\n" +"\n" +"%(country_code)s: para el código del país" #. module: base #: model:res.country,name:base.mu msgid "Mauritius" -msgstr "" +msgstr "Mauricio" #. module: base #: view:ir.model.access:0 msgid "Full Access" -msgstr "" +msgstr "Acceso completo" #. module: base #: view:ir.actions.act_window:0 #: view:ir.actions.report.xml:0 #: model:ir.ui.menu,name:base.menu_security msgid "Security" -msgstr "" +msgstr "Seguridad" #. module: base #: selection:base.language.install,lang:0 msgid "Portuguese / Português" -msgstr "" +msgstr "Portugues / Português" #. module: base #: code:addons/base/ir/ir_model.py:364 #, python-format msgid "Changing the storing system for field \"%s\" is not allowed." msgstr "" +"No está permitido cambiar el sistema de almacenamiento para el campo \"%s\"." #. module: base #: help:res.partner.bank,company_id:0 msgid "Only if this bank account belong to your company" -msgstr "" +msgstr "Sólo si esta cuenta bancaria pertenece a su compañía" #. module: base #: code:addons/base/ir/ir_fields.py:338 #, python-format msgid "Unknown sub-field '%s'" -msgstr "" +msgstr "Sub-campo '%s' Desconocido" #. module: base #: model:res.country,name:base.za msgid "South Africa" -msgstr "" +msgstr "Sudáfrica" #. module: base #: view:ir.module.module:0 #: selection:ir.module.module,state:0 #: selection:ir.module.module.dependency,state:0 msgid "Installed" -msgstr "" +msgstr "Instalado" #. module: base #: selection:base.language.install,lang:0 msgid "Ukrainian / українська" -msgstr "" +msgstr "Ucraniano / українська" #. module: base #: model:res.country,name:base.sn msgid "Senegal" -msgstr "" +msgstr "Senegal" #. module: base #: model:res.country,name:base.hu msgid "Hungary" -msgstr "" +msgstr "Hungría" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_recruitment msgid "Recruitment Process" -msgstr "" +msgstr "Proceso de selección" #. module: base #: model:res.country,name:base.br msgid "Brazil" -msgstr "" +msgstr "Brasil" #. module: base #: view:res.lang:0 msgid "%M - Minute [00,59]." -msgstr "" +msgstr "%M - Minuto [00,59]." #. module: base #: selection:ir.module.module,license:0 msgid "Affero GPL-3" -msgstr "" +msgstr "Affero GPL-3" #. module: base #: field:ir.sequence,number_next:0 msgid "Next Number" -msgstr "" +msgstr "Número siguiente" #. module: base #: help:workflow.transition,condition:0 msgid "Expression to be satisfied if we want the transition done." msgstr "" +"Expresión que debe ser satisfecha si queremos que la transición sea " +"realizada." #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (PA) / Español (PA)" -msgstr "" +msgstr "Español (PA) / Español (PA)" #. module: base #: view:res.currency:0 #: field:res.currency,rate_ids:0 msgid "Rates" -msgstr "" +msgstr "Tasas" #. module: base #: model:ir.module.module,shortdesc:base.module_email_template msgid "Email Templates" -msgstr "" +msgstr "Plantillas email" #. module: base #: model:res.country,name:base.sy msgid "Syria" -msgstr "" +msgstr "Siria" #. module: base #: view:res.lang:0 msgid "======================================================" -msgstr "" +msgstr "======================================================" #. module: base #: sql_constraint:ir.model:0 msgid "Each model must be unique!" -msgstr "" +msgstr "¡Cada modelo debe ser único!" #. module: base #: model:ir.module.category,name:base.module_category_localization #: model:ir.ui.menu,name:base.menu_localisation msgid "Localization" -msgstr "" +msgstr "Localización" #. module: base #: model:ir.module.module,description:base.module_web_api @@ -5469,11 +5834,14 @@ msgid "" "================\n" "\n" msgstr "" +"\n" +"Aplicación Web OpenERP.\n" +"\n" #. module: base #: selection:res.request,state:0 msgid "draft" -msgstr "" +msgstr "borrador" #. module: base #: selection:ir.property,type:0 @@ -5482,12 +5850,12 @@ msgstr "" #: field:res.partner,date:0 #: field:res.request,date_sent:0 msgid "Date" -msgstr "" +msgstr "Fecha" #. module: base #: model:ir.module.module,shortdesc:base.module_event_moodle msgid "Event Moodle" -msgstr "" +msgstr "Evento Moodle" #. module: base #: model:ir.module.module,description:base.module_email_template @@ -5538,55 +5906,56 @@ msgstr "" #. module: base #: model:ir.ui.menu,name:base.menu_partner_category_form msgid "Partner Tags" -msgstr "" +msgstr "Etiquetas de Socios" #. module: base #: view:res.company:0 msgid "Preview Header/Footer" -msgstr "" +msgstr "Vista Preliminar Cabezera/Pies" #. module: base #: field:ir.ui.menu,parent_id:0 #: field:wizard.ir.model.menu.create,menu_id:0 msgid "Parent Menu" -msgstr "" +msgstr "Menú padre" #. module: base #: field:res.partner.bank,owner_name:0 msgid "Account Owner Name" -msgstr "" +msgstr "Nombre del propietario de la cuenta" #. module: base #: code:addons/base/ir/ir_model.py:412 #, python-format msgid "Cannot rename column to %s, because that column already exists!" msgstr "" +"¡No se puede renombrar la columna a %s, porqué ya existe esa columna!" #. module: base #: view:ir.attachment:0 msgid "Attached To" -msgstr "" +msgstr "Adjuntado a" #. module: base #: field:res.lang,decimal_point:0 msgid "Decimal Separator" -msgstr "" +msgstr "Separador de decimales" #. module: base #: code:addons/orm.py:5245 #, python-format msgid "Missing required value for the field '%s'." -msgstr "" +msgstr "Falta valor requerido para el campo '%s'." #. module: base #: model:ir.model,name:base.model_res_partner_address msgid "res.partner.address" -msgstr "" +msgstr "res.partner.address" #. module: base #: view:ir.rule:0 msgid "Write Access Right" -msgstr "" +msgstr "Escribir Derechos de Acceso" #. module: base #: model:ir.actions.act_window,help:base.action_res_groups @@ -5598,54 +5967,60 @@ msgid "" "to see. Whether they can have a read, write, create and delete access right " "can be managed from here." msgstr "" +"Un grupo es un conjunto de áreas funcionales que se asignarán al usuario " +"para darle acceso y derechos a aplicaciones específicas y tareas en el " +"sistema. Puede crear grupos personalizados o editar los existentes para " +"personalizar la vista de menús que los usuarios podrán ver. La gestión de " +"los permisos de lectura, escritura, creación y eliminación se hace desde " +"aquí." #. module: base #: view:ir.filters:0 #: field:ir.filters,name:0 msgid "Filter Name" -msgstr "" +msgstr "Nombre del filtro" #. module: base #: view:ir.attachment:0 #: view:res.partner:0 #: field:res.request,history:0 msgid "History" -msgstr "" +msgstr "Historial" #. module: base #: model:res.country,name:base.im msgid "Isle of Man" -msgstr "" +msgstr "Isla del Hombre" #. module: base #: help:ir.actions.client,res_model:0 msgid "Optional model, mostly used for needactions." -msgstr "" +msgstr "Modelo opcional, mayormente usado para acciones necesarias." #. module: base #: field:ir.attachment,create_uid:0 msgid "Creator" -msgstr "" +msgstr "Creador" #. module: base #: model:res.country,name:base.bv msgid "Bouvet Island" -msgstr "" +msgstr "Isla Bouvet" #. module: base #: field:ir.model.constraint,type:0 msgid "Constraint Type" -msgstr "" +msgstr "Tipo de Restrinciones" #. module: base #: field:res.company,child_ids:0 msgid "Child Companies" -msgstr "" +msgstr "Compañías hijas" #. module: base #: model:res.country,name:base.ni msgid "Nicaragua" -msgstr "" +msgstr "Nicaragua" #. module: base #: model:ir.module.module,description:base.module_stock_invoice_directly @@ -5659,11 +6034,19 @@ msgid "" "wizard if the delivery is to be invoiced.\n" " " msgstr "" +"\n" +"Asistente de facturación para Entregar.\n" +"=====================================\n" +"\n" +"Cuando usted envía o entrega bienes, este modulo automáticamente lanza el " +"asistente de facturación\n" +"si la entrega será facturada.\n" +" " #. module: base #: selection:ir.translation,type:0 msgid "Wizard Button" -msgstr "" +msgstr "Botón asistente" #. module: base #: view:ir.model.fields:0 @@ -5671,22 +6054,22 @@ msgstr "" #: selection:ir.translation,type:0 #: field:multi_company.default,field_id:0 msgid "Field" -msgstr "" +msgstr "Campo" #. module: base #: model:ir.module.module,shortdesc:base.module_project_long_term msgid "Long Term Projects" -msgstr "" +msgstr "Proyectos a largo plazo" #. module: base #: model:res.country,name:base.ve msgid "Venezuela" -msgstr "" +msgstr "Venezuela" #. module: base #: view:res.lang:0 msgid "9. %j ==> 340" -msgstr "" +msgstr "9. %j ==> 340" #. module: base #: model:ir.module.module,description:base.module_auth_signup @@ -5696,26 +6079,30 @@ msgid "" "=======================\n" " " msgstr "" +"\n" +"Permite a los usuarios iniciar sesión.\n" +"===============================\n" +" " #. module: base #: model:res.country,name:base.zm msgid "Zambia" -msgstr "" +msgstr "Zambia" #. module: base #: view:ir.actions.todo:0 msgid "Launch Configuration Wizard" -msgstr "" +msgstr "Iniciar asistente de configuración" #. module: base #: model:ir.module.module,summary:base.module_mrp msgid "Manufacturing Orders, Bill of Materials, Routing" -msgstr "" +msgstr "Ordenes de Producción, Lista de Materiales, Rutas" #. module: base #: view:ir.module.module:0 msgid "Cancel Upgrade" -msgstr "" +msgstr "Cancelar actualización" #. module: base #: model:ir.module.module,description:base.module_report_webkit @@ -5778,27 +6165,27 @@ msgstr "" #. module: base #: model:res.groups,name:base.group_sale_salesman_all_leads msgid "See all Leads" -msgstr "" +msgstr "Ver todos los Conduces" #. module: base #: model:res.country,name:base.ci msgid "Ivory Coast (Cote D'Ivoire)" -msgstr "" +msgstr "Costa de Marfil" #. module: base #: model:res.country,name:base.kz msgid "Kazakhstan" -msgstr "" +msgstr "Kazajstán" #. module: base #: view:res.lang:0 msgid "%w - Weekday number [0(Sunday),6]." -msgstr "" +msgstr "%w - Día de la semana [0(domingo),6]." #. module: base #: model:ir.ui.menu,name:base.menu_ir_filters msgid "User-defined Filters" -msgstr "" +msgstr "Usuario- Filtros Definidos" #. module: base #: field:ir.actions.act_window_close,name:0 @@ -5830,7 +6217,7 @@ msgstr "" #: field:workflow,name:0 #: field:workflow.activity,name:0 msgid "Name" -msgstr "" +msgstr "Nombre" #. module: base #: help:ir.actions.act_window,multi:0 @@ -5838,27 +6225,29 @@ msgid "" "If set to true, the action will not be displayed on the right toolbar of a " "form view" msgstr "" +"Si se marca esta opción, la acción no se mostrará en la barra de " +"herramientas de la derecha en la vista formulario." #. module: base #: model:res.country,name:base.ms msgid "Montserrat" -msgstr "" +msgstr "Montserrat" #. module: base #: model:ir.module.module,shortdesc:base.module_decimal_precision msgid "Decimal Precision Configuration" -msgstr "" +msgstr "Configuración de la precisión decimal" #. module: base #: model:ir.model,name:base.model_ir_actions_act_url #: selection:ir.ui.menu,action:0 msgid "ir.actions.act_url" -msgstr "" +msgstr "ir.actions.act_url" #. module: base #: model:ir.ui.menu,name:base.menu_translation_app msgid "Application Terms" -msgstr "" +msgstr "Términos de la aplicación" #. module: base #: model:ir.actions.act_window,help:base.open_module_tree @@ -5879,22 +6268,22 @@ msgstr "" #: report:ir.module.reference:0 #: field:ir.translation,module:0 msgid "Module" -msgstr "" +msgstr "Módulo" #. module: base #: selection:base.language.install,lang:0 msgid "English (UK)" -msgstr "" +msgstr "Inglés (Reino Unido)" #. module: base #: selection:base.language.install,lang:0 msgid "Japanese / 日本語" -msgstr "" +msgstr "Japonés / 日本語" #. module: base #: model:ir.model,name:base.model_base_language_import msgid "Language Import" -msgstr "" +msgstr "Importación de idioma" #. module: base #: help:workflow.transition,act_from:0 @@ -5902,12 +6291,14 @@ msgid "" "Source activity. When this activity is over, the condition is tested to " "determine if we can start the ACT_TO activity." msgstr "" +"Actividad origen. Cuando esta actividad se ha terminado, se testea la " +"condición para determinar si se puede empezar la actividad destino ACT_TO." #. module: base #: model:ir.module.category,name:base.module_category_generic_modules_accounting #: view:res.company:0 msgid "Accounting" -msgstr "" +msgstr "Contabilidad" #. module: base #: model:ir.module.module,description:base.module_base_vat @@ -5957,28 +6348,28 @@ msgstr "" #. module: base #: model:ir.model,name:base.model_ir_actions_act_window_view msgid "ir.actions.act_window.view" -msgstr "" +msgstr "ir.actions.act_window.view" #. module: base #: model:ir.module.module,shortdesc:base.module_web #: report:ir.module.reference:0 msgid "Web" -msgstr "" +msgstr "Web" #. module: base #: model:ir.module.module,shortdesc:base.module_lunch msgid "Lunch Orders" -msgstr "" +msgstr "Pedidos de comida" #. module: base #: selection:base.language.install,lang:0 msgid "English (CA)" -msgstr "" +msgstr "Inglés (Canadá)" #. module: base #: model:ir.module.category,name:base.module_category_human_resources msgid "Human Resources" -msgstr "" +msgstr "Recursos humanos" #. module: base #: model:ir.module.module,description:base.module_l10n_syscohada @@ -6000,118 +6391,135 @@ msgid "" " Replica of Democratic Congo, Senegal, Chad, Togo.\n" " " msgstr "" +"\n" +"Este modulo implementa el plan de contabilidad para el área OHADA.\n" +"===================================================================\n" +" \n" +"Esto le permite a cualquier empresa o asociación gestionar su contabilidad " +"financiera.\n" +"\n" +"Los países que usan OHADA son los siguientes:\n" +"----------------------------------------\n" +" Benin, Burkina Faso, Cameroon, Central African Republic, Comoros, " +"Congo,\n" +" \n" +" Ivory Coast, Gabon, Guinea, Guinea Bissau, Equatorial Guinea, Mali, " +"Niger,\n" +" \n" +" Replica of Democratic Congo, Senegal, Chad, Togo.\n" +" " #. module: base #: view:ir.translation:0 msgid "Comments" -msgstr "" +msgstr "Comentarios" #. module: base #: model:res.country,name:base.et msgid "Ethiopia" -msgstr "" +msgstr "Etiopía" #. module: base #: model:ir.module.category,name:base.module_category_authentication msgid "Authentication" -msgstr "" +msgstr "Autentificación" #. module: base #: model:res.country,name:base.sj msgid "Svalbard and Jan Mayen Islands" -msgstr "" +msgstr "Islas Jan Mayen y Svalbard" #. module: base #: model:ir.model,name:base.model_ir_actions_wizard #: selection:ir.ui.menu,action:0 msgid "ir.actions.wizard" -msgstr "" +msgstr "ir.actions.wizard" #. module: base #: model:ir.module.module,shortdesc:base.module_web_kanban msgid "Base Kanban" -msgstr "" +msgstr "Kanban web" #. module: base #: view:ir.actions.act_window:0 #: view:ir.actions.report.xml:0 #: view:ir.actions.server:0 msgid "Group By" -msgstr "" +msgstr "Agrupar por" #. module: base #: view:res.config.installer:0 msgid "title" -msgstr "" +msgstr "título" #. module: base #: code:addons/base/ir/ir_fields.py:147 #, python-format msgid "true" -msgstr "" +msgstr "verdadero" #. module: base #: model:ir.model,name:base.model_base_language_install msgid "Install Language" -msgstr "" +msgstr "Instalar idioma" #. module: base #: model:res.partner.category,name:base.res_partner_category_11 msgid "Services" -msgstr "" +msgstr "Servicios" #. module: base #: view:ir.translation:0 msgid "Translation" -msgstr "" +msgstr "Traducción" #. module: base #: selection:res.request,state:0 msgid "closed" -msgstr "" +msgstr "cerrado" #. module: base #: selection:base.language.export,state:0 msgid "get" -msgstr "" +msgstr "obtener" #. module: base #: help:ir.model.fields,on_delete:0 msgid "On delete property for many2one fields" -msgstr "" +msgstr "Propiedad de Eliminar para los campos many2one" #. module: base #: model:ir.module.category,name:base.module_category_accounting_and_finance msgid "Accounting & Finance" -msgstr "" +msgstr "Contabilidad y finanzas" #. module: base #: field:ir.actions.server,write_id:0 msgid "Write Id" -msgstr "" +msgstr "Id escritura" #. module: base #: model:ir.ui.menu,name:base.menu_product msgid "Products" -msgstr "" +msgstr "Productos" #. module: base #: model:ir.actions.act_window,name:base.act_values_form_defaults #: model:ir.ui.menu,name:base.menu_values_form_defaults #: view:ir.values:0 msgid "User-defined Defaults" -msgstr "" +msgstr "Predeterminados definidos por el usuario" #. module: base #: model:ir.module.category,name:base.module_category_usability #: view:res.users:0 msgid "Usability" -msgstr "" +msgstr "Usabilidad" #. module: base #: field:ir.actions.act_window,domain:0 msgid "Domain Value" -msgstr "" +msgstr "Valor de dominio" #. module: base #: model:ir.module.module,description:base.module_association @@ -6125,6 +6533,14 @@ msgid "" "membership products (schemes).\n" " " msgstr "" +"\n" +"Este modulo es para configurar los módulos relacionados a una asociación.\n" +"=========================================================================\n" +"\n" +"Esto instala el perfil para la asociación de gestión de eventos, " +"registraciones, membresías, \n" +"productos de membresías (Esquemas).\n" +" " #. module: base #: model:ir.ui.menu,name:base.menu_base_config @@ -6138,7 +6554,7 @@ msgstr "" #: view:res.company:0 #: view:res.config:0 msgid "Configuration" -msgstr "" +msgstr "Configuración" #. module: base #: model:ir.module.module,description:base.module_edi @@ -6157,17 +6573,30 @@ msgid "" "documentation at http://doc.openerp.com.\n" " " msgstr "" +"\n" +"Provee una plataforma EDI común que otras aplicaciones pueden usar.\n" +"=================================================================\n" +"\n" +"OpenERP especifica un formato general para intercambio de documentos de " +"negocios entre \n" +"diferentes sistemas, y provee mecanismos genéricos para importación y " +"exportación de ellos.\n" +"\n" +"Más detalles acerca del formato EDI de OpenERP puede ser encontrado en la " +"documentación técnica de OpenERP \n" +"en http://doc.openerp.com\n" +" " #. module: base #: code:addons/base/ir/workflow/workflow.py:99 #, python-format msgid "Operation forbidden" -msgstr "" +msgstr "Operación prohibida" #. module: base #: view:ir.actions.server:0 msgid "SMS Configuration" -msgstr "" +msgstr "Configuración SMS" #. module: base #: help:ir.rule,active:0 @@ -6180,7 +6609,7 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (BO) / Español (BO)" -msgstr "" +msgstr "Español (BO) / Español (BO)" #. module: base #: model:ir.module.module,description:base.module_board @@ -6197,12 +6626,12 @@ msgstr "" #: model:ir.actions.act_window,name:base.ir_access_act #: model:ir.ui.menu,name:base.menu_ir_access_act msgid "Access Controls List" -msgstr "" +msgstr "Lista controles de acceso" #. module: base #: model:res.country,name:base.um msgid "USA Minor Outlying Islands" -msgstr "" +msgstr "EE.UU. Islas Exteriores Menores" #. module: base #: help:ir.cron,numbercall:0 @@ -6210,37 +6639,39 @@ msgid "" "How many times the method is called,\n" "a negative number indicates no limit." msgstr "" +"Cuántas veces es llamado el método,\n" +"Un número negativo indica que no hay límite." #. module: base #: field:res.partner.bank.type.field,bank_type_id:0 msgid "Bank Type" -msgstr "" +msgstr "Tipo de banco" #. module: base #: code:addons/base/res/res_users.py:103 #, python-format msgid "The name of the group can not start with \"-\"" -msgstr "" +msgstr "El nombre del grupo no puede empezar con \"-\"" #. module: base #: view:ir.module.module:0 msgid "Apps" -msgstr "" +msgstr "Aplicaciones" #. module: base #: view:ir.ui.view_sc:0 msgid "Shortcut" -msgstr "" +msgstr "Acceso rápido" #. module: base #: field:ir.model.data,date_init:0 msgid "Init Date" -msgstr "" +msgstr "Fecha inicial" #. module: base #: selection:base.language.install,lang:0 msgid "Gujarati / ગુજરાતી" -msgstr "" +msgstr "Gujarati / ગુજરાતી" #. module: base #: code:addons/base/module/module.py:340 @@ -6248,53 +6679,55 @@ msgstr "" msgid "" "Unable to process module \"%s\" because an external dependency is not met: %s" msgstr "" +"Imposible procesar el modulo \"%s\" por que no se resolvió la dependencia " +"externa: %s" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_be_hr_payroll msgid "Belgium - Payroll" -msgstr "" +msgstr "Bélgica - Nóminas" #. module: base #: view:workflow.activity:0 #: field:workflow.activity,flow_start:0 msgid "Flow Start" -msgstr "" +msgstr "Flujo de inicio" #. module: base #: model:ir.model,name:base.model_res_partner_title msgid "res.partner.title" -msgstr "" +msgstr "res.partner.title" #. module: base #: view:res.partner.bank:0 msgid "Bank Account Owner" -msgstr "" +msgstr "Titular de la cuenta bancaria" #. module: base #: model:ir.module.category,name:base.module_category_uncategorized msgid "Uncategorized" -msgstr "" +msgstr "Sin categoría" #. module: base #: field:ir.attachment,res_name:0 #: field:ir.ui.view_sc,resource:0 msgid "Resource Name" -msgstr "" +msgstr "Nombre del recurso" #. module: base #: field:res.partner,is_company:0 msgid "Is a Company" -msgstr "" +msgstr "Es una Empresa" #. module: base #: selection:ir.cron,interval_type:0 msgid "Hours" -msgstr "" +msgstr "Horas" #. module: base #: model:res.country,name:base.gp msgid "Guadeloupe (French)" -msgstr "" +msgstr "Guadalupe (Francesa)" #. module: base #: code:addons/base/res/res_lang.py:185 @@ -6302,7 +6735,7 @@ msgstr "" #: code:addons/base/res/res_lang.py:189 #, python-format msgid "User Error" -msgstr "" +msgstr "Error de usuario" #. module: base #: help:workflow.transition,signal:0 @@ -6311,6 +6744,9 @@ msgid "" "form, signal tests the name of the pressed button. If signal is NULL, no " "button is necessary to validate this transition." msgstr "" +"Cuando la operación de la transición viene de un botón pulsado en el " +"formulario de cliente, la señal comprueba el nombre del botón pulsado. Si la " +"señal es NULL, ningún botón es necesario para validar esta transición." #. module: base #: model:ir.module.module,description:base.module_web_kanban @@ -6320,23 +6756,28 @@ msgid "" "========================\n" "\n" msgstr "" +"\n" +"Vista Web OpenERP kanban.\n" +"============================\n" +"\n" #. module: base #: code:addons/base/ir/ir_fields.py:183 #, python-format msgid "'%s' does not seem to be a number for field '%%(field)s'" -msgstr "" +msgstr "'%s' no parece haber un número para el campo '%%(field)s'" #. module: base #: help:res.country.state,name:0 msgid "" "Administrative divisions of a country. E.g. Fed. State, Departement, Canton" msgstr "" +"División administrativa de países. Por Ejemplo. Estado, Departamento, Canton" #. module: base #: view:res.partner.bank:0 msgid "My Banks" -msgstr "" +msgstr "Bancos" #. module: base #: model:ir.module.module,description:base.module_hr_recruitment @@ -6357,16 +6798,31 @@ msgid "" "You can define the different phases of interviews and easily rate the " "applicant from the kanban view.\n" msgstr "" +"\n" +"Gestiona las posiciones de trabajo y los procesos de reclutamiento\n" +"========================================================\n" +"\n" +"Esta aplicación permite fácilmente mantener el rastreo de sus trabajos, " +"vacantes, aplicaciones, entrevistas...\n" +"\n" +"Se integra con la pasarela de correo para recuperar automáticamente el " +"correo electrónico enviado a en la lista de " +"aplicaciones. También integrada con el administrador de documentos del " +"sistema para almacenar y buscar en la base de CV y buscar los candidatos " +"que usted esta buscando. Similarmente, esta integrado con el modulo de " +"encuestas que te permite definir entrevistas para diferentes trabajos.\n" +"Usted puede definir las diferentes fases de entrevistas y rango de " +"aplicaciones de la vista kanban.\n" #. module: base #: sql_constraint:ir.filters:0 msgid "Filter names must be unique" -msgstr "" +msgstr "Los nombres de los filtros deben ser unicos" #. module: base #: help:multi_company.default,object_id:0 msgid "Object affected by this rule" -msgstr "" +msgstr "Objeto afectado por esta regla" #. module: base #: selection:ir.actions.act_window,target:0 @@ -6376,22 +6832,22 @@ msgstr "" #. module: base #: field:ir.filters,is_default:0 msgid "Default filter" -msgstr "" +msgstr "Filtro por Defecto" #. module: base #: report:ir.module.reference:0 msgid "Directory" -msgstr "" +msgstr "Directorio" #. module: base #: field:wizard.ir.model.menu.create,name:0 msgid "Menu Name" -msgstr "" +msgstr "Nombre menú" #. module: base #: field:ir.values,key2:0 msgid "Qualifier" -msgstr "" +msgstr "Calificador" #. module: base #: model:ir.module.module,description:base.module_l10n_be_coda @@ -6493,34 +6949,34 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_reset_password msgid "Reset Password" -msgstr "" +msgstr "Restablecer contraseña" #. module: base #: view:ir.attachment:0 msgid "Month" -msgstr "" +msgstr "Mes" #. module: base #: model:res.country,name:base.my msgid "Malaysia" -msgstr "" +msgstr "Malasia" #. module: base #: code:addons/base/ir/ir_sequence.py:105 #: code:addons/base/ir/ir_sequence.py:131 #, python-format msgid "Increment number must not be zero." -msgstr "" +msgstr "El incremento de números debe ser cero." #. module: base #: model:ir.module.module,shortdesc:base.module_account_cancel msgid "Cancel Journal Entries" -msgstr "" +msgstr "Cancelar asientos" #. module: base #: field:res.partner,tz_offset:0 msgid "Timezone offset" -msgstr "" +msgstr "Ajuste de Zona Horaria" #. module: base #: model:ir.module.module,description:base.module_marketing_campaign @@ -6559,6 +7015,41 @@ msgid "" " CRM Leads.\n" " " msgstr "" +"\n" +"Este modulo provee conduces automáticos a través de campañas de marketing " +"(las campañas de hecho pueden ser definidas en cualquier recurso, no solo " +"los conduces CRM).\n" +"=============================================================================" +"=========================\n" +"\n" +"Las campañas son dinámicas y multi-canales. Los procesos son como sigue:\n" +"--------------------------------------------------------------------------\n" +" * Diseñar campañas de marketing como flujos de trabajos, incluyendo " +"plantillas de envío\n" +" de email, informes a imprimir y enviar por email, acciones " +"personalizadas\n" +" * Definir segmentos de entrada que seleccionarán los artículos que " +"deberán ser incluidos\n" +" en la campaña (Por Ejemplo: conduces desde ciertos países.)\n" +" * Correr su campaña en modo simulación para probar el tiempo real o " +"acelerado,\n" +" y lo refinara\n" +" * Usted también iniciará la campaña real en modo manual, donde cada " +"acción\n" +" requiere validación manual\n" +" * Finalmente lanzar su compañía viva, y observar las estadísticas como " +"las\n" +" campañas hacen todo totalmente automáticamente.\n" +"\n" +"Mientras la campaña corre, usted puede por supuesto continuar de refinar los " +"parámetros,\n" +"segmentos de entradas, flujos de trabajo.\n" +"\n" +"**Notas:** Si usted necesita datos de demostración, usted puede instalar el " +"modulo marketing_campaing_crm_demo\n" +" pero, este también instalará la aplicación CRM tal como depende de los " +"conduces CRM.\n" +" " #. module: base #: help:ir.mail_server,smtp_debug:0 @@ -6566,6 +7057,9 @@ msgid "" "If enabled, the full output of SMTP sessions will be written to the server " "log at DEBUG level(this is very verbose and may include confidential info!)" msgstr "" +"Si está habilitado, la salida completa de las sesiones SMTP serán escritas " +"en el registro del servidor en el nivel DEBUG (¿esto es muy detallado y " +"puede incluir información confidencial!" #. module: base #: model:ir.module.module,description:base.module_sale_margin @@ -6578,11 +7072,18 @@ msgid "" "Price and Cost Price.\n" " " msgstr "" +"\n" +"Este modulo agrega los \"Margenes\" en ordenes de ventas.\n" +"===================================================\n" +"\n" +"Esto da la rentabilidad de calcular la diferencia entre\n" +"el Precio de Unidad y el Precio de Costo.\n" +" " #. module: base #: selection:ir.actions.todo,type:0 msgid "Launch Automatically" -msgstr "" +msgstr "Iniciar automáticamente" #. module: base #: help:ir.model.fields,translate:0 @@ -6590,21 +7091,24 @@ msgid "" "Whether values for this field can be translated (enables the translation " "mechanism for that field)" msgstr "" +"Si los valores de este campo pueden ser traducidos (activa el mecanismo de " +"traducción para este campo)." #. module: base #: selection:base.language.install,lang:0 msgid "Indonesian / Bahasa Indonesia" -msgstr "" +msgstr "Indonesio / Bahasa Indonesia" #. module: base #: model:res.country,name:base.cv msgid "Cape Verde" -msgstr "" +msgstr "Cabo Verde" #. module: base #: model:res.groups,comment:base.group_sale_salesman msgid "the user will have access to his own data in the sales application." msgstr "" +"El usuario tendrá acceso a su propia data en la aplicación de ventas." #. module: base #: model:res.groups,comment:base.group_user @@ -6612,12 +7116,15 @@ msgid "" "the user will be able to manage his own human resources stuff (leave " "request, timesheets, ...), if he is linked to an employee in the system." msgstr "" +"el usuario podrá gestionar sus propias cosas de recursos humanos " +"(solicitudes de salida, hojas por horas de servicios, ...), si esta enlazado " +"a un empleado del sistema." #. module: base #: code:addons/orm.py:2247 #, python-format msgid "There is no view of type '%s' defined for the structure!" -msgstr "" +msgstr "¡No existe una vista del tipo '%s' definida para la estructura!" #. module: base #: help:ir.values,key:0 @@ -6625,58 +7132,60 @@ msgid "" "- Action: an action attached to one slot of the given model\n" "- Default: a default value for a model field" msgstr "" +"- Acción: una acción adjunta al modelo dado\n" +"- Por defecto: un valor por defecto para el campo del modelo" #. module: base #: field:base.module.update,add:0 msgid "Number of modules added" -msgstr "" +msgstr "Número de módulos añadidos" #. module: base #: view:res.currency:0 msgid "Price Accuracy" -msgstr "" +msgstr "Precisión del precio" #. module: base #: selection:base.language.install,lang:0 msgid "Latvian / latviešu valoda" -msgstr "" +msgstr "Letón / latviešu valoda" #. module: base #: selection:base.language.install,lang:0 msgid "French / Français" -msgstr "" +msgstr "Francés / Français" #. module: base #: view:ir.module.module:0 msgid "Created Menus" -msgstr "" +msgstr "Menús creados" #. module: base #: code:addons/base/module/module.py:475 #: view:ir.module.module:0 #, python-format msgid "Uninstall" -msgstr "" +msgstr "Desinstalar" #. module: base #: model:ir.module.module,shortdesc:base.module_account_budget msgid "Budgets Management" -msgstr "" +msgstr "Gestión de presupuestos" #. module: base #: field:workflow.triggers,workitem_id:0 msgid "Workitem" -msgstr "" +msgstr "Elemento de trabajo" #. module: base #: model:ir.module.module,shortdesc:base.module_anonymization msgid "Database Anonymization" -msgstr "" +msgstr "Anonimización de la base de datos" #. module: base #: selection:ir.mail_server,smtp_encryption:0 msgid "SSL/TLS" -msgstr "" +msgstr "SSL/TLS" #. module: base #: view:ir.actions.todo:0 @@ -6691,27 +7200,27 @@ msgstr "" #: field:ir.ui.menu,action:0 #: selection:ir.values,key:0 msgid "Action" -msgstr "" +msgstr "Acción" #. module: base #: view:ir.actions.server:0 msgid "Email Configuration" -msgstr "" +msgstr "Configuración Email" #. module: base #: model:ir.model,name:base.model_ir_cron msgid "ir.cron" -msgstr "" +msgstr "ir.cron" #. module: base #: model:res.country,name:base.cw msgid "Curaçao" -msgstr "" +msgstr "Curaçao" #. module: base #: view:ir.sequence:0 msgid "Current Year without Century: %(y)s" -msgstr "" +msgstr "Año actual sin centuria: %(y)s" #. module: base #: help:ir.actions.client,tag:0 @@ -6719,16 +7228,19 @@ msgid "" "An arbitrary string, interpreted by the client according to its own needs " "and wishes. There is no central tag repository across clients." msgstr "" +"Una cadena arbitraria, interpretada por el cliente de acuerdo con sus " +"propias necesidades y deseos. No hay repositorio central de etiqueta a " +"través de clientes." #. module: base #: sql_constraint:ir.rule:0 msgid "Rule must have at least one checked access right !" -msgstr "" +msgstr "¡La regla debe tener por lo menos un derecho de acceso marcado!" #. module: base #: field:res.partner.bank.type,format_layout:0 msgid "Format Layout" -msgstr "" +msgstr "Formato de presentación" #. module: base #: model:ir.module.module,description:base.module_document_ftp @@ -6743,27 +7255,34 @@ msgid "" "using the\n" "FTP client.\n" msgstr "" +"\n" +"Módulo de soporte del interfaz FTP para el sistema de gestión de " +"documentos.\n" +"================================================================\n" +"\n" +"Este módulo permite acceder a los documentos, además de a través de OpenERP, " +"a través de un cliente FTP.\n" #. module: base #: field:ir.model.fields,size:0 msgid "Size" -msgstr "" +msgstr "Tamaño" #. module: base #: model:ir.module.module,shortdesc:base.module_audittrail msgid "Audit Trail" -msgstr "" +msgstr "Rastro de auditoría" #. module: base #: code:addons/base/ir/ir_fields.py:265 #, python-format msgid "Value '%s' not found in selection field '%%(field)s'" -msgstr "" +msgstr "Valor '%s' no encontrado en campo seleccionado '%%(field)s'" #. module: base #: model:res.country,name:base.sd msgid "Sudan" -msgstr "" +msgstr "Sudán" #. module: base #: model:ir.actions.act_window,name:base.action_currency_rate_type_form @@ -6771,7 +7290,7 @@ msgstr "" #: field:res.currency.rate,currency_rate_type_id:0 #: view:res.currency.rate.type:0 msgid "Currency Rate Type" -msgstr "" +msgstr "Tipo de tasa de cambio" #. module: base #: model:ir.module.module,description:base.module_l10n_fr @@ -6813,18 +7332,18 @@ msgstr "" #. module: base #: model:res.country,name:base.fm msgid "Micronesia" -msgstr "" +msgstr "Micronesia" #. module: base #: field:ir.module.module,menus_by_module:0 #: view:res.groups:0 msgid "Menus" -msgstr "" +msgstr "Menús" #. module: base #: selection:ir.actions.todo,type:0 msgid "Launch Manually Once" -msgstr "" +msgstr "Iniciar manualmente una vez" #. module: base #: view:workflow:0 @@ -6834,44 +7353,44 @@ msgstr "" #: field:workflow.transition,wkf_id:0 #: field:workflow.workitem,wkf_id:0 msgid "Workflow" -msgstr "" +msgstr "Flujo de trabajo" #. module: base #: selection:base.language.install,lang:0 msgid "Serbian (Latin) / srpski" -msgstr "" +msgstr "Serbio (Latín) / srpski" #. module: base #: model:res.country,name:base.il msgid "Israel" -msgstr "" +msgstr "Israel" #. module: base #: code:addons/base/res/res_config.py:444 #, python-format msgid "Cannot duplicate configuration!" -msgstr "" +msgstr "No se puede configurar la configuración!" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_syscohada msgid "OHADA - Accounting" -msgstr "" +msgstr "OHADA - Contabilidad" #. module: base #: help:res.bank,bic:0 msgid "Sometimes called BIC or Swift." -msgstr "" +msgstr "Algunas veces llamado BIC o Swift" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_in msgid "Indian - Accounting" -msgstr "" +msgstr "Contabilidad - India" #. module: base #: field:res.partner,mobile:0 #: field:res.partner.address,mobile:0 msgid "Mobile" -msgstr "" +msgstr "Móvil" #. module: base #: model:ir.module.module,description:base.module_l10n_mx @@ -6883,11 +7402,17 @@ msgid "" "Mexican accounting chart and localization.\n" " " msgstr "" +"\n" +"Módulo para gestionar el plan de cuentas para México en OpenERP\n" +"=====================================================\n" +"\n" +"Plan de cuentas y localización mexicanos.\n" +" " #. module: base #: field:res.lang,time_format:0 msgid "Time Format" -msgstr "" +msgstr "Formato de hora" #. module: base #: field:res.company,rml_header3:0 @@ -6897,22 +7422,22 @@ msgstr "" #. module: base #: model:res.groups,name:base.group_partner_manager msgid "Contact Creation" -msgstr "" +msgstr "Creación de Contacto" #. module: base #: view:ir.module.module:0 msgid "Defined Reports" -msgstr "" +msgstr "Informes definidos" #. module: base #: model:ir.module.module,shortdesc:base.module_project_gtd msgid "Todo Lists" -msgstr "" +msgstr "Lista de tareas pendientes" #. module: base #: view:ir.actions.report.xml:0 msgid "Report xml" -msgstr "" +msgstr "Informe XML" #. module: base #: model:ir.actions.act_window,name:base.action_module_open_categ @@ -6921,7 +7446,7 @@ msgstr "" #: model:ir.ui.menu,name:base.menu_management #: model:ir.ui.menu,name:base.menu_module_tree msgid "Modules" -msgstr "" +msgstr "Módulos" #. module: base #: view:workflow.activity:0 @@ -6929,7 +7454,7 @@ msgstr "" #: field:workflow.activity,subflow_id:0 #: field:workflow.workitem,subflow_id:0 msgid "Subflow" -msgstr "" +msgstr "Subflujo" #. module: base #: model:ir.actions.act_window,name:base.action_res_bank_form @@ -6937,7 +7462,7 @@ msgstr "" #: view:res.bank:0 #: field:res.partner,bank_ids:0 msgid "Banks" -msgstr "" +msgstr "Bancos" #. module: base #: model:ir.module.module,description:base.module_web @@ -6949,122 +7474,129 @@ msgid "" "This module provides the core of the OpenERP Web Client.\n" " " msgstr "" +"\n" +"Modulo principal OpenERP Web.\n" +"===========================\n" +"\n" +"Este modulo provee núcleo del Cliente Web de OpenERP.\n" +" " #. module: base #: view:ir.sequence:0 msgid "Week of the Year: %(woy)s" -msgstr "" +msgstr "Semana del Año: %(woy)s" #. module: base #: field:res.users,id:0 msgid "ID" -msgstr "" +msgstr "ID (identificación)" #. module: base #: field:ir.cron,doall:0 msgid "Repeat Missed" -msgstr "" +msgstr "Repetir perdidos" #. module: base #: code:addons/base/module/wizard/base_module_import.py:67 #, python-format msgid "Can not create the module file: %s !" -msgstr "" +msgstr "¡No se puede crear el archivo de módulo: %s!" #. module: base #: field:ir.server.object.lines,server_id:0 msgid "Object Mapping" -msgstr "" +msgstr "Mapeado de objetos" #. module: base #: field:ir.module.category,xml_id:0 #: field:ir.ui.view,xml_id:0 msgid "External ID" -msgstr "" +msgstr "ID externo" #. module: base #: help:res.currency.rate,rate:0 msgid "The rate of the currency to the currency of rate 1" -msgstr "" +msgstr "La tasa de cambio de la moneda respecto a la moneda de tasa 1" #. module: base #: model:res.country,name:base.uk msgid "United Kingdom" -msgstr "" +msgstr "Reino Unido" #. module: base #: view:res.config:0 msgid "res_config_contents" -msgstr "" +msgstr "res_config_contents" #. module: base #: help:res.partner.category,active:0 msgid "The active field allows you to hide the category without removing it." msgstr "" +"El campo activo le permite ocultar la categoría sin tener que eliminarla." #. module: base #: report:ir.module.reference:0 msgid "Object:" -msgstr "" +msgstr "Objeto:" #. module: base #: model:res.country,name:base.bw msgid "Botswana" -msgstr "" +msgstr "Botsuana" #. module: base #: view:res.partner.title:0 msgid "Partner Titles" -msgstr "" +msgstr "Títulos de empresa" #. module: base #: code:addons/base/ir/ir_fields.py:197 #: code:addons/base/ir/ir_fields.py:228 #, python-format msgid "Use the format '%s'" -msgstr "" +msgstr "Use el formato '%s'" #. module: base #: help:ir.actions.act_window,auto_refresh:0 msgid "Add an auto-refresh on the view" -msgstr "" +msgstr "Añadir una actualización automática a la vista" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_profiling msgid "Customer Profiling" -msgstr "" +msgstr "Perfiles de clientes" #. module: base #: selection:ir.cron,interval_type:0 msgid "Work Days" -msgstr "" +msgstr "Días laborables" #. module: base #: model:ir.module.module,shortdesc:base.module_multi_company msgid "Multi-Company" -msgstr "" +msgstr "Multi-compañía" #. module: base #: model:ir.actions.act_window,name:base.action_workflow_workitem_form #: model:ir.ui.menu,name:base.menu_workflow_workitem msgid "Workitems" -msgstr "" +msgstr "Elementos de trabajo" #. module: base #: code:addons/base/res/res_bank.py:195 #, python-format msgid "Invalid Bank Account Type Name format." -msgstr "" +msgstr "Tipo de formato del nombre invalido en Cuenta de Banco." #. module: base #: view:ir.filters:0 msgid "Filters visible only for one user" -msgstr "" +msgstr "Filtros visibles solo para un usuario" #. module: base #: model:ir.model,name:base.model_ir_attachment msgid "ir.attachment" -msgstr "" +msgstr "ir.attachment" #. module: base #: code:addons/orm.py:4315 @@ -7073,11 +7605,14 @@ msgid "" "You cannot perform this operation. New Record Creation is not allowed for " "this object as this object is for reporting purpose." msgstr "" +"No puede realizar esta operación. La creación de nuevos registros no está " +"permitida para este objeto ya que este objeto tiene como finalidad la " +"generación de informes." #. module: base #: model:ir.module.module,shortdesc:base.module_auth_anonymous msgid "Anonymous" -msgstr "" +msgstr "Anónimo" #. module: base #: model:ir.module.module,description:base.module_base_import @@ -7107,12 +7642,12 @@ msgstr "" #. module: base #: selection:res.currency,position:0 msgid "After Amount" -msgstr "" +msgstr "Después del importe" #. module: base #: selection:base.language.install,lang:0 msgid "Lithuanian / Lietuvių kalba" -msgstr "" +msgstr "Lituano / Lietuvių kalba" #. module: base #: help:ir.actions.server,record_id:0 @@ -7120,6 +7655,9 @@ msgid "" "Provide the field name where the record id is stored after the create " "operations. If it is empty, you can not track the new record." msgstr "" +"Indique el nombre de campo donde se almacena el id del registro después de " +"las operaciones de creación. Si está vacío, no podrá realizar un seguimiento " +"del registro nuevo." #. module: base #: model:res.groups,comment:base.group_hr_user @@ -7129,17 +7667,17 @@ msgstr "" #. module: base #: field:ir.ui.menu,needaction_enabled:0 msgid "Target model uses the need action mechanism" -msgstr "" +msgstr "El objetivo modelo usa el mecanismo de acción necesitado" #. module: base #: help:ir.model.fields,relation:0 msgid "For relationship fields, the technical name of the target model" -msgstr "" +msgstr "Para campos de relación, el nombre técnico del modelo destino." #. module: base #: view:res.lang:0 msgid "%S - Seconds [00,61]." -msgstr "" +msgstr "%S - Segundos [00,61]." #. module: base #: help:base.language.import,overwrite:0 @@ -7147,16 +7685,18 @@ msgid "" "If you enable this option, existing translations (including custom ones) " "will be overwritten and replaced by those in this file" msgstr "" +"Si habilita esta opción, las traducciones existentes (incluidas las " +"personalizadas) serán sobreescritas y reemplazadas por las de este archivo" #. module: base #: field:ir.ui.view,inherit_id:0 msgid "Inherited View" -msgstr "" +msgstr "Vista Heredada" #. module: base #: view:ir.translation:0 msgid "Source Term" -msgstr "" +msgstr "Término original" #. module: base #: model:ir.module.category,name:base.module_category_project_management @@ -7164,35 +7704,35 @@ msgstr "" #: model:ir.ui.menu,name:base.menu_project_config #: model:ir.ui.menu,name:base.menu_project_report msgid "Project" -msgstr "" +msgstr "Proyecto" #. module: base #: field:ir.ui.menu,web_icon_hover_data:0 msgid "Web Icon Image (hover)" -msgstr "" +msgstr "Imagen icono web (inmóvil)" #. module: base #: view:base.module.import:0 msgid "Module file successfully imported!" -msgstr "" +msgstr "¡Archivo de módulo importado con éxito!" #. module: base #: model:ir.actions.act_window,name:base.action_model_constraint #: view:ir.model.constraint:0 #: model:ir.ui.menu,name:base.ir_model_constraint_menu msgid "Model Constraints" -msgstr "" +msgstr "Modelo de Restrinciones" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_timesheet #: model:ir.module.module,shortdesc:base.module_hr_timesheet_sheet msgid "Timesheets" -msgstr "" +msgstr "Hojas de servicios" #. module: base #: help:ir.values,company_id:0 msgid "If set, action binding only applies for this company" -msgstr "" +msgstr "Si se establece, la acción vinculada sólo se aplica a esta compañía" #. module: base #: model:ir.module.module,description:base.module_l10n_cn @@ -7207,7 +7747,7 @@ msgstr "" #. module: base #: model:res.country,name:base.lc msgid "Saint Lucia" -msgstr "" +msgstr "Santa Lucía" #. module: base #: help:res.users,new_password:0 @@ -7216,23 +7756,26 @@ msgid "" "password, otherwise leave empty. After a change of password, the user has to " "login again." msgstr "" +"Especifique un valor sólo cuando esté creando un usuario o si está cambiando " +"la contraseña del mismo. En otro caso déjelo vacío. Después de un cambio de " +"contraseña, el usuario debe iniciar sesión de nuevo." #. module: base #: model:res.country,name:base.so msgid "Somalia" -msgstr "" +msgstr "Somalia" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_doctor msgid "Dr." -msgstr "" +msgstr "Dr." #. module: base #: model:res.groups,name:base.group_user #: field:res.partner,employee:0 #: model:res.partner.category,name:base.res_partner_category_3 msgid "Employee" -msgstr "" +msgstr "Empleado" #. module: base #: model:ir.module.module,description:base.module_project_issue @@ -7251,7 +7794,7 @@ msgstr "" #. module: base #: field:ir.model.access,perm_create:0 msgid "Create Access" -msgstr "" +msgstr "Permiso para crear" #. module: base #: model:ir.module.module,description:base.module_hr_timesheet @@ -7273,6 +7816,20 @@ msgid "" "up a management by affair.\n" " " msgstr "" +"\n" +"Este modulo implementa un sistema de hojas por horas de servicio.\n" +"=============================================================\n" +"\n" +"Cada empleado puede codificar y rastrear el tiempo invertido en sus " +"diferentes proyectos.\n" +"Un proyecto es una cuenta analítica y el tiempo invertido en un proyecto " +"genera costos\n" +"sobre la cuenta analítica.\n" +"\n" +"Esto esta completamente integrado con el costo del modulo Contabilidad. Esto " +"les permite establecer\n" +"un sistema de gestión de aventuras.\n" +" " #. module: base #: field:res.bank,state:0 @@ -7280,53 +7837,53 @@ msgstr "" #: field:res.partner.address,state_id:0 #: field:res.partner.bank,state_id:0 msgid "Fed. State" -msgstr "" +msgstr "Estado Federal" #. module: base #: field:ir.actions.server,copy_object:0 msgid "Copy Of" -msgstr "" +msgstr "Copia de" #. module: base #: field:ir.model.data,display_name:0 msgid "Record Name" -msgstr "" +msgstr "Grabar Nombre" #. module: base #: model:ir.model,name:base.model_ir_actions_client #: selection:ir.ui.menu,action:0 msgid "ir.actions.client" -msgstr "" +msgstr "ir.actions.client" #. module: base #: model:res.country,name:base.io msgid "British Indian Ocean Territory" -msgstr "" +msgstr "Territorio Británico del Océano Índico" #. module: base #: model:ir.actions.server,name:base.action_server_module_immediate_install msgid "Module Immediate Install" -msgstr "" +msgstr "Instalar modulo inmediato" #. module: base #: view:ir.actions.server:0 msgid "Field Mapping" -msgstr "" +msgstr "Mapeo de campo" #. module: base #: field:ir.model.fields,ttype:0 msgid "Field Type" -msgstr "" +msgstr "Tipo de campo" #. module: base #: field:res.country.state,code:0 msgid "State Code" -msgstr "" +msgstr "Codigo de Estado" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_multilang msgid "Multi Language Chart of Accounts" -msgstr "" +msgstr "Plan de cuentas multi lenguaje" #. module: base #: model:ir.module.module,description:base.module_l10n_gt @@ -7344,34 +7901,34 @@ msgstr "" #. module: base #: selection:res.lang,direction:0 msgid "Left-to-Right" -msgstr "" +msgstr "De izquierda a derecha" #. module: base #: field:ir.model.fields,translate:0 #: view:res.lang:0 #: field:res.lang,translatable:0 msgid "Translatable" -msgstr "" +msgstr "Traducible" #. module: base #: help:base.language.import,code:0 msgid "ISO Language and Country code, e.g. en_US" -msgstr "" +msgstr "Idioma ISO y Código de País, Ejemplo: en_US" #. module: base #: model:res.country,name:base.vn msgid "Vietnam" -msgstr "" +msgstr "Vietnam" #. module: base #: field:res.users,signature:0 msgid "Signature" -msgstr "" +msgstr "Firma" #. module: base #: field:res.partner.category,complete_name:0 msgid "Full Name" -msgstr "" +msgstr "Nombre completo" #. module: base #: view:ir.attachment:0 @@ -7382,17 +7939,17 @@ msgstr "" #: code:addons/base/module/module.py:284 #, python-format msgid "The name of the module must be unique !" -msgstr "" +msgstr "¡El nombre del módulo debe ser único!" #. module: base #: view:ir.property:0 msgid "Parameters that are used by all resources." -msgstr "" +msgstr "Parámetros usados por todos los recursos." #. module: base #: model:res.country,name:base.mz msgid "Mozambique" -msgstr "" +msgstr "Mozambique" #. module: base #: help:ir.values,action_id:0 @@ -7400,22 +7957,24 @@ msgid "" "Action bound to this entry - helper field for binding an action, will " "automatically set the correct reference" msgstr "" +"Acción vinculada a esta entrada - campo accesorio que permite enlazar una " +"acción, que establecerá automáticamente la referencia correcta" #. module: base #: model:ir.ui.menu,name:base.menu_project_long_term msgid "Long Term Planning" -msgstr "" +msgstr "Planificación a largo plazo" #. module: base #: field:ir.actions.server,message:0 msgid "Message" -msgstr "" +msgstr "Mensaje" #. module: base #: field:ir.actions.act_window.view,multi:0 #: field:ir.actions.report.xml,multi:0 msgid "On Multiple Doc." -msgstr "" +msgstr "En múltiples doc." #. module: base #: view:base.language.export:0 @@ -7431,17 +7990,17 @@ msgstr "" #: view:res.users:0 #: view:wizard.ir.model.menu.create:0 msgid "or" -msgstr "" +msgstr "ó" #. module: base #: model:ir.module.module,shortdesc:base.module_account_accountant msgid "Accounting and Finance" -msgstr "" +msgstr "Contabilidad y finanzas" #. module: base #: view:ir.module.module:0 msgid "Upgrade" -msgstr "" +msgstr "Actualizar" #. module: base #: model:ir.module.module,description:base.module_base_action_rule @@ -7463,54 +8022,54 @@ msgstr "" #. module: base #: field:res.partner,function:0 msgid "Job Position" -msgstr "" +msgstr "Posición de Trabajo" #. module: base #: view:res.partner:0 #: field:res.partner,child_ids:0 msgid "Contacts" -msgstr "" +msgstr "Contactos" #. module: base #: model:res.country,name:base.fo msgid "Faroe Islands" -msgstr "" +msgstr "Islas Feroe" #. module: base #: field:ir.mail_server,smtp_encryption:0 msgid "Connection Security" -msgstr "" +msgstr "Seguridad de la conexión" #. module: base #: code:addons/base/ir/ir_actions.py:607 #, python-format msgid "Please specify an action to launch !" -msgstr "" +msgstr "¡ Por favor, indique una acción a ejecutar !" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ec msgid "Ecuador - Accounting" -msgstr "" +msgstr "Ecuador - Contabilidad" #. module: base #: field:res.partner.category,name:0 msgid "Category Name" -msgstr "" +msgstr "Nombre de categoría" #. module: base #: model:res.country,name:base.mp msgid "Northern Mariana Islands" -msgstr "" +msgstr "Islas Marianas del Norte" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_hn msgid "Honduras - Accounting" -msgstr "" +msgstr "Honduras - Contabilidad" #. module: base #: model:ir.module.module,shortdesc:base.module_report_intrastat msgid "Intrastat Reporting" -msgstr "" +msgstr "Informe Intrastat" #. module: base #: code:addons/base/res/res_users.py:135 @@ -7519,6 +8078,8 @@ msgid "" "Please use the change password wizard (in User Preferences or User menu) to " "change your own password." msgstr "" +"Utilice el asistente de cambio de contraseña (en Preferencias de usuario o " +"menú Usuario) para cambiar su propia contraseña." #. module: base #: model:ir.module.module,description:base.module_project_long_term @@ -7553,12 +8114,12 @@ msgstr "" #: code:addons/orm.py:2021 #, python-format msgid "Insufficient fields for Calendar View!" -msgstr "" +msgstr "¡Insuficientes campos para la vista calendario!" #. module: base #: selection:ir.property,type:0 msgid "Integer" -msgstr "" +msgstr "Entero" #. module: base #: help:ir.actions.report.xml,report_rml:0 @@ -7566,26 +8127,28 @@ msgid "" "The path to the main report file (depending on Report Type) or NULL if the " "content is in another data field" msgstr "" +"La ruta al archivo principal del informe (dependiendo del tipo de informe) o " +"NULL si el contenido está en otro campo de datos." #. module: base #: model:res.partner.category,name:base.res_partner_category_14 msgid "Manufacturer" -msgstr "" +msgstr "Fabricante" #. module: base #: help:res.users,company_id:0 msgid "The company this user is currently working for." -msgstr "" +msgstr "La compañía para la cual trabaja este usuario actualmente." #. module: base #: model:ir.model,name:base.model_wizard_ir_model_menu_create msgid "wizard.ir.model.menu.create" -msgstr "" +msgstr "wizard.ir.model.menu.create" #. module: base #: view:workflow.transition:0 msgid "Transition" -msgstr "" +msgstr "Transición" #. module: base #: field:ir.cron,active:0 @@ -7603,17 +8166,17 @@ msgstr "" #: view:workflow.instance:0 #: view:workflow.workitem:0 msgid "Active" -msgstr "" +msgstr "Activo" #. module: base #: model:res.country,name:base.na msgid "Namibia" -msgstr "" +msgstr "Namibia" #. module: base #: field:res.partner.category,child_ids:0 msgid "Child Categories" -msgstr "" +msgstr "Categorías hijas" #. module: base #: code:addons/base/ir/ir_actions.py:607 @@ -7642,7 +8205,7 @@ msgstr "" #: code:addons/orm.py:3929 #, python-format msgid "Error" -msgstr "" +msgstr "Error" #. module: base #: help:res.partner,tz:0 @@ -7656,22 +8219,22 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_account_analytic_default msgid "Account Analytic Defaults" -msgstr "" +msgstr "Valores por defecto en la contabilidad analítica" #. module: base #: selection:ir.ui.view,type:0 msgid "mdx" -msgstr "" +msgstr "mdx" #. module: base #: view:ir.cron:0 msgid "Scheduled Action" -msgstr "" +msgstr "Acciones Planificadas" #. module: base #: model:res.country,name:base.bi msgid "Burundi" -msgstr "" +msgstr "Burundi" #. module: base #: view:base.language.export:0 @@ -7679,22 +8242,22 @@ msgstr "" #: view:base.module.configuration:0 #: view:base.module.update:0 msgid "Close" -msgstr "" +msgstr "Cerrar" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (MX) / Español (MX)" -msgstr "" +msgstr "Español (MX) / Español (MX)" #. module: base #: view:ir.actions.todo:0 msgid "Wizards to be Launched" -msgstr "" +msgstr "Asistentes pendientes de lanzamiento" #. module: base #: model:res.country,name:base.bt msgid "Bhutan" -msgstr "" +msgstr "Bhután" #. module: base #: model:ir.module.module,description:base.module_portal_event @@ -7710,48 +8273,48 @@ msgstr "" #. module: base #: help:ir.sequence,number_next:0 msgid "Next number of this sequence" -msgstr "" +msgstr "Número siguiente de esta secuencia." #. module: base #: view:res.partner:0 msgid "at" -msgstr "" +msgstr "en" #. module: base #: view:ir.rule:0 msgid "Rule Definition (Domain Filter)" -msgstr "" +msgstr "Definición de Regla (Filtro de Dominio)" #. module: base #: selection:ir.actions.act_url,target:0 msgid "This Window" -msgstr "" +msgstr "Esta ventana" #. module: base #: field:base.language.export,format:0 msgid "File Format" -msgstr "" +msgstr "Formato del archivo" #. module: base #: field:res.lang,iso_code:0 msgid "ISO code" -msgstr "" +msgstr "Código ISO" #. module: base #: model:ir.module.module,shortdesc:base.module_association msgid "Associations Management" -msgstr "" +msgstr "Gestión de asociaciones" #. module: base #: help:ir.model,modules:0 msgid "List of modules in which the object is defined or inherited" -msgstr "" +msgstr "Lista de módulos en los cuales el objeto es definido o heredado" #. module: base #: model:ir.module.category,name:base.module_category_localization_payroll #: model:ir.module.module,shortdesc:base.module_hr_payroll msgid "Payroll" -msgstr "" +msgstr "Nómina" #. module: base #: model:ir.actions.act_window,help:base.action_country_state @@ -7764,28 +8327,28 @@ msgstr "" #. module: base #: view:workflow.workitem:0 msgid "Workflow Workitems" -msgstr "" +msgstr "Elementos del flujo de trabajo" #. module: base #: model:res.country,name:base.vc msgid "Saint Vincent & Grenadines" -msgstr "" +msgstr "San Vicente y las Granadinas" #. module: base #: field:ir.mail_server,smtp_pass:0 #: field:res.users,password:0 msgid "Password" -msgstr "" +msgstr "Contraseña" #. module: base #: model:ir.module.module,shortdesc:base.module_portal_claim msgid "Portal Claim" -msgstr "" +msgstr "Portal de Reclamaciones" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_pe msgid "Peru Localization Chart Account" -msgstr "" +msgstr "Plan de Cuentas Localización de Perú" #. module: base #: model:ir.module.module,description:base.module_auth_oauth @@ -7794,6 +8357,9 @@ msgid "" "Allow users to login through OAuth2 Provider.\n" "=============================================\n" msgstr "" +"\n" +"Permite a los usuarios iniciar sesión a través del proveedor OAuth2.\n" +"==============================================================\n" #. module: base #: model:ir.actions.act_window,name:base.action_model_fields @@ -7803,27 +8369,27 @@ msgstr "" #: view:ir.model.fields:0 #: model:ir.ui.menu,name:base.ir_model_model_fields msgid "Fields" -msgstr "" +msgstr "Campos" #. module: base #: model:ir.actions.act_window,name:base.action_partner_employee_form msgid "Employees" -msgstr "" +msgstr "Empleados" #. module: base #: field:res.company,rml_header2:0 msgid "RML Internal Header" -msgstr "" +msgstr "Cabecera interna RML" #. module: base #: field:ir.actions.act_window,search_view_id:0 msgid "Search View Ref." -msgstr "" +msgstr "Ref. vista búsqueda" #. module: base #: help:res.users,partner_id:0 msgid "Partner-related data of the user" -msgstr "" +msgstr "Socios - datos relacionados de el usuario" #. module: base #: model:ir.module.module,description:base.module_crm_todo @@ -7833,36 +8399,40 @@ msgid "" "==========================================\n" " " msgstr "" +"\n" +"Lista Todo para conduces CRM y oportunidades.\n" +"================================================\n" +" " #. module: base #: view:ir.mail_server:0 msgid "Test Connection" -msgstr "" +msgstr "Probar conexión" #. module: base #: field:res.partner,address:0 msgid "Addresses" -msgstr "" +msgstr "Direcciones" #. module: base #: model:res.country,name:base.mm msgid "Myanmar" -msgstr "" +msgstr "Birmania" #. module: base #: help:ir.model.fields,modules:0 msgid "List of modules in which the field is defined" -msgstr "" +msgstr "Lista de módulos en los cuales el campo esta definido" #. module: base #: selection:base.language.install,lang:0 msgid "Chinese (CN) / 简体中文" -msgstr "" +msgstr "Chino (CN) / 简体中文" #. module: base #: field:ir.model.fields,selection:0 msgid "Selection Options" -msgstr "" +msgstr "Opciones de selección" #. module: base #: field:res.bank,street:0 @@ -7871,17 +8441,17 @@ msgstr "" #: field:res.partner.address,street:0 #: field:res.partner.bank,street:0 msgid "Street" -msgstr "" +msgstr "Calle" #. module: base #: model:res.country,name:base.yu msgid "Yugoslavia" -msgstr "" +msgstr "Yugoslavia" #. module: base #: field:res.partner.category,parent_right:0 msgid "Right parent" -msgstr "" +msgstr "Padre derecho" #. module: base #: model:ir.module.module,description:base.module_fetchmail @@ -7929,17 +8499,17 @@ msgstr "" #. module: base #: field:res.currency,rounding:0 msgid "Rounding Factor" -msgstr "" +msgstr "Factor de redondeo" #. module: base #: model:res.country,name:base.ca msgid "Canada" -msgstr "" +msgstr "Canadá" #. module: base #: view:base.language.export:0 msgid "Launchpad" -msgstr "" +msgstr "Launchpad" #. module: base #: help:res.currency.rate,currency_rate_type_id:0 @@ -7947,22 +8517,25 @@ msgid "" "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" msgstr "" +"Permite definir tipos de tasa de cambio personalizados, como 'Promedio' o " +"'Año atrás'. Dejar vacío si simplemente se quiere usar el tipo normal " +"'exacto' de tasa de cambio." #. module: base #: selection:ir.module.module.dependency,state:0 msgid "Unknown" -msgstr "" +msgstr "Desconocido" #. module: base #: model:ir.actions.act_window,name:base.action_res_users_my msgid "Change My Preferences" -msgstr "" +msgstr "Cambiar mis preferencias" #. module: base #: code:addons/base/ir/ir_actions.py:172 #, python-format msgid "Invalid model name in the action definition." -msgstr "" +msgstr "Nombre de modelo no válido en la definición de acción." #. module: base #: model:ir.module.module,description:base.module_l10n_ro @@ -7976,74 +8549,82 @@ msgid "" "Romanian accounting chart and localization.\n" " " msgstr "" +"\n" +"Módulo para administrar el plan de cuentas, estructura de impuestos y número " +"de registro de Rumania en OpenERP.\n" +"=============================================================================" +"==============\n" +"\n" +"Plan de cuentas y localización de Rumania.\n" +" " #. module: base #: model:res.country,name:base.cm msgid "Cameroon" -msgstr "" +msgstr "Camerún" #. module: base #: model:res.country,name:base.bf msgid "Burkina Faso" -msgstr "" +msgstr "Burkina Faso" #. module: base #: selection:ir.model.fields,state:0 msgid "Custom Field" -msgstr "" +msgstr "Campo personalizado" #. module: base #: model:ir.module.module,summary:base.module_account_accountant msgid "Financial and Analytic Accounting" -msgstr "" +msgstr "Contabilidad Análitica y Financiera" #. module: base #: model:ir.module.module,shortdesc:base.module_portal_project msgid "Portal Project" -msgstr "" +msgstr "Portal de Proyectos" #. module: base #: model:res.country,name:base.cc msgid "Cocos (Keeling) Islands" -msgstr "" +msgstr "Islas Cocos (Keeling)" #. module: base #: selection:base.language.install,state:0 #: selection:base.module.import,state:0 #: selection:base.module.update,state:0 msgid "init" -msgstr "" +msgstr "init" #. module: base #: view:res.partner:0 #: field:res.partner,user_id:0 msgid "Salesperson" -msgstr "" +msgstr "Vendedor" #. module: base #: view:res.lang:0 msgid "11. %U or %W ==> 48 (49th week)" -msgstr "" +msgstr "11. %U or %W ==> 48 (49ª semana)" #. module: base #: model:ir.model,name:base.model_res_partner_bank_type_field msgid "Bank type fields" -msgstr "" +msgstr "Campos tipo de banco" #. module: base #: constraint:ir.rule:0 msgid "Rules can not be applied on Transient models." -msgstr "" +msgstr "Las reglas no pueden ser aplicadas en modelos transitorios." #. module: base #: selection:base.language.install,lang:0 msgid "Dutch / Nederlands" -msgstr "" +msgstr "Holandés / Nederlands" #. module: base #: selection:res.company,paper_format:0 msgid "US Letter" -msgstr "" +msgstr "Carta de EEUU" #. module: base #: model:ir.module.module,description:base.module_marketing @@ -8055,28 +8636,35 @@ msgid "" "Contains the installer for marketing-related modules.\n" " " msgstr "" +"\n" +"Menú para Marketing.\n" +"===================\n" +"\n" +"Contiene el instalador para los módulos relacionados con marketing.\n" +" " #. module: base #: model:ir.actions.act_window,name:base.bank_account_update msgid "Company Bank Accounts" -msgstr "" +msgstr "Cuentas bancarias de la compañía" #. module: base #: code:addons/base/res/res_users.py:470 #, python-format msgid "Setting empty passwords is not allowed for security reasons!" msgstr "" +"¡No se permite establecer contraseñas vacías por motivos de seguridad!" #. module: base #: help:ir.mail_server,smtp_pass:0 msgid "Optional password for SMTP authentication" -msgstr "" +msgstr "Contraseña opcional para la autenticación SMTP" #. module: base #: code:addons/base/ir/ir_model.py:719 #, python-format msgid "Sorry, you are not allowed to modify this document." -msgstr "" +msgstr "Lo sentimos, usted no tiene permitido modificar este documento." #. module: base #: code:addons/base/res/res_config.py:350 @@ -8086,57 +8674,60 @@ msgid "" "\n" "This addon is already installed on your system" msgstr "" +"\n" +"\n" +"Este módulo ya está instalado en su sistema." #. module: base #: help:ir.cron,interval_number:0 msgid "Repeat every x." -msgstr "" +msgstr "Repetir cada x." #. module: base #: model:res.partner.bank.type,name:base.bank_normal msgid "Normal Bank Account" -msgstr "" +msgstr "Cuenta bancaria habitual" #. module: base #: view:ir.actions.wizard:0 msgid "Wizard" -msgstr "" +msgstr "Asistente" #. module: base #: code:addons/base/ir/ir_fields.py:304 #, python-format msgid "database id" -msgstr "" +msgstr "ID de la Base de Datos" #. module: base #: model:ir.module.module,shortdesc:base.module_base_import msgid "Base import" -msgstr "" +msgstr "Importar Base" #. module: base #: report:ir.module.reference:0 msgid "1cm 28cm 20cm 28cm" -msgstr "" +msgstr "1cm 28cm 20cm 28cm" #. module: base #: field:ir.module.module,maintainer:0 msgid "Maintainer" -msgstr "" +msgstr "Mantenedor" #. module: base #: field:ir.sequence,suffix:0 msgid "Suffix" -msgstr "" +msgstr "Sufijo" #. module: base #: model:res.country,name:base.mo msgid "Macau" -msgstr "" +msgstr "Macao" #. module: base #: model:ir.actions.report.xml,name:base.res_partner_address_report msgid "Labels" -msgstr "" +msgstr "Etiquetas" #. module: base #: help:res.partner,use_parent_address:0 @@ -8144,26 +8735,28 @@ msgid "" "Select this if you want to set company's address information for this " "contact" msgstr "" +"Marque esta si usted quiere ajustar la dirección de compañías para este " +"contacto" #. module: base #: field:ir.default,field_name:0 msgid "Object Field" -msgstr "" +msgstr "Campo del objeto" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (PE) / Español (PE)" -msgstr "" +msgstr "Español (PE) / Español (PE)" #. module: base #: selection:base.language.install,lang:0 msgid "French (CH) / Français (CH)" -msgstr "" +msgstr "Francés (CH) / Français (CH)" #. module: base #: model:res.partner.category,name:base.res_partner_category_13 msgid "Distributor" -msgstr "" +msgstr "Distribuidor" #. module: base #: help:ir.actions.server,subject:0 @@ -8172,6 +8765,9 @@ msgid "" "the same values as those available in the condition field, e.g. `Hello [[ " "object.partner_id.name ]]`" msgstr "" +"Asunto del e-mail, que puede contener expresiones encerradas entre corchetes " +"dobles basadas en los mismos valores que los disponibles en el campo " +"\"Condición\". Por ejemplo. 'Hola [[ object.partner_id.name ]]'." #. module: base #: help:res.partner,image:0 @@ -8179,11 +8775,13 @@ msgid "" "This field holds the image used as avatar for this contact, limited to " "1024x1024px" msgstr "" +"Este campo sostiene la imagen usada como avatar para este contacto, limitado " +"a 1024x1024px" #. module: base #: model:res.country,name:base.to msgid "Tonga" -msgstr "" +msgstr "Tonga" #. module: base #: help:ir.model.fields,serialization_field_id:0 @@ -8192,11 +8790,14 @@ msgid "" "serialization field, instead of having its own database column. This cannot " "be changed after creation." msgstr "" +"Si está establecido, este campo se almacenará en la estructura del campo de " +"serialización en lugar de tener su propia columna en la base de datos. No " +"puede ser modificado después de la creación" #. module: base #: view:res.partner.bank:0 msgid "Bank accounts belonging to one of your companies" -msgstr "" +msgstr "Cuentas bancarias pertencientes a alguna de sus compañías" #. module: base #: model:ir.module.module,description:base.module_account_analytic_plans @@ -8253,7 +8854,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_account_sequence msgid "Entries Sequence Numbering" -msgstr "" +msgstr "Numeración de la secuencia de asientos" #. module: base #: view:base.language.export:0 @@ -8263,17 +8864,17 @@ msgstr "" #. module: base #: view:ir.values:0 msgid "Client Actions" -msgstr "" +msgstr "Acciones cliente" #. module: base #: field:res.partner.bank.type,field_ids:0 msgid "Type Fields" -msgstr "" +msgstr "Escribir Campos" #. module: base #: model:ir.module.module,summary:base.module_hr_recruitment msgid "Jobs, Recruitment, Applications, Job Interviews" -msgstr "" +msgstr "Trabajos, Reclutamiento, Aplicaciones, Entrevistas de Trabajo" #. module: base #: code:addons/base/module/module.py:513 @@ -8282,11 +8883,13 @@ msgid "" "You try to upgrade a module that depends on the module: %s.\n" "But this module is not available in your system." msgstr "" +"Intenta actualizar un módulo que depende del módulo: %s.\n" +"Pero este módulo no está disponible en su sistema." #. module: base #: field:workflow.transition,act_to:0 msgid "Destination Activity" -msgstr "" +msgstr "Actividad destino" #. module: base #: help:res.currency,position:0 @@ -8294,6 +8897,8 @@ msgid "" "Determines where the currency symbol should be placed after or before the " "amount." msgstr "" +"Determina si el símbolo de moneda debe situarse antes o después de la " +"cantidad." #. module: base #: model:ir.module.module,shortdesc:base.module_pad_project @@ -8303,7 +8908,7 @@ msgstr "" #. module: base #: model:ir.model,name:base.model_base_update_translations msgid "base.update.translations" -msgstr "" +msgstr "base.actualizar.tranducciones" #. module: base #: code:addons/base/ir/ir_sequence.py:105 @@ -8311,27 +8916,27 @@ msgstr "" #: code:addons/base/res/res_users.py:470 #, python-format msgid "Warning!" -msgstr "" +msgstr "Advertencia!" #. module: base #: view:ir.rule:0 msgid "Full Access Right" -msgstr "" +msgstr "Derechos de Acceso Completo" #. module: base #: field:res.partner.category,parent_id:0 msgid "Parent Category" -msgstr "" +msgstr "Categoría padre" #. module: base #: model:res.country,name:base.fi msgid "Finland" -msgstr "" +msgstr "Finlandia" #. module: base #: model:ir.module.module,shortdesc:base.module_web_shortcuts msgid "Web Shortcuts" -msgstr "" +msgstr "Atajos Web" #. module: base #: view:res.partner:0 @@ -8340,52 +8945,52 @@ msgstr "" #: selection:res.partner.title,domain:0 #: view:res.users:0 msgid "Contact" -msgstr "" +msgstr "Contacto" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_at msgid "Austria - Accounting" -msgstr "" +msgstr "Austria - Contabilidad" #. module: base #: model:ir.model,name:base.model_ir_ui_menu msgid "ir.ui.menu" -msgstr "" +msgstr "ir.ui.menu" #. module: base #: model:ir.module.module,shortdesc:base.module_project msgid "Project Management" -msgstr "" +msgstr "Gestión de proyectos" #. module: base #: view:ir.module.module:0 msgid "Cancel Uninstall" -msgstr "" +msgstr "Cancelar desinstalación" #. module: base #: view:res.bank:0 msgid "Communication" -msgstr "" +msgstr "Comunicación" #. module: base #: model:ir.module.module,shortdesc:base.module_analytic msgid "Analytic Accounting" -msgstr "" +msgstr "Contabilidad analítica" #. module: base #: model:ir.model,name:base.model_ir_model_constraint msgid "ir.model.constraint" -msgstr "" +msgstr "ir.model.constraint" #. module: base #: model:ir.module.module,shortdesc:base.module_web_graph msgid "Graph Views" -msgstr "" +msgstr "Vistas Gráficas" #. module: base #: help:ir.model.relation,name:0 msgid "PostgreSQL table name implementing a many2many relation." -msgstr "" +msgstr "Implementando Nombre de Tabla PostgreSQL a una relación many2many" #. module: base #: model:ir.module.module,description:base.module_base @@ -8394,36 +8999,39 @@ msgid "" "The kernel of OpenERP, needed for all installation.\n" "===================================================\n" msgstr "" +"\n" +"El núcleo de OpenERP, necesitado para toda la instalación.\n" +"========================================================\n" #. module: base #: model:ir.model,name:base.model_ir_server_object_lines msgid "ir.server.object.lines" -msgstr "" +msgstr "ir.server.object.lines" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_be msgid "Belgium - Accounting" -msgstr "" +msgstr "Bélgica - Contabilidad" #. module: base #: view:ir.model.access:0 msgid "Access Control" -msgstr "" +msgstr "Control de Acceso" #. module: base #: model:res.country,name:base.kw msgid "Kuwait" -msgstr "" +msgstr "Kuwait" #. module: base #: model:ir.module.module,shortdesc:base.module_account_followup msgid "Payment Follow-up Management" -msgstr "" +msgstr "Seguimiento de Gestión de Pago" #. module: base #: field:workflow.workitem,inst_id:0 msgid "Instance" -msgstr "" +msgstr "Instancia" #. module: base #: help:ir.actions.report.xml,attachment:0 @@ -8432,6 +9040,9 @@ msgid "" "Keep empty to not save the printed reports. You can use a python expression " "with the object and time variables." msgstr "" +"Éste es el nombre del archivo del adjunto utilizado para almacenar el " +"resultado de impresión. Déjelo vacío para no guardar los informes impresos. " +"Puede utilizar una expresión Python con las variables objeto y fecha/hora." #. module: base #: sql_constraint:ir.model.data:0 @@ -8439,82 +9050,84 @@ msgid "" "You cannot have multiple records with the same external ID in the same " "module!" msgstr "" +"¡No puede haber múltiples registros con el mismo ID externo en el mismo " +"módulo!" #. module: base #: selection:ir.property,type:0 msgid "Many2One" -msgstr "" +msgstr "Many2One" #. module: base #: model:res.country,name:base.ng msgid "Nigeria" -msgstr "" +msgstr "Nigeria" #. module: base #: code:addons/base/ir/ir_model.py:332 #, python-format msgid "For selection fields, the Selection Options must be given!" -msgstr "" +msgstr "¡Para campos selection debe indicar las opciones de selección!" #. module: base #: model:ir.module.module,shortdesc:base.module_base_iban msgid "IBAN Bank Accounts" -msgstr "" +msgstr "Cuentas bancarias IBAN" #. module: base #: field:res.company,user_ids:0 msgid "Accepted Users" -msgstr "" +msgstr "Usuarios aceptados" #. module: base #: field:ir.ui.menu,web_icon_data:0 msgid "Web Icon Image" -msgstr "" +msgstr "Imagen icono web" #. module: base #: field:ir.actions.server,wkf_model_id:0 msgid "Target Object" -msgstr "" +msgstr "Objeto objetivo" #. module: base #: selection:ir.model.fields,select_level:0 msgid "Always Searchable" -msgstr "" +msgstr "Siempre puede ser buscado" #. module: base #: help:res.country.state,code:0 msgid "The state code in max. three chars." -msgstr "" +msgstr "El máximo codigo de estado. 3 caracteres" #. module: base #: model:res.country,name:base.hk msgid "Hong Kong" -msgstr "" +msgstr "Hong Kong" #. module: base #: model:ir.module.module,shortdesc:base.module_portal_sale msgid "Portal Sale" -msgstr "" +msgstr "Portal de Ventas" #. module: base #: field:ir.default,ref_id:0 msgid "ID Ref." -msgstr "" +msgstr "Ref. ID" #. module: base #: model:res.country,name:base.ph msgid "Philippines" -msgstr "" +msgstr "Filipinas" #. module: base #: model:ir.module.module,summary:base.module_hr_timesheet_sheet msgid "Timesheets, Attendances, Activities" -msgstr "" +msgstr "Hoja de horas por servicio, Asistencia, Actividades" #. module: base #: model:res.country,name:base.ma msgid "Morocco" -msgstr "" +msgstr "Marruecos" #. module: base #: help:ir.values,model_id:0 @@ -8522,11 +9135,13 @@ msgid "" "Model to which this entry applies - helper field for setting a model, will " "automatically set the correct model name" msgstr "" +"Modelo para el que se aplica esta entrada - campo auxiliar para establecer " +"un modelo, que será automáticamente establecido al nombre de modelo correcto" #. module: base #: view:res.lang:0 msgid "2. %a ,%A ==> Fri, Friday" -msgstr "" +msgstr "2. %a ,%A ==> Vie, Viernes" #. module: base #: code:addons/base/ir/ir_translation.py:341 @@ -8535,6 +9150,8 @@ msgid "" "Translation features are unavailable until you install an extra OpenERP " "translation." msgstr "" +"Las Características de Traducción no están disponibles hasta que usted " +"instala una traducción extra en OpenERP." #. module: base #: model:ir.module.module,description:base.module_l10n_nl @@ -8578,16 +9195,56 @@ msgid "" "\n" " " msgstr "" +"\n" +"Este es el modulo para gestionar el plan de cuenta para Neerlandés en " +"OpenERP.\n" +"=============================================================================" +"=======\n" +"\n" +"Lea los cambios en el archivo __openerp__.py para la versión de " +"información.\n" +"Read changelog in file __openerp__.py for version information.\n" +"Dit is een basismodule om een uitgebreid grootboek- en BTW schema voor\n" +"Nederlandse bedrijven te installeren in OpenERP versie 7.0.\n" +"\n" +"De BTW rekeningen zijn waar nodig gekoppeld om de juiste rapportage te " +"genereren,\n" +"denk b.v. aan intracommunautaire verwervingen waarbij u 21% BTW moet " +"opvoeren,\n" +"maar tegelijkertijd ook 21% als voorheffing weer mag aftrekken.\n" +"\n" +"Na installatie van deze module word de configuratie wizard voor 'Accounting' " +"aangeroepen.\n" +"* U krijgt een lijst met grootboektemplates aangeboden waarin zich ook het\n" +"Nederlandse grootboekschema bevind.\n" +"\n" +"* Als de configuratie wizard start, wordt u gevraagd om de naam van uw " +"bedrijf\n" +"in te voeren, welke grootboekschema te installeren, uit hoeveel cijfers een\n" +"grootboekrekening mag bestaan, het rekeningnummer van uw bank en de " +"currency\n" +"om Journalen te creeren.\n" +"\n" +"Let op!! -> De template van het Nederlandse rekeningschema is opgebouwd uit " +"4\n" +"cijfers. Dit is het minimale aantal welk u moet invullen, u mag het aantal " +"verhogen.\n" +"De extra cijfers worden dan achter het rekeningnummer aangevult met " +"'nullen'.\n" +"\n" +" " #. module: base #: help:ir.rule,global:0 msgid "If no group is specified the rule is global and applied to everyone" msgstr "" +"Si no se especifica ningún grupo, la regla es global y se aplica a todo el " +"mundo." #. module: base #: model:res.country,name:base.td msgid "Chad" -msgstr "" +msgstr "Chad" #. module: base #: help:ir.cron,priority:0 @@ -8595,31 +9252,33 @@ msgid "" "The priority of the job, as an integer: 0 means higher priority, 10 means " "lower priority." msgstr "" +"Prioridad del trabajo, expresada con un entero: 0 significa la máxima " +"prioridad, 10 significa la prioridad más baja." #. module: base #: model:ir.model,name:base.model_workflow_transition msgid "workflow.transition" -msgstr "" +msgstr "workflow.transition" #. module: base #: view:res.lang:0 msgid "%a - Abbreviated weekday name." -msgstr "" +msgstr "%a - Nombre abreviado del día de la semana." #. module: base #: view:ir.ui.menu:0 msgid "Submenus" -msgstr "" +msgstr "Submenús" #. module: base #: report:ir.module.reference:0 msgid "Introspection report on objects" -msgstr "" +msgstr "Introspección informe sobre los objetos" #. module: base #: model:ir.module.module,shortdesc:base.module_web_analytics msgid "Google Analytics" -msgstr "" +msgstr "Google Analytics" #. module: base #: model:ir.module.module,description:base.module_note @@ -8642,83 +9301,84 @@ msgstr "" #. module: base #: model:res.country,name:base.dm msgid "Dominica" -msgstr "" +msgstr "Dominica" #. module: base #: field:ir.translation,name:0 msgid "Translated field" -msgstr "" +msgstr "Campos Traducidos" #. module: base #: model:ir.module.module,shortdesc:base.module_stock_location msgid "Advanced Routes" -msgstr "" +msgstr "Rutas avanzadas" #. module: base #: model:ir.module.module,shortdesc:base.module_pad msgid "Collaborative Pads" -msgstr "" +msgstr "Pads colaborativos" #. module: base #: model:res.country,name:base.np msgid "Nepal" -msgstr "" +msgstr "Nepal" #. module: base #: model:ir.module.module,shortdesc:base.module_document_page msgid "Document Page" -msgstr "" +msgstr "Página de Documentos" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ar msgid "Argentina Localization Chart Account" -msgstr "" +msgstr "Plan de Cuenta Localización Argentina" #. module: base #: field:ir.module.module,description_html:0 msgid "Description HTML" -msgstr "" +msgstr "HTML de Descripción" #. module: base #: help:res.groups,implied_ids:0 msgid "Users of this group automatically inherit those groups" msgstr "" +"Los usuarios de este grupo automaticamente heredan de aquellos grupos" #. module: base #: model:ir.module.module,summary:base.module_note msgid "Sticky notes, Collaborative, Memos" -msgstr "" +msgstr "Notas adesivas, Colaborativas, Memos" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_attendance #: model:res.groups,name:base.group_hr_attendance msgid "Attendances" -msgstr "" +msgstr "Asistencias" #. module: base #: model:ir.module.module,shortdesc:base.module_warning msgid "Warning Messages and Alerts" -msgstr "" +msgstr "Mensajes de aviso y alertas" #. module: base #: model:ir.actions.act_window,name:base.action_ui_view_custom #: model:ir.ui.menu,name:base.menu_action_ui_view_custom #: view:ir.ui.view.custom:0 msgid "Customized Views" -msgstr "" +msgstr "Vistas personalizadas" #. module: base #: view:base.module.import:0 #: model:ir.actions.act_window,name:base.action_view_base_module_import msgid "Module Import" -msgstr "" +msgstr "Importación de módulo" #. module: base #: model:ir.actions.act_window,name:base.act_values_form_action #: model:ir.ui.menu,name:base.menu_values_form_action #: view:ir.values:0 msgid "Action Bindings" -msgstr "" +msgstr "Enlaces de acciones" #. module: base #: help:res.partner,lang:0 @@ -8726,6 +9386,9 @@ msgid "" "If the selected language is loaded in the system, all documents related to " "this contact will be printed in this language. If not, it will be English." msgstr "" +"Si el lenguaje seleccionado esta cargado en el sistema, todos los documentos " +"relacionados a este contacto serán impresos en este lenguaje. Si no, este " +"será Ingles." #. module: base #: model:ir.module.module,description:base.module_hr_evaluation @@ -8763,7 +9426,7 @@ msgstr "" #. module: base #: model:ir.ui.menu,name:base.menu_view_base_module_update msgid "Update Modules List" -msgstr "" +msgstr "Actualizar lista de módulos" #. module: base #: code:addons/base/module/module.py:338 @@ -8771,11 +9434,13 @@ msgstr "" msgid "" "Unable to upgrade module \"%s\" because an external dependency is not met: %s" msgstr "" +"Imposible actualizar el módulo \"%s\" porqué hay una dependencia externa no " +"resuelta: %s" #. module: base #: model:ir.module.module,shortdesc:base.module_account msgid "eInvoicing" -msgstr "" +msgstr "Facturación electrónica" #. module: base #: code:addons/base/res/res_users.py:175 @@ -8786,37 +9451,41 @@ msgid "" "sure to save and close all forms before switching to a different company. " "(You can click on Cancel in the User Preferences now)" msgstr "" +"Tenga en cuenta que los documentos que se muestran actualmente pueden no ser " +"relevantes después de cambiar a otra compañía. Asegúrese de guardar y cerrar " +"todas los formularios modificados antes de cambiar a una compañía diferente " +"(ahora puede hacer clic en Cancelar en las preferencias del usuario)" #. module: base #: code:addons/orm.py:2821 #, python-format msgid "The value \"%s\" for the field \"%s.%s\" is not in the selection" -msgstr "" +msgstr "El valor \"%s\" para el campo \"%s.%s\" no está en la selección" #. module: base #: view:ir.actions.configuration.wizard:0 msgid "Continue" -msgstr "" +msgstr "Siguiente" #. module: base #: selection:base.language.install,lang:0 msgid "Thai / ภาษาไทย" -msgstr "" +msgstr "Tailandés / ภาษาไทย" #. module: base #: view:res.lang:0 msgid "%j - Day of the year [001,366]." -msgstr "" +msgstr "%j - Día del año [001,366]." #. module: base #: selection:base.language.install,lang:0 msgid "Slovenian / slovenščina" -msgstr "" +msgstr "Esloveno / slovenščina" #. module: base #: field:res.currency,position:0 msgid "Symbol Position" -msgstr "" +msgstr "Posición de Simbolo" #. module: base #: model:ir.module.module,description:base.module_l10n_de @@ -8830,16 +9499,20 @@ msgid "" "German accounting chart and localization.\n" " " msgstr "" +"\n" +"Plan de cuentas y localización alemana.\n" +"===============================\n" +" " #. module: base #: field:ir.actions.report.xml,attachment_use:0 msgid "Reload from Attachment" -msgstr "" +msgstr "Recargar desde adjunto" #. module: base #: model:res.country,name:base.mx msgid "Mexico" -msgstr "" +msgstr "México" #. module: base #: code:addons/orm.py:3871 @@ -8850,11 +9523,15 @@ msgid "" "\n" "(Document type: %s)" msgstr "" +"Para este tipo de documentos, usted solo puede acceder a archivos que usted " +"mismo creó.\n" +"\n" +"(Tipo de Documento: %s)" #. module: base #: view:base.language.export:0 msgid "documentation" -msgstr "" +msgstr "documentación" #. module: base #: help:ir.model,osv_memory:0 @@ -8862,62 +9539,64 @@ msgid "" "This field specifies whether the model is transient or not (i.e. if records " "are automatically deleted from the database or not)" msgstr "" +"Este campo especifica si el modelo es trascendente o no (Ejemplo: Si los " +"archivos son automáticamente eliminados desde la base de datos o no)" #. module: base #: code:addons/base/ir/ir_mail_server.py:441 #, python-format msgid "Missing SMTP Server" -msgstr "" +msgstr "Servidor SMTP ausente" #. module: base #: field:ir.attachment,name:0 msgid "Attachment Name" -msgstr "" +msgstr "Nombre del adjunto" #. module: base #: field:base.language.export,data:0 #: field:base.language.import,data:0 msgid "File" -msgstr "" +msgstr "Archivo" #. module: base #: model:ir.actions.act_window,name:base.action_view_base_module_upgrade_install msgid "Module Upgrade Install" -msgstr "" +msgstr "Instalar actualizar módulo" #. module: base #: model:ir.model,name:base.model_ir_actions_configuration_wizard msgid "ir.actions.configuration.wizard" -msgstr "" +msgstr "ir.actions.configuration.wizard" #. module: base #: view:res.lang:0 msgid "%b - Abbreviated month name." -msgstr "" +msgstr "%b - Nombre abreviado del mes." #. module: base #: code:addons/base/ir/ir_model.py:721 #, python-format msgid "Sorry, you are not allowed to delete this document." -msgstr "" +msgstr "Lo sentimos, usted no tiene permitod eliminar este documento." #. module: base #: constraint:ir.rule:0 msgid "Rules can not be applied on the Record Rules model." -msgstr "" +msgstr "Las reglas no pueden ser aplicadas en el archivo modelo de reglas." #. module: base #: field:res.partner,supplier:0 #: field:res.partner.address,is_supplier_add:0 #: model:res.partner.category,name:base.res_partner_category_1 msgid "Supplier" -msgstr "" +msgstr "Proveedor" #. module: base #: view:ir.actions.server:0 #: selection:ir.actions.server,state:0 msgid "Multi Actions" -msgstr "" +msgstr "Multi acciones" #. module: base #: model:ir.module.module,summary:base.module_mail @@ -8944,91 +9623,109 @@ msgid "" "* Show all costs associated to a vehicle or to a type of service\n" "* Analysis graph for costs\n" msgstr "" +"\n" +"Vehículo, Alquiler, seguros, costos\n" +"================================\n" +"Con este modulo, OpenERP les ayuda a administrar todos sus vehículos, \n" +"los contratos asociados a esos vehículos así como el servicio, log de\n" +"entradas de combustible, costos y algunas otras características necesarias " +"para la gestión \n" +"de sus fletes de vehículo(s)\n" +"\n" +"Características Principales\n" +"------------------\n" +"*Agrega vehículos a sus fletes\n" +"*Gestiona contratos para vehículos\n" +"*Recordatorios cuando un contrato alcanza su fecha de expiración\n" +"*Agregar servicios, entradas de log de combustible, valores de cuenta " +"kilómetros para todos los vehículos\n" +"*Muestra todo el costo asociado a un vehículo o a un tipo de servicio\n" +"*Análisis gráficos para costos\n" #. module: base #: field:multi_company.default,company_dest_id:0 msgid "Default Company" -msgstr "" +msgstr "Compañía por defecto" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (EC) / Español (EC)" -msgstr "" +msgstr "Español (EC) / Español (EC)" #. module: base #: help:ir.ui.view,xml_id:0 msgid "ID of the view defined in xml file" -msgstr "" +msgstr "El ID de la vista definido en el archivo xml." #. module: base #: model:ir.model,name:base.model_base_module_import msgid "Import Module" -msgstr "" +msgstr "Importar módulo" #. module: base #: model:res.country,name:base.as msgid "American Samoa" -msgstr "" +msgstr "Samoa Americana" #. module: base #: view:ir.attachment:0 msgid "My Document(s)" -msgstr "" +msgstr "Mis Documentos" #. module: base #: help:ir.actions.act_window,res_model:0 msgid "Model name of the object to open in the view window" -msgstr "" +msgstr "Nombre del modelo del objeto a abrir en la ventana de la vista." #. module: base #: field:ir.model.fields,selectable:0 msgid "Selectable" -msgstr "" +msgstr "Seleccionable" #. module: base #: code:addons/base/ir/ir_mail_server.py:220 #, python-format msgid "Everything seems properly set up!" -msgstr "" +msgstr "¡Todo parece correctamente configurado!" #. module: base #: view:res.request.link:0 msgid "Request Link" -msgstr "" +msgstr "Solicitar enlace" #. module: base #: view:ir.attachment:0 #: selection:ir.attachment,type:0 #: field:ir.module.module,url:0 msgid "URL" -msgstr "" +msgstr "URL" #. module: base #: help:res.country,name:0 msgid "The full name of the country." -msgstr "" +msgstr "El nombre completo del país." #. module: base #: selection:ir.actions.server,state:0 msgid "Iteration" -msgstr "" +msgstr "Iteración" #. module: base #: code:addons/orm.py:4213 #: code:addons/orm.py:4314 #, python-format msgid "UserError" -msgstr "" +msgstr "Error de usuario" #. module: base #: model:ir.module.module,summary:base.module_project_issue msgid "Support, Bug Tracker, Helpdesk" -msgstr "" +msgstr "Soporte, Rastreador de Bug, Ayudante de Escritorio" #. module: base #: model:res.country,name:base.ae msgid "United Arab Emirates" -msgstr "" +msgstr "Emiratos Árabes Unidos" #. module: base #: help:ir.ui.menu,needaction_enabled:0 @@ -9044,21 +9741,23 @@ msgstr "" msgid "" "Unable to delete this document because it is used as a default property" msgstr "" +"No se ha podido eliminar este documento ya que se utiliza como una propiedad " +"por defecto" #. module: base #: model:res.partner.category,name:base.res_partner_category_5 msgid "Silver" -msgstr "" +msgstr "Plateado" #. module: base #: field:res.partner.title,shortcut:0 msgid "Abbreviation" -msgstr "" +msgstr "Abreviación" #. module: base #: model:ir.ui.menu,name:base.menu_crm_case_job_req_main msgid "Recruitment" -msgstr "" +msgstr "Proceso de selección" #. module: base #: model:ir.module.module,description:base.module_l10n_gr @@ -9070,11 +9769,17 @@ msgid "" "Greek accounting chart and localization.\n" " " msgstr "" +"\n" +"Módulo para administrar el plan de cuentas para Grecia.\n" +"============================================\n" +"\n" +"Plan de cuentas y localización griego.\n" +" " #. module: base #: view:ir.values:0 msgid "Action Reference" -msgstr "" +msgstr "Referencia de la acción" #. module: base #: model:ir.module.module,description:base.module_auth_ldap diff --git a/openerp/addons/base/i18n/fr.po b/openerp/addons/base/i18n/fr.po index f17c570b31a..548314881e4 100644 --- a/openerp/addons/base/i18n/fr.po +++ b/openerp/addons/base/i18n/fr.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-12-03 11:15+0000\n" +"PO-Revision-Date: 2012-12-06 10:07+0000\n" "Last-Translator: Quentin THEURET \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: 2012-12-04 04:55+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-07 04:34+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -26,7 +26,7 @@ msgid "" msgstr "" "\n" "Module pour l'écriture et l'impression de chèques.\n" -"================================================\n" +"==================================================\n" " " #. module: base @@ -129,10 +129,10 @@ msgid "" msgstr "" "\n" "Ce module ajoute des fabricants et des attributs sur le formulaire produit.\n" -"==========================================================\n" +"===========================================================================\n" "\n" "Vous pouvez maintenant définir pour un produit:\n" -"-------------------------------------------------------------------\n" +"-----------------------------------------------\n" " * un fabricant\n" " * le nom du produit chez le fabricant\n" " * le code produit chez le fabricant\n" @@ -153,7 +153,7 @@ msgid "" msgstr "" "\n" "Ce module ajoute les utilisateurs Google dans res.user.\n" -"========================================\n" +"=======================================================\n" #. module: base #: help:res.partner,employee:0 @@ -212,7 +212,7 @@ msgid "" msgstr "" "\n" "Génère vos factures à partir des dépenses et des feuilles de temps.\n" -"=====================================================\n" +"===================================================================\n" "\n" "Module pour générer les factures basées sur les coûts (RH, dépenses…).\n" "\n" @@ -253,8 +253,8 @@ msgid "" "* Opportunities by Stage (graph)\n" msgstr "" "\n" -"Le module générique de Gestion de la Relation Client d'OpenERP\n" -"===================================================\n" +"Le module générique de Gestion de la Relation Client d'OpenERP (CRM)\n" +"====================================================================\n" "Cette application permet à un groupe de personnes de gérer intelligemment et " "efficacement les pistes, les opportunités, les réunions et les appels " "téléphoniques.\n" @@ -277,8 +277,8 @@ msgstr "" "automatiquement à l'équipe appropriée et s'assurer que les correspondances " "futures se fassent au bon endroit.\n" "\n" -"Le tableau de bord GRC inclura :\n" -"--------------------------------------------\n" +"Le tableau de bord CRM inclura :\n" +"--------------------------------\n" "* Le revenu planifié par étape et par utilisateur (graphique)\n" "* Les opportunités par étape (graphique)\n" @@ -364,7 +364,7 @@ msgid "" msgstr "" "\n" "Comptabilité chilienne et mise en place des taxes pour le Chili\n" -"================================================\n" +"===============================================================\n" "Plan comptable chilien et taxes en accord avec la législation en vigueur.\n" "\n" " " @@ -418,10 +418,10 @@ msgid "" msgstr "" "\n" "Ajoute des informations de date additionnelles au commandes de vente.\n" -"==========================================================\n" +"=====================================================================\n" "\n" "Vous pouvez ajouter les dates suivantes à un bon de commande:\n" -"-----------------------------------------------------------\n" +"-------------------------------------------------------------\n" " * Date de la demande\n" " * Date de confirmation\n" " * Date Effective\n" @@ -486,7 +486,7 @@ msgid "" msgstr "" "\n" "Installateur invisible pour la base de connaissances\n" -"==========================================\n" +"====================================================\n" "\n" "Rend disponible la configuration de l’application des connaissances depuis " "l'endroit où vous\n" @@ -514,7 +514,7 @@ msgstr "" "Permet d'ajouter des méthodes de livraison dans les commandes de vente et " "dans les livraisons.\n" "=============================================================================" -"\n" +"=================\n" "\n" "Vous pouvez définir vos propres transporteurs et grilles de prix de " "livraison. Quand vous créez \n" @@ -701,7 +701,7 @@ msgid "" msgstr "" "\n" "Module de définition des comptes analytiques.\n" -"========================================\n" +"=============================================\n" "\n" "Dans OpenERP, les comptes analytiques sont liés à des comptes financiers " "mais sont traités\n" @@ -734,14 +734,14 @@ msgid "" msgstr "" "\n" "Gestion et organisation d'événements\n" -"=================================\n" +"====================================\n" "\n" "Le module 'event' vous permet d'organiser efficacement des événements et " "toutes les tâches liées : planification, suivi des inscriptions,\n" "des présences, etc.\n" "\n" "Fonctionnalités clés\n" -"----------------------------\n" +"--------------------\n" "* Gestion des événements et des inscriptions\n" "* Utilisation d'e-mails pour automatiquement confirmer et envoyer des " "accusés de réception pour chaque inscription à un événement\n" @@ -941,10 +941,10 @@ msgid "" msgstr "" "\n" "Comptabilité et gestion financière\n" -"================================\n" +"==================================\n" "\n" "Le module de comptabilité et de finance couvre :\n" -"---------------------------------------------------------------------\n" +"------------------------------------------------\n" " * Comptabilité générale\n" " * Comptabilité de coût / comptabilité analytique\n" " * Comptabilité de tiers\n" @@ -955,8 +955,7 @@ msgstr "" " * Lettrages par partenaire\n" "\n" "Il créé également un tableau de bord pour les comptables qui inclut :\n" -"-----------------------------------------------------------------------------" -"------------------\n" +"---------------------------------------------------------------------\n" " * Une liste des factures clients à approuver\n" " * L'analyse de la société\n" " * Un graphe de la trésorerie\n" @@ -1008,7 +1007,7 @@ msgid "" msgstr "" "\n" "Module LinkedIn pour OpenERP Web.\n" -"===============================\n" +"=================================\n" "Ce module fournit l'intégration de LinkedIn avec OpenERP.\n" " " @@ -1153,6 +1152,33 @@ msgid "" "also possible in order to automatically create a meeting when a holiday " "request is accepted by setting up a type of meeting in Leave Type.\n" msgstr "" +"\n" +"Gère les absences et les demandes de congés\n" +"===========================================\n" +"\n" +"Cette application contrôle la programmation des congés de votre société. Il " +"permet aux employés de faire des demandes de congés. Ensuite, les managers " +"peuvent examiner les demandes et les approuver ou les rejeter. De cette " +"façon, vous pouvez contrôler le planning de l'ensemble des congés de votre " +"société ou de votre département.\n" +"\n" +"Vous pouvez configurer plusieurs sortes d'absences (maladie, congés payés, " +"congés sans soldes…) et allouer rapidement ces absences à un employé ou un " +"département en utilisant les demandes de congés. Un employée peut aussi " +"faire une demande de congés pour plus de jours en ajoutant une allocation. " +"Cela va augmenter le total des jours disponibles pour ce type de congés (si " +"la demande est accepté).\n" +"\n" +"Vous pouvez suivre les absences de différentes façons grâce aux rapports " +"suivants : \n" +"\n" +"* Résumé des absences\n" +"* Absences par département\n" +"* Analyse des absences\n" +"\n" +"Une synchronisation avec les agendas internes (Réunions du module CRM) est " +"aussi possible dans le but de créer automatiquement une réunion quand une " +"demande de congés est accepté en ajoutant une type de réunion Absence.\n" #. module: base #: selection:base.language.install,lang:0 @@ -1257,6 +1283,13 @@ msgid "" " * the Tax Code Chart for Luxembourg\n" " * the main taxes used in Luxembourg" msgstr "" +"\n" +"Ceci est le module de base pour gérer le plan de comptes pour le Luxembourg\n" +"===========================================================================\n" +"\n" +" * le plan de compte KLUWER\n" +" * le plan de codes de taxes pour le Luxembourg\n" +" * les taxes principales utilisées au Luxembourg" #. module: base #: model:res.country,name:base.om @@ -1281,7 +1314,7 @@ msgid "" msgstr "" "\n" "Module de pointage des heures pour les employés.\n" -"==========================================\n" +"================================================\n" "\n" "Comptabilise les temps de présence des employés sur la base des\n" "pointages (Entrée / Sorties) réalisés.\n" @@ -1725,7 +1758,7 @@ msgstr "" "dans la configuration du serveur.\n" "\n" "Paramètres de configuration du serveur :\n" -"-------------------------------\n" +"----------------------------------------\n" "[webdav]:\n" "+++++++++ \n" " * enable = True ; Sert le webdav à travers les serveurs http(s)\n" @@ -1801,7 +1834,7 @@ msgstr "" "Ce module ajoute un menu pour les réclamations et les fonctionnalités pour " "votre portail si les modules claim et portal sont installés.\n" "=============================================================================" -"=======================================\n" +"==========================================================\n" " " #. module: base @@ -1895,7 +1928,7 @@ msgid "" msgstr "" "\n" "Le module de base pour gérer les repas.\n" -"====================================\n" +"=======================================\n" "\n" "Des sociétés commandent des sandwiches, des pizzas et d'autres repas, à des " "fournisseurs, pour leurs employés pour leur offrir plus de commodités.\n" @@ -2114,7 +2147,7 @@ msgstr "" "Ce module fournit le plan comptable standard pour l'Autriche qui est basé " "sur le modèle BMF.gv.at.\n" "=============================================================================" -"======================== \n" +"===================== \n" "Veuillez garder à l'esprit que vous devez le revoir et l'adapter avec votre " "comptable avant de l'utiliser dans un environnement de production.\n" @@ -2137,7 +2170,7 @@ msgid "" msgstr "" "\n" "Droits d'accès à la comptabilité\n" -"==========================\n" +"================================\n" "Cela donne à l'administrateur les droits d'accès à toutes les " "fonctionnalités comptables telles que les mouvements comptables et le plan " "de comptes.\n" @@ -2234,7 +2267,7 @@ msgstr "" "Ce module ajoute les outils de partage générique pour votre base de données " "OpenERP actuelle.\n" "=============================================================================" -"============\n" +"================\n" "\n" "Il ajoute spécifiquement un bouton 'Partager' qui est disponible dans le " "client web pour\n" @@ -2342,7 +2375,8 @@ msgstr "" "\n" "Synchronisation les entrées dans les tâches avec les entrées dans les " "feuilles de temps.\n" -"=========================================================================\n" +"=============================================================================" +"===========\n" "\n" "Ce module vous permet de transférer les entrées sous les tâches définies " "pour la gestion de\n" @@ -2421,7 +2455,7 @@ msgid "" msgstr "" "\n" "Module de base pour gérer le plan comptable pour l'Équateur dans OpenERP.\n" -"==============================================================\n" +"=========================================================================\n" "\n" "Module pour la comptabilité équatorienne\n" " " @@ -2472,13 +2506,13 @@ msgid "" msgstr "" "\n" "Gestion des devis et des commandes de vente\n" -"=========================================\n" +"===========================================\n" "\n" "Ce module fait le lien entre les ventes et les applications de gestion des " "entrepôts.\n" "\n" "Préférences\n" -"-------------------\n" +"-----------\n" "* Expédition : Choix de la livraison en une fois ou une livraison partielle\n" "* Facturation : Choisir comment les factures vont être payées\n" "* Incoterms : International Commercial terms\n" @@ -2677,6 +2711,29 @@ msgid "" "* Maximal difference between timesheet and attendances\n" " " msgstr "" +"\n" +"Enregistrer et valider facilement les feuilles de temps et les présences\n" +"========================================================================\n" +"\n" +"Cette application fournie un nouvel écran vous permettant de gérer à la fois " +"les présences (entrées/sorties) et l'enregistrement du travail (feuille de " +"temps) par période. Les saisies dans la feuille de temps sont faites par les " +"employés chaque jour. À la fin de la période définie, les employés valident " +"leurs feuilles de temps et le responsable doit approuver les saisies de son " +"équipe. Les périodes sont définis dans le formulaire de la société et vous " +"pouvez les paramétrer sur une base mensuelle ou hebdomadaire.\n" +"\n" +"Le processus complet de la validation des feuilles de temps est :\n" +"-----------------------------------------------------------------\n" +"* Feuille en brouillon\n" +"* Confirmation de la feuille à la fin de la période par les employées\n" +"* Validation par le responsable du projet\n" +"\n" +"La validation peut être paramétrée dans la société :\n" +"----------------------------------------------------\n" +"* Durée de la période (jour, semaine, mois)\n" +"* Différence maximale entre la feuille de temps et les présences\n" +" " #. module: base #: code:addons/base/ir/ir_fields.py:342 @@ -2844,7 +2901,7 @@ msgid "" msgstr "" "\n" "Gestion de Support (Helpdesk).\n" -"====================\n" +"==============================\n" "\n" "Les dossiers et le traitement des réclamations sont bien suivis et tracés " "avec le Helpdesk.\n" @@ -2932,11 +2989,25 @@ msgid "" " * Date\n" " " msgstr "" +"\n" +"Définir des valeurs par défaut pour les comptes analytiques.\n" +"============================================================\n" +"\n" +"Permet de sélectionner automatiquement les comptes analytiques selon des " +"critères :\n" +"-----------------------------------------------------------------------------" +"------\n" +" * Article\n" +" * Partenaire\n" +" * Utilisateur\n" +" * Société\n" +" * Date\n" +" " #. module: base #: field:res.company,rml_header1:0 msgid "Company Slogan" -msgstr "" +msgstr "Slogan de la société" #. module: base #: model:res.country,name:base.bb @@ -2960,7 +3031,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_oauth_signup msgid "Signup with OAuth2 Authentication" -msgstr "" +msgstr "Se connecter avec l'authentification OAuth2" #. module: base #: selection:ir.model,state:0 @@ -3021,6 +3092,10 @@ msgid "" "==================================\n" " " msgstr "" +"\n" +"États-Unis d'Amérique - Plan comptable.\n" +"=======================================\n" +" " #. module: base #: field:ir.actions.act_url,target:0 @@ -3055,7 +3130,7 @@ msgstr "Nom du raccourci" #. module: base #: field:res.partner,contact_address:0 msgid "Complete Address" -msgstr "" +msgstr "Adresse complète" #. module: base #: help:ir.actions.act_window,limit:0 @@ -3127,7 +3202,7 @@ msgstr "ID de l’enregistrement" #. module: base #: view:ir.filters:0 msgid "My Filters" -msgstr "" +msgstr "Mes filtres" #. module: base #: field:ir.actions.server,email:0 @@ -3141,12 +3216,16 @@ msgid "" "Module to attach a google document to any model.\n" "================================================\n" msgstr "" +"\n" +"Module pour attacher des documents Google à n'importe quel objet.\n" +"=================================================================\n" #. module: base #: code:addons/base/ir/ir_fields.py:334 #, python-format msgid "Found multiple matches for field '%%(field)s' (%d matches)" msgstr "" +"Plusieurs résultats ont été trouvés pour le champ '%%(field)s' (%d résultats)" #. module: base #: selection:base.language.install,lang:0 @@ -3180,7 +3259,7 @@ msgstr "Arguments envoyés au client avec la vue" #. module: base #: model:ir.module.module,summary:base.module_contacts msgid "Contacts, People and Companies" -msgstr "" +msgstr "Contacts, personnes et sociétés" #. module: base #: model:res.country,name:base.tt @@ -3213,7 +3292,7 @@ msgstr "Responsable" #: code:addons/base/ir/ir_model.py:718 #, python-format msgid "Sorry, you are not allowed to access this document." -msgstr "" +msgstr "Désolé, vous n'êtes pas autorisé à accéder à ce document." #. module: base #: model:res.country,name:base.py @@ -3329,7 +3408,7 @@ msgstr "" #: code:addons/base/ir/ir_fields.py:175 #, python-format msgid "'%s' does not seem to be an integer for field '%%(field)s'" -msgstr "" +msgstr "'%s' ne semble pas être un entier pour le champ '%%(field)s'" #. module: base #: model:ir.module.category,description:base.module_category_report_designer @@ -3390,7 +3469,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_web_linkedin msgid "LinkedIn Integration" -msgstr "" +msgstr "Intégration avec LinkedIn" #. module: base #: code:addons/orm.py:2021 @@ -3439,6 +3518,8 @@ msgid "" "the user will have an access to the sales configuration as well as statistic " "reports." msgstr "" +"l'utilisateur aura un accès à la configuration des ventes ainsi qu'aux " +"rapports statistiques." #. module: base #: model:res.country,name:base.nz @@ -3585,7 +3666,7 @@ msgstr "Arménie" #. module: base #: model:ir.module.module,summary:base.module_hr_evaluation msgid "Periodical Evaluations, Appraisals, Surveys" -msgstr "" +msgstr "Évaluations périodiques, appréciations, sondages" #. module: base #: model:ir.actions.act_window,name:base.ir_property_form @@ -3625,6 +3706,31 @@ msgid "" " payslip interface, but not in the payslip report\n" " " msgstr "" +"\n" +"Règles pour la paie française.\n" +"==============================\n" +"\n" +" - Configuration du module hr_payroll pour la localisation française\n" +" - Toutes les principales règles de contribution pour la fiche de paie " +"française, pour les cadres et les non-cadres\n" +" - Nouveau rapport des feuilles de paie\n" +"\n" +"Reste à faire :\n" +"---------------\n" +" - Intégration avec le module de gestion des congés pour la déduction des " +"congés et la gestion des indemnités\n" +" - Intégration avec le module hr_payroll_account pour la création des " +"lignes d'écritures \n" +" depuis la feuille de paie\n" +" - Continuer l'intégration des contributions. Seules les principales " +"contributions sont \n" +" actuellement implémentées.\n" +" - Retravailler le rapport sous webkit\n" +" - Les lignes de paie avec appears_in_payslip = False doivent apparaître " +"dans\n" +" l'interface des fiches de paie, mais pas dans le rapport des fiches de " +"paie.\n" +" " #. module: base #: model:res.country,name:base.se @@ -3634,7 +3740,7 @@ msgstr "Suède" #. module: base #: field:ir.actions.report.xml,report_file:0 msgid "Report File" -msgstr "" +msgstr "Fichier de rapport" #. module: base #: selection:ir.actions.act_window.view,view_mode:0 @@ -3667,7 +3773,7 @@ msgstr "" #: code:addons/orm.py:3839 #, python-format msgid "Missing document(s)" -msgstr "" +msgstr "Document(s) manquant(s)" #. module: base #: model:ir.model,name:base.model_res_partner_bank_type @@ -3682,6 +3788,8 @@ msgid "" "For more details about translating OpenERP in your language, please refer to " "the" msgstr "" +"Pour plus de détails concernant la traduction d'OpenERP dans votre langue, " +"veuillez vous référer à" #. module: base #: field:res.partner,image:0 @@ -3807,6 +3915,28 @@ msgid "" "database,\n" " but in the servers rootpad like /server/bin/filestore.\n" msgstr "" +"\n" +"Ceci est un système complet de gestion de documents.\n" +"=====================================================\n" +"\n" +" * Authentification des utilisateurs\n" +" * Indexation des documents ; les fichiers .pptx et .docx ne sont pas " +"supportés sous Windows.\n" +" * Tableau de bord des documents qui inclut :\n" +" * Nouveaux fichiers (liste)\n" +" * Fichiers par type de ressources (graphique)\n" +" * Fichiers par partenaire (graphique)\n" +" * Taille des fichiers par mois (graphique)\n" +"\n" +"ATTENTION :\n" +"-----------\n" +"\n" +" - Quand vous installez ce module en production dans une société qui a " +"déjà des fichiers PDF\n" +" enregistrés dans la base de données, ils seront tous perdus.\n" +" - Après l'installation de ce module les PDF ne seront plus enregistrés " +"dans la base de données,\n" +" mais à la racine du serveur dans /server/bin/filestore.\n" #. module: base #: help:res.currency,name:0 @@ -3898,7 +4028,7 @@ msgstr "Finlandais / Suomi" #. module: base #: view:ir.config_parameter:0 msgid "System Properties" -msgstr "" +msgstr "Propriétés système" #. module: base #: field:ir.sequence,prefix:0 @@ -3955,7 +4085,7 @@ msgstr "Personnel" #. module: base #: field:base.language.export,modules:0 msgid "Modules To Export" -msgstr "" +msgstr "Modules à exporter" #. module: base #: model:res.country,name:base.mt @@ -3968,6 +4098,8 @@ msgstr "Malte" msgid "" "Only users with the following access level are currently allowed to do that" msgstr "" +"Seuls les utilisateurs avec les niveaux d'accès suivants sont actuellement " +"autorisé à faire cela" #. module: base #: field:ir.actions.server,fields_lines:0 @@ -4128,7 +4260,7 @@ msgstr "De droite à gauche" #. module: base #: model:res.country,name:base.sx msgid "Sint Maarten (Dutch part)" -msgstr "" +msgstr "Saint-Martin (partie néerlandaise)" #. module: base #: view:ir.actions.act_window:0 diff --git a/openerp/addons/base/i18n/hr.po b/openerp/addons/base/i18n/hr.po index 908dc21eed1..ef10cfa1019 100644 --- a/openerp/addons/base/i18n/hr.po +++ b/openerp/addons/base/i18n/hr.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-11-24 21:10+0000\n" +"PO-Revision-Date: 2012-12-09 19:36+0000\n" "Last-Translator: Goran Kliska \n" "Language-Team: openerp-translators\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 04:59+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:36+0000\n" +"X-Generator: Launchpad (build 16341)\n" "Language: hr\n" #. module: base @@ -532,7 +532,7 @@ msgstr "Naziv relacije" #. module: base #: view:ir.rule:0 msgid "Create Access Right" -msgstr "" +msgstr "Kreiraj pravo pristupa" #. module: base #: model:res.country,name:base.tv @@ -582,7 +582,7 @@ msgstr "Francuska Guyana" #. module: base #: model:ir.module.module,summary:base.module_hr msgid "Jobs, Departments, Employees Details" -msgstr "" +msgstr "Radna mjesta, odjeli, podaci o radnicima" #. module: base #: model:ir.module.module,description:base.module_analytic @@ -695,7 +695,7 @@ msgstr "Kolumbija" #. module: base #: model:res.partner.title,name:base.res_partner_title_mister msgid "Mister" -msgstr "" +msgstr "Gospodin" #. module: base #: help:res.country,code:0 @@ -828,6 +828,11 @@ msgid "" "This module provides the Integration of the LinkedIn with OpenERP.\n" " " msgstr "" +"\n" +"OpenERP Web LinkedIn modul.\n" +"============================\n" +"Integracija LinkedIn-a sa OpenERP-om.\n" +" " #. module: base #: help:ir.actions.act_window,src_model:0 @@ -1132,7 +1137,7 @@ msgstr "Google korisnici" #. module: base #: model:ir.module.module,shortdesc:base.module_fleet msgid "Fleet Management" -msgstr "" +msgstr "Upravljanje flotom (automobili)" #. module: base #: help:ir.server.object.lines,value:0 @@ -1234,7 +1239,7 @@ msgstr "Zadnja verzija" #. module: base #: view:ir.rule:0 msgid "Delete Access Right" -msgstr "" +msgstr "Prava brisanja" #. module: base #: code:addons/base/ir/ir_mail_server.py:213 @@ -1304,7 +1309,7 @@ msgstr "Vidljivo" #. module: base #: model:ir.actions.client,name:base.action_client_base_menu msgid "Open Settings Menu" -msgstr "" +msgstr "Otvori izbornik postavki" #. module: base #: selection:base.language.install,lang:0 @@ -1427,7 +1432,7 @@ msgstr "Haiti" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_fr_hr_payroll msgid "French Payroll" -msgstr "" +msgstr "Francuska plaća" #. module: base #: view:ir.ui.view:0 @@ -2571,7 +2576,7 @@ msgstr "Grčka / Ελληνικά" #. module: base #: field:res.company,custom_footer:0 msgid "Custom Footer" -msgstr "" +msgstr "Prilagođeno podnožje" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_crm @@ -2879,7 +2884,7 @@ msgstr "Naslijeđeno" #: code:addons/base/ir/ir_fields.py:147 #, python-format msgid "yes" -msgstr "" +msgstr "da" #. module: base #: field:ir.model.fields,serialization_field_id:0 @@ -14826,7 +14831,7 @@ msgstr "" #. module: base #: field:ir.sequence,implementation:0 msgid "Implementation" -msgstr "" +msgstr "Implementacija" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ve @@ -14931,7 +14936,7 @@ msgstr "Ažuriranje sustava" #: field:ir.actions.report.xml,report_sxw_content:0 #: field:ir.actions.report.xml,report_sxw_content_data:0 msgid "SXW Content" -msgstr "" +msgstr "SXW Sadržaj" #. module: base #: help:ir.sequence,prefix:0 @@ -14946,7 +14951,7 @@ msgstr "Sejšeli" #. module: base #: model:res.partner.category,name:base.res_partner_category_4 msgid "Gold" -msgstr "" +msgstr "Zlatni" #. module: base #: code:addons/base/res/res_company.py:159 @@ -14973,7 +14978,7 @@ msgstr "Opći podaci" #. module: base #: field:ir.model.data,complete_name:0 msgid "Complete ID" -msgstr "" +msgstr "Puni ID" #. module: base #: model:res.country,name:base.tc @@ -14985,7 +14990,7 @@ msgstr "Turks and Caicos Islands" msgid "" "Tax Identification Number. Check the box if this contact is subjected to " "taxes. Used by the some of the legal statements." -msgstr "" +msgstr "Porezni broj (OIB) ." #. module: base #: field:res.partner.bank,partner_id:0 @@ -15070,7 +15075,7 @@ msgstr "" #. module: base #: view:res.partner:0 msgid "Internal Notes" -msgstr "" +msgstr "Interne bilješke" #. module: base #: selection:res.partner.address,type:0 @@ -15086,7 +15091,7 @@ msgstr "Corp." #. module: base #: model:ir.module.module,shortdesc:base.module_purchase_requisition msgid "Purchase Requisitions" -msgstr "" +msgstr "Natječaji u nabavi" #. module: base #: selection:ir.actions.act_window,target:0 @@ -15112,7 +15117,7 @@ msgstr "Partneri: " #. module: base #: view:res.partner:0 msgid "Is a Company?" -msgstr "" +msgstr "Je tvrtka=" #. module: base #: code:addons/base/res/res_company.py:159 @@ -15134,7 +15139,7 @@ msgstr "Kreiraj objekt" #. module: base #: model:res.country,name:base.ss msgid "South Sudan" -msgstr "" +msgstr "Južni Sudan" #. module: base #: field:ir.filters,context:0 diff --git a/openerp/addons/base/i18n/it.po b/openerp/addons/base/i18n/it.po index 2ff4d0bb006..b7b9d50b453 100644 --- a/openerp/addons/base/i18n/it.po +++ b/openerp/addons/base/i18n/it.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-12-01 13:29+0000\n" -"Last-Translator: Sergio Corato \n" +"PO-Revision-Date: 2012-12-09 12:05+0000\n" +"Last-Translator: Davide Corio - agilebg.com \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: 2012-12-04 04:57+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-10 04:36+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -92,7 +92,7 @@ msgstr "" #. module: base #: model:ir.module.module,summary:base.module_point_of_sale msgid "Touchscreen Interface for Shops" -msgstr "Interfaccia Touchscreen per Negozzi" +msgstr "Interfaccia Touchscreen per Negozi" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll @@ -140,6 +140,9 @@ msgid "" "The module adds google user in res user.\n" "========================================\n" msgstr "" +"\n" +"Aggiunge lo username Google a res.user.\n" +"========================================\n" #. module: base #: help:res.partner,employee:0 @@ -322,7 +325,7 @@ msgstr "Gestione Vendite" msgid "" "The internal user that is in charge of communicating with this contact if " "any." -msgstr "" +msgstr "L'utente responsabile delle comunicazioni con questo contatto." #. module: base #: view:res.partner:0 diff --git a/openerp/addons/base/i18n/pt.po b/openerp/addons/base/i18n/pt.po index da684ab1a89..1ee4820f500 100644 --- a/openerp/addons/base/i18n/pt.po +++ b/openerp/addons/base/i18n/pt.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-08-20 15:49+0000\n" -"Last-Translator: Tiago Rodrigues \n" +"PO-Revision-Date: 2012-12-07 10:59+0000\n" +"Last-Translator: Rui Franco (multibase.pt) \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: 2012-12-04 04:59+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-08 04:58+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -33,7 +33,7 @@ msgstr "Santa Helena" #. module: base #: view:ir.actions.report.xml:0 msgid "Other Configuration" -msgstr "Outras Configurações" +msgstr "Outras configurações" #. module: base #: selection:ir.property,type:0 @@ -69,12 +69,12 @@ msgstr "Sem espaços" #. module: base #: selection:base.language.install,lang:0 msgid "Hungarian / Magyar" -msgstr "Húngaro / Magyar" +msgstr "Húngaro" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (PY) / Español (PY)" -msgstr "Spanish (PY) / Español (PY)" +msgstr "Espanhol (PY) / Español (PY)" #. module: base #: model:ir.module.category,description:base.module_category_project_management @@ -88,7 +88,7 @@ msgstr "" #. module: base #: model:ir.module.module,summary:base.module_point_of_sale msgid "Touchscreen Interface for Shops" -msgstr "" +msgstr "Interface \"touchscreen\" para lojas" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll @@ -126,7 +126,7 @@ msgstr "" #. module: base #: field:ir.actions.client,params:0 msgid "Supplementary arguments" -msgstr "Argumentos Suplementares" +msgstr "Argumentos suplementares" #. module: base #: model:ir.module.module,description:base.module_google_base_account @@ -149,8 +149,8 @@ msgid "" "[('color','=','red')]" msgstr "" "O domínio opcional para restringir os valores possíveis para os campos de " -"relacionamento, especificado como uma expressão Python definir uma lista de " -"trigémeos. por exemplo: [('color','=','red')]" +"relacionamento, especificado como uma expressão Python para definir uma " +"lista de trigémeos. por exemplo: [('color','=','red')]" #. module: base #: field:res.partner,ref:0 @@ -160,12 +160,12 @@ msgstr "Referência" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_be_invoice_bba msgid "Belgium - Structured Communication" -msgstr "Bélgica - Comunicação Estruturada" +msgstr "Bélgica - Comunicação estruturada" #. module: base #: field:ir.actions.act_window,target:0 msgid "Target Window" -msgstr "Janela Alvo" +msgstr "Janela alvo" #. module: base #: field:ir.actions.report.xml,report_rml:0 @@ -241,7 +241,7 @@ msgstr "" #: code:addons/osv.py:130 #, python-format msgid "Constraint Error" -msgstr "Erro restrição" +msgstr "Erro de restrição" #. module: base #: model:ir.model,name:base.model_ir_ui_view_custom @@ -257,7 +257,7 @@ msgstr "" #. module: base #: model:res.country,name:base.sz msgid "Swaziland" -msgstr "Swaziland" +msgstr "Suazilândia" #. module: base #: code:addons/orm.py:4453 @@ -268,7 +268,7 @@ msgstr "Criado" #. module: base #: field:ir.actions.report.xml,report_xsl:0 msgid "XSL Path" -msgstr "" +msgstr "Caminho do XSL" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_tr @@ -278,13 +278,13 @@ msgstr "Turquia - Contabilidade" #. module: base #: field:ir.sequence,number_increment:0 msgid "Increment Number" -msgstr "Incrementar Número" +msgstr "Incrementar número" #. module: base #: model:ir.actions.act_window,name:base.action_res_company_tree #: model:ir.ui.menu,name:base.menu_action_res_company_tree msgid "Company's Structure" -msgstr "Estrutura da Empresa" +msgstr "Estrutura da empresa" #. module: base #: selection:base.language.install,lang:0 @@ -294,7 +294,7 @@ msgstr "Inuktitut / ᐃᓄᒃᑎᑐᑦ" #. module: base #: model:res.groups,name:base.group_multi_currency msgid "Multi Currencies" -msgstr "" +msgstr "Multidivisas" #. module: base #: model:ir.module.module,description:base.module_l10n_cl @@ -310,7 +310,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_sale msgid "Sales Management" -msgstr "Gestão de Vendas" +msgstr "Gestão de vendas" #. module: base #: help:res.partner,user_id:0 @@ -322,12 +322,12 @@ msgstr "" #. module: base #: view:res.partner:0 msgid "Search Partner" -msgstr "Localizar Parceiro" +msgstr "Localizar parceiro" #. module: base #: field:ir.module.category,module_nr:0 msgid "Number of Modules" -msgstr "Número de Módulos" +msgstr "Número de módulos" #. module: base #: help:multi_company.default,company_dest_id:0 @@ -363,7 +363,7 @@ msgstr "" #. module: base #: field:res.partner.address,name:0 msgid "Contact Name" -msgstr "Nome do Contato" +msgstr "Nome do contacto" #. module: base #: help:ir.values,key2:0 @@ -379,7 +379,7 @@ msgstr "" #. module: base #: sql_constraint:res.lang:0 msgid "The name of the language must be unique !" -msgstr "O nome da língua deve ser único" +msgstr "O nome da língua deve ser único!" #. module: base #: selection:res.request,state:0 @@ -407,7 +407,7 @@ msgstr "" #. module: base #: model:ir.module.category,name:base.module_category_customer_relationship_management msgid "Customer Relationship Management" -msgstr "Gestão da Relação do Cliente" +msgstr "Gestão da relação com os clientes" #. module: base #: model:ir.module.module,description:base.module_delivery @@ -444,14 +444,14 @@ msgstr "Aplicações Descendentes" #. module: base #: field:res.partner,credit_limit:0 msgid "Credit Limit" -msgstr "Limite de Crédito" +msgstr "Limite de crédito" #. module: base #: field:ir.model.constraint,date_update:0 #: field:ir.model.data,date_update:0 #: field:ir.model.relation,date_update:0 msgid "Update Date" -msgstr "Atualizar Data" +msgstr "Atualizar data" #. module: base #: model:ir.module.module,shortdesc:base.module_base_action_rule @@ -466,7 +466,7 @@ msgstr "Dono" #. module: base #: view:ir.actions.act_window:0 msgid "Source Object" -msgstr "Objeto Fonte" +msgstr "Objeto fonte" #. module: base #: model:res.partner.bank.type,format_layout:base.bank_normal @@ -476,7 +476,7 @@ msgstr "%(bank_name)s: %(acc_number)s" #. module: base #: view:ir.actions.todo:0 msgid "Config Wizard Steps" -msgstr "Configurar os Passos do Assistente" +msgstr "Configurar os passos do assistente" #. module: base #: model:ir.model,name:base.model_ir_ui_view_sc @@ -530,7 +530,7 @@ msgstr "" #. module: base #: view:ir.rule:0 msgid "Create Access Right" -msgstr "" +msgstr "Criar direito de acesso" #. module: base #: model:res.country,name:base.tv @@ -545,7 +545,7 @@ msgstr "Próximo assistente" #. module: base #: field:res.lang,date_format:0 msgid "Date Format" -msgstr "Formato da Data" +msgstr "Formato da data" #. module: base #: model:ir.module.module,shortdesc:base.module_base_report_designer @@ -570,17 +570,17 @@ msgstr "" #. module: base #: view:workflow.transition:0 msgid "Workflow Transition" -msgstr "" +msgstr "Transição do fluxo de trabalho" #. module: base #: model:res.country,name:base.gf msgid "French Guyana" -msgstr "Guyana Francesa" +msgstr "Guiana Francesa" #. module: base #: model:ir.module.module,summary:base.module_hr msgid "Jobs, Departments, Employees Details" -msgstr "" +msgstr "Funções, departamentos, informações sobre os empregados" #. module: base #: model:ir.module.module,description:base.module_analytic @@ -600,7 +600,7 @@ msgstr "" #. module: base #: field:ir.ui.view.custom,ref_id:0 msgid "Original View" -msgstr "Vista Original" +msgstr "Vista original" #. module: base #: model:ir.module.module,description:base.module_event @@ -623,7 +623,7 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 msgid "Bosnian / bosanski jezik" -msgstr "Bósnia / bosanski jezik" +msgstr "Bósnio / bosanski jezik" #. module: base #: model:ir.module.module,description:base.module_base_gengo @@ -662,12 +662,12 @@ msgstr "Angola" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (VE) / Español (VE)" -msgstr "Spanish (VE) / Español (VE)" +msgstr "Espanhol (VE) / Español (VE)" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_timesheet_invoice msgid "Invoice on Timesheets" -msgstr "Faturar Folha de Horas" +msgstr "Faturar folha de horas" #. module: base #: view:base.module.upgrade:0 @@ -683,7 +683,7 @@ msgstr "Texto" #. module: base #: field:res.country,name:0 msgid "Country Name" -msgstr "Nome do País" +msgstr "Nome do país" #. module: base #: model:res.country,name:base.co @@ -717,12 +717,12 @@ msgstr "Vendas & Compras" #. module: base #: view:ir.translation:0 msgid "Untranslated" -msgstr "Não Traduzidas" +msgstr "Por traduzir" #. module: base #: view:ir.mail_server:0 msgid "Outgoing Mail Server" -msgstr "" +msgstr "Servidor de correio (para envio)" #. module: base #: help:ir.actions.act_window,context:0 @@ -744,7 +744,7 @@ msgstr "Assistentes" #: code:addons/base/ir/ir_model.py:337 #, python-format msgid "Custom fields must have a name that starts with 'x_' !" -msgstr "Os Campos Personalizados devem ter um nome que começe com 'x_' !" +msgstr "Os campos personalizados devem ter um nome iniciado por 'x_'!" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_mx @@ -759,7 +759,7 @@ msgstr "Selecione a Janela Ação, Relatório, Assistente para ser executado." #. module: base #: sql_constraint:ir.config_parameter:0 msgid "Key must be unique." -msgstr "Chave deve ser única." +msgstr "A chave deve ser única." #. module: base #: model:ir.module.module,shortdesc:base.module_plugin_outlook @@ -802,7 +802,7 @@ msgstr "" #: view:ir.model:0 #: field:ir.model,name:0 msgid "Model Description" -msgstr "Descrição do Modelo" +msgstr "Descrição do modelo" #. module: base #: model:ir.actions.act_window,help:base.action_partner_customer_form @@ -847,7 +847,7 @@ msgstr "Jordânia" #. module: base #: help:ir.cron,nextcall:0 msgid "Next planned execution date for this job." -msgstr "Data próxima execução prevista para este trabalho." +msgstr "Data da próxima execução prevista para este trabalho." #. module: base #: model:res.country,name:base.er @@ -862,7 +862,7 @@ msgstr "O nome da empresa deve ser único!" #. module: base #: model:ir.ui.menu,name:base.menu_base_action_rule_admin msgid "Automated Actions" -msgstr "Ações Automáticas" +msgstr "Ações automáticas" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ro @@ -872,7 +872,7 @@ msgstr "Roménia - Contabilidade" #. module: base #: model:ir.model,name:base.model_res_config_settings msgid "res.config.settings" -msgstr "" +msgstr "res.config.settings" #. module: base #: help:res.partner,image_small:0 @@ -901,7 +901,7 @@ msgstr "Segurança e autentificação" #. module: base #: model:ir.module.module,shortdesc:base.module_web_calendar msgid "Web Calendar" -msgstr "" +msgstr "Calendário web" #. module: base #: selection:base.language.install,lang:0 @@ -912,7 +912,7 @@ msgstr "Sueco / svenska" #: field:base.language.export,name:0 #: field:ir.attachment,datas_fname:0 msgid "File Name" -msgstr "" +msgstr "Nome do ficheiro" #. module: base #: model:res.country,name:base.rs @@ -922,12 +922,12 @@ msgstr "Sérvia" #. module: base #: selection:ir.translation,type:0 msgid "Wizard View" -msgstr "Ver Assistente" +msgstr "Vista de Assistente" #. module: base #: model:res.country,name:base.kh msgid "Cambodia, Kingdom of" -msgstr "Cambodja, Reino de" +msgstr "Camboja" #. module: base #: field:base.language.import,overwrite:0 @@ -967,7 +967,7 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 msgid "Albanian / Shqip" -msgstr "Albanian / Shqip" +msgstr "Albanês / Shqip" #. module: base #: model:ir.ui.menu,name:base.menu_crm_config_opportunity @@ -1002,7 +1002,7 @@ msgstr "Repositórios partilhados (WebDAV)" #. module: base #: view:res.users:0 msgid "Email Preferences" -msgstr "Preferências de Email" +msgstr "Preferências de email" #. module: base #: code:addons/base/ir/ir_fields.py:196 @@ -1018,7 +1018,7 @@ msgstr "Meus parceiros" #. module: base #: model:res.country,name:base.zw msgid "Zimbabwe" -msgstr "Zimbabwe" +msgstr "Zimbabué" #. module: base #: help:ir.model.constraint,type:0 @@ -1041,7 +1041,8 @@ msgstr "Espanha" msgid "" "Optional domain filtering of the destination data, as a Python expression" msgstr "" -"Domínio opcional filtra os dados do destinatário como uma expressão Python" +"Domínio opcional para filtrar os dados do destinatário (formato de expressão " +"Python)" #. module: base #: model:ir.model,name:base.model_base_module_upgrade @@ -1068,7 +1069,7 @@ msgstr "" #. module: base #: model:res.country,name:base.om msgid "Oman" -msgstr "Oman" +msgstr "Omã" #. module: base #: model:ir.module.module,shortdesc:base.module_mrp @@ -1095,7 +1096,7 @@ msgstr "Niue" #. module: base #: model:ir.module.module,shortdesc:base.module_membership msgid "Membership Management" -msgstr "Gestor de Membros" +msgstr "Gestor de membros" #. module: base #: selection:ir.module.module,license:0 @@ -1111,7 +1112,7 @@ msgstr "" #: model:ir.actions.act_window,name:base.act_menu_create #: view:wizard.ir.model.menu.create:0 msgid "Create Menu" -msgstr "Criar Menu" +msgstr "Criar menu" #. module: base #: model:res.country,name:base.in @@ -1132,7 +1133,7 @@ msgstr "Utilizadores Google" #. module: base #: model:ir.module.module,shortdesc:base.module_fleet msgid "Fleet Management" -msgstr "" +msgstr "Gestão de frota" #. module: base #: help:ir.server.object.lines,value:0 @@ -1153,7 +1154,7 @@ msgstr "" #. module: base #: model:res.country,name:base.ad msgid "Andorra, Principality of" -msgstr "Andorra, Principado de" +msgstr "Andorra" #. module: base #: field:ir.rule,perm_read:0 @@ -1180,7 +1181,7 @@ msgstr "Arquivo TGZ" msgid "" "Users added to this group are automatically added in the following groups." msgstr "" -"Utilizadores adicionados a este grupo são adicionados automaticamente nos " +"Utilizadores adicionados a este grupo são adicionados automaticamente aos " "seguintes grupos." #. module: base @@ -1188,12 +1189,12 @@ msgstr "" #: code:addons/base/ir/ir_model.py:727 #, python-format msgid "Document model" -msgstr "" +msgstr "Modelo de documento" #. module: base #: view:res.lang:0 msgid "%B - Full month name." -msgstr "%B - Nome do mês completo." +msgstr "%B - Nome completo do mês." #. module: base #: field:ir.actions.todo,type:0 @@ -1238,24 +1239,24 @@ msgstr "O nome do país tem de ser único!" #. module: base #: field:ir.module.module,installed_version:0 msgid "Latest Version" -msgstr "" +msgstr "Versão mais recente" #. module: base #: view:ir.rule:0 msgid "Delete Access Right" -msgstr "" +msgstr "Eliminar direito de acesso" #. module: base #: code:addons/base/ir/ir_mail_server.py:213 #, python-format msgid "Connection test failed!" -msgstr "Teste de conexão falhou!" +msgstr "Teste de ligação falhou!" #. module: base #: selection:ir.actions.server,state:0 #: selection:workflow.activity,kind:0 msgid "Dummy" -msgstr "Dummy" +msgstr "Teste" #. module: base #: constraint:ir.ui.view:0 @@ -1270,7 +1271,7 @@ msgstr "Ilhas Caimão" #. module: base #: view:ir.rule:0 msgid "Record Rule" -msgstr "" +msgstr "Regra de gravação" #. module: base #: model:res.country,name:base.kr @@ -1313,12 +1314,12 @@ msgstr "Visível" #. module: base #: model:ir.actions.client,name:base.action_client_base_menu msgid "Open Settings Menu" -msgstr "" +msgstr "Abrir o menu de configuração" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (AR) / Español (AR)" -msgstr "Spanhol (AR) / Español (AR)" +msgstr "Espanhol (AR) / Español (AR)" #. module: base #: model:res.country,name:base.ug @@ -1328,7 +1329,7 @@ msgstr "Uganda" #. module: base #: field:ir.model.access,perm_unlink:0 msgid "Delete Access" -msgstr "Acesso a eliminar" +msgstr "Eliminar acesso" #. module: base #: model:res.country,name:base.ne @@ -1338,7 +1339,7 @@ msgstr "Níger" #. module: base #: selection:base.language.install,lang:0 msgid "Chinese (HK)" -msgstr "Chinês (HK)" +msgstr "Cantonês (Hong Kong, Macau, Cantão)" #. module: base #: model:res.country,name:base.ba @@ -1348,17 +1349,17 @@ msgstr "Bósnia-Herzegovina" #. module: base #: selection:ir.translation,type:0 msgid "Wizard Field" -msgstr "Campo Assistente" +msgstr "Campo de assistente" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (GT) / Español (GT)" -msgstr "Spanish (GT) / Español (GT)" +msgstr "Espanhol (GT) / Español (GT)" #. module: base #: field:ir.mail_server,smtp_port:0 msgid "SMTP Port" -msgstr "Porta SMTP" +msgstr "Porto de SMTP" #. module: base #: help:res.users,login:0 @@ -1404,18 +1405,18 @@ msgstr "" #. module: base #: field:ir.ui.view_sc,res_id:0 msgid "Resource Ref." -msgstr "Referência do Recurso" +msgstr "Referencia do recurso" #. module: base #: field:ir.actions.act_url,url:0 msgid "Action URL" -msgstr "URL Ação" +msgstr "URL de ação" #. module: base #: field:base.module.import,module_name:0 #: field:ir.module.module,shortdesc:0 msgid "Module Name" -msgstr "Nome do Módulo" +msgstr "Nome do módulo" #. module: base #: model:res.country,name:base.mh @@ -1467,12 +1468,12 @@ msgstr "Aplicação Ascendente" #: code:addons/base/res/res_users.py:135 #, python-format msgid "Operation Canceled" -msgstr "Operação Cancelada" +msgstr "Operação cancelada" #. module: base #: model:ir.module.module,shortdesc:base.module_document msgid "Document Management System" -msgstr "Sistema de Gestão de Documentos" +msgstr "Sistema de gestão de documentos" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_claim @@ -1588,7 +1589,7 @@ msgstr "" #. module: base #: model:res.country,name:base.mf msgid "Saint Martin (French part)" -msgstr "" +msgstr "Saint Martin (zona francesa)" #. module: base #: model:ir.model,name:base.model_ir_exports @@ -1605,7 +1606,7 @@ msgstr "Não existe um idioma com o código \"%s\"" #: model:ir.module.category,name:base.module_category_social_network #: model:ir.module.module,shortdesc:base.module_mail msgid "Social Network" -msgstr "" +msgstr "Rede social" #. module: base #: view:res.lang:0 @@ -1615,7 +1616,7 @@ msgstr "%Y - ." #. module: base #: view:res.company:0 msgid "Report Footer Configuration" -msgstr "" +msgstr "Configuração do rodapé de relatório" #. module: base #: field:ir.translation,comments:0 @@ -1716,7 +1717,7 @@ msgstr "" #. module: base #: field:workflow,on_create:0 msgid "On Create" -msgstr "Em Criação" +msgstr "Na criação" #. module: base #: code:addons/base/ir/ir_model.py:905 @@ -1774,7 +1775,7 @@ msgstr "" #. module: base #: field:res.partner,image_small:0 msgid "Small-sized image" -msgstr "" +msgstr "Imagem pequena" #. module: base #: model:ir.module.module,shortdesc:base.module_stock @@ -1789,20 +1790,20 @@ msgstr "res.request.link" #. module: base #: field:ir.actions.wizard,name:0 msgid "Wizard Info" -msgstr "Informação do Assistente" +msgstr "Informação do assistente" #. module: base #: model:ir.actions.act_window,name:base.action_wizard_lang_export #: model:ir.ui.menu,name:base.menu_wizard_lang_export msgid "Export Translation" -msgstr "Exportar Tradução" +msgstr "Exportar tradução" #. module: base #: model:ir.actions.act_window,name:base.action_server_action #: view:ir.actions.server:0 #: model:ir.ui.menu,name:base.menu_server_action msgid "Server Actions" -msgstr "Ações do Servidor" +msgstr "Ações de servidor" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_lu @@ -1812,7 +1813,7 @@ msgstr "Luxemburgo - Contabilidade" #. module: base #: model:res.country,name:base.tp msgid "East Timor" -msgstr "Timor-Leste" +msgstr "Timor Leste" #. module: base #: code:addons/base/module/module.py:388 @@ -1824,7 +1825,7 @@ msgstr "Instalar" #. module: base #: field:res.currency,accuracy:0 msgid "Computational Accuracy" -msgstr "Exactidão Computacional" +msgstr "Exatidão computacional" #. module: base #: model:ir.module.module,description:base.module_l10n_at @@ -1841,7 +1842,7 @@ msgstr "" #. module: base #: model:res.country,name:base.kg msgid "Kyrgyz Republic (Kyrgyzstan)" -msgstr "Kyrgyz Republic (Kyrgyzstan)" +msgstr "Quirguistão" #. module: base #: model:ir.module.module,description:base.module_account_accountant @@ -1886,7 +1887,7 @@ msgstr "" #. module: base #: model:res.country,name:base.nl msgid "Netherlands" -msgstr "Holanda" +msgstr "Países Baixos" #. module: base #: model:ir.module.module,shortdesc:base.module_portal_event @@ -1896,7 +1897,7 @@ msgstr "" #. module: base #: selection:ir.translation,state:0 msgid "Translation in Progress" -msgstr "" +msgstr "Tradução em progresso" #. module: base #: model:ir.model,name:base.model_ir_rule @@ -1911,13 +1912,13 @@ msgstr "Dias" #. module: base #: model:ir.module.module,summary:base.module_fleet msgid "Vehicle, leasing, insurances, costs" -msgstr "" +msgstr "Veículo, 'leasing', seguros, custos" #. module: base #: view:ir.model.access:0 #: field:ir.model.access,perm_read:0 msgid "Read Access" -msgstr "Acesso para Leitura" +msgstr "Direito de leitura" #. module: base #: model:ir.module.module,description:base.module_share @@ -1943,7 +1944,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_process msgid "Enterprise Process" -msgstr "Processo da Empresa" +msgstr "Processo da empresa" #. module: base #: help:res.partner,supplier:0 @@ -1987,23 +1988,23 @@ msgstr "Parceiros" #. module: base #: field:res.partner.category,parent_left:0 msgid "Left parent" -msgstr "Left parent" +msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_project_mrp msgid "Create Tasks on SO" -msgstr "Criar Tarefas em SO" +msgstr "Criar tarefas no SO" #. module: base #: code:addons/base/ir/ir_model.py:316 #, python-format msgid "This column contains module data and cannot be removed!" -msgstr "" +msgstr "Esta coluna contém dados do módulo e não pode ser removida!" #. module: base #: field:ir.attachment,res_model:0 msgid "Attached Model" -msgstr "Modelo Anexado" +msgstr "Modelo ligado" #. module: base #: field:res.partner.bank,footer:0 @@ -2046,7 +2047,7 @@ msgstr "" #. module: base #: field:workflow.transition,act_from:0 msgid "Source Activity" -msgstr "Atividade Fonte" +msgstr "Atividade fonte" #. module: base #: view:ir.sequence:0 @@ -2062,7 +2063,7 @@ msgstr "Fórmula" #: code:addons/base/res/res_users.py:311 #, python-format msgid "Can not remove root user!" -msgstr "Não pode remover o utilizador raíz!" +msgstr "Não pode remover o utilizador raiz!" #. module: base #: model:res.country,name:base.mw @@ -2103,13 +2104,13 @@ msgstr "%s (cópia)" #. module: base #: model:ir.module.module,shortdesc:base.module_account_chart msgid "Template of Charts of Accounts" -msgstr "Templates de Planos de Contas" +msgstr "Modelos de planos de contas" #. module: base #: field:res.partner,type:0 #: field:res.partner.address,type:0 msgid "Address Type" -msgstr "Tipo de Endereço" +msgstr "Tipo de endereço" #. module: base #: model:ir.module.module,description:base.module_sale_stock @@ -2193,7 +2194,7 @@ msgstr "" #. module: base #: field:ir.actions.act_window,view_mode:0 msgid "View Mode" -msgstr "Modo de Vista" +msgstr "Modo de vista" #. module: base #: help:res.partner.bank,footer:0 @@ -2207,17 +2208,17 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish / Español" -msgstr "Spanhol / Español" +msgstr "Espanhol / Español" #. module: base #: selection:base.language.install,lang:0 msgid "Korean (KP) / 한국어 (KP)" -msgstr "Korean (KP) / 한국어 (KP)" +msgstr "Coreano (KP) / 한국어 (KP)" #. module: base #: model:res.country,name:base.ax msgid "Åland Islands" -msgstr "" +msgstr "Ilhas Åland" #. module: base #: field:res.company,logo:0 @@ -2233,12 +2234,12 @@ msgstr "Costa Rica - Contabilidade" #: selection:ir.actions.act_url,target:0 #: selection:ir.actions.act_window,target:0 msgid "New Window" -msgstr "Nova Janela" +msgstr "Nova janela" #. module: base #: field:ir.values,action_id:0 msgid "Action (change only)" -msgstr "Ação (alterar apenas)" +msgstr "Ação (apenas alteração)" #. module: base #: model:ir.module.module,shortdesc:base.module_subscription @@ -2258,7 +2259,7 @@ msgstr "" #. module: base #: model:ir.module.category,name:base.module_category_tools msgid "Extra Tools" -msgstr "Ferramentas Extra" +msgstr "Ferramentas extras" #. module: base #: view:ir.attachment:0 @@ -2290,7 +2291,7 @@ msgstr "Método" #. module: base #: view:workflow.activity:0 msgid "Workflow Activity" -msgstr "Atividade Workflow" +msgstr "Atividade do fluxo de trabalho" #. module: base #: model:ir.module.module,description:base.module_hr_timesheet_sheet @@ -2363,7 +2364,7 @@ msgstr "Grupos" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (CL) / Español (CL)" -msgstr "Spanish (CL) / Español (CL)" +msgstr "Espanhol (CL) / Español (CL)" #. module: base #: model:res.country,name:base.bz @@ -2431,18 +2432,18 @@ msgstr "" #: code:addons/orm.py:3811 #, python-format msgid "A document was modified since you last viewed it (%s:%d)" -msgstr "Um documento foi modificado desde a última visita que (%s:%d)" +msgstr "Um documento foi modificado desde a última vez que o viu (%s:%d)" #. module: base #: view:workflow:0 msgid "Workflow Editor" -msgstr "Editor de Workflow" +msgstr "Editor de fluxo de trabalho" #. module: base #: selection:ir.module.module,state:0 #: selection:ir.module.module.dependency,state:0 msgid "To be removed" -msgstr "A ser removido" +msgstr "A remover" #. module: base #: model:ir.model,name:base.model_ir_sequence @@ -2559,7 +2560,7 @@ msgstr "" #. module: base #: field:res.company,rml_header1:0 msgid "Company Slogan" -msgstr "" +msgstr "Lema da empresa" #. module: base #: model:res.country,name:base.bb @@ -2577,7 +2578,8 @@ msgstr "Madagáscar" msgid "" "The Object name must start with x_ and not contain any special character !" msgstr "" -"O nome do objeto deve começar com x_ e não pode conter um caracter especial!" +"O nome do objeto deve começar por \"x_\" e não pode conter um carater " +"especial!" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_oauth_signup @@ -2587,7 +2589,7 @@ msgstr "" #. module: base #: selection:ir.model,state:0 msgid "Custom Object" -msgstr "Objeto Personalizado" +msgstr "Objeto personalizado" #. module: base #: model:ir.actions.act_window,name:base.action_menu_admin @@ -2599,17 +2601,17 @@ msgstr "Menu" #. module: base #: field:res.currency,rate:0 msgid "Current Rate" -msgstr "Taxa Atual" +msgstr "Taxa atual" #. module: base #: selection:base.language.install,lang:0 msgid "Greek / Ελληνικά" -msgstr "Grego" +msgstr "Grego / Ελληνικά" #. module: base #: field:res.company,custom_footer:0 msgid "Custom Footer" -msgstr "" +msgstr "Rodapé personalizado" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_crm @@ -2640,7 +2642,7 @@ msgstr "" #. module: base #: field:ir.actions.act_url,target:0 msgid "Action Target" -msgstr "Ação Alvo" +msgstr "Ação alvo" #. module: base #: model:res.country,name:base.ai @@ -2665,12 +2667,12 @@ msgstr "Faturação" #. module: base #: field:ir.ui.view_sc,name:0 msgid "Shortcut Name" -msgstr "Nome do Atalho" +msgstr "Nome do atalho" #. module: base #: field:res.partner,contact_address:0 msgid "Complete Address" -msgstr "" +msgstr "Endereço completo" #. module: base #: help:ir.actions.act_window,limit:0 @@ -2742,12 +2744,12 @@ msgstr "ID do Registo" #. module: base #: view:ir.filters:0 msgid "My Filters" -msgstr "" +msgstr "Os meus filtros" #. module: base #: field:ir.actions.server,email:0 msgid "Email Address" -msgstr "Endereço de Email" +msgstr "Endereço eletrónico" #. module: base #: model:ir.module.module,description:base.module_google_docs @@ -2785,7 +2787,7 @@ msgstr "" #: view:ir.actions.server:0 #: field:workflow.activity,action_id:0 msgid "Server Action" -msgstr "Ação do Servidor" +msgstr "Ação do servidor" #. module: base #: help:ir.actions.client,params:0 @@ -2795,7 +2797,7 @@ msgstr "Argumentos enviados ao cliente junto com a tag vista" #. module: base #: model:ir.module.module,summary:base.module_contacts msgid "Contacts, People and Companies" -msgstr "" +msgstr "Contactos, pessoas e empresas" #. module: base #: model:res.country,name:base.tt @@ -2810,12 +2812,12 @@ msgstr "Letónia" #. module: base #: view:ir.actions.server:0 msgid "Field Mappings" -msgstr "Mapeamento de Campos" +msgstr "Mapeamento de campos" #. module: base #: view:base.language.export:0 msgid "Export Translations" -msgstr "Exportar Traduções" +msgstr "Exportar traduções" #. module: base #: model:res.groups,name:base.group_hr_manager @@ -2828,7 +2830,7 @@ msgstr "Gestor" #: code:addons/base/ir/ir_model.py:718 #, python-format msgid "Sorry, you are not allowed to access this document." -msgstr "" +msgstr "Infelizmente, não está autorizado a aceder a este documento." #. module: base #: model:res.country,name:base.py @@ -2843,7 +2845,7 @@ msgstr "Fiji" #. module: base #: view:ir.actions.report.xml:0 msgid "Report Xml" -msgstr "" +msgstr "XML de Relatório" #. module: base #: model:ir.module.module,description:base.module_purchase @@ -2914,12 +2916,12 @@ msgstr "Herdado" #: code:addons/base/ir/ir_fields.py:147 #, python-format msgid "yes" -msgstr "" +msgstr "sim" #. module: base #: field:ir.model.fields,serialization_field_id:0 msgid "Serialization Field" -msgstr "Campo de Serialização" +msgstr "Campo de serialização" #. module: base #: model:ir.module.module,description:base.module_l10n_be_hr_payroll @@ -3005,14 +3007,14 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_web_linkedin msgid "LinkedIn Integration" -msgstr "" +msgstr "Integração com o LinkedIn" #. module: base #: code:addons/orm.py:2021 #: code:addons/orm.py:2032 #, python-format msgid "Invalid Object Architecture!" -msgstr "Objeto de Arquitetura Inválido!" +msgstr "Arquitetura de objeto Inválida!" #. module: base #: code:addons/base/ir/ir_model.py:364 @@ -3031,7 +3033,7 @@ msgstr "Erro!" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_fr_rib msgid "French RIB Bank Details" -msgstr "Detalhes Bancários do RIB Francês" +msgstr "Detalhes bancários do RIB francês" #. module: base #: view:res.lang:0 @@ -3041,7 +3043,7 @@ msgstr "%p - Equivalente do AM or PM." #. module: base #: view:ir.actions.server:0 msgid "Iteration Actions" -msgstr "Ações de Iteração" +msgstr "Ações de iteração" #. module: base #: help:multi_company.default,company_id:0 @@ -3065,7 +3067,7 @@ msgstr "Nova Zelândia" #: view:ir.model.fields:0 #: field:res.partner.bank.type.field,name:0 msgid "Field Name" -msgstr "Nome do Campo" +msgstr "Nome do campo" #. module: base #: model:ir.actions.act_window,help:base.action_country @@ -3086,19 +3088,19 @@ msgstr "Ilha Norfolk" #. module: base #: selection:base.language.install,lang:0 msgid "Korean (KR) / 한국어 (KR)" -msgstr "Korean (KR) / 한국어 (KR)" +msgstr "Coreano (KR) / 한국어 (KR)" #. module: base #: help:ir.model.fields,model:0 msgid "The technical name of the model this field belongs to" -msgstr "O nome técnico do modelo este campo pertence a" +msgstr "O nome técnico do modelo a que este campo pertence" #. module: base #: field:ir.actions.server,action_id:0 #: selection:ir.actions.server,state:0 #: view:ir.values:0 msgid "Client Action" -msgstr "Ação do Cliente" +msgstr "Ação de cliente" #. module: base #: model:ir.module.module,description:base.module_subscription @@ -3122,7 +3124,7 @@ msgstr "" #. module: base #: constraint:res.company:0 msgid "Error! You can not create recursive companies." -msgstr "Erro! Não pode criar empresas recursivas." +msgstr "Erro! Não pode criar empresas recursivamente." #. module: base #: code:addons/base/res/res_users.py:671 @@ -3165,7 +3167,8 @@ msgstr "Salvaguarda de parâmetros" #: code:addons/base/module/module.py:499 #, python-format msgid "Can not upgrade module '%s'. It is not installed." -msgstr "Não é possível atualizar o módulo '%s'. Não está instalado." +msgstr "" +"Não é possível atualizar o módulo '%s' porque este não está instalado." #. module: base #: model:res.country,name:base.cu @@ -3181,7 +3184,7 @@ msgstr "Tipo de relatório desconhecido: %s" #. module: base #: model:ir.module.module,summary:base.module_hr_expense msgid "Expenses Validation, Invoicing" -msgstr "" +msgstr "Validação de despesas, faturação" #. module: base #: model:ir.module.module,description:base.module_l10n_be_hr_payroll_account @@ -3249,7 +3252,7 @@ msgstr "Suécia" #. module: base #: field:ir.actions.report.xml,report_file:0 msgid "Report File" -msgstr "" +msgstr "Ficheiro de relatório" #. module: base #: selection:ir.actions.act_window.view,view_mode:0 @@ -3282,14 +3285,14 @@ msgstr "" #: code:addons/orm.py:3839 #, python-format msgid "Missing document(s)" -msgstr "" +msgstr "Documento(s) em falta" #. module: base #: model:ir.model,name:base.model_res_partner_bank_type #: field:res.partner.bank,state:0 #: view:res.partner.bank.type:0 msgid "Bank Account Type" -msgstr "Tipo de Conta Bancária" +msgstr "Tipo de conta bancária" #. module: base #: view:base.language.export:0 @@ -3297,6 +3300,8 @@ msgid "" "For more details about translating OpenERP in your language, please refer to " "the" msgstr "" +"Para mais informações acerca da tradução do OpenERP para o seu idioma, por " +"favor, veja em" #. module: base #: field:res.partner,image:0 @@ -3341,7 +3346,7 @@ msgstr "" #. module: base #: model:ir.model,name:base.model_ir_module_module_dependency msgid "Module dependency" -msgstr "Dependência do Módulo" +msgstr "Dependência do módulo" #. module: base #: model:res.country,name:base.bd @@ -3363,7 +3368,7 @@ msgstr "" #: view:res.groups:0 #: field:res.groups,model_access:0 msgid "Access Controls" -msgstr "Controlos de Acesso" +msgstr "Controlos de acesso" #. module: base #: code:addons/base/ir/ir_model.py:273 @@ -3389,12 +3394,12 @@ msgstr "Dependências" #. module: base #: field:multi_company.default,company_id:0 msgid "Main Company" -msgstr "Empresa Principal" +msgstr "Empresa principal" #. module: base #: field:ir.ui.menu,web_icon_hover:0 msgid "Web Icon File (hover)" -msgstr "Ícone da Web do Ficheiro (hover)" +msgstr "Ficheiro com o ícone web (a aparecer quando o rato passa por cima)" #. module: base #: model:ir.module.module,description:base.module_document @@ -3425,12 +3430,12 @@ msgstr "" #. module: base #: help:res.currency,name:0 msgid "Currency Code (ISO 4217)" -msgstr "Código da moeda(ISO 4217)" +msgstr "Código da divisa(ISO 4217)" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_contract msgid "Employee Contracts" -msgstr "Contratos de Funcionários" +msgstr "Contratos de funcionários" #. module: base #: view:ir.actions.server:0 @@ -3438,25 +3443,25 @@ msgid "" "If you use a formula type, use a python expression using the variable " "'object'." msgstr "" -"Se usa um tipo de formula, use uma expressão python com o uso de uma " -"variável 'objeto'" +"Se usa um tipo de fórmula, use uma expressão Python com o uso de uma " +"variável do tipo 'objeto'" #. module: base #: field:res.partner,birthdate:0 #: field:res.partner.address,birthdate:0 msgid "Birthdate" -msgstr "Data de Nascimento" +msgstr "Data de nascimento" #. module: base #: 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 "Títulos do Contato" +msgstr "Títulos de contacto" #. module: base #: model:ir.module.module,shortdesc:base.module_product_manufacturer msgid "Products Manufacturers" -msgstr "Fabricantes de Artigos" +msgstr "Fabricantes de artigos" #. module: base #: code:addons/base/ir/ir_mail_server.py:238 @@ -3473,7 +3478,7 @@ msgstr "Questionário" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (DO) / Español (DO)" -msgstr "Spanish (DO) / Español (DO)" +msgstr "Espanhol (DO) / Español (DO)" #. module: base #: model:ir.model,name:base.model_workflow_activity @@ -3483,7 +3488,7 @@ msgstr "workflow.activity" #. module: base #: view:base.language.export:0 msgid "Export Complete" -msgstr "" +msgstr "Exportação concluída" #. module: base #: help:ir.ui.view_sc,res_id:0 @@ -3491,8 +3496,8 @@ msgid "" "Reference of the target resource, whose model/table depends on the 'Resource " "Name' field." msgstr "" -"Referência do recurso de destino, cujo modelo/tabela depende campo 'Nome do " -"Recurso'." +"Referência do recurso de destino, cujo modelo/tabela depende do campo 'Nome " +"do Recurso'." #. module: base #: field:ir.model.fields,select_level:0 @@ -3507,12 +3512,12 @@ msgstr "Uruguai" #. module: base #: selection:base.language.install,lang:0 msgid "Finnish / Suomi" -msgstr "Finnish / Suomi" +msgstr "Finlandês / Suomi" #. module: base #: view:ir.config_parameter:0 msgid "System Properties" -msgstr "" +msgstr "Propriedades do sistema" #. module: base #: field:ir.sequence,prefix:0 @@ -3533,7 +3538,7 @@ msgstr "Relação dos campos" #: model:res.partner.title,name:base.res_partner_title_sir #: model:res.partner.title,shortcut:base.res_partner_title_sir msgid "Sir" -msgstr "Senhor" +msgstr "Sr." #. module: base #: model:ir.module.module,description:base.module_l10n_ca @@ -3556,12 +3561,12 @@ msgstr "Selecione pacote do módulo a importar (ficheiro zip.)" #. module: base #: view:ir.filters:0 msgid "Personal" -msgstr "" +msgstr "Pessoal" #. module: base #: field:base.language.export,modules:0 msgid "Modules To Export" -msgstr "" +msgstr "Módulos a exportar" #. module: base #: model:res.country,name:base.mt @@ -3574,6 +3579,8 @@ msgstr "Malta" msgid "" "Only users with the following access level are currently allowed to do that" msgstr "" +"Apenas utilizadores com o nível de acesso indicado de seguida estão " +"autorizados a fazer isso" #. module: base #: field:ir.actions.server,fields_lines:0 @@ -3659,12 +3666,12 @@ msgstr "Hostname ou IP do servidor SMTP" #. module: base #: model:res.country,name:base.aq msgid "Antarctica" -msgstr "Antártica" +msgstr "Antártida" #. module: base #: view:res.partner:0 msgid "Persons" -msgstr "" +msgstr "Pessoas" #. module: base #: view:base.language.import:0 @@ -3674,17 +3681,17 @@ msgstr "_Importar" #. module: base #: field:res.users,action_id:0 msgid "Home Action" -msgstr "Ação Principal" +msgstr "Ação principal" #. module: base #: field:res.lang,grouping:0 msgid "Separator Format" -msgstr "Formato do Separador" +msgstr "Formato do separador" #. module: base #: model:ir.module.module,shortdesc:base.module_report_webkit msgid "Webkit Report Engine" -msgstr "Motor de Relatórios Webkit" +msgstr "Motor de relatórios Webkit" #. module: base #: model:ir.ui.menu,name:base.next_id_9 @@ -3718,13 +3725,13 @@ msgstr "" #. module: base #: view:ir.rule:0 msgid "Interaction between rules" -msgstr "Interação entre Regras" +msgstr "Interação entre regras" #. module: base #: field:res.company,rml_footer:0 #: field:res.company,rml_footer_readonly:0 msgid "Report Footer" -msgstr "" +msgstr "Rodapé do relatório" #. module: base #: selection:res.lang,direction:0 @@ -3734,7 +3741,7 @@ msgstr "Da direita para a esquerda" #. module: base #: model:res.country,name:base.sx msgid "Sint Maarten (Dutch part)" -msgstr "" +msgstr "Saint Martin (zona holandesa)" #. module: base #: view:ir.actions.act_window:0 @@ -3749,7 +3756,7 @@ msgstr "Filtros" #: view:ir.cron:0 #: model:ir.ui.menu,name:base.menu_ir_cron_act msgid "Scheduled Actions" -msgstr "Ações Agendadas" +msgstr "Ações agendadas" #. module: base #: model:ir.module.category,name:base.module_category_reporting @@ -3768,19 +3775,19 @@ msgstr "Título" #. module: base #: help:ir.property,res_id:0 msgid "If not set, acts as a default value for new resources" -msgstr "Se não definido, atua como um valor padrão para novos registos." +msgstr "Se não for definido, atua como um valor padrão para novos registos." #. module: base #: code:addons/orm.py:4213 #, python-format msgid "Recursivity Detected." -msgstr "Recursividade Detetada." +msgstr "Recursividade detetada." #. module: base #: code:addons/base/module/module.py:345 #, python-format msgid "Recursion error in modules dependencies !" -msgstr "Erro de recursão nas dependências dos módulos !" +msgstr "Erro de recursividade nas dependências dos módulos !" #. module: base #: model:ir.module.module,description:base.module_analytic_user_function @@ -3808,7 +3815,7 @@ msgstr "" #. module: base #: view:ir.model:0 msgid "Create a Menu" -msgstr "Criar um Menu" +msgstr "Criar um menu" #. module: base #: model:res.country,name:base.tg @@ -3824,12 +3831,12 @@ msgstr "" #. module: base #: selection:ir.sequence,implementation:0 msgid "Standard" -msgstr "Por omissão" +msgstr "Padrão" #. module: base #: model:res.country,name:base.ru msgid "Russian Federation" -msgstr "Federação Russa" +msgstr "Rússia" #. module: base #: selection:base.language.install,lang:0 @@ -3842,12 +3849,12 @@ msgstr "Urdu / اردو" #: code:addons/orm.py:3870 #, python-format msgid "Access Denied" -msgstr "" +msgstr "Acesso negado" #. module: base #: field:res.company,name:0 msgid "Company Name" -msgstr "Nome da Empresa" +msgstr "Nome da empresa" #. module: base #: code:addons/orm.py:2811 @@ -3873,14 +3880,12 @@ msgstr "RML (desatualizado - use Report)" #. module: base #: sql_constraint:ir.translation:0 msgid "Language code of translation item must be among known languages" -msgstr "" -"Linguagem do código do item de tradução deve estar entre as linguagens " -"conhecidas" +msgstr "O código de idioma da tradução deve pertencer aos idiomas conhecidos" #. module: base #: view:ir.rule:0 msgid "Record rules" -msgstr "Regras de Gravação" +msgstr "Regras de gravação" #. module: base #: view:ir.actions.todo:0 @@ -3906,7 +3911,7 @@ msgstr "" #. module: base #: model:res.country,name:base.je msgid "Jersey" -msgstr "" +msgstr "Jersey" #. module: base #: model:ir.module.module,description:base.module_auth_anonymous @@ -3925,7 +3930,7 @@ msgstr "12. %w ==> 5 ( Sexta-feira é o 6º dia)" #. module: base #: constraint:res.partner.category:0 msgid "Error ! You can not create recursive categories." -msgstr "Erro ! Não pode criar categorias recursivas." +msgstr "Erro ! Não pode criar categorias recursivamente." #. module: base #: view:res.lang:0 @@ -3935,7 +3940,7 @@ msgstr "%x - Apresentação apropriada da data." #. module: base #: view:res.partner:0 msgid "Tag" -msgstr "" +msgstr "Etiqueta" #. module: base #: view:res.lang:0 @@ -3955,12 +3960,12 @@ msgstr "GPL-2 ou versão anterior" #. module: base #: selection:workflow.activity,kind:0 msgid "Stop All" -msgstr "Parar Tudo" +msgstr "Parar tudo" #. module: base #: field:res.company,paper_format:0 msgid "Paper Format" -msgstr "Formatar papel" +msgstr "Formato da folha" #. module: base #: model:ir.module.module,description:base.module_note_pad @@ -3987,7 +3992,7 @@ msgstr "" #. module: base #: model:res.country,name:base.sk msgid "Slovakia" -msgstr "" +msgstr "Eslováquia" #. module: base #: model:res.country,name:base.nr @@ -4016,7 +4021,7 @@ msgstr "Formulário" #. module: base #: model:res.country,name:base.pf msgid "Polynesia (French)" -msgstr "Polinésia" +msgstr "Polinésia Francesa" #. module: base #: model:ir.module.module,description:base.module_l10n_it @@ -4052,13 +4057,13 @@ msgstr "" #. module: base #: model:res.country,name:base.tk msgid "Tokelau" -msgstr "Tokelau" +msgstr "Toquelau" #. module: base #: view:ir.cron:0 #: view:ir.module.module:0 msgid "Technical Data" -msgstr "Dados Técnicos" +msgstr "Dados técnicos" #. module: base #: model:ir.model,name:base.model_ir_ui_view @@ -4143,7 +4148,7 @@ msgstr "Partilhar qualquer documento" #. module: base #: model:ir.module.module,summary:base.module_crm msgid "Leads, Opportunities, Phone Calls" -msgstr "" +msgstr "Dicas, oportunidades, telefonemas" #. module: base #: view:res.lang:0 @@ -4235,12 +4240,12 @@ msgstr "" #. module: base #: model:ir.module.category,name:base.module_category_localization_account_charts msgid "Account Charts" -msgstr "Planos de Conta" +msgstr "Planos de contas" #. module: base #: model:ir.ui.menu,name:base.menu_event_main msgid "Events Organization" -msgstr "" +msgstr "Organização de eventos" #. module: base #: model:ir.actions.act_window,name:base.action_partner_customer_form @@ -4263,12 +4268,12 @@ msgstr "Menu :" #. module: base #: selection:ir.model.fields,state:0 msgid "Base Field" -msgstr "Campo Base" +msgstr "Campo base" #. module: base #: model:ir.module.category,name:base.module_category_managing_vehicles_and_contracts msgid "Managing vehicles and contracts" -msgstr "" +msgstr "Gestão de veículos e contratos" #. module: base #: model:ir.module.module,description:base.module_base_setup @@ -4306,7 +4311,7 @@ msgstr "Polónia - Contabilidade" #. module: base #: view:ir.cron:0 msgid "Action to Trigger" -msgstr "Ação a Ativar" +msgstr "Ação a ativar" #. module: base #: field:ir.model.constraint,name:0 @@ -4319,7 +4324,7 @@ msgstr "Restrição" #: selection:res.partner,type:0 #: selection:res.partner.address,type:0 msgid "Default" -msgstr "Por Omissão" +msgstr "Por omissão" #. module: base #: model:ir.module.module,summary:base.module_lunch @@ -4416,7 +4421,7 @@ msgstr "" #. module: base #: model:res.country,name:base.va msgid "Holy See (Vatican City State)" -msgstr "Santa Sé (Cidade do Vaticano)" +msgstr "Vaticano" #. module: base #: field:base.module.import,module_file:0 @@ -4518,7 +4523,7 @@ msgstr "Tipo de Sequência" #. module: base #: view:base.language.export:0 msgid "Unicode/UTF-8" -msgstr "" +msgstr "Unicode/UTF-8" #. module: base #: selection:base.language.install,lang:0 @@ -4530,12 +4535,12 @@ msgstr "Hindi / हिंदी" #: model:ir.actions.act_window,name:base.action_view_base_language_install #: model:ir.ui.menu,name:base.menu_view_base_language_install msgid "Load a Translation" -msgstr "" +msgstr "Carregar uma tradução" #. module: base #: field:ir.module.module,latest_version:0 msgid "Installed Version" -msgstr "" +msgstr "Versão instalada" #. module: base #: field:ir.module.module,license:0 @@ -4678,7 +4683,7 @@ msgstr "ir.actions.report.xml" #. module: base #: model:res.country,name:base.ps msgid "Palestinian Territory, Occupied" -msgstr "" +msgstr "Palestina" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ch @@ -4835,12 +4840,12 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 msgid "Portuguese (BR) / Português (BR)" -msgstr "" +msgstr "Português (BR)" #. module: base #: model:ir.model,name:base.model_ir_needaction_mixin msgid "ir.needaction_mixin" -msgstr "" +msgstr "ir.needaction_mixin" #. module: base #: view:base.language.export:0 @@ -4860,13 +4865,13 @@ msgstr "Aplicações para uma Indústria Específica" #. module: base #: model:ir.module.module,shortdesc:base.module_google_docs msgid "Google Docs integration" -msgstr "" +msgstr "Integração com o Google Docs" #. module: base #: code:addons/base/ir/ir_fields.py:328 #, python-format msgid "name" -msgstr "" +msgstr "nome" #. module: base #: model:ir.module.module,description:base.module_mrp_operations @@ -4922,7 +4927,7 @@ msgstr "Lesoto" #. module: base #: view:base.language.export:0 msgid ", or your preferred text editor" -msgstr "" +msgstr ", ou o seu editor de texto preferido" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_partner_assign @@ -4989,12 +4994,12 @@ msgstr "Definir como Nulo" #. module: base #: view:res.users:0 msgid "Save" -msgstr "" +msgstr "Gravar" #. module: base #: field:ir.actions.report.xml,report_xml:0 msgid "XML Path" -msgstr "" +msgstr "Caminho do XML" #. module: base #: model:res.country,name:base.bj @@ -5076,7 +5081,7 @@ msgstr "Segurança" #. module: base #: selection:base.language.install,lang:0 msgid "Portuguese / Português" -msgstr "" +msgstr "Português" #. module: base #: code:addons/base/ir/ir_model.py:364 @@ -5167,7 +5172,7 @@ msgstr "Taxas" #. module: base #: model:ir.module.module,shortdesc:base.module_email_template msgid "Email Templates" -msgstr "" +msgstr "Modelos de mensagens" #. module: base #: model:res.country,name:base.sy @@ -5272,7 +5277,7 @@ msgstr "" #. module: base #: view:res.company:0 msgid "Preview Header/Footer" -msgstr "" +msgstr "Antevisão do Cabeçalho/Rodapé" #. module: base #: field:ir.ui.menu,parent_id:0 @@ -5310,7 +5315,7 @@ msgstr "" #. module: base #: model:ir.model,name:base.model_res_partner_address msgid "res.partner.address" -msgstr "" +msgstr "res.partner.address" #. module: base #: view:ir.rule:0 @@ -5349,7 +5354,7 @@ msgstr "Histórico" #. module: base #: model:res.country,name:base.im msgid "Isle of Man" -msgstr "" +msgstr "Ilha de Man" #. module: base #: help:ir.actions.client,res_model:0 @@ -5512,7 +5517,7 @@ msgstr "" #. module: base #: model:res.groups,name:base.group_sale_salesman_all_leads msgid "See all Leads" -msgstr "" +msgstr "Ver todas as dicas" #. module: base #: model:res.country,name:base.ci @@ -5589,7 +5594,7 @@ msgstr "Configuração de precisão decimal" #: model:ir.model,name:base.model_ir_actions_act_url #: selection:ir.ui.menu,action:0 msgid "ir.actions.act_url" -msgstr "" +msgstr "ir.actions.act_ur" #. module: base #: model:ir.ui.menu,name:base.menu_translation_app @@ -5742,7 +5747,7 @@ msgstr "" #. module: base #: view:ir.translation:0 msgid "Comments" -msgstr "" +msgstr "Comentários" #. module: base #: model:res.country,name:base.et @@ -5752,7 +5757,7 @@ msgstr "Etiópia" #. module: base #: model:ir.module.category,name:base.module_category_authentication msgid "Authentication" -msgstr "" +msgstr "Autenticação" #. module: base #: model:res.country,name:base.sj @@ -5786,7 +5791,7 @@ msgstr "Título" #: code:addons/base/ir/ir_fields.py:147 #, python-format msgid "true" -msgstr "" +msgstr "verdadeiro" #. module: base #: model:ir.model,name:base.model_base_language_install @@ -5796,7 +5801,7 @@ msgstr "Instalar Idioma" #. module: base #: model:res.partner.category,name:base.res_partner_category_11 msgid "Services" -msgstr "" +msgstr "Serviços" #. module: base #: view:ir.translation:0 @@ -5900,7 +5905,7 @@ msgstr "" #: code:addons/base/ir/workflow/workflow.py:99 #, python-format msgid "Operation forbidden" -msgstr "" +msgstr "Operação proibida" #. module: base #: view:ir.actions.server:0 @@ -5992,7 +5997,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_be_hr_payroll msgid "Belgium - Payroll" -msgstr "" +msgstr "Bélgica - folha de pagamentos" #. module: base #: view:workflow.activity:0 @@ -6024,7 +6029,7 @@ msgstr "Nome do Recurso" #. module: base #: field:res.partner,is_company:0 msgid "Is a Company" -msgstr "" +msgstr "É uma empresa" #. module: base #: selection:ir.cron,interval_type:0 @@ -6075,6 +6080,7 @@ msgstr "" msgid "" "Administrative divisions of a country. E.g. Fed. State, Departement, Canton" msgstr "" +"Divisões administrativas de um país. Exemplos: Distrito, Concelho, Freguesia" #. module: base #: view:res.partner.bank:0 @@ -6104,7 +6110,7 @@ msgstr "" #. module: base #: sql_constraint:ir.filters:0 msgid "Filter names must be unique" -msgstr "" +msgstr "Os nomes dos filtros devem ser únicos" #. module: base #: help:multi_company.default,object_id:0 @@ -6119,7 +6125,7 @@ msgstr "" #. module: base #: field:ir.filters,is_default:0 msgid "Default filter" -msgstr "" +msgstr "Filtro padrão" #. module: base #: report:ir.module.reference:0 @@ -6236,7 +6242,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_reset_password msgid "Reset Password" -msgstr "" +msgstr "Repor a senha" #. module: base #: view:ir.attachment:0 @@ -6253,7 +6259,7 @@ msgstr "Malásia" #: code:addons/base/ir/ir_sequence.py:131 #, python-format msgid "Increment number must not be zero." -msgstr "" +msgstr "O valor de incremento não pode ser zero." #. module: base #: model:ir.module.module,shortdesc:base.module_account_cancel @@ -6453,7 +6459,7 @@ msgstr "ir.cron" #. module: base #: model:res.country,name:base.cw msgid "Curaçao" -msgstr "" +msgstr "Curaçao" #. module: base #: view:ir.sequence:0 @@ -6600,7 +6606,7 @@ msgstr "Israel" #: code:addons/base/res/res_config.py:444 #, python-format msgid "Cannot duplicate configuration!" -msgstr "" +msgstr "Não se pode duplicar a configuração!" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_syscohada @@ -6654,7 +6660,7 @@ msgstr "" #. module: base #: model:res.groups,name:base.group_partner_manager msgid "Contact Creation" -msgstr "" +msgstr "Criação de contacto" #. module: base #: view:ir.module.module:0 @@ -6710,7 +6716,7 @@ msgstr "" #. module: base #: view:ir.sequence:0 msgid "Week of the Year: %(woy)s" -msgstr "" +msgstr "Semana (do ano): %(woy)s" #. module: base #: field:res.users,id:0 @@ -6779,7 +6785,7 @@ msgstr "Títulos do Parceiro" #: code:addons/base/ir/ir_fields.py:228 #, python-format msgid "Use the format '%s'" -msgstr "" +msgstr "Use o formato '%s'" #. module: base #: help:ir.actions.act_window,auto_refresh:0 @@ -6811,12 +6817,12 @@ msgstr "WorkItems" #: code:addons/base/res/res_bank.py:195 #, python-format msgid "Invalid Bank Account Type Name format." -msgstr "" +msgstr "Formato inválido para o nome do tipo de conta bancária." #. module: base #: view:ir.filters:0 msgid "Filters visible only for one user" -msgstr "" +msgstr "Filtros visíveis só para o utilizador" #. module: base #: model:ir.model,name:base.model_ir_attachment @@ -6836,7 +6842,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_anonymous msgid "Anonymous" -msgstr "" +msgstr "Anónimo" #. module: base #: model:ir.module.module,description:base.module_base_import @@ -6992,7 +6998,7 @@ msgstr "Somália" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_doctor msgid "Dr." -msgstr "" +msgstr "Dr." #. module: base #: model:res.groups,name:base.group_user @@ -7057,7 +7063,7 @@ msgstr "Copiar de" #. module: base #: field:ir.model.data,display_name:0 msgid "Record Name" -msgstr "" +msgstr "Nome do registo" #. module: base #: model:ir.model,name:base.model_ir_actions_client @@ -7073,7 +7079,7 @@ msgstr "Território Britânico do Oceano Índico" #. module: base #: model:ir.actions.server,name:base.action_server_module_immediate_install msgid "Module Immediate Install" -msgstr "" +msgstr "Instalação imediata do módulo" #. module: base #: view:ir.actions.server:0 @@ -7200,7 +7206,7 @@ msgstr "Em múltiplos docs" #: view:res.users:0 #: view:wizard.ir.model.menu.create:0 msgid "or" -msgstr "" +msgstr "ou" #. module: base #: model:ir.module.module,shortdesc:base.module_account_accountant @@ -7343,7 +7349,7 @@ msgstr "" #. module: base #: model:res.partner.category,name:base.res_partner_category_14 msgid "Manufacturer" -msgstr "" +msgstr "Fabricante" #. module: base #: help:res.users,company_id:0 @@ -7793,7 +7799,7 @@ msgstr "init" #: view:res.partner:0 #: field:res.partner,user_id:0 msgid "Salesperson" -msgstr "" +msgstr "Vendedor" #. module: base #: view:res.lang:0 @@ -7851,7 +7857,7 @@ msgstr "Password opcional para autenticação SMTP" #: code:addons/base/ir/ir_model.py:719 #, python-format msgid "Sorry, you are not allowed to modify this document." -msgstr "" +msgstr "Infelizmente, não pode alterar este documento." #. module: base #: code:addons/base/res/res_config.py:350 @@ -7941,7 +7947,7 @@ msgstr "Francês (CH) / Français (CH)" #. module: base #: model:res.partner.category,name:base.res_partner_category_13 msgid "Distributor" -msgstr "" +msgstr "Distribuidor" #. module: base #: help:ir.actions.server,subject:0 @@ -8156,7 +8162,7 @@ msgstr "Contabilidade Analítica" #. module: base #: model:ir.model,name:base.model_ir_model_constraint msgid "ir.model.constraint" -msgstr "" +msgstr "ir.model.constraint" #. module: base #: model:ir.module.module,shortdesc:base.module_web_graph @@ -8189,7 +8195,7 @@ msgstr "Bélgica - Contabilidade" #. module: base #: view:ir.model.access:0 msgid "Access Control" -msgstr "" +msgstr "Controlo de acesso" #. module: base #: model:res.country,name:base.kw @@ -8293,7 +8299,7 @@ msgstr "Filipinas" #. module: base #: model:ir.module.module,summary:base.module_hr_timesheet_sheet msgid "Timesheets, Attendances, Activities" -msgstr "" +msgstr "Folhas de horas, assiduidade, atividades" #. module: base #: model:res.country,name:base.ma @@ -8406,7 +8412,7 @@ msgstr "Relatório de introspeção em objetos" #. module: base #: model:ir.module.module,shortdesc:base.module_web_analytics msgid "Google Analytics" -msgstr "" +msgstr "Google Analytics" #. module: base #: model:ir.module.module,description:base.module_note @@ -8434,7 +8440,7 @@ msgstr "Dominica" #. module: base #: field:ir.translation,name:0 msgid "Translated field" -msgstr "" +msgstr "Traduzir campo" #. module: base #: model:ir.module.module,shortdesc:base.module_stock_location @@ -8648,7 +8654,7 @@ msgstr "" #. module: base #: view:base.language.export:0 msgid "documentation" -msgstr "" +msgstr "documentação" #. module: base #: help:ir.model,osv_memory:0 @@ -8693,7 +8699,7 @@ msgstr "%b - Nome do mês abreviado." #: code:addons/base/ir/ir_model.py:721 #, python-format msgid "Sorry, you are not allowed to delete this document." -msgstr "" +msgstr "Infelizmente, não pode apagar este documento." #. module: base #: constraint:ir.rule:0 @@ -8767,7 +8773,7 @@ msgstr "Samoa Americana" #. module: base #: view:ir.attachment:0 msgid "My Document(s)" -msgstr "" +msgstr "Os meus documentos" #. module: base #: help:ir.actions.act_window,res_model:0 @@ -8849,7 +8855,7 @@ msgstr "" #. module: base #: field:res.partner.title,shortcut:0 msgid "Abbreviation" -msgstr "" +msgstr "Abreviatura" #. module: base #: model:ir.ui.menu,name:base.menu_crm_case_job_req_main @@ -9046,7 +9052,7 @@ msgstr "" #. module: base #: model:ir.module.category,name:base.module_category_warehouse_management msgid "Warehouse" -msgstr "" +msgstr "Armazém" #. module: base #: field:ir.exports,resource:0 @@ -9095,7 +9101,7 @@ msgstr "Relatório" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_prof msgid "Prof." -msgstr "" +msgstr "Prof." #. module: base #: code:addons/base/ir/ir_mail_server.py:239 @@ -9227,7 +9233,7 @@ msgstr "Ref. do Parceiro" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_expense msgid "Expense Management" -msgstr "" +msgstr "Gestão de despesas" #. module: base #: field:ir.attachment,create_date:0 @@ -9306,7 +9312,7 @@ msgstr "Modelos" #: code:addons/base/module/module.py:472 #, python-format msgid "The `base` module cannot be uninstalled" -msgstr "" +msgstr "O módulo \"base\" não pode ser desinstalado" #. module: base #: code:addons/base/ir/ir_cron.py:390 @@ -9333,7 +9339,7 @@ msgstr "osv_memory.autovacuum" #: code:addons/base/ir/ir_model.py:720 #, python-format msgid "Sorry, you are not allowed to create this kind of document." -msgstr "" +msgstr "Infelizmente, não pode criar este tipo de documento." #. module: base #: field:base.language.export,lang:0 @@ -9375,7 +9381,7 @@ msgstr "%H - Hora (24-horas) [00,23]." #. module: base #: field:ir.model.fields,on_delete:0 msgid "On Delete" -msgstr "" +msgstr "Ao apagar" #. module: base #: code:addons/base/ir/ir_model.py:340 @@ -9583,7 +9589,7 @@ msgstr "O código da moeda deve ser único por empresa!" #: code:addons/base/module/wizard/base_export_language.py:38 #, python-format msgid "New Language (Empty translation template)" -msgstr "" +msgstr "Novo idioma (modelo de tradução limpo)" #. module: base #: model:ir.module.module,description:base.module_auth_reset_password @@ -9653,7 +9659,7 @@ msgstr "Egipto" #. module: base #: view:ir.attachment:0 msgid "Creation" -msgstr "" +msgstr "Criação" #. module: base #: help:ir.actions.server,model_id:0 @@ -9725,7 +9731,7 @@ msgstr "" #. module: base #: field:res.partner,use_parent_address:0 msgid "Use Company Address" -msgstr "" +msgstr "Usar o endereço da empresa" #. module: base #: model:ir.module.module,summary:base.module_hr_holidays @@ -10106,7 +10112,7 @@ msgstr "Gravar Regras" #. module: base #: view:multi_company.default:0 msgid "Multi Company" -msgstr "" +msgstr "Multi-empresas" #. module: base #: model:ir.module.category,name:base.module_category_portal @@ -10117,13 +10123,13 @@ msgstr "Portal" #. module: base #: selection:ir.translation,state:0 msgid "To Translate" -msgstr "" +msgstr "Para traduzir" #. module: base #: code:addons/base/ir/ir_fields.py:295 #, python-format msgid "See all possible values" -msgstr "" +msgstr "Ver todos os valores possíveis" #. module: base #: model:ir.module.module,description:base.module_claim_from_delivery @@ -10290,7 +10296,7 @@ msgstr "Itália" #. module: base #: model:res.groups,name:base.group_sale_salesman msgid "See Own Leads" -msgstr "" +msgstr "Ver as próprias dicas" #. module: base #: view:ir.actions.todo:0 @@ -10522,7 +10528,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_stock msgid "Sales and Warehouse Management" -msgstr "" +msgstr "Gestão de vendas e de armazém" #. module: base #: field:ir.model.fields,model:0 @@ -10663,7 +10669,7 @@ msgstr "" #: code:addons/base/ir/ir_model.py:1023 #, python-format msgid "Permission Denied" -msgstr "" +msgstr "Permissão negada" #. module: base #: field:ir.ui.menu,child_id:0 @@ -10808,7 +10814,7 @@ msgstr "" #. module: base #: model:res.country,name:base.bl msgid "Saint Barthélémy" -msgstr "" +msgstr "Saint Barthélémy" #. module: base #: selection:ir.module.module,license:0 @@ -10889,12 +10895,12 @@ msgstr "" #: model:ir.actions.act_window,name:base.action_inventory_form #: model:ir.ui.menu,name:base.menu_action_inventory_form msgid "Default Company per Object" -msgstr "" +msgstr "Empresa padrão por objeto" #. module: base #: field:ir.ui.menu,needaction_counter:0 msgid "Number of actions the user has to perform" -msgstr "" +msgstr "Número de ações que o utilizador tem de realizar" #. module: base #: model:ir.module.module,shortdesc:base.module_web_hello @@ -11003,7 +11009,7 @@ msgstr "Este campo é usado para obter/fixar a localização do utilizador" #. module: base #: view:ir.filters:0 msgid "Shared" -msgstr "" +msgstr "Partilhado" #. module: base #: code:addons/base/module/module.py:336 @@ -11194,13 +11200,13 @@ msgstr "Operações de Produção" #. module: base #: view:base.language.export:0 msgid "Here is the exported translation file:" -msgstr "" +msgstr "Aqui está o ficheiro de tradução:" #. module: base #: field:ir.actions.report.xml,report_rml_content:0 #: field:ir.actions.report.xml,report_rml_content_data:0 msgid "RML Content" -msgstr "" +msgstr "Conteúdo RML" #. module: base #: view:res.lang:0 @@ -11367,7 +11373,7 @@ msgstr "A4" #. module: base #: view:res.config.installer:0 msgid "Configuration Installer" -msgstr "" +msgstr "Instalador de Configuração" #. module: base #: field:res.partner,customer:0 @@ -11458,13 +11464,13 @@ msgstr "" #. module: base #: model:ir.model,name:base.model_ir_fields_converter msgid "ir.fields.converter" -msgstr "" +msgstr "ir.fields.converter" #. module: base #: code:addons/base/res/res_partner.py:436 #, python-format msgid "Couldn't create contact without email address !" -msgstr "" +msgstr "Não foi possível criar o contacto sem o endereço eletrónico!" #. module: base #: model:ir.module.category,name:base.module_category_manufacturing @@ -11486,7 +11492,7 @@ msgstr "Cancelar Instalação" #. module: base #: model:ir.model,name:base.model_ir_model_relation msgid "ir.model.relation" -msgstr "" +msgstr "ir.model.relation" #. module: base #: model:ir.module.module,shortdesc:base.module_account_check_writing @@ -11716,7 +11722,7 @@ msgstr "UK - Contabilidade" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam msgid "Mrs." -msgstr "" +msgstr "Srª." #. module: base #: code:addons/base/ir/ir_model.py:424 @@ -11752,7 +11758,7 @@ msgstr "Repetição da Expressão" #. module: base #: model:res.partner.category,name:base.res_partner_category_16 msgid "Retailer" -msgstr "" +msgstr "Revendedor" #. module: base #: view:ir.model.fields:0 @@ -11920,7 +11926,7 @@ msgstr "Ajuda na gestão de cotações, ordens de venda e faturação." #. module: base #: field:res.users,login_date:0 msgid "Latest connection" -msgstr "" +msgstr "Ultima ligação" #. module: base #: field:res.groups,implied_ids:0 @@ -12003,7 +12009,7 @@ msgstr "Binário" #. module: base #: model:res.partner.title,name:base.res_partner_title_doctor msgid "Doctor" -msgstr "" +msgstr "Doutor" #. module: base #: model:ir.module.module,description:base.module_mrp_repair @@ -12222,7 +12228,7 @@ msgstr "" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_mister msgid "Mr." -msgstr "" +msgstr "Sr." #. module: base #: model:res.country,name:base.mv @@ -12718,7 +12724,7 @@ msgstr "Chipre" #. module: base #: field:res.users,new_password:0 msgid "Set Password" -msgstr "" +msgstr "Definir Senha" #. module: base #: field:ir.actions.server,subject:0 @@ -12839,7 +12845,7 @@ msgstr "Servidores Mail Outgoing" #. module: base #: model:ir.ui.menu,name:base.menu_custom msgid "Technical" -msgstr "" +msgstr "Técnico" #. module: base #: model:res.country,name:base.cn @@ -13734,7 +13740,7 @@ msgstr "" #: code:addons/base/ir/ir_fields.py:147 #, python-format msgid "no" -msgstr "" +msgstr "não" #. module: base #: field:ir.actions.server,trigger_obj_id:0 @@ -13764,7 +13770,7 @@ msgstr "Configuração do Sistema Concluída" #: view:ir.config_parameter:0 #: model:ir.ui.menu,name:base.ir_config_menu msgid "System Parameters" -msgstr "" +msgstr "Parametros do Sistema" #. module: base #: model:ir.module.module,description:base.module_l10n_ch @@ -14131,7 +14137,7 @@ msgstr "Taxa de Câmbio" #: view:base.module.upgrade:0 #: field:base.module.upgrade,module_info:0 msgid "Modules to Update" -msgstr "" +msgstr "Módulos a Atualizar" #. module: base #: model:ir.ui.menu,name:base.menu_custom_multicompany @@ -14249,7 +14255,7 @@ msgstr "Utilização da Ação" #. module: base #: field:ir.module.module,name:0 msgid "Technical Name" -msgstr "" +msgstr "Nome Técnico" #. module: base #: model:ir.model,name:base.model_workflow_workitem @@ -14298,7 +14304,7 @@ msgstr "Alemanha - Contabilidade" #. module: base #: view:ir.sequence:0 msgid "Day of the Year: %(doy)s" -msgstr "" +msgstr "Dia do Ano: %(doy)s" #. module: base #: field:ir.ui.menu,web_icon:0 @@ -14465,7 +14471,7 @@ msgstr "Acesso" #: field:res.partner,vat:0 #, python-format msgid "TIN" -msgstr "" +msgstr "TIN" #. module: base #: model:res.country,name:base.aw @@ -14568,7 +14574,7 @@ msgstr "Serviços Pós-Venda" #. module: base #: field:base.language.import,code:0 msgid "ISO Code" -msgstr "" +msgstr "Código ISO" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_fr @@ -14887,7 +14893,7 @@ msgstr "Spanish (SV) / Español (SV)" #. module: base #: model:ir.actions.act_window,name:base.open_module_tree msgid "Install a Module" -msgstr "" +msgstr "Instalar um Módulo" #. module: base #: field:ir.module.module,auto_install:0 @@ -15114,7 +15120,7 @@ msgstr "Atualização do Sistema" #: field:ir.actions.report.xml,report_sxw_content:0 #: field:ir.actions.report.xml,report_sxw_content_data:0 msgid "SXW Content" -msgstr "" +msgstr "Conteúdo SXW" #. module: base #: help:ir.sequence,prefix:0 @@ -15156,7 +15162,7 @@ msgstr "Informação Geral" #. module: base #: field:ir.model.data,complete_name:0 msgid "Complete ID" -msgstr "" +msgstr "ID Completo" #. module: base #: model:res.country,name:base.tc @@ -15257,7 +15263,7 @@ msgstr "" #. module: base #: view:res.partner:0 msgid "Internal Notes" -msgstr "" +msgstr "Notas Internas" #. module: base #: selection:res.partner.address,type:0 @@ -15321,7 +15327,7 @@ msgstr "Criar Objeto" #. module: base #: model:res.country,name:base.ss msgid "South Sudan" -msgstr "" +msgstr "Sudão do Sul" #. module: base #: field:ir.filters,context:0 diff --git a/openerp/addons/base/i18n/pt_BR.po b/openerp/addons/base/i18n/pt_BR.po index 2c18674f450..ad649948427 100644 --- a/openerp/addons/base/i18n/pt_BR.po +++ b/openerp/addons/base/i18n/pt_BR.po @@ -7,14 +7,15 @@ msgstr "" "Project-Id-Version: pt_BR\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-12-03 09:37+0000\n" -"Last-Translator: Cristiano Korndörfer \n" +"PO-Revision-Date: 2012-12-07 22:22+0000\n" +"Last-Translator: Fábio Martinelli - http://zupy.com.br " +"\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: 2012-12-04 05:02+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-08 04:58+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -3424,7 +3425,7 @@ msgstr "Armênia" #. module: base #: model:ir.module.module,summary:base.module_hr_evaluation msgid "Periodical Evaluations, Appraisals, Surveys" -msgstr "" +msgstr "Avaliações Periódicas, Pesquisas, Avaliações" #. module: base #: model:ir.actions.act_window,name:base.ir_property_form @@ -4184,7 +4185,7 @@ msgstr "%x - Representação apropriada para data." #. module: base #: view:res.partner:0 msgid "Tag" -msgstr "" +msgstr "Tag" #. module: base #: view:res.lang:0 @@ -4396,7 +4397,7 @@ msgstr "Compartilhar Qualquer Documento" #. module: base #: model:ir.module.module,summary:base.module_crm msgid "Leads, Opportunities, Phone Calls" -msgstr "" +msgstr "Prospectos, Oportunidades, Ligações Telefônicas" #. module: base #: view:res.lang:0 @@ -5119,7 +5120,7 @@ msgstr "Este arquivo foi gerado usando o universal" #. module: base #: model:res.partner.category,name:base.res_partner_category_7 msgid "IT Services" -msgstr "" +msgstr "Serviços de TI" #. module: base #: model:ir.module.category,name:base.module_category_specific_industry_applications @@ -5181,7 +5182,7 @@ msgstr "Saltar" #. module: base #: model:ir.module.module,shortdesc:base.module_event_sale msgid "Events Sales" -msgstr "" +msgstr "Venda de Eventos" #. module: base #: model:res.country,name:base.ls @@ -5191,7 +5192,7 @@ msgstr "Lesoto" #. module: base #: view:base.language.export:0 msgid ", or your preferred text editor" -msgstr "" +msgstr ", ou seu editor de texto preferido" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_partner_assign @@ -5488,7 +5489,7 @@ msgstr "Data" #. module: base #: model:ir.module.module,shortdesc:base.module_event_moodle msgid "Event Moodle" -msgstr "" +msgstr "Evento Moodle" #. module: base #: model:ir.module.module,description:base.module_email_template @@ -5539,7 +5540,7 @@ msgstr "" #. module: base #: model:ir.ui.menu,name:base.menu_partner_category_form msgid "Partner Tags" -msgstr "" +msgstr "Tags de Parceiros" #. module: base #: view:res.company:0 @@ -5587,7 +5588,7 @@ msgstr "res.partner.address" #. module: base #: view:ir.rule:0 msgid "Write Access Right" -msgstr "" +msgstr "Permissão de Escrita" #. module: base #: model:ir.actions.act_window,help:base.action_res_groups @@ -5666,6 +5667,14 @@ msgid "" "wizard if the delivery is to be invoiced.\n" " " msgstr "" +"\n" +"Assistente de faturamento para entrega.\n" +"============================\n" +"\n" +"Quando você enviar ou entregar mercadorias, este módulo ativa " +"automaticamente o\n" +"assistente de faturamento se a entrega deve ser faturada.\n" +" " #. module: base #: selection:ir.translation,type:0 @@ -5703,6 +5712,10 @@ msgid "" "=======================\n" " " msgstr "" +"\n" +"Permitir que usuários se cadastrem.\n" +"=======================\n" +" " #. module: base #: model:res.country,name:base.zm @@ -5717,7 +5730,7 @@ msgstr "Iniciar o Assistente de Configuração" #. module: base #: model:ir.module.module,summary:base.module_mrp msgid "Manufacturing Orders, Bill of Materials, Routing" -msgstr "" +msgstr "Ordens de produção, lista de materiais, roteamento" #. module: base #: view:ir.module.module:0 @@ -6209,6 +6222,12 @@ msgid "" "Allows users to create custom dashboard.\n" " " msgstr "" +"\n" +"Permite que o usuário crie um painel personalizado.\n" +"========================================\n" +"\n" +"Permite aos usuários criar um painel personalizado.\n" +" " #. module: base #: model:ir.actions.act_window,name:base.ir_access_act @@ -6358,7 +6377,7 @@ msgstr "'%s' não parece ser um número para o campo '%% (field)s'" #: help:res.country.state,name:0 msgid "" "Administrative divisions of a country. E.g. Fed. State, Departement, Canton" -msgstr "" +msgstr "Divisões administrativas de um país. Ex: Estados, Cidades" #. module: base #: view:res.partner.bank:0 @@ -6537,7 +6556,7 @@ msgstr "Malásia" #: code:addons/base/ir/ir_sequence.py:131 #, python-format msgid "Increment number must not be zero." -msgstr "" +msgstr "Número de incremento não deve ser zero." #. module: base #: model:ir.module.module,shortdesc:base.module_account_cancel @@ -6782,6 +6801,13 @@ msgid "" "using the\n" "FTP client.\n" msgstr "" +"\n" +"Esta é uma interface FTP com sistema de gerenciamento de documentos.\n" +"================================================================\n" +"\n" +"Com este módulo você pode não apenas acessar documentos através do OpenERP\n" +"mas também conectar-se a eles através do sistema de arquivos usando um\n" +"cliente FTP.\n" #. module: base #: field:ir.model.fields,size:0 @@ -7093,7 +7119,7 @@ msgstr "Itens de trabalho" #: code:addons/base/res/res_bank.py:195 #, python-format msgid "Invalid Bank Account Type Name format." -msgstr "" +msgstr "Formato de Tipo de Conta Bancária inválido" #. module: base #: view:ir.filters:0 @@ -7841,7 +7867,7 @@ msgstr "Senha" #. module: base #: model:ir.module.module,shortdesc:base.module_portal_claim msgid "Portal Claim" -msgstr "" +msgstr "Portal de Solicitações" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_pe @@ -8356,7 +8382,7 @@ msgstr "Tipo de campos" #. module: base #: model:ir.module.module,summary:base.module_hr_recruitment msgid "Jobs, Recruitment, Applications, Job Interviews" -msgstr "" +msgstr "Empregos, Recrutamento, Candidaturas, Entrevistas de Emprego" #. module: base #: code:addons/base/module/module.py:513 @@ -8401,7 +8427,7 @@ msgstr "Aviso!" #. module: base #: view:ir.rule:0 msgid "Full Access Right" -msgstr "" +msgstr "Todos os direitos de acesso" #. module: base #: field:res.partner.category,parent_id:0 @@ -8506,7 +8532,7 @@ msgstr "Kuwait" #. module: base #: model:ir.module.module,shortdesc:base.module_account_followup msgid "Payment Follow-up Management" -msgstr "" +msgstr "Gestão de acompanhamento de pagamentos" #. module: base #: field:workflow.workitem,inst_id:0 @@ -8602,7 +8628,7 @@ msgstr "Filipinas" #. module: base #: model:ir.module.module,summary:base.module_hr_timesheet_sheet msgid "Timesheets, Attendances, Activities" -msgstr "" +msgstr "Planilhas, Atendimentos, Atividades" #. module: base #: model:res.country,name:base.ma @@ -9421,6 +9447,17 @@ msgid "" "\n" " " msgstr "" +"\n" +"Este módulo mostra os processos básicos envolvidos nos módulos selecionados " +"e na seqüência em que ocorrem.\n" +"=============================================================================" +"===================\n" +"\n" +" **Nota: ** Isso se aplica aos módulos contendo modulename_process.xml.\n" +"\n" +"**Ex: ** produto / processo / product_process.xml.\n" +"\n" +" " #. module: base #: view:res.lang:0 @@ -9482,7 +9519,7 @@ msgstr "Nenhum" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_holidays msgid "Leave Management" -msgstr "" +msgstr "Gerenciamento de Folgas" #. module: base #: model:res.company,overdue_msg:base.main_company @@ -9965,6 +10002,13 @@ msgid "" "Allow administrator to click a button to send a \"Reset Password\" request " "to a user.\n" msgstr "" +"\n" +"Trocar Senha\n" +"==============\n" +"\n" +"Permite aos usuários trocar sua senha a partir da pagina de login.\n" +"Permite ao administrador clicar no botão para requisitar ao usuário que " +"troque sua senha.\n" #. module: base #: help:ir.actions.server,email:0 @@ -10108,7 +10152,7 @@ msgstr "Usar o endereço da empresa" #. module: base #: model:ir.module.module,summary:base.module_hr_holidays msgid "Holidays, Allocation and Leave Requests" -msgstr "" +msgstr "Pedidos de Alocação de férias e licenças" #. module: base #: model:ir.module.module,description:base.module_web_hello @@ -10357,7 +10401,7 @@ msgstr "" #. module: base #: sql_constraint:ir.model.constraint:0 msgid "Constraints with the same name are unique per module." -msgstr "" +msgstr "Constraints com o mesmo nome são únicas por módulo." #. module: base #: model:ir.module.module,description:base.module_report_intrastat @@ -10402,7 +10446,7 @@ msgstr "res.request" #. module: base #: field:res.partner,image_medium:0 msgid "Medium-sized image" -msgstr "" +msgstr "Imagem de tamanho Médio" #. module: base #: view:ir.model:0 @@ -10429,7 +10473,7 @@ msgstr "Conteúdo do arquivo" #: view:ir.model.relation:0 #: model:ir.ui.menu,name:base.ir_model_relation_menu msgid "ManyToMany Relations" -msgstr "" +msgstr "Relação muitos para muitos" #. module: base #: model:res.country,name:base.pa @@ -10467,7 +10511,7 @@ msgstr "Ilhas Pitcairn" #. module: base #: field:res.partner,category_id:0 msgid "Tags" -msgstr "" +msgstr "Marcadores" #. module: base #: view:base.module.upgrade:0 @@ -10487,7 +10531,7 @@ msgstr "Registro de Regras" #. module: base #: view:multi_company.default:0 msgid "Multi Company" -msgstr "" +msgstr "Multi-Empresa" #. module: base #: model:ir.module.category,name:base.module_category_portal @@ -10498,13 +10542,13 @@ msgstr "Portal" #. module: base #: selection:ir.translation,state:0 msgid "To Translate" -msgstr "" +msgstr "Para traduzir" #. module: base #: code:addons/base/ir/ir_fields.py:295 #, python-format msgid "See all possible values" -msgstr "" +msgstr "Ver valores válidos" #. module: base #: model:ir.module.module,description:base.module_claim_from_delivery @@ -10539,7 +10583,7 @@ msgstr "" #. module: base #: help:ir.model.constraint,name:0 msgid "PostgreSQL constraint or foreign key name." -msgstr "" +msgstr "Nome da constraint PostgreSQL ou chave estrangeira(FK)" #. module: base #: view:res.lang:0 @@ -10559,12 +10603,12 @@ msgstr "Guiné Bissau" #. module: base #: field:ir.actions.report.xml,header:0 msgid "Add RML Header" -msgstr "" +msgstr "Adicionar cabeçalho RML" #. module: base #: help:res.company,rml_footer:0 msgid "Footer text displayed at the bottom of all reports." -msgstr "" +msgstr "Texto a ser mostrado no rodapé de todos os relatórios." #. module: base #: model:ir.module.module,shortdesc:base.module_note_pad @@ -10675,7 +10719,7 @@ msgstr "Itália" #. module: base #: model:res.groups,name:base.group_sale_salesman msgid "See Own Leads" -msgstr "" +msgstr "Ver seus Leads" #. module: base #: view:ir.actions.todo:0 @@ -10705,6 +10749,8 @@ msgid "" "Insufficient fields to generate a Calendar View for %s, missing a date_stop " "or a date_delay" msgstr "" +"Campos insuficiente para gerar uma visão de calendário (% s), faltando um " +"date_stop ou um date_delay" #. module: base #: field:workflow.activity,action:0 @@ -10771,6 +10817,7 @@ msgstr "ir.translation" msgid "" "Please contact your system administrator if you think this is an error." msgstr "" +"Contacte seu administrador do sistema se você acha que isto é um erro." #. module: base #: code:addons/base/module/module.py:519 @@ -10778,7 +10825,7 @@ msgstr "" #: model:ir.actions.act_window,name:base.action_view_base_module_upgrade #, python-format msgid "Apply Schedule Upgrade" -msgstr "" +msgstr "Aplicar atualizações agendas" #. module: base #: view:workflow.activity:0 @@ -10811,6 +10858,8 @@ msgid "" "One of the documents you are trying to access has been deleted, please try " "again after refreshing." msgstr "" +"Um dos documentos que você está tentando acessar foi excluído. Atualize sua " +"tela." #. module: base #: model:ir.model,name:base.model_ir_mail_server @@ -10823,6 +10872,8 @@ msgid "" "If the target model uses the need action mechanism, this field gives the " "number of actions the current user has to perform." msgstr "" +"Se o modelo de destino necessita do mecanismo de ação, este campo indica o " +"número de ações que o usuário atual tem para executar." #. module: base #: selection:base.language.install,lang:0 @@ -10919,7 +10970,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_stock msgid "Sales and Warehouse Management" -msgstr "" +msgstr "Gestão de vendas e armazens" #. module: base #: field:ir.model.fields,model:0 @@ -10965,7 +11016,7 @@ msgstr "" #. module: base #: help:res.partner,ean13:0 msgid "BarCode" -msgstr "" +msgstr "Código de barras" #. module: base #: help:ir.model.fields,model_id:0 @@ -10986,7 +11037,7 @@ msgstr "Martinica(França)" #. module: base #: help:res.partner,is_company:0 msgid "Check if the contact is a company, otherwise it is a person" -msgstr "" +msgstr "Marque se o contato é uma empresa." #. module: base #: view:ir.sequence.type:0 @@ -10997,7 +11048,7 @@ msgstr "Tipo de Sequências" #: code:addons/base/res/res_bank.py:195 #, python-format msgid "Formating Error" -msgstr "" +msgstr "Erro de Formatação" #. module: base #: model:res.country,name:base.ye @@ -11068,7 +11119,7 @@ msgstr "" #: code:addons/base/ir/ir_model.py:1023 #, python-format msgid "Permission Denied" -msgstr "" +msgstr "Permissão negada" #. module: base #: field:ir.ui.menu,child_id:0 @@ -11139,7 +11190,7 @@ msgstr "E-mail" #. module: base #: model:res.partner.category,name:base.res_partner_category_12 msgid "Office Supplies" -msgstr "" +msgstr "Materiais de escritório" #. module: base #: code:addons/custom.py:550 @@ -11227,7 +11278,7 @@ msgstr "Equador" #. module: base #: view:ir.rule:0 msgid "Read Access Right" -msgstr "" +msgstr "Direitos de leitura" #. module: base #: model:ir.module.module,shortdesc:base.module_analytic_user_function @@ -11287,18 +11338,18 @@ msgstr "Arabic / الْعَرَبيّة" #. module: base #: selection:ir.translation,state:0 msgid "Translated" -msgstr "" +msgstr "Traduzido" #. module: base #: model:ir.actions.act_window,name:base.action_inventory_form #: model:ir.ui.menu,name:base.menu_action_inventory_form msgid "Default Company per Object" -msgstr "" +msgstr "Empresa Padrão por Objeto" #. module: base #: field:ir.ui.menu,needaction_counter:0 msgid "Number of actions the user has to perform" -msgstr "" +msgstr "Número de ações que o usuário tem para realizar" #. module: base #: model:ir.module.module,shortdesc:base.module_web_hello @@ -11328,7 +11379,7 @@ msgstr "Domínio" #: code:addons/base/ir/ir_fields.py:167 #, python-format msgid "Use '1' for yes and '0' for no" -msgstr "" +msgstr "Use '1' para sim e '0' para não" #. module: base #: model:ir.module.module,shortdesc:base.module_marketing_campaign @@ -11349,7 +11400,7 @@ msgstr "" #: code:addons/base/ir/ir_fields.py:314 #, python-format msgid "Invalid database id '%s' for the field '%%(field)s'" -msgstr "" +msgstr "Base de dados invalida(%s) para o campo '%%(field)s'" #. module: base #: view:res.lang:0 @@ -11408,7 +11459,7 @@ msgstr "" #. module: base #: view:ir.filters:0 msgid "Shared" -msgstr "" +msgstr "Compartilhado" #. module: base #: code:addons/base/module/module.py:336 @@ -11486,6 +11537,9 @@ msgid "" "Allow users to sign up through OAuth2 Provider.\n" "===============================================\n" msgstr "" +"\n" +"Permite que os usuários se inscrevam através de um serviço OAuth2.\n" +"============================================================\n" #. module: base #: view:ir.cron:0 @@ -11507,12 +11561,12 @@ msgstr "Porto Rico" #. module: base #: model:ir.module.module,shortdesc:base.module_web_tests_demo msgid "Demonstration of web/javascript tests" -msgstr "" +msgstr "Demonstração de testes web/jsvascript" #. module: base #: field:workflow.transition,signal:0 msgid "Signal (Button Name)" -msgstr "" +msgstr "Sinal(Nome do botão)" #. module: base #: view:ir.actions.act_window:0 @@ -11542,7 +11596,7 @@ msgstr "Granada" #. module: base #: help:res.partner,customer:0 msgid "Check this box if this contact is a customer." -msgstr "" +msgstr "Marque se o contato é um cliente." #. module: base #: view:ir.actions.server:0 @@ -11570,7 +11624,7 @@ msgstr "" #. module: base #: field:res.users,partner_id:0 msgid "Related Partner" -msgstr "" +msgstr "Parceiro Relacionado" #. module: base #: code:addons/osv.py:151 @@ -11598,13 +11652,13 @@ msgstr "Operações de Produção" #. module: base #: view:base.language.export:0 msgid "Here is the exported translation file:" -msgstr "" +msgstr "Aqui está o arquivo de tradução exportado:" #. module: base #: field:ir.actions.report.xml,report_rml_content:0 #: field:ir.actions.report.xml,report_rml_content_data:0 msgid "RML Content" -msgstr "" +msgstr "Conteúdo RML" #. module: base #: view:res.lang:0 @@ -11762,6 +11816,13 @@ msgid "" "\n" "The decimal precision is configured per company.\n" msgstr "" +"\n" +"Configurar a precisão dos valores para diferentes tipos de uso: " +"contabilidade, vendas, compras.\n" +"=============================================================================" +"=========\n" +"\n" +"A precisão decimal é configurada por empresa.\n" #. module: base #: selection:res.company,paper_format:0 @@ -11771,7 +11832,7 @@ msgstr "A4" #. module: base #: view:res.config.installer:0 msgid "Configuration Installer" -msgstr "" +msgstr "Instalador de configuração" #. module: base #: field:res.partner,customer:0 @@ -11858,17 +11919,20 @@ msgid "" "(if you delete a native ACL, it will be re-created when you reload the " "module." msgstr "" +"Se você desmarcar o campo ativo, ele irá desativar a ACL sem excluí-lo.(Se " +"você excluir uma ACL nativa, ela será recriada quando você recarregar o " +"módulo)." #. module: base #: model:ir.model,name:base.model_ir_fields_converter msgid "ir.fields.converter" -msgstr "" +msgstr "ir.fields.converter" #. module: base #: code:addons/base/res/res_partner.py:436 #, python-format msgid "Couldn't create contact without email address !" -msgstr "" +msgstr "Não posso criar contatos sem endereço de email!" #. module: base #: model:ir.module.category,name:base.module_category_manufacturing @@ -11890,12 +11954,12 @@ msgstr "Cancelar Instalação" #. module: base #: model:ir.model,name:base.model_ir_model_relation msgid "ir.model.relation" -msgstr "" +msgstr "ir.model.relation" #. module: base #: model:ir.module.module,shortdesc:base.module_account_check_writing msgid "Check Writing" -msgstr "" +msgstr "Verifique a redação" #. module: base #: model:ir.module.module,description:base.module_plugin_outlook @@ -12120,7 +12184,7 @@ msgstr "UK - Contabilidade" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam msgid "Mrs." -msgstr "" +msgstr "Sra." #. module: base #: code:addons/base/ir/ir_model.py:424 @@ -12141,7 +12205,7 @@ msgstr "Ref. Usuário" #: code:addons/base/ir/ir_fields.py:227 #, python-format msgid "'%s' does not seem to be a valid datetime for field '%%(field)s'" -msgstr "" +msgstr "'%s' não parece ser um campo datetime válido '%%(field)s'" #. module: base #: model:res.partner.bank.type.field,name:base.bank_normal_field_bic @@ -12156,7 +12220,7 @@ msgstr "Expressão de repetição" #. module: base #: model:res.partner.category,name:base.res_partner_category_16 msgid "Retailer" -msgstr "" +msgstr "Varejista" #. module: base #: view:ir.model.fields:0 @@ -12207,6 +12271,8 @@ msgstr "" msgid "" "Please make sure no workitems refer to an activity before deleting it!" msgstr "" +"Certifique-se de que não há itens de trabalho para a atividade antes de " +"excluí-la!" #. module: base #: model:res.country,name:base.tr @@ -12295,7 +12361,7 @@ msgstr "Informações da Conexão" #. module: base #: model:res.partner.title,name:base.res_partner_title_prof msgid "Professor" -msgstr "" +msgstr "Professor" #. module: base #: model:res.country,name:base.hm @@ -12324,7 +12390,7 @@ msgstr "Ajuda você a lidar com suas cotações, pedidos e faturamento." #. module: base #: field:res.users,login_date:0 msgid "Latest connection" -msgstr "" +msgstr "Última conecção" #. module: base #: field:res.groups,implied_ids:0 @@ -12407,7 +12473,7 @@ msgstr "Binário" #. module: base #: model:res.partner.title,name:base.res_partner_title_doctor msgid "Doctor" -msgstr "" +msgstr "Doutor" #. module: base #: model:ir.module.module,description:base.module_mrp_repair @@ -12464,7 +12530,7 @@ msgstr "Outros Parceiros" #: view:workflow.workitem:0 #: field:workflow.workitem,state:0 msgid "Status" -msgstr "" +msgstr "Estado" #. module: base #: model:ir.actions.act_window,name:base.action_currency_form @@ -12476,7 +12542,7 @@ msgstr "Moedas" #. module: base #: model:res.partner.category,name:base.res_partner_category_8 msgid "Consultancy Services" -msgstr "" +msgstr "Serviços de consultoria" #. module: base #: help:ir.values,value:0 @@ -12496,7 +12562,7 @@ msgstr "O nome do grupo deve ser único!" #. module: base #: help:ir.translation,module:0 msgid "Module this term belongs to" -msgstr "" +msgstr "Este termo pertence ao módulo" #. module: base #: model:ir.module.module,description:base.module_web_view_editor @@ -12591,7 +12657,7 @@ msgstr "Aquisições" #. module: base #: model:res.partner.category,name:base.res_partner_category_6 msgid "Bronze" -msgstr "" +msgstr "Bronze" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_payroll_account @@ -12621,12 +12687,12 @@ msgstr "Mês de Criação" #. module: base #: field:ir.module.module,demo:0 msgid "Demo Data" -msgstr "" +msgstr "Dados de Demonstração" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_mister msgid "Mr." -msgstr "" +msgstr "Sr." #. module: base #: model:res.country,name:base.mv @@ -12636,7 +12702,7 @@ msgstr "Ilhas Maldivas" #. module: base #: model:ir.module.module,shortdesc:base.module_portal_crm msgid "Portal CRM" -msgstr "" +msgstr "Portal CRM" #. module: base #: model:ir.ui.menu,name:base.next_id_4 @@ -12781,7 +12847,7 @@ msgstr "" #. module: base #: field:ir.actions.report.xml,report_sxw:0 msgid "SXW Path" -msgstr "" +msgstr "Endereço do SXW" #. module: base #: model:ir.module.module,description:base.module_account_asset @@ -12814,7 +12880,7 @@ msgstr "Banco" #: 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 "Ponto de Venda" #. module: base #: model:ir.module.module,description:base.module_mail @@ -13011,7 +13077,7 @@ msgstr "Filtrar em meus documentos" #. module: base #: model:ir.module.module,summary:base.module_project_gtd msgid "Personal Tasks, Contexts, Timeboxes" -msgstr "" +msgstr "Tarefas pessoais, Contextos, Planilhas" #. module: base #: model:ir.module.module,description:base.module_l10n_cr @@ -13059,7 +13125,7 @@ msgstr "Gabão" #. module: base #: model:ir.module.module,summary:base.module_stock msgid "Inventory, Logistic, Storage" -msgstr "" +msgstr "Inventário, Logística, Armazenamento" #. module: base #: view:ir.actions.act_window:0 @@ -13123,7 +13189,7 @@ msgstr "Chipre" #. module: base #: field:res.users,new_password:0 msgid "Set Password" -msgstr "" +msgstr "Definir Senha" #. module: base #: field:ir.actions.server,subject:0 @@ -13171,7 +13237,7 @@ msgstr "Preferências" #. module: base #: model:res.partner.category,name:base.res_partner_category_9 msgid "Components Buyer" -msgstr "" +msgstr "Comprador de componentes" #. module: base #: view:ir.module.module:0 @@ -13179,6 +13245,8 @@ msgid "" "Do you confirm the uninstallation of this module? This will permanently " "erase all data currently stored by the module!" msgstr "" +"Confirma a desinstalação deste módulo? Isto apagará de forma permanente " +"todos os dados armazenados para este módulo!" #. module: base #: help:ir.cron,function:0 @@ -13245,7 +13313,7 @@ msgstr "Servidores de email de saída" #. module: base #: model:ir.ui.menu,name:base.menu_custom msgid "Technical" -msgstr "" +msgstr "Técnico" #. module: base #: model:res.country,name:base.cn @@ -13493,7 +13561,7 @@ msgstr "Ação a ser Executada" #: field:ir.model,modules:0 #: field:ir.model.fields,modules:0 msgid "In Modules" -msgstr "" +msgstr "Nos Módulos" #. module: base #: model:ir.module.module,shortdesc:base.module_contacts @@ -13592,7 +13660,7 @@ msgstr "Zaire" #. module: base #: model:ir.module.module,summary:base.module_project msgid "Projects, Tasks" -msgstr "" +msgstr "Projetos, Tarefas" #. module: base #: field:workflow.instance,res_id:0 @@ -13610,7 +13678,7 @@ msgstr "Informação" #: code:addons/base/ir/ir_fields.py:147 #, python-format msgid "false" -msgstr "" +msgstr "falso" #. module: base #: model:ir.module.module,description:base.module_account_analytic_analysis @@ -13676,6 +13744,8 @@ msgid "" "The user this filter is private to. When left empty the filter is public and " "available to all users." msgstr "" +"O usuário de que este filtro é exclusivo, Quando em branco o filtro é " +"público e disponível para todos os usuários." #. module: base #: field:ir.actions.act_window,auto_refresh:0 @@ -13705,6 +13775,8 @@ msgid "" "Automatically set to let administators find new terms that might need to be " "translated" msgstr "" +"Automaticamente definida para permitir que administradores encontrem novos " +"termos que talvez precisem ser traduzidos" #. module: base #: code:addons/base/ir/ir_model.py:84 @@ -13835,6 +13907,8 @@ msgid "" "the user will have access to all records of everyone in the sales " "application." msgstr "" +"o usuário terá acesso a todos os registros de todos os usuários no módulo de " +"vendas." #. module: base #: model:ir.module.module,shortdesc:base.module_event @@ -13889,6 +13963,8 @@ msgid "" " the rightmost column (value) contains the " "translations" msgstr "" +"Formato CSV: você pode editá-lo diretamente com o seu software de planilha " +"favorito," #. module: base #: model:ir.module.module,description:base.module_account_chart @@ -13998,6 +14074,8 @@ msgid "" "Check this to define the report footer manually. Otherwise it will be " "filled in automatically." msgstr "" +"Marque esta opção para definir o rodapé do relatório manualmente. Caso " +"contrário, será preenchido automaticamente." #. module: base #: view:res.partner:0 @@ -14012,7 +14090,7 @@ msgstr "Instalar Módulos" #. module: base #: model:ir.ui.menu,name:base.menu_import_crm msgid "Import & Synchronize" -msgstr "" +msgstr "Importar & Sincronizar" #. module: base #: view:res.partner:0 @@ -14043,7 +14121,7 @@ msgstr "Origem" #: field:ir.model.constraint,date_init:0 #: field:ir.model.relation,date_init:0 msgid "Initialization Date" -msgstr "" +msgstr "Data de Inicialização" #. module: base #: model:res.country,name:base.vu @@ -14157,7 +14235,7 @@ msgstr "" #: code:addons/base/ir/ir_fields.py:147 #, python-format msgid "no" -msgstr "" +msgstr "não" #. module: base #: field:ir.actions.server,trigger_obj_id:0 @@ -14187,7 +14265,7 @@ msgstr "Configuração do Sistema pronta" #: view:ir.config_parameter:0 #: model:ir.ui.menu,name:base.ir_config_menu msgid "System Parameters" -msgstr "" +msgstr "Parâmetros do Sistema" #. module: base #: model:ir.module.module,description:base.module_l10n_ch @@ -14256,7 +14334,7 @@ msgstr "Ação em Multiplos Docs." #: model:ir.actions.act_window,name:base.action_partner_title_partner #: model:ir.ui.menu,name:base.menu_partner_title_partner msgid "Titles" -msgstr "" +msgstr "Títulos" #. module: base #: model:ir.module.module,description:base.module_anonymization @@ -14320,7 +14398,7 @@ msgstr "Luxemburgo" #. module: base #: model:ir.module.module,summary:base.module_base_calendar msgid "Personal & Shared Calendar" -msgstr "" +msgstr "Calendários Pessoais & Compartilhados" #. module: base #: selection:res.request,priority:0 @@ -14397,7 +14475,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_base_gengo msgid "Automated Translations through Gengo API" -msgstr "" +msgstr "Traduções automáticas através Gengo API" #. module: base #: model:ir.module.module,shortdesc:base.module_account_payment @@ -14432,7 +14510,7 @@ msgstr "Tailândia" #. module: base #: model:ir.module.module,summary:base.module_account_voucher msgid "Send Invoices and Track Payments" -msgstr "" +msgstr "Enviar Faturas e Rastrear Pagamentos" #. module: base #: model:ir.ui.menu,name:base.menu_crm_config_lead @@ -14557,12 +14635,12 @@ msgstr "Taxa de Câmbio" #: view:base.module.upgrade:0 #: field:base.module.upgrade,module_info:0 msgid "Modules to Update" -msgstr "" +msgstr "Módulos a serem Atualizados" #. module: base #: model:ir.ui.menu,name:base.menu_custom_multicompany msgid "Multi-Companies" -msgstr "" +msgstr "Multi-Empresas" #. module: base #: field:workflow,osv:0 @@ -14677,7 +14755,7 @@ msgstr "Uso de ação" #. module: base #: field:ir.module.module,name:0 msgid "Technical Name" -msgstr "" +msgstr "Nome Técnico" #. module: base #: model:ir.model,name:base.model_workflow_workitem @@ -14726,7 +14804,7 @@ msgstr "Contabilidade - Alemã" #. module: base #: view:ir.sequence:0 msgid "Day of the Year: %(doy)s" -msgstr "" +msgstr "Dia do Ano: %(doy)s" #. module: base #: field:ir.ui.menu,web_icon:0 @@ -14749,6 +14827,8 @@ msgid "" "If this field is empty, the view applies to all users. Otherwise, the view " "applies to the users of those groups only." msgstr "" +"Se este campo estiver vazio, a view se aplica a todos os usuários. Caso " +"contrário, a view se aplica aos usuários desses grupos apenas." #. module: base #: selection:base.language.install,lang:0 @@ -14786,7 +14866,7 @@ msgstr "" #. module: base #: view:base.language.export:0 msgid "Export Settings" -msgstr "" +msgstr "Configurações da Exportação" #. module: base #: field:ir.actions.act_window,src_model:0 @@ -14796,7 +14876,7 @@ msgstr "" #. module: base #: view:ir.sequence:0 msgid "Day of the Week (0:Monday): %(weekday)s" -msgstr "" +msgstr "Dia da Semana (0:Segunda): %(weekday)s" #. module: base #: code:addons/base/module/wizard/base_module_upgrade.py:84 @@ -14810,7 +14890,7 @@ msgstr "Dependência não atendida!" #: code:addons/base/ir/ir_model.py:1023 #, python-format msgid "Administrator access is required to uninstall a module" -msgstr "" +msgstr "Somente Administradores podem desinstalar um módulo" #. module: base #: model:ir.model,name:base.model_base_module_configuration @@ -14826,6 +14906,10 @@ msgid "" "\n" "(Document type: %s, Operation: %s)" msgstr "" +"A operação solicitada não pode ser concluída devido a restrições de " +"segurança. Por favor, informe ao administrador do sistema.\n" +"\n" +"(Tipo de documento: %s, Operação: %s)" #. module: base #: model:ir.module.module,description:base.module_idea @@ -14996,7 +15080,7 @@ msgstr "Serviços Pós-Venda" #. module: base #: field:base.language.import,code:0 msgid "ISO Code" -msgstr "" +msgstr "Código ISO" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_fr @@ -15011,7 +15095,7 @@ msgstr "Executar" #. module: base #: selection:res.partner,type:0 msgid "Shipping" -msgstr "" +msgstr "Expedição" #. module: base #: model:ir.module.module,description:base.module_project_mrp @@ -15213,7 +15297,7 @@ msgstr "Janela Atual" #: model:ir.module.category,name:base.module_category_hidden #: view:res.users:0 msgid "Technical Settings" -msgstr "" +msgstr "Configurações Técnicas" #. module: base #: model:ir.module.category,description:base.module_category_accounting_and_finance @@ -15232,7 +15316,7 @@ msgstr "Plug-in Thunderbird" #. module: base #: model:ir.module.module,summary:base.module_event msgid "Trainings, Conferences, Meetings, Exhibitions, Registrations" -msgstr "" +msgstr "Treinamentos, Conferências, Reuniões, Exposições, Inscrições" #. module: base #: model:ir.model,name:base.model_res_country @@ -15250,7 +15334,7 @@ msgstr "País" #. module: base #: model:res.partner.category,name:base.res_partner_category_15 msgid "Wholesaler" -msgstr "" +msgstr "Atacadista" #. module: base #: model:ir.module.module,shortdesc:base.module_base_vat @@ -15315,7 +15399,7 @@ msgstr "Espanhol (SV) / Español (SV)" #. module: base #: model:ir.actions.act_window,name:base.open_module_tree msgid "Install a Module" -msgstr "" +msgstr "Instalar um Módulo" #. module: base #: field:ir.module.module,auto_install:0 @@ -15557,7 +15641,7 @@ msgstr "Seicheles" #. module: base #: model:res.partner.category,name:base.res_partner_category_4 msgid "Gold" -msgstr "" +msgstr "Ouro" #. module: base #: code:addons/base/res/res_company.py:159 @@ -15584,7 +15668,7 @@ msgstr "Informações Gerais" #. module: base #: field:ir.model.data,complete_name:0 msgid "Complete ID" -msgstr "" +msgstr "ID completo" #. module: base #: model:res.country,name:base.tc @@ -15685,7 +15769,7 @@ msgstr "" #. module: base #: view:res.partner:0 msgid "Internal Notes" -msgstr "" +msgstr "Notas Internas" #. module: base #: selection:res.partner.address,type:0 @@ -15706,7 +15790,7 @@ msgstr "Requisição de Compra" #. module: base #: selection:ir.actions.act_window,target:0 msgid "Inline Edit" -msgstr "" +msgstr "Edição em linha" #. module: base #: selection:ir.cron,interval_type:0 @@ -15727,7 +15811,7 @@ msgstr "Parceiros " #. module: base #: view:res.partner:0 msgid "Is a Company?" -msgstr "" +msgstr "É uma empresa?" #. module: base #: code:addons/base/res/res_company.py:159 @@ -15749,7 +15833,7 @@ msgstr "Criar Objeto" #. module: base #: model:res.country,name:base.ss msgid "South Sudan" -msgstr "" +msgstr "Sudão do Sul" #. module: base #: field:ir.filters,context:0 @@ -15835,7 +15919,7 @@ msgstr "Russo / русский язык" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_signup msgid "Signup" -msgstr "" +msgstr "Inscrever-se" #~ msgid "SMS - Gateway: clickatell" #~ msgstr "SMS - Gateway: clickatell" diff --git a/openerp/addons/base/i18n/ru.po b/openerp/addons/base/i18n/ru.po index a1e1ce55102..fe6bcfdc94d 100644 --- a/openerp/addons/base/i18n/ru.po +++ b/openerp/addons/base/i18n/ru.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-12-01 11:25+0000\n" -"Last-Translator: Chertykov Denis \n" +"PO-Revision-Date: 2012-12-05 09:43+0000\n" +"Last-Translator: Denis Karataev \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: 2012-12-04 04:59+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-06 04:38+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -1638,7 +1638,7 @@ msgstr "Настройка нижнего колонтитула отчета" #. module: base #: field:ir.translation,comments:0 msgid "Translation comments" -msgstr "" +msgstr "Комментарии перевода" #. module: base #: model:ir.module.module,description:base.module_lunch @@ -5663,6 +5663,9 @@ msgid "" "

You should try others search criteria.

\n" " " msgstr "" +"

Модули не найдены!

\n" +"

Попробуйте поискать по другим критериям.

\n" +" " #. module: base #: model:ir.model,name:base.model_ir_module_module @@ -7490,6 +7493,11 @@ msgid "" "use the same timezone that is otherwise used to pick and render date and " "time values: your computer's timezone." msgstr "" +"Часовой пояс партнера, используемый для вывода правильной даты и времени " +"внутри распечатываемых отчетов. Важно установить значение этого поля. Вы " +"должны использовать тот же часовой пояс который есть, в противном случае " +"значения даты и времени будут вычисляться на основе часового пояса " +"установленного на компьютере." #. module: base #: model:ir.module.module,shortdesc:base.module_account_analytic_default @@ -8407,6 +8415,8 @@ msgid "" "Translation features are unavailable until you install an extra OpenERP " "translation." msgstr "" +"Возможности перевода не доступны до тех пор, пока вы не установите " +"расширенный OpenERP перевод." #. module: base #: model:ir.module.module,description:base.module_l10n_nl diff --git a/openerp/addons/base/i18n/zh_CN.po b/openerp/addons/base/i18n/zh_CN.po index 7ba1562676b..b9890196ea5 100644 --- a/openerp/addons/base/i18n/zh_CN.po +++ b/openerp/addons/base/i18n/zh_CN.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 5.0.4\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-12-04 02:43+0000\n" +"PO-Revision-Date: 2012-12-06 18:17+0000\n" "Last-Translator: ccdos \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: 2012-12-04 05:03+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-07 04:34+0000\n" +"X-Generator: Launchpad (build 16341)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -88,7 +88,7 @@ msgstr "帮助您管理项目、跟踪任务、生成计划等" #. module: base #: model:ir.module.module,summary:base.module_point_of_sale msgid "Touchscreen Interface for Shops" -msgstr "商店的触摸屏接口" +msgstr "触摸屏接口的POS 系统" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll @@ -896,6 +896,14 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" 点击此处在你的地址本中增加一个新的联系人。\n" +"

\n" +" Openerp可以帮助你轻松的跟踪所有与客户相关的活动:\n" +" 例如讨论,商业机会的历史记录,\n" +" 文档,等等。\n" +"

\n" +" " #. module: base #: model:ir.module.module,description:base.module_web_linkedin @@ -2645,6 +2653,18 @@ msgid "" " * Date\n" " " msgstr "" +"\n" +"为你的分析帐目设定缺省值。\n" +"==============================================\n" +"\n" +"基于以下规则时,允许自动选择分析帐目:\n" +"---------------------------------------------------------------------\n" +" * 产品\n" +" * 合作伙伴\n" +" * 用户\n" +" * 公司\n" +" * 日期\n" +" " #. module: base #: field:res.company,rml_header1:0 @@ -4230,7 +4250,7 @@ msgstr "共享任意文档" #. module: base #: model:ir.module.module,summary:base.module_crm msgid "Leads, Opportunities, Phone Calls" -msgstr "线索,上级,电话" +msgstr "线索,商机,电话" #. module: base #: view:res.lang:0 @@ -7666,6 +7686,10 @@ msgid "" "==========================================\n" " " msgstr "" +"\n" +"CRM 线索和商机的待办事项\n" +"==========================================\n" +" " #. module: base #: view:ir.mail_server:0 @@ -9849,7 +9873,7 @@ msgstr "将要安装的模块" #: model:ir.module.module,shortdesc:base.module_base #: field:res.currency,base:0 msgid "Base" -msgstr "本位币" +msgstr "base 模块" #. module: base #: field:ir.model.data,model:0 diff --git a/openerp/addons/base/ir/ir_actions.py b/openerp/addons/base/ir/ir_actions.py index aacd6aa29c2..633977452a5 100644 --- a/openerp/addons/base/ir/ir_actions.py +++ b/openerp/addons/base/ir/ir_actions.py @@ -42,7 +42,7 @@ class actions(osv.osv): _order = 'name' _columns = { 'name': fields.char('Name', size=64, required=True), - 'type': fields.char('Action Type', required=True, size=32,readonly=True), + 'type': fields.char('Action Type', required=True, size=32), 'usage': fields.char('Action Usage', size=32), 'help': fields.text('Action description', help='Optional help text for the users with a description of the target view, such as its usage and purpose.', diff --git a/openerp/addons/base/ir/ir_actions.xml b/openerp/addons/base/ir/ir_actions.xml index 2736f3ea252..da118129932 100644 --- a/openerp/addons/base/ir/ir_actions.xml +++ b/openerp/addons/base/ir/ir_actions.xml @@ -502,6 +502,19 @@ + + Run Remaining Action Todo + True + ir.actions.server + + code + +config = self.next(cr, uid, [], context=context) or {} +if config.get('type') not in ('ir.actions.act_window_close',): + action = config + + + diff --git a/openerp/addons/base/ir/ir_cron.py b/openerp/addons/base/ir/ir_cron.py index 243f4c772ea..e2d791281d7 100644 --- a/openerp/addons/base/ir/ir_cron.py +++ b/openerp/addons/base/ir/ir_cron.py @@ -31,7 +31,6 @@ import netsvc import openerp import pooler import tools -from openerp.cron import WAKE_UP_NOW from osv import fields, osv from tools import DEFAULT_SERVER_DATETIME_FORMAT from tools.safe_eval import safe_eval as eval @@ -142,130 +141,6 @@ class ir_cron(osv.osv): except Exception, e: self._handle_callback_exception(cr, uid, model_name, method_name, args, job_id, e) - def _run_job(self, cr, job, now): - """ Run a given job taking care of the repetition. - - The cursor has a lock on the job (aquired by _run_jobs_multithread()) and this - method is run in a worker thread (spawned by _run_jobs_multithread())). - - :param job: job to be run (as a dictionary). - :param now: timestamp (result of datetime.now(), no need to call it multiple time). - - """ - try: - nextcall = datetime.strptime(job['nextcall'], DEFAULT_SERVER_DATETIME_FORMAT) - numbercall = job['numbercall'] - - ok = False - while nextcall < now and numbercall: - if numbercall > 0: - numbercall -= 1 - if not ok or job['doall']: - self._callback(cr, job['user_id'], job['model'], job['function'], job['args'], job['id']) - if numbercall: - nextcall += _intervalTypes[job['interval_type']](job['interval_number']) - ok = True - addsql = '' - if not numbercall: - addsql = ', active=False' - cr.execute("UPDATE ir_cron SET nextcall=%s, numbercall=%s"+addsql+" WHERE id=%s", - (nextcall.strftime(DEFAULT_SERVER_DATETIME_FORMAT), numbercall, job['id'])) - - if numbercall: - # Reschedule our own main cron thread if necessary. - # This is really needed if this job runs longer than its rescheduling period. - nextcall = calendar.timegm(nextcall.timetuple()) - openerp.cron.schedule_wakeup(nextcall, cr.dbname) - finally: - cr.commit() - cr.close() - openerp.cron.release_thread_slot() - - def _run_jobs_multithread(self): - # TODO remove 'check' argument from addons/base_action_rule/base_action_rule.py - """ Process the cron jobs by spawning worker threads. - - This selects in database all the jobs that should be processed. It then - tries to lock each of them and, if it succeeds, spawns a thread to run - the cron job (if it doesn't succeed, it means the job was already - locked to be taken care of by another thread). - - The cursor used to lock the job in database is given to the worker - thread (which has to close it itself). - - """ - db = self.pool.db - cr = db.cursor() - db_name = db.dbname - try: - jobs = {} # mapping job ids to jobs for all jobs being processed. - now = datetime.now() - # Careful to compare timestamps with 'UTC' - everything is UTC as of v6.1. - cr.execute("""SELECT * FROM ir_cron - WHERE numbercall != 0 - AND active AND nextcall <= (now() at time zone 'UTC') - ORDER BY priority""") - for job in cr.dictfetchall(): - if not openerp.cron.get_thread_slots(): - break - jobs[job['id']] = job - - task_cr = db.cursor() - try: - # Try to grab an exclusive lock on the job row from within the task transaction - acquired_lock = False - task_cr.execute("""SELECT * - FROM ir_cron - WHERE id=%s - FOR UPDATE NOWAIT""", - (job['id'],), log_exceptions=False) - acquired_lock = True - except psycopg2.OperationalError, e: - if e.pgcode == '55P03': - # Class 55: Object not in prerequisite state; 55P03: lock_not_available - _logger.debug('Another process/thread is already busy executing job `%s`, skipping it.', job['name']) - continue - else: - # Unexpected OperationalError - raise - finally: - if not acquired_lock: - # we're exiting due to an exception while acquiring the lot - task_cr.close() - - # Got the lock on the job row, now spawn a thread to execute it in the transaction with the lock - task_thread = threading.Thread(target=self._run_job, name=job['name'], args=(task_cr, job, now)) - # force non-daemon task threads (the runner thread must be daemon, and this property is inherited by default) - task_thread.setDaemon(False) - openerp.cron.take_thread_slot() - task_thread.start() - _logger.debug('Cron execution thread for job `%s` spawned', job['name']) - - # Find next earliest job ignoring currently processed jobs (by this and other cron threads) - find_next_time_query = """SELECT min(nextcall) AS min_next_call - FROM ir_cron WHERE numbercall != 0 AND active""" - if jobs: - cr.execute(find_next_time_query + " AND id NOT IN %s", (tuple(jobs.keys()),)) - else: - cr.execute(find_next_time_query) - next_call = cr.dictfetchone()['min_next_call'] - - if next_call: - next_call = calendar.timegm(time.strptime(next_call, DEFAULT_SERVER_DATETIME_FORMAT)) - else: - # no matching cron job found in database, re-schedule arbitrarily in 1 day, - # this delay will likely be modified when running jobs complete their tasks - next_call = time.time() + (24*3600) - - openerp.cron.schedule_wakeup(next_call, db_name) - - except Exception, ex: - _logger.warning('Exception in cron:', exc_info=True) - - finally: - cr.commit() - cr.close() - def _process_job(self, cr, job): """ Run a given job taking care of the repetition. @@ -365,19 +240,6 @@ class ir_cron(osv.osv): return False - def update_running_cron(self, cr): - """ Schedule as soon as possible a wake-up for this database. """ - # Verify whether the server is already started and thus whether we need to commit - # immediately our changes and restart the cron agent in order to apply the change - # immediately. The commit() is needed because as soon as the cron is (re)started it - # will query the database with its own cursor, possibly before the end of the - # current transaction. - # This commit() is not an issue in most cases, but we must absolutely avoid it - # when the server is only starting or loading modules (hence the test on pool._init). - if not self.pool._init: - cr.commit() - openerp.cron.schedule_wakeup(WAKE_UP_NOW, self.pool.db.dbname) - def _try_lock(self, cr, uid, ids, context=None): """Try to grab a dummy exclusive write-lock to the rows with the given ids, to make sure a following write() or unlink() will not block due @@ -393,20 +255,16 @@ class ir_cron(osv.osv): def create(self, cr, uid, vals, context=None): res = super(ir_cron, self).create(cr, uid, vals, context=context) - self.update_running_cron(cr) return res def write(self, cr, uid, ids, vals, context=None): self._try_lock(cr, uid, ids, context) res = super(ir_cron, self).write(cr, uid, ids, vals, context=context) - self.update_running_cron(cr) return res def unlink(self, cr, uid, ids, context=None): self._try_lock(cr, uid, ids, context) res = super(ir_cron, self).unlink(cr, uid, ids, context=context) - self.update_running_cron(cr) return res -ir_cron() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/addons/base/ir/ir_model.py b/openerp/addons/base/ir/ir_model.py index bca8cbf4813..fcf1ee92ebd 100644 --- a/openerp/addons/base/ir/ir_model.py +++ b/openerp/addons/base/ir/ir_model.py @@ -209,6 +209,7 @@ class ir_model(osv.osv): else: x_name = a._columns.keys()[0] x_custom_model._rec_name = x_name + a._rec_name = x_name class ir_model_fields(osv.osv): _name = 'ir.model.fields' diff --git a/openerp/addons/base/ir/ir_model_view.xml b/openerp/addons/base/ir/ir_model_view.xml index 01ff918662f..1b5d0cc3caf 100644 --- a/openerp/addons/base/ir/ir_model_view.xml +++ b/openerp/addons/base/ir/ir_model_view.xml @@ -44,7 +44,7 @@ - + diff --git a/openerp/addons/base/ir/ir_ui_menu.py b/openerp/addons/base/ir/ir_ui_menu.py index a8475d33552..94b5c8ab7b6 100644 --- a/openerp/addons/base/ir/ir_ui_menu.py +++ b/openerp/addons/base/ir/ir_ui_menu.py @@ -43,7 +43,7 @@ class ir_ui_menu(osv.osv): def __init__(self, *args, **kwargs): self.cache_lock = threading.RLock() - self.clear_cache() + self._cache = {} r = super(ir_ui_menu, self).__init__(*args, **kwargs) self.pool.get('ir.model.access').register_cache_clearing_method(self._name, 'clear_cache') return r @@ -51,6 +51,10 @@ class ir_ui_menu(osv.osv): def clear_cache(self): with self.cache_lock: # radical but this doesn't frequently happen + if self._cache: + # Normally this is done by openerp.tools.ormcache + # but since we do not use it, set it by ourself. + self.pool._any_cache_cleared = True self._cache = {} def _filter_visible_menus(self, cr, uid, ids, context=None): diff --git a/openerp/addons/base/module/module.py b/openerp/addons/base/module/module.py index dbb8d6a3f40..cbd046a86e3 100644 --- a/openerp/addons/base/module/module.py +++ b/openerp/addons/base/module/module.py @@ -30,6 +30,7 @@ import re import urllib import zipimport +import openerp from openerp import modules, pooler, release, tools, addons from openerp.modules.db import create_categories from openerp.tools.parse_version import parse_version @@ -385,6 +386,8 @@ class module(osv.osv): # Mark them to be installed. if to_install_ids: self.button_install(cr, uid, to_install_ids, context=context) + + openerp.modules.registry.RegistryManager.signal_registry_change(cr.dbname) return dict(ACTION_DICT, name=_('Install')) def button_immediate_install(self, cr, uid, ids, context=None): diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 16f4ee20334..1cbfd818d28 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -258,7 +258,7 @@ - + diff --git a/openerp/addons/base/tests/test_ir_values.py b/openerp/addons/base/tests/test_ir_values.py index b306e1f0929..ad8dee616b7 100644 --- a/openerp/addons/base/tests/test_ir_values.py +++ b/openerp/addons/base/tests/test_ir_values.py @@ -50,20 +50,25 @@ class test_ir_values(common.TransactionCase): # Create some action bindings for a non-existing model. + act_id_1 = self.ref('base.act_values_form_action') + act_id_2 = self.ref('base.act_values_form_defaults') + act_id_3 = self.ref('base.action_res_company_form') + act_id_4 = self.ref('base.action_res_company_tree') + ir_values = self.registry('ir.values') - ir_values.set(self.cr, self.uid, 'action', 'tree_but_open', 'OnDblClick Action', ['unexisting_model'], 'ir.actions.act_window,10', isobject=True) - ir_values.set(self.cr, self.uid, 'action', 'tree_but_open', 'OnDblClick Action 2', ['unexisting_model'], 'ir.actions.act_window,11', isobject=True) - ir_values.set(self.cr, self.uid, 'action', 'client_action_multi', 'Side Wizard', ['unexisting_model'], 'ir.actions.act_window,12', isobject=True) + ir_values.set(self.cr, self.uid, 'action', 'tree_but_open', 'OnDblClick Action', ['unexisting_model'], 'ir.actions.act_window,%d' % act_id_1, isobject=True) + ir_values.set(self.cr, self.uid, 'action', 'tree_but_open', 'OnDblClick Action 2', ['unexisting_model'], 'ir.actions.act_window,%d' % act_id_2, isobject=True) + ir_values.set(self.cr, self.uid, 'action', 'client_action_multi', 'Side Wizard', ['unexisting_model'], 'ir.actions.act_window,%d' % act_id_3, isobject=True) report_ids = self.registry('ir.actions.report.xml').search(self.cr, self.uid, [], {}) reports = self.registry('ir.actions.report.xml').browse(self.cr, self.uid, report_ids, {}) - report_id = [report.id for report in reports if not report.groups_id][0] # assume at least one - ir_values.set(self.cr, self.uid, 'action', 'client_print_multi', 'Nice Report', ['unexisting_model'], 'ir.actions.report.xml,%s'%report_id, isobject=True) - ir_values.set(self.cr, self.uid, 'action', 'client_action_relate', 'Related Stuff', ['unexisting_model'], 'ir.actions.act_window,14', isobject=True) + report_id = [report.id for report in reports if not report.groups_id][0] # assume at least one + ir_values.set(self.cr, self.uid, 'action', 'client_print_multi', 'Nice Report', ['unexisting_model'], 'ir.actions.report.xml,%d' % report_id, isobject=True) + ir_values.set(self.cr, self.uid, 'action', 'client_action_relate', 'Related Stuff', ['unexisting_model'], 'ir.actions.act_window,%d' % act_id_4, isobject=True) # Replace one action binding to set a new name. ir_values = self.registry('ir.values') - ir_values.set(self.cr, self.uid, 'action', 'tree_but_open', 'OnDblClick Action New', ['unexisting_model'], 'ir.actions.act_window,10', isobject=True) + ir_values.set(self.cr, self.uid, 'action', 'tree_but_open', 'OnDblClick Action New', ['unexisting_model'], 'ir.actions.act_window,%d' % act_id_1, isobject=True) # Retrieve the action bindings and check they're correct @@ -73,17 +78,17 @@ class test_ir_values(common.TransactionCase): #first action assert len(actions[0]) == 3, "Malformed action definition" assert actions[0][1] == 'OnDblClick Action 2', 'Bound action does not match definition' - assert isinstance(actions[0][2], dict) and actions[0][2]['id'] == 11, 'Bound action does not match definition' + assert isinstance(actions[0][2], dict) and actions[0][2]['id'] == act_id_2, 'Bound action does not match definition' #second action - this ones comes last because it was re-created with a different name assert len(actions[1]) == 3, "Malformed action definition" assert actions[1][1] == 'OnDblClick Action New', 'Re-Registering an action should replace it' - assert isinstance(actions[1][2], dict) and actions[1][2]['id'] == 10, 'Bound action does not match definition' + assert isinstance(actions[1][2], dict) and actions[1][2]['id'] == act_id_1, 'Bound action does not match definition' actions = ir_values.get(self.cr, self.uid, 'action', 'client_action_multi', ['unexisting_model']) assert len(actions) == 1, "Mismatching number of bound actions" assert len(actions[0]) == 3, "Malformed action definition" assert actions[0][1] == 'Side Wizard', 'Bound action does not match definition' - assert isinstance(actions[0][2], dict) and actions[0][2]['id'] == 12, 'Bound action does not match definition' + assert isinstance(actions[0][2], dict) and actions[0][2]['id'] == act_id_3, 'Bound action does not match definition' actions = ir_values.get(self.cr, self.uid, 'action', 'client_print_multi', ['unexisting_model']) assert len(actions) == 1, "Mismatching number of bound actions" @@ -95,7 +100,7 @@ class test_ir_values(common.TransactionCase): assert len(actions) == 1, "Mismatching number of bound actions" assert len(actions[0]) == 3, "Malformed action definition" assert actions[0][1] == 'Related Stuff', 'Bound action does not match definition' - assert isinstance(actions[0][2], dict) and actions[0][2]['id'] == 14, 'Bound action does not match definition' + assert isinstance(actions[0][2], dict) and actions[0][2]['id'] == act_id_4, 'Bound action does not match definition' if __name__ == '__main__': diff --git a/openerp/cli/__init__.py b/openerp/cli/__init__.py index a48d20e4483..7111112c026 100644 --- a/openerp/cli/__init__.py +++ b/openerp/cli/__init__.py @@ -2,6 +2,8 @@ import logging import sys import openerp +from openerp import tools +from openerp.modules import module _logger = logging.getLogger(__name__) @@ -32,8 +34,25 @@ import server def main(): args = sys.argv[1:] + + # The only shared option is '--addons-path=' needed to discover additional + # commands from modules + if len(args) > 1 and args[0].startswith('--addons-path=') and not args[1].startswith("-"): + tools.config.parse_config([args[0]]) + args = args[1:] + + # Default legacy command command = "server" + + # Subcommand discovery if len(args) and not args[0].startswith("-"): + for m in module.get_modules(): + m = 'openerp.addons.' + m + __import__(m) + #try: + #except Exception, e: + # raise + # print e command = args[0] args = args[1:] diff --git a/openerp/conf/__init__.py b/openerp/conf/__init__.py index c89ddf44734..0a975c5d4e2 100644 --- a/openerp/conf/__init__.py +++ b/openerp/conf/__init__.py @@ -35,10 +35,6 @@ must be used. import deprecation -# Maximum number of threads processing concurrently cron jobs. -max_cron_threads = 4 # Actually the default value here is meaningless, - # look at tools.config for the default value. - # Paths to search for OpenERP addons. addons_paths = [] diff --git a/openerp/cron.py b/openerp/cron.py deleted file mode 100644 index 7b67877f0fe..00000000000 --- a/openerp/cron.py +++ /dev/null @@ -1,212 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2011 OpenERP SA () -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -""" Cron jobs scheduling - -Cron jobs are defined in the ir_cron table/model. This module deals with all -cron jobs, for all databases of a single OpenERP server instance. - -It defines a single master thread that will spawn (a bounded number of) -threads to process individual cron jobs. - -The thread runs forever, checking every 60 seconds for new -'database wake-ups'. It maintains a heapq of database wake-ups. At each -wake-up, it will call ir_cron._run_jobs_multithread() for the given database. _run_jobs_multithread -will check the jobs defined in the ir_cron table and spawn accordingly threads -to process them. - -This module's behavior depends on the following configuration variable: -openerp.conf.max_cron_threads. - -""" - -import heapq -import logging -import threading -import time - -import openerp -import tools - -_logger = logging.getLogger(__name__) - -# Heapq of database wake-ups. Note that 'database wake-up' meaning is in -# the context of the cron management. This is not originally about loading -# a database, although having the database name in the queue will -# cause it to be loaded when the schedule time is reached, even if it was -# unloaded in the mean time. Normally a database's wake-up is cancelled by -# the RegistryManager when the database is unloaded - so this should not -# cause it to be reloaded. -# -# TODO: perhaps in the future we could consider a flag on ir.cron jobs -# that would cause database wake-up even if the database has not been -# loaded yet or was already unloaded (e.g. 'force_db_wakeup' or something) -# -# Each element is a triple (timestamp, database-name, boolean). The boolean -# specifies if the wake-up is canceled (so a wake-up can be canceled without -# relying on the heapq implementation detail; no need to remove the job from -# the heapq). -_wakeups = [] - -# Mapping of database names to the wake-up defined in the heapq, -# so that we can cancel the wake-up without messing with the heapq -# invariant: lookup the wake-up by database-name, then set -# its third element to True. -_wakeup_by_db = {} - -# Re-entrant lock to protect the above _wakeups and _wakeup_by_db variables. -# We could use a simple (non-reentrant) lock if the runner function below -# was more fine-grained, but we are fine with the loop owning the lock -# while spawning a few threads. -_wakeups_lock = threading.RLock() - -# Maximum number of threads allowed to process cron jobs concurrently. This -# variable is set by start_master_thread using openerp.conf.max_cron_threads. -_thread_slots = None - -# A (non re-entrant) lock to protect the above _thread_slots variable. -_thread_slots_lock = threading.Lock() - -# Sleep duration limits - must not loop too quickly, but can't sleep too long -# either, because a new job might be inserted in ir_cron with a much sooner -# execution date than current known ones. We won't see it until we wake! -MAX_SLEEP = 60 # 1 min -MIN_SLEEP = 1 # 1 sec - -# Dummy wake-up timestamp that can be used to force a database wake-up asap -WAKE_UP_NOW = 1 - -def get_thread_slots(): - """ Return the number of available thread slots """ - return _thread_slots - - -def release_thread_slot(): - """ Increment the number of available thread slots """ - global _thread_slots - with _thread_slots_lock: - _thread_slots += 1 - - -def take_thread_slot(): - """ Decrement the number of available thread slots """ - global _thread_slots - with _thread_slots_lock: - _thread_slots -= 1 - - -def cancel(db_name): - """ Cancel the next wake-up of a given database, if any. - - :param db_name: database name for which the wake-up is canceled. - - """ - _logger.debug("Cancel next wake-up for database '%s'.", db_name) - with _wakeups_lock: - if db_name in _wakeup_by_db: - _wakeup_by_db[db_name][2] = True - - -def cancel_all(): - """ Cancel all database wake-ups. """ - _logger.debug("Cancel all database wake-ups") - global _wakeups - global _wakeup_by_db - with _wakeups_lock: - _wakeups = [] - _wakeup_by_db = {} - - -def schedule_wakeup(timestamp, db_name): - """ Schedule a new wake-up for a database. - - If an earlier wake-up is already defined, the new wake-up is discarded. - If another wake-up is defined, that wake-up is discarded and the new one - is scheduled. - - :param db_name: database name for which a new wake-up is scheduled. - :param timestamp: when the wake-up is scheduled. - - """ - if not timestamp: - return - with _wakeups_lock: - if db_name in _wakeup_by_db: - task = _wakeup_by_db[db_name] - if not task[2] and timestamp > task[0]: - # existing wakeup is valid and occurs earlier than new one - return - task[2] = True # cancel existing task - task = [timestamp, db_name, False] - heapq.heappush(_wakeups, task) - _wakeup_by_db[db_name] = task - _logger.debug("Wake-up scheduled for database '%s' @ %s", db_name, - 'NOW' if timestamp == WAKE_UP_NOW else timestamp) - -def runner(): - """Neverending function (intended to be run in a dedicated thread) that - checks every 60 seconds the next database wake-up. TODO: make configurable - """ - while True: - runner_body() - -def runner_body(): - with _wakeups_lock: - while _wakeups and _wakeups[0][0] < time.time() and get_thread_slots(): - task = heapq.heappop(_wakeups) - timestamp, db_name, canceled = task - if canceled: - continue - del _wakeup_by_db[db_name] - registry = openerp.pooler.get_pool(db_name) - if not registry._init: - _logger.debug("Database '%s' wake-up! Firing multi-threaded cron job processing", db_name) - registry['ir.cron']._run_jobs_multithread() - amount = MAX_SLEEP - with _wakeups_lock: - # Sleep less than MAX_SLEEP if the next known wake-up will happen before that. - if _wakeups and get_thread_slots(): - amount = min(MAX_SLEEP, max(MIN_SLEEP, _wakeups[0][0] - time.time())) - _logger.debug("Going to sleep for %ss", amount) - time.sleep(amount) - -def start_master_thread(): - """ Start the above runner function in a daemon thread. - - The thread is a typical daemon thread: it will never quit and must be - terminated when the main process exits - with no consequence (the processing - threads it spawns are not marked daemon). - - """ - global _thread_slots - _thread_slots = openerp.conf.max_cron_threads - db_maxconn = tools.config['db_maxconn'] - if _thread_slots >= tools.config.get('db_maxconn', 64): - _logger.warning("Connection pool size (%s) is set lower than max number of cron threads (%s), " - "this may cause trouble if you reach that number of parallel cron tasks.", - db_maxconn, _thread_slots) - t = threading.Thread(target=runner, name="openerp.cron.master_thread") - t.setDaemon(True) - t.start() - _logger.debug("Master cron daemon started!") - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/modules/module.py b/openerp/modules/module.py index ca654b9a2eb..bb4ff481fb9 100644 --- a/openerp/modules/module.py +++ b/openerp/modules/module.py @@ -433,8 +433,9 @@ def get_modules(): return name def is_really_module(name): - name = opj(dir, name) - return os.path.isdir(name) or zipfile.is_zipfile(name) + manifest_name = opj(dir, name, '__openerp__.py') + zipfile_name = opj(dir, name) + return os.path.isfile(manifest_name) or zipfile.is_zipfile(zipfile_name) return map(clean, filter(is_really_module, os.listdir(dir))) plist = [] diff --git a/openerp/modules/registry.py b/openerp/modules/registry.py index 5aa2eca26ef..d898cc7e8db 100644 --- a/openerp/modules/registry.py +++ b/openerp/modules/registry.py @@ -28,7 +28,6 @@ import threading import openerp.sql_db import openerp.osv.orm -import openerp.cron import openerp.tools import openerp.modules.db import openerp.tools.config @@ -58,6 +57,21 @@ class Registry(object): self.db_name = db_name self.db = openerp.sql_db.db_connect(db_name) + # In monoprocess cron jobs flag (pooljobs) + self.cron = False + + # Inter-process signaling (used only when openerp.multi_process is True): + # The `base_registry_signaling` sequence indicates the whole registry + # must be reloaded. + # The `base_cache_signaling sequence` indicates all caches must be + # invalidated (i.e. cleared). + self.base_registry_signaling_sequence = 1 + self.base_cache_signaling_sequence = 1 + + # Flag indicating if at least one model cache has been cleared. + # Useful only in a multi-process context. + self._any_cache_cleared = False + cr = self.db.cursor() has_unaccent = openerp.modules.db.has_unaccent(cr) if openerp.tools.config['unaccent'] and not has_unaccent: @@ -112,7 +126,7 @@ class Registry(object): monitor the ir.cron model for future jobs. See openerp.cron for details. """ - openerp.cron.schedule_wakeup(openerp.cron.WAKE_UP_NOW, self.db.dbname) + self.cron = True def clear_caches(self): """ Clear the caches @@ -121,6 +135,36 @@ class Registry(object): """ for model in self.models.itervalues(): model.clear_caches() + # Special case for ir_ui_menu which does not use openerp.tools.ormcache. + ir_ui_menu = self.models.get('ir.ui.menu') + if ir_ui_menu: + ir_ui_menu.clear_cache() + + + # Useful only in a multi-process context. + def reset_any_cache_cleared(self): + self._any_cache_cleared = False + + # Useful only in a multi-process context. + def any_cache_cleared(self): + return self._any_cache_cleared + + @classmethod + def setup_multi_process_signaling(cls, cr): + if not openerp.multi_process: + return + + # Inter-process signaling: + # The `base_registry_signaling` sequence indicates the whole registry + # must be reloaded. + # The `base_cache_signaling sequence` indicates all caches must be + # invalidated (i.e. cleared). + cr.execute("""SELECT sequence_name FROM information_schema.sequences WHERE sequence_name='base_registry_signaling'""") + if not cr.fetchall(): + cr.execute("""CREATE SEQUENCE base_registry_signaling INCREMENT BY 1 START WITH 1""") + cr.execute("""SELECT nextval('base_registry_signaling')""") + cr.execute("""CREATE SEQUENCE base_cache_signaling INCREMENT BY 1 START WITH 1""") + cr.execute("""SELECT nextval('base_cache_signaling')""") @contextmanager def cursor(self, auto_commit=True): @@ -182,6 +226,7 @@ class RegistryManager(object): cr = registry.db.cursor() try: + Registry.setup_multi_process_signaling(cr) registry.do_parent_store(cr) registry.get('ir.actions.report.xml').register_all(cr) cr.commit() @@ -195,20 +240,11 @@ class RegistryManager(object): @classmethod def delete(cls, db_name): - """Delete the registry linked to a given database. - - This also cleans the associated caches. For good measure this also - cancels the associated cron job. But please note that the cron job can - be running and take some time before ending, and that you should not - remove a registry if it can still be used by some thread. So it might - be necessary to call yourself openerp.cron.Agent.cancel(db_name) and - and join (i.e. wait for) the thread. - """ + """Delete the registry linked to a given database. """ with cls.registries_lock: if db_name in cls.registries: cls.registries[db_name].clear_caches() del cls.registries[db_name] - openerp.cron.cancel(db_name) @classmethod def delete_all(cls): @@ -232,5 +268,71 @@ class RegistryManager(object): if db_name in cls.registries: cls.registries[db_name].clear_caches() + @classmethod + def check_registry_signaling(cls, db_name): + if openerp.multi_process and db_name in cls.registries: + registry = cls.get(db_name, pooljobs=False) + cr = registry.db.cursor() + try: + cr.execute(""" + SELECT base_registry_signaling.last_value, + base_cache_signaling.last_value + FROM base_registry_signaling, base_cache_signaling""") + 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: + _logger.info("Reloading the model registry after database signaling.") + # Don't run the cron in the Gunicorn worker. + registry = cls.new(db_name, pooljobs=False) + 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: + _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 + # use of decimal_precision.write(), in which case we need + # to refresh fields.float columns. + for model in registry.models.values(): + for column in model._columns.values(): + if hasattr(column, 'digits_change'): + column.digits_change(cr) + finally: + cr.close() + + @classmethod + def signal_caches_change(cls, db_name): + if openerp.multi_process and db_name in cls.registries: + # Check the registries if any cache has been cleared and signal it + # through the database to other processes. + registry = cls.get(db_name, pooljobs=False) + if registry.any_cache_cleared(): + _logger.info("At least one model cache has been cleared, signaling through the database.") + cr = registry.db.cursor() + r = 1 + try: + cr.execute("select nextval('base_cache_signaling')") + r = cr.fetchone()[0] + finally: + cr.close() + registry.base_cache_signaling_sequence = r + registry.reset_any_cache_cleared() + + @classmethod + def signal_registry_change(cls, db_name): + if openerp.multi_process and db_name in cls.registries: + registry = cls.get(db_name, pooljobs=False) + cr = registry.db.cursor() + r = 1 + try: + cr.execute("select nextval('base_registry_signaling')") + r = cr.fetchone()[0] + finally: + cr.close() + registry.base_registry_signaling_sequence = r # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/netsvc.py b/openerp/netsvc.py index e2e435a746f..fead3bd7908 100644 --- a/openerp/netsvc.py +++ b/openerp/netsvc.py @@ -40,23 +40,6 @@ import openerp _logger = logging.getLogger(__name__) -def close_socket(sock): - """ Closes a socket instance cleanly - - :param sock: the network socket to close - :type sock: socket.socket - """ - try: - sock.shutdown(socket.SHUT_RDWR) - except socket.error, e: - # On OSX, socket shutdowns both sides if any side closes it - # causing an error 57 'Socket is not connected' on shutdown - # of the other side (or something), see - # http://bugs.python.org/issue4397 - # note: stdlib fixed test, not behavior - if e.errno != errno.ENOTCONN or platform.system() != 'Darwin': - raise - sock.close() #.apidoc title: Common Services: netsvc @@ -67,9 +50,9 @@ def abort_response(dummy_1, description, dummy_2, details): raise openerp.osv.osv.except_osv(description, details) class Service(object): - """ Base class for *Local* services - - Functionality here is trusted, no authentication. + """ Base class for Local services + Functionality here is trusted, no authentication. + Workflow engine and reports subclass this. """ _services = {} def __init__(self, name): @@ -145,7 +128,6 @@ class ColoredFormatter(DBFormatter): record.levelname = COLOR_PATTERN % (30 + fg_color, 40 + bg_color, record.levelname) return DBFormatter.format(self, record) - def init_logger(): from tools.translate import resetlocale resetlocale() @@ -246,85 +228,6 @@ def init_alternative_logger(): logger.addHandler(handler) logger.setLevel(logging.ERROR) -class Server: - """ Generic interface for all servers with an event loop etc. - Override this to impement http, net-rpc etc. servers. - - Servers here must have threaded behaviour. start() must not block, - there is no run(). - """ - __is_started = False - __servers = [] - __starter_threads = [] - - # we don't want blocking server calls (think select()) to - # wait forever and possibly prevent exiting the process, - # but instead we want a form of polling/busy_wait pattern, where - # _server_timeout should be used as the default timeout for - # all I/O blocking operations - _busywait_timeout = 0.5 - - def __init__(self): - Server.__servers.append(self) - if Server.__is_started: - # raise Exception('All instances of servers must be inited before the startAll()') - # Since the startAll() won't be called again, allow this server to - # init and then start it after 1sec (hopefully). Register that - # timer thread in a list, so that we can abort the start if quitAll - # is called in the meantime - t = threading.Timer(1.0, self._late_start) - t.name = 'Late start timer for %s' % str(self.__class__) - Server.__starter_threads.append(t) - t.start() - - def start(self): - _logger.debug("called stub Server.start") - - def _late_start(self): - self.start() - for thr in Server.__starter_threads: - if thr.finished.is_set(): - Server.__starter_threads.remove(thr) - - def stop(self): - _logger.debug("called stub Server.stop") - - def stats(self): - """ This function should return statistics about the server """ - return "%s: No statistics" % str(self.__class__) - - @classmethod - def startAll(cls): - if cls.__is_started: - return - _logger.info("Starting %d services" % len(cls.__servers)) - for srv in cls.__servers: - srv.start() - cls.__is_started = True - - @classmethod - def quitAll(cls): - if not cls.__is_started: - return - _logger.info("Stopping %d services" % len(cls.__servers)) - for thr in cls.__starter_threads: - if not thr.finished.is_set(): - thr.cancel() - cls.__starter_threads.remove(thr) - - for srv in cls.__servers: - srv.stop() - cls.__is_started = False - - @classmethod - def allStats(cls): - res = ["Servers %s" % ('stopped', 'started')[cls.__is_started]] - res.extend(srv.stats() for srv in cls.__servers) - return '\n'.join(res) - - def _close_socket(self): - close_socket(self.socket) - def replace_request_password(args): # password is always 3rd argument in a request, we replace it in RPC logs # so it's easier to forward logs for diagnostics/debugging purposes... diff --git a/openerp/osv/fields.py b/openerp/osv/fields.py index 3e5c1198239..ea84cae978e 100644 --- a/openerp/osv/fields.py +++ b/openerp/osv/fields.py @@ -163,7 +163,7 @@ class boolean(_column): _logger.debug( "required=True is deprecated: making a boolean field" " `required` has no effect, as NULL values are " - "automatically turned into False.") + "automatically turned into False. args: %r",args) class integer(_column): _type = 'integer' diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 3b9b8f30d23..e203ae79e0d 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -916,7 +916,16 @@ class BaseModel(object): else: new.extend(cls.__dict__.get(s, [])) nattr[s] = new + + # Keep links to non-inherited constraints, e.g. useful when exporting translations + nattr['_local_constraints'] = cls.__dict__.get('_constraints', []) + nattr['_local_sql_constraints'] = cls.__dict__.get('_sql_constraints', []) + cls = type(name, (cls, parent_class), dict(nattr, _register=False)) + else: + cls._local_constraints = getattr(cls, '_constraints', []) + cls._local_sql_constraints = getattr(cls, '_sql_constraints', []) + if not getattr(cls, '_original_module', None): cls._original_module = cls._module obj = object.__new__(cls) @@ -1515,6 +1524,8 @@ class BaseModel(object): error_msgs = [] for constraint in self._constraints: fun, msg, fields = constraint + # We don't pass around the context here: validation code + # must always yield the same results. if not fun(self, cr, uid, ids): # Check presence of __call__ directly instead of using # callable() because it will be deprecated as of Python 3.0 @@ -2498,6 +2509,7 @@ class BaseModel(object): try: getattr(self, '_ormcache') self._ormcache = {} + self.pool._any_cache_cleared = True except AttributeError: pass @@ -3223,7 +3235,7 @@ class BaseModel(object): def _create_table(self, cr): - cr.execute('CREATE TABLE "%s" (id SERIAL NOT NULL, PRIMARY KEY(id)) WITHOUT OIDS' % (self._table,)) + cr.execute('CREATE TABLE "%s" (id SERIAL NOT NULL, PRIMARY KEY(id))' % (self._table,)) cr.execute(("COMMENT ON TABLE \"%s\" IS %%s" % self._table), (self._description,)) _schema.debug("Table '%s': created", self._table) @@ -3307,7 +3319,7 @@ class BaseModel(object): raise except_orm('Programming Error', ('Many2Many destination model does not exist: `%s`') % (f._obj,)) dest_model = self.pool.get(f._obj) ref = dest_model._table - cr.execute('CREATE TABLE "%s" ("%s" INTEGER NOT NULL, "%s" INTEGER NOT NULL, UNIQUE("%s","%s")) WITH OIDS' % (m2m_tbl, col1, col2, col1, col2)) + cr.execute('CREATE TABLE "%s" ("%s" INTEGER NOT NULL, "%s" INTEGER NOT NULL, UNIQUE("%s","%s"))' % (m2m_tbl, col1, col2, col1, col2)) # create foreign key references with ondelete=cascade, unless the targets are SQL views cr.execute("SELECT relkind FROM pg_class WHERE relkind IN ('v') AND relname=%s", (ref,)) if not cr.fetchall(): diff --git a/openerp/osv/osv.py b/openerp/osv/osv.py index 7703406ec96..018976ac663 100644 --- a/openerp/osv/osv.py +++ b/openerp/osv/osv.py @@ -23,6 +23,8 @@ from functools import wraps import logging +import threading + from psycopg2 import IntegrityError, errorcodes import orm @@ -168,6 +170,7 @@ class object_proxy(object): @check def execute(self, db, uid, obj, method, *args, **kw): + threading.currentThread().dbname = db cr = pooler.get_db(db).cursor() try: try: diff --git a/openerp/service/__init__.py b/openerp/service/__init__.py index 491af631202..f8752732cdf 100644 --- a/openerp/service/__init__.py +++ b/openerp/service/__init__.py @@ -1,8 +1,9 @@ # -*- coding: utf-8 -*- ############################################################################## -# +# # OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). +# Copyright (C) 2010-2012 OpenERP SA () # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -15,7 +16,7 @@ # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . +# along with this program. If not, see . # ############################################################################## @@ -23,17 +24,16 @@ import logging import threading import time -import http_server +import cron import netrpc_server import web_services -import websrv_lib +import web_services +import wsgi_server -import openerp.cron import openerp.modules import openerp.netsvc import openerp.osv import openerp.tools -import openerp.service.wsgi_server #.apidoc title: RPC Services @@ -61,6 +61,7 @@ Maybe you forgot to add those addons in your addons_path configuration.""" _logger.exception('Failed to load server-wide module `%s`.%s', m, msg) start_internal_done = False +main_thread_id = threading.currentThread().ident def start_internal(): global start_internal_done @@ -68,38 +69,32 @@ def start_internal(): return openerp.netsvc.init_logger() openerp.modules.loading.open_openerp_namespace() + # Instantiate local services (this is a legacy design). openerp.osv.osv.start_object_proxy() # Export (for RPC) services. - web_services.start_web_services() + web_services.start_service() + load_server_wide_modules() start_internal_done = True def start_services(): """ Start all services including http, netrpc and cron """ start_internal() - - # Initialize the HTTP stack. - netrpc_server.init_servers() - - # Start the main cron thread. - if openerp.conf.max_cron_threads: - openerp.cron.start_master_thread() - - # Start the top-level servers threads (normally HTTP, HTTPS, and NETRPC). - openerp.netsvc.Server.startAll() - + # Initialize the NETRPC server. + netrpc_server.start_service() # Start the WSGI server. - openerp.service.wsgi_server.start_server() + wsgi_server.start_service() + # Start the main cron thread. + cron.start_service() def stop_services(): """ Stop all services. """ - # stop scheduling new jobs; we will have to wait for the jobs to complete below - openerp.cron.cancel_all() + # stop services + cron.stop_service() + netrpc_server.stop_service() + wsgi_server.stop_service() - openerp.netsvc.Server.quitAll() - openerp.service.wsgi_server.stop_server() - config = openerp.tools.config _logger.info("Initiating shutdown") _logger.info("Hit CTRL-C again or send a second signal to force the shutdown.") logging.shutdown() @@ -107,8 +102,9 @@ def stop_services(): # Manually join() all threads before calling sys.exit() to allow a second signal # to trigger _force_quit() in case some non-daemon threads won't exit cleanly. # threading.Thread.join() should not mask signals (at least in python 2.5). + me = threading.currentThread() for thread in threading.enumerate(): - if thread != threading.currentThread() and not thread.isDaemon(): + if thread != me and not thread.isDaemon() and thread.ident != main_thread_id: while thread.isAlive(): # Need a busyloop here as thread.join() masks signals # and would prevent the forced shutdown. @@ -119,10 +115,9 @@ def stop_services(): def start_services_workers(): import openerp.service.workers - openerp.multi_process = True # Nah! + openerp.multi_process = True openerp.service.workers.Multicorn(openerp.service.wsgi_server.application).run() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - diff --git a/openerp/service/cron.py b/openerp/service/cron.py new file mode 100644 index 00000000000..337583b65e4 --- /dev/null +++ b/openerp/service/cron.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2011 OpenERP SA () +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +""" Cron jobs scheduling + +Cron jobs are defined in the ir_cron table/model. This module deals with all +cron jobs, for all databases of a single OpenERP server instance. + +""" + +import logging +import threading +import time + +import openerp + +_logger = logging.getLogger(__name__) + +SLEEP_INTERVAL = 60 # 1 min + +def cron_runner(number): + while True: + time.sleep(SLEEP_INTERVAL + number) # Steve Reich timing style + registries = openerp.modules.registry.RegistryManager.registries + _logger.debug('cron%d polling for jobs', number) + for db_name, registry in registries.items(): + while True and registry.cron: + # acquired = openerp.addons.base.ir.ir_cron.ir_cron._acquire_job(db_name) + # TODO why isnt openerp.addons.base defined ? + import sys + base = sys.modules['addons.base'] + acquired = base.ir.ir_cron.ir_cron._acquire_job(db_name) + if not acquired: + break + +def start_service(): + """ Start the above runner function in a daemon thread. + + The thread is a typical daemon thread: it will never quit and must be + terminated when the main process exits - with no consequence (the processing + threads it spawns are not marked daemon). + + """ + for i in range(openerp.tools.config['max_cron_threads']): + def target(): + cron_runner(i) + t = threading.Thread(target=target, name="openerp.service.cron.cron%d" % i) + t.setDaemon(True) + t.start() + _logger.debug("cron%d started!" % i) + +def stop_service(): + pass + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/service/http_server.py b/openerp/service/http_server.py index 20206cf147d..1496ea71646 100644 --- a/openerp/service/http_server.py +++ b/openerp/service/http_server.py @@ -176,6 +176,4 @@ class OpenERPAuthProvider(AuthProvider): self.auth_tries += 1 raise AuthRequiredExc(atype='Basic', realm=self.realm) -#eof - # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/service/netrpc_server.py b/openerp/service/netrpc_server.py index cc78d0620cf..a3e4ade7210 100644 --- a/openerp/service/netrpc_server.py +++ b/openerp/service/netrpc_server.py @@ -38,6 +38,103 @@ import openerp.tools as tools _logger = logging.getLogger(__name__) +def close_socket(sock): + """ Closes a socket instance cleanly + + :param sock: the network socket to close + :type sock: socket.socket + """ + try: + sock.shutdown(socket.SHUT_RDWR) + except socket.error, e: + # On OSX, socket shutdowns both sides if any side closes it + # causing an error 57 'Socket is not connected' on shutdown + # of the other side (or something), see + # http://bugs.python.org/issue4397 + # note: stdlib fixed test, not behavior + if e.errno != errno.ENOTCONN or platform.system() not in ['Darwin', 'Windows']: + raise + sock.close() + +class Server: + """ Generic interface for all servers with an event loop etc. + Override this to impement http, net-rpc etc. servers. + + Servers here must have threaded behaviour. start() must not block, + there is no run(). + """ + __is_started = False + __servers = [] + __starter_threads = [] + + # we don't want blocking server calls (think select()) to + # wait forever and possibly prevent exiting the process, + # but instead we want a form of polling/busy_wait pattern, where + # _server_timeout should be used as the default timeout for + # all I/O blocking operations + _busywait_timeout = 0.5 + + def __init__(self): + Server.__servers.append(self) + if Server.__is_started: + # raise Exception('All instances of servers must be inited before the startAll()') + # Since the startAll() won't be called again, allow this server to + # init and then start it after 1sec (hopefully). Register that + # timer thread in a list, so that we can abort the start if quitAll + # is called in the meantime + t = threading.Timer(1.0, self._late_start) + t.name = 'Late start timer for %s' % str(self.__class__) + Server.__starter_threads.append(t) + t.start() + + def start(self): + _logger.debug("called stub Server.start") + + def _late_start(self): + self.start() + for thr in Server.__starter_threads: + if thr.finished.is_set(): + Server.__starter_threads.remove(thr) + + def stop(self): + _logger.debug("called stub Server.stop") + + def stats(self): + """ This function should return statistics about the server """ + return "%s: No statistics" % str(self.__class__) + + @classmethod + def startAll(cls): + if cls.__is_started: + return + _logger.info("Starting %d services" % len(cls.__servers)) + for srv in cls.__servers: + srv.start() + cls.__is_started = True + + @classmethod + def quitAll(cls): + if not cls.__is_started: + return + _logger.info("Stopping %d services" % len(cls.__servers)) + for thr in cls.__starter_threads: + if not thr.finished.is_set(): + thr.cancel() + cls.__starter_threads.remove(thr) + + for srv in cls.__servers: + srv.stop() + cls.__is_started = False + + @classmethod + def allStats(cls): + res = ["Servers %s" % ('stopped', 'started')[cls.__is_started]] + res.extend(srv.stats() for srv in cls.__servers) + return '\n'.join(res) + + def _close_socket(self): + close_socket(self.socket) + class TinySocketClientThread(threading.Thread): def __init__(self, sock, threads): spn = sock and sock.getpeername() @@ -99,10 +196,10 @@ def netrpc_handle_exception_legacy(e): return 'AccessDenied ' + str(e) return openerp.tools.exception_to_unicode(e) -class TinySocketServerThread(threading.Thread,netsvc.Server): +class TinySocketServerThread(threading.Thread,Server): def __init__(self, interface, port, secure=False): threading.Thread.__init__(self, name="NetRPCDaemon-%d"%port) - netsvc.Server.__init__(self) + Server.__init__(self) self.__port = port self.__interface = interface self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) @@ -157,11 +254,12 @@ class TinySocketServerThread(threading.Thread,netsvc.Server): netrpcd = None -def init_servers(): +def start_service(): global netrpcd if tools.config.get('netrpc', False): - netrpcd = TinySocketServerThread( - tools.config.get('netrpc_interface', ''), - int(tools.config.get('netrpc_port', 8070))) + netrpcd = TinySocketServerThread(tools.config.get('netrpc_interface', ''), int(tools.config.get('netrpc_port', 8070))) + +def stop_service(): + Server.quitAll() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/service/web_services.py b/openerp/service/web_services.py index d29235b894f..ec3600c8c5d 100644 --- a/openerp/service/web_services.py +++ b/openerp/service/web_services.py @@ -165,6 +165,7 @@ class db(netsvc.ExportService): def exp_duplicate_database(self, db_original_name, db_name): _logger.info('Duplicate database `%s` to `%s`.', db_original_name, db_name) + sql_db.close_db(db_original_name) db = sql_db.db_connect('postgres') cr = db.cursor() try: @@ -603,68 +604,13 @@ class objects_proxy(netsvc.ExportService): raise NameError("Method not available %s" % method) security.check(db,uid,passwd) assert openerp.osv.osv.service, "The object_proxy class must be started with start_object_proxy." + openerp.modules.registry.RegistryManager.check_registry_signaling(db) fn = getattr(openerp.osv.osv.service, method) res = fn(db, uid, *params) + openerp.modules.registry.RegistryManager.signal_caches_change(db) return res -# -# Wizard ID: 1 -# - None = end of wizard -# -# Wizard Type: 'form' -# - form -# - print -# -# Wizard datas: {} -# TODO: change local request to OSE request/reply pattern -# -class wizard(netsvc.ExportService): - def __init__(self, name='wizard'): - netsvc.ExportService.__init__(self,name) - self.id = 0 - self.wiz_datas = {} - self.wiz_name = {} - self.wiz_uid = {} - - def dispatch(self, method, params): - (db, uid, passwd ) = params[0:3] - threading.current_thread().uid = uid - params = params[3:] - if method not in ['execute','create']: - raise KeyError("Method not supported %s" % method) - security.check(db,uid,passwd) - fn = getattr(self, 'exp_'+method) - res = fn(db, uid, *params) - return res - - def _execute(self, db, uid, wiz_id, datas, action, context): - self.wiz_datas[wiz_id].update(datas) - wiz = netsvc.LocalService('wizard.'+self.wiz_name[wiz_id]) - return wiz.execute(db, uid, self.wiz_datas[wiz_id], action, context) - - def exp_create(self, db, uid, wiz_name, datas=None): - if not datas: - datas={} -#FIXME: this is not thread-safe - self.id += 1 - self.wiz_datas[self.id] = {} - self.wiz_name[self.id] = wiz_name - self.wiz_uid[self.id] = uid - return self.id - - def exp_execute(self, db, uid, wiz_id, datas, action='init', context=None): - if not context: - context={} - - if wiz_id in self.wiz_uid: - if self.wiz_uid[wiz_id] == uid: - return self._execute(db, uid, wiz_id, datas, action, context) - else: - raise openerp.exceptions.AccessDenied() - else: - raise openerp.exceptions.Warning('Wizard not found.') - # # TODO: set a maximum report number per user to avoid DOS attacks # @@ -686,8 +632,10 @@ class report_spool(netsvc.ExportService): if method not in ['report', 'report_get', 'render_report']: raise KeyError("Method not supported %s" % method) security.check(db,uid,passwd) + openerp.modules.registry.RegistryManager.check_registry_signaling(db) fn = getattr(self, 'exp_' + method) res = fn(db, uid, *params) + openerp.modules.registry.RegistryManager.signal_caches_change(db) return res def exp_render_report(self, db, uid, object, ids, datas=None, context=None): @@ -799,13 +747,11 @@ class report_spool(netsvc.ExportService): raise Exception, 'ReportNotFound' -def start_web_services(): +def start_service(): db() common() objects_proxy() - wizard() report_spool() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - diff --git a/openerp/service/workers.py b/openerp/service/workers.py index 7bdf45c079f..c40904026f5 100644 --- a/openerp/service/workers.py +++ b/openerp/service/workers.py @@ -16,6 +16,10 @@ import sys import time import werkzeug.serving +try: + from setproctitle import setproctitle +except ImportError: + setproctitle = lambda x: None import openerp import openerp.tools.config as config @@ -134,7 +138,7 @@ class Multicorn(object): def process_spawn(self): while len(self.workers_http) < self.population: self.worker_spawn(WorkerHTTP, self.workers_http) - while len(self.workers_cron) < 1: # config option ? + while len(self.workers_cron) < config['max_cron_threads']: self.worker_spawn(WorkerCron, self.workers_cron) def sleep(self): @@ -189,8 +193,7 @@ class Multicorn(object): for pid in self.workers.keys(): self.worker_kill(pid, signal.SIGTERM) self.socket.close() - import __main__ - __main__.quit_signals_received = 1 + openerp.cli.server.quit_signals_received = 1 def run(self): self.start() @@ -252,7 +255,7 @@ class Worker(object): # Reset the worker if it consumes too much memory (e.g. caused by a memory leak). rss, vms = psutil.Process(os.getpid()).get_memory_info() if vms > config['limit_memory_soft']: - _logger.info('Virtual memory consumption too high, rebooting the worker.') + _logger.info('Worker (%d) virtual memory limit (%s) reached.', self.pid, vms) self.alive = False # Commit suicide after the request. # VMS and RLIMIT_AS are the same thing: virtual memory, a.k.a. address space @@ -263,7 +266,8 @@ class Worker(object): r = resource.getrusage(resource.RUSAGE_SELF) cpu_time = r.ru_utime + r.ru_stime def time_expired(n, stack): - _logger.info('CPU time limit exceeded.') + _logger.info('Worker (%d) CPU time limit (%s) reached.', config['limit_time_cpu']) + # We dont suicide in such case raise Exception('CPU time limit exceeded.') signal.signal(signal.SIGXCPU, time_expired) soft, hard = resource.getrlimit(resource.RLIMIT_CPU) @@ -274,6 +278,7 @@ class Worker(object): def start(self): self.pid = os.getpid() + setproctitle('openerp: %s %s' % (self.__class__.__name__, self.pid)) _logger.info("Worker %s (%s) alive", self.__class__.__name__, self.pid) # Reseed the random number generator random.seed() @@ -346,19 +351,27 @@ class WorkerBaseWSGIServer(werkzeug.serving.BaseWSGIServer): class WorkerCron(Worker): """ Cron workers """ def sleep(self): - time.sleep(60) + interval = 60 + self.pid % 10 # chorus effect + time.sleep(interval) def process_work(self): + _logger.debug("WorkerCron (%s) polling for jobs", self.pid) if config['db_name']: db_names = config['db_name'].split(',') else: db_names = openerp.netsvc.ExportService._services['db'].exp_list(True) for db_name in db_names: while True: - # TODO Each job should be considered as one request in multiprocessing - acquired = openerp.addons.base.ir.ir_cron.ir_cron._acquire_job(db_name) + # acquired = openerp.addons.base.ir.ir_cron.ir_cron._acquire_job(db_name) + # TODO why isnt openerp.addons.base defined ? + import base + acquired = base.ir.ir_cron.ir_cron._acquire_job(db_name) if not acquired: break + # dont keep cursors in multi database mode + if len(db_names) > 1: + openerp.sql_db.close_db(db_name) + # TODO Each job should be considered as one request instead of each db self.request_count += 1 def start(self): diff --git a/openerp/service/wsgi_server.py b/openerp/service/wsgi_server.py index a73617d8510..f6d7a0582f7 100644 --- a/openerp/service/wsgi_server.py +++ b/openerp/service/wsgi_server.py @@ -428,14 +428,14 @@ def serve(): _logger.info('HTTP service (werkzeug) running on %s:%s', interface, port) httpd.serve_forever() -def start_server(): +def start_service(): """ Call serve() in its own thread. The WSGI server can be shutdown with stop_server() below. """ threading.Thread(target=serve).start() -def stop_server(): +def stop_service(): """ Initiate the shutdown of the WSGI server. The server is supposed to have been started by start_server() above. diff --git a/openerp/tools/cache.py b/openerp/tools/cache.py index 6e18007c340..4b4dcea9b8e 100644 --- a/openerp/tools/cache.py +++ b/openerp/tools/cache.py @@ -57,10 +57,12 @@ class ormcache(object): try: key = args[self.skiparg-2:] del d[key] + self2.pool._any_cache_cleared = True except KeyError: pass else: d.clear() + self2.pool._any_cache_cleared = True class ormcache_multi(ormcache): def __init__(self, skiparg=2, size=8192, multi=3): diff --git a/openerp/tools/config.py b/openerp/tools/config.py index 0b5a95d05f6..1ad5f2b4baa 100644 --- a/openerp/tools/config.py +++ b/openerp/tools/config.py @@ -146,8 +146,9 @@ class configmanager(object): help="specify the TCP IP address for the NETRPC protocol") group.add_option("--netrpc-port", dest="netrpc_port", my_default=8070, help="specify the TCP port for the NETRPC protocol", type="int") - group.add_option("--no-netrpc", dest="netrpc", action="store_false", my_default=True, - help="disable the NETRPC protocol") + # Needed a few day for runbot and saas + group.add_option("--no-netrpc", dest="netrpc", action="store_false", my_default=False, help="disable the NETRPC protocol") + group.add_option("--netrpc", dest="netrpc", action="store_true", my_default=False, help="enable the NETRPC protocol") parser.add_option_group(group) # WEB @@ -269,8 +270,8 @@ class configmanager(object): "osv_memory tables. This is a decimal value expressed in hours, " "and the default is 1 hour.", type="float") - group.add_option("--max-cron-threads", dest="max_cron_threads", my_default=4, - help="Maximum number of threads processing concurrently cron jobs.", + group.add_option("--max-cron-threads", dest="max_cron_threads", my_default=2, + help="Maximum number of threads processing concurrently cron jobs (default 2).", type="int") group.add_option("--unaccent", dest="unaccent", my_default=False, action="store_true", help="Use the unaccent function provided by the database when available.") @@ -282,19 +283,19 @@ class configmanager(object): help="Specify the number of workers, 0 disable prefork mode.", type="int") group.add_option("--limit-memory-soft", dest="limit_memory_soft", my_default=640 * 1024 * 1024, - help="Maximum allowed virtual memory per worker, when reached the worker be reset after the current request.", + help="Maximum allowed virtual memory per worker, when reached the worker be reset after the current request (default 640M).", type="int") group.add_option("--limit-memory-hard", dest="limit_memory_hard", my_default=768 * 1024 * 1024, - help="Maximum allowed virtual memory per worker, when reached, any memory allocation will fail.", + help="Maximum allowed virtual memory per worker, when reached, any memory allocation will fail (default 768M).", type="int") group.add_option("--limit-time-cpu", dest="limit_time_cpu", my_default=60, - help="Maximum allowed CPU time per request.", + help="Maximum allowed CPU time per request (default 60).", type="int") - group.add_option("--limit-time-real", dest="limit_time_real", my_default=60, - help="Maximum allowed Real time per request. ", + group.add_option("--limit-time-real", dest="limit_time_real", my_default=120, + help="Maximum allowed Real time per request (default 120).", type="int") group.add_option("--limit-request", dest="limit_request", my_default=8192, - help="Maximum number of request to be processed per worker.", + help="Maximum number of request to be processed per worker (default 8192).", type="int") parser.add_option_group(group) @@ -479,8 +480,6 @@ class configmanager(object): if opt.save: self.save() - openerp.conf.max_cron_threads = self.options['max_cron_threads'] - openerp.conf.addons_paths = self.options['addons_path'].split(',') if opt.server_wide_modules: openerp.conf.server_wide_modules = map(lambda m: m.strip(), opt.server_wide_modules.split(',')) diff --git a/openerp/tools/image.py b/openerp/tools/image.py index eb3600a6652..f8f118e34e2 100644 --- a/openerp/tools/image.py +++ b/openerp/tools/image.py @@ -68,7 +68,7 @@ def image_resize_image(base64_source, size=(1024, 1024), encoding='base64', file return base64_source # create a thumbnail: will resize and keep ratios, then sharpen for better looking result image.thumbnail(size, Image.ANTIALIAS) - sharpener = ImageEnhance.Sharpness(image.convert('RGB')) + sharpener = ImageEnhance.Sharpness(image.convert('RGBA')) image = sharpener.enhance(2.0) # create a transparent image for background background = Image.new('RGBA', size, (255, 255, 255, 0)) diff --git a/openerp/tools/misc.py b/openerp/tools/misc.py index 4e3db23bc2d..209e4aaebdf 100644 --- a/openerp/tools/misc.py +++ b/openerp/tools/misc.py @@ -27,6 +27,7 @@ Miscellaneous tools used by OpenERP. """ from functools import wraps +import cProfile import subprocess import logging import os @@ -592,16 +593,10 @@ class profile(object): def __call__(self, f): @wraps(f) def wrapper(*args, **kwargs): - class profile_wrapper(object): - def __init__(self): - self.result = None - def __call__(self): - self.result = f(*args, **kwargs) - pw = profile_wrapper() - import cProfile - fname = self.fname or ("%s.cprof" % (f.func_name,)) - cProfile.runctx('pw()', globals(), locals(), filename=fname) - return pw.result + profile = cProfile.Profile() + result = profile.runcall(f, *args, **kwargs) + profile.dump_stats(self.fname or ("%s.cprof" % (f.func_name,))) + return result return wrapper diff --git a/openerp/tools/threadinglocal.py b/openerp/tools/threadinglocal.py deleted file mode 100644 index a68181c10e1..00000000000 --- a/openerp/tools/threadinglocal.py +++ /dev/null @@ -1,269 +0,0 @@ -# -*- coding: utf-8 -*- -#Copyright (c) 2004-2005, CherryPy Team (team@cherrypy.org) -#All rights reserved. -# -#Redistribution and use in source and binary forms, with or without -#modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# * Neither the name of the CherryPy Team nor the names of its contributors -# may be used to endorse or promote products derived from this software -# without specific prior written permission. -# -#THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -#ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -#WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -#DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE -#FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -#DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -#SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -#CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -#OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -#OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# This is a backport of Python-2.4's threading.local() implementation - -"""Thread-local objects - -(Note that this module provides a Python version of thread - threading.local class. Depending on the version of Python you're - using, there may be a faster one available. You should always import - the local class from threading.) - -Thread-local objects support the management of thread-local data. -If you have data that you want to be local to a thread, simply create -a thread-local object and use its attributes: - - >>> mydata = local() - >>> mydata.number = 42 - >>> mydata.number - 42 - -You can also access the local-object's dictionary: - - >>> mydata.__dict__ - {'number': 42} - >>> mydata.__dict__.setdefault('widgets', []) - [] - >>> mydata.widgets - [] - -What's important about thread-local objects is that their data are -local to a thread. If we access the data in a different thread: - - >>> log = [] - >>> def f(): - ... items = mydata.__dict__.items() - ... items.sort() - ... log.append(items) - ... mydata.number = 11 - ... log.append(mydata.number) - - >>> import threading - >>> thread = threading.Thread(target=f) - >>> thread.start() - >>> thread.join() - >>> log - [[], 11] - -we get different data. Furthermore, changes made in the other thread -don't affect data seen in this thread: - - >>> mydata.number - 42 - -Of course, values you get from a local object, including a __dict__ -attribute, are for whatever thread was current at the time the -attribute was read. For that reason, you generally don't want to save -these values across threads, as they apply only to the thread they -came from. - -You can create custom local objects by subclassing the local class: - - >>> class MyLocal(local): - ... number = 2 - ... initialized = False - ... def __init__(self, **kw): - ... if self.initialized: - ... raise SystemError('__init__ called too many times') - ... self.initialized = True - ... self.__dict__.update(kw) - ... def squared(self): - ... return self.number ** 2 - -This can be useful to support default values, methods and -initialization. Note that if you define an __init__ method, it will be -called each time the local object is used in a separate thread. This -is necessary to initialize each thread's dictionary. - -Now if we create a local object: - - >>> mydata = MyLocal(color='red') - -Now we have a default number: - - >>> mydata.number - 2 - -an initial color: - - >>> mydata.color - 'red' - >>> del mydata.color - -And a method that operates on the data: - - >>> mydata.squared() - 4 - -As before, we can access the data in a separate thread: - - >>> log = [] - >>> thread = threading.Thread(target=f) - >>> thread.start() - >>> thread.join() - >>> log - [[('color', 'red'), ('initialized', True)], 11] - -without affecting this thread's data: - - >>> mydata.number - 2 - >>> mydata.color - Traceback (most recent call last): - ... - AttributeError: 'MyLocal' object has no attribute 'color' - -Note that subclasses can define slots, but they are not thread -local. They are shared across threads: - - >>> class MyLocal(local): - ... __slots__ = 'number' - - >>> mydata = MyLocal() - >>> mydata.number = 42 - >>> mydata.color = 'red' - -So, the separate thread: - - >>> thread = threading.Thread(target=f) - >>> thread.start() - >>> thread.join() - -affects what we see: - - >>> mydata.number - 11 - ->>> del mydata -""" - -# Threading import is at end - -class _localbase(object): - __slots__ = '_local__key', '_local__args', '_local__lock' - - def __new__(cls, *args, **kw): - self = object.__new__(cls) - key = '_local__key', 'thread.local.' + str(id(self)) - object.__setattr__(self, '_local__key', key) - object.__setattr__(self, '_local__args', (args, kw)) - object.__setattr__(self, '_local__lock', RLock()) - - if args or kw and (cls.__init__ is object.__init__): - raise TypeError("Initialization arguments are not supported") - - # We need to create the thread dict in anticipation of - # __init__ being called, to make sure we don't call it - # again ourselves. - dict = object.__getattribute__(self, '__dict__') - currentThread().__dict__[key] = dict - - return self - -def _patch(self): - key = object.__getattribute__(self, '_local__key') - d = currentThread().__dict__.get(key) - if d is None: - d = {} - currentThread().__dict__[key] = d - object.__setattr__(self, '__dict__', d) - - # we have a new instance dict, so call out __init__ if we have - # one - cls = type(self) - if cls.__init__ is not object.__init__: - args, kw = object.__getattribute__(self, '_local__args') - cls.__init__(self, *args, **kw) - else: - object.__setattr__(self, '__dict__', d) - -class local(_localbase): - - def __getattribute__(self, name): - lock = object.__getattribute__(self, '_local__lock') - lock.acquire() - try: - _patch(self) - return object.__getattribute__(self, name) - finally: - lock.release() - - def __setattr__(self, name, value): - lock = object.__getattribute__(self, '_local__lock') - lock.acquire() - try: - _patch(self) - return object.__setattr__(self, name, value) - finally: - lock.release() - - def __delattr__(self, name): - lock = object.__getattribute__(self, '_local__lock') - lock.acquire() - try: - _patch(self) - return object.__delattr__(self, name) - finally: - lock.release() - - - def __del__(): - threading_enumerate = enumerate - __getattribute__ = object.__getattribute__ - - def __del__(self): - key = __getattribute__(self, '_local__key') - - try: - threads = list(threading_enumerate()) - except: - # if enumerate fails, as it seems to do during - # shutdown, we'll skip cleanup under the assumption - # that there is nothing to clean up - return - - for thread in threads: - try: - __dict__ = thread.__dict__ - except AttributeError: - # Thread is dying, rest in peace - continue - - if key in __dict__: - try: - del __dict__[key] - except KeyError: - pass # didn't have anything in this thread - - return __del__ - __del__ = __del__() - -from threading import currentThread, enumerate, RLock - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - diff --git a/openerp/tools/translate.py b/openerp/tools/translate.py index 439cd508122..0b600c75933 100644 --- a/openerp/tools/translate.py +++ b/openerp/tools/translate.py @@ -793,26 +793,33 @@ def trans_generate(lang, modules, cr): cr.execute(query_models, query_param) def push_constraint_msg(module, term_type, model, msg): - # Check presence of __call__ directly instead of using - # callable() because it will be deprecated as of Python 3.0 if not hasattr(msg, '__call__'): - push_translation(module, term_type, model, 0, encode(msg)) + push_translation(encode(module), term_type, encode(model), 0, encode(msg)) + def push_local_constraints(module, model, cons_type='sql_constraints'): + """Climb up the class hierarchy and ignore inherited constraints + from other modules""" + term_type = 'sql_constraint' if cons_type == 'sql_constraints' else 'constraint' + msg_pos = 2 if cons_type == 'sql_constraints' else 1 + for cls in model.__class__.__mro__: + if getattr(cls, '_module', None) != module: + continue + constraints = getattr(cls, '_local_' + cons_type, []) + for constraint in constraints: + push_constraint_msg(module, term_type, model._name, constraint[msg_pos]) + for (_, model, module) in cr.fetchall(): - module = encode(module) - model = encode(model) - model_obj = pool.get(model) if not model_obj: _logger.error("Unable to find object %r", model) continue - for constraint in getattr(model_obj, '_constraints', []): - push_constraint_msg(module, 'constraint', model, constraint[1]) + if model_obj._constraints: + push_local_constraints(module, model_obj, 'constraints') - for constraint in getattr(model_obj, '_sql_constraints', []): - push_constraint_msg(module, 'sql_constraint', model, constraint[2]) + if model_obj._sql_constraints: + push_local_constraints(module, model_obj, 'sql_constraints') def get_module_from_path(path, mod_paths=None): if not mod_paths: diff --git a/openerp/wizard/__init__.py b/openerp/wizard/__init__.py deleted file mode 100644 index debf0f1e74f..00000000000 --- a/openerp/wizard/__init__.py +++ /dev/null @@ -1,191 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2009 Tiny SPRL (). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -import copy -import logging - -import openerp.netsvc as netsvc -from openerp.tools.misc import UpdateableStr, UpdateableDict -from openerp.tools.translate import translate -from lxml import etree - -import openerp.pooler as pooler - -from openerp.osv.osv import except_osv -from openerp.osv.orm import except_orm - -_logger = logging.getLogger(__name__) - -class except_wizard(Exception): - def __init__(self, name, value): - self.name = name - self.value = value - self.args = (name, value) - -class interface(netsvc.Service): - """ - This is the base class used to implement Wizards. This class is deprecated - and `openerp.osv.TransientModel` must be used instead. - """ - states = {} - - def __init__(self, name): - assert not self.exists('wizard.'+name), 'The wizard "%s" already exists!' % (name,) - _logger.warning( - "The wizard %s uses the deprecated openerp.wizard.interface class.\n" - "It must use the openerp.osv.TransientModel class instead." % \ - name) - super(interface, self).__init__('wizard.'+name) - self.wiz_name = name - - def translate_view(self, cr, node, state, lang): - if node.get('string'): - trans = translate(cr, self.wiz_name+','+state, 'wizard_view', lang, node.get('string').encode('utf8')) - if trans: - node.set('string', trans) - for n in node: - self.translate_view(cr, n, state, lang) - - def execute_cr(self, cr, uid, data, state='init', context=None): - if not context: - context={} - res = {} - try: - state_def = self.states[state] - - result_def = state_def.get('result', {}) - - actions_res = {} - # iterate through the list of actions defined for this state - for action in state_def.get('actions', []): - # execute them - action_res = action(self, cr, uid, data, context) - assert isinstance(action_res, dict), 'The return value of wizard actions should be a dictionary' - actions_res.update(action_res) - - res = copy.copy(result_def) - res['datas'] = actions_res - - lang = context.get('lang', False) - if result_def['type'] == 'action': - res['action'] = result_def['action'](self, cr, uid, data, context) - elif result_def['type'] == 'form': - fields = copy.deepcopy(result_def['fields']) - arch = copy.copy(result_def['arch']) - button_list = copy.copy(result_def['state']) - - if isinstance(fields, UpdateableDict): - fields = fields.dict - if isinstance(arch, UpdateableStr): - arch = arch.string - - # fetch user-set defaut values for the field... shouldn't we pass it the uid? - ir_values_obj = pooler.get_pool(cr.dbname).get('ir.values') - defaults = ir_values_obj.get(cr, uid, 'default', False, [('wizard.'+self.wiz_name, False)]) - default_values = dict([(x[1], x[2]) for x in defaults]) - for val in fields.keys(): - if 'default' in fields[val]: - # execute default method for this field - if callable(fields[val]['default']): - fields[val]['value'] = fields[val]['default'](uid, data, state) - else: - fields[val]['value'] = fields[val]['default'] - del fields[val]['default'] - else: - # if user has set a default value for the field, use it - if val in default_values: - fields[val]['value'] = default_values[val] - if 'selection' in fields[val]: - if not isinstance(fields[val]['selection'], (tuple, list)): - fields[val] = copy.copy(fields[val]) - fields[val]['selection'] = fields[val]['selection'](self, cr, uid, context) - elif lang: - res_name = "%s,%s,%s" % (self.wiz_name, state, val) - trans = lambda x: translate(cr, res_name, 'selection', lang, x) or x - for idx, (key, val2) in enumerate(fields[val]['selection']): - fields[val]['selection'][idx] = (key, trans(val2)) - - if lang: - # translate fields - for field in fields: - res_name = "%s,%s,%s" % (self.wiz_name, state, field) - - trans = translate(cr, res_name, 'wizard_field', lang) - if trans: - fields[field]['string'] = trans - - if 'help' in fields[field]: - t = translate(cr, res_name, 'help', lang, fields[field]['help']) - if t: - fields[field]['help'] = t - - # translate arch - if not isinstance(arch, UpdateableStr): - doc = etree.XML(arch) - self.translate_view(cr, doc, state, lang) - arch = etree.tostring(doc) - - # translate buttons - button_list = list(button_list) - for i, aa in enumerate(button_list): - button_name = aa[0] - trans = translate(cr, self.wiz_name+','+state+','+button_name, 'wizard_button', lang) - if trans: - aa = list(aa) - aa[1] = trans - button_list[i] = aa - - res['fields'] = fields - res['arch'] = arch - res['state'] = button_list - - elif result_def['type'] == 'choice': - next_state = result_def['next_state'](self, cr, uid, data, context) - return self.execute_cr(cr, uid, data, next_state, context) - - except Exception, e: - if isinstance(e, except_wizard) \ - or isinstance(e, except_osv) \ - or isinstance(e, except_orm): - netsvc.abort_response(2, e.name, 'warning', e.value) - else: - _logger.exception('Exception in call:') - raise - - return res - - def execute(self, db, uid, data, state='init', context=None): - if not context: - context={} - cr = pooler.get_db(db).cursor() - try: - try: - res = self.execute_cr(cr, uid, data, state, context) - cr.commit() - except Exception: - cr.rollback() - raise - finally: - cr.close() - return res - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - diff --git a/setup.py b/setup.py index 4f1435c0603..7811915ebcf 100755 --- a/setup.py +++ b/setup.py @@ -21,31 +21,29 @@ ############################################################################## import glob, os, re, setuptools, sys -from os.path import join, isfile +from os.path import join # List all data files def data(): - files = [] + r = {} for root, dirnames, filenames in os.walk('openerp'): for filename in filenames: - if not re.match(r'.*(\.pyc|\.pyo|\~)$',filename): - files.append(os.path.join(root, filename)) - d = {} - for v in files: - k=os.path.dirname(v) - if k in d: - d[k].append(v) - else: - d[k]=[v] - r = d.items() + if not re.match(r'.*(\.pyc|\.pyo|\~)$', filename): + r.setdefault(root, []).append(os.path.join(root, filename)) + if os.name == 'nt': - r.append(("Microsoft.VC90.CRT", glob.glob('C:\Microsoft.VC90.CRT\*.*'))) + r["Microsoft.VC90.CRT"] = glob.glob('C:\Microsoft.VC90.CRT\*.*') - import babel - r.append(("localedata", - glob.glob(os.path.join(os.path.dirname(babel.__file__), "localedata" , '*')))) + import babel + r["localedata"] = glob.glob(os.path.join(os.path.dirname(babel.__file__), "localedata", '*')) - return r + import pytz + tzdir = os.path.dirname(pytz.__file__) + for root, _, filenames in os.walk(os.path.join(tzdir, "zoneinfo")): + base = os.path.join('pytz', root[len(tzdir) + 1:]) + r[base] = [os.path.join(root, f) for f in filenames] + + return r.items() def gen_manifest(): file_list="\n".join(data()) @@ -64,7 +62,7 @@ def py2exe_options(): "skip_archive": 1, "optimize": 2, "dist_dir": 'dist', - "packages": [ "DAV", "HTMLParser", "PIL", "asynchat", "asyncore", "commands", "dateutil", "decimal", "docutils", "email", "encodings", "imaplib", "lxml", "lxml._elementpath", "lxml.builder", "lxml.etree", "lxml.objectify", "mako", "openerp", "poplib", "pychart", "pydot", "pyparsing", "reportlab", "select", "simplejson", "smtplib", "uuid", "vatnumber", "vobject", "xml", "xml.dom", "yaml", ], + "packages": [ "DAV", "HTMLParser", "PIL", "asynchat", "asyncore", "commands", "dateutil", "decimal", "docutils", "email", "encodings", "imaplib", "lxml", "lxml._elementpath", "lxml.builder", "lxml.etree", "lxml.objectify", "mako", "openerp", "poplib", "pychart", "pydot", "pyparsing", "pytz", "reportlab", "select", "simplejson", "smtplib", "uuid", "vatnumber", "vobject", "xml", "xml.dom", "yaml", ], "excludes" : ["Tkconstants","Tkinter","tcl"], } } @@ -110,6 +108,7 @@ setuptools.setup( 'gdata', 'lxml < 3', # windows binary http://www.lfd.uci.edu/~gohlke/pythonlibs/ 'mako', + 'mock', 'PIL', # windows binary http://www.lfd.uci.edu/~gohlke/pythonlibs/ 'psutil', # windows binary code.google.com/p/psutil/downloads/list 'psycopg2', @@ -122,6 +121,7 @@ setuptools.setup( 'pyyaml', 'reportlab', # windows binary pypi.python.org/pypi/reportlab 'simplejson', + 'unittest2', 'vatnumber', 'vobject', 'werkzeug',