From 9cc9fa771132e45e1b2b529a95e465225fa35d95 Mon Sep 17 00:00:00 2001 From: Antonio Espinosa Date: Tue, 16 Aug 2016 09:07:35 +0200 Subject: [PATCH] mail_tracking_mass_mailing (#78) [ADD] mail_tracking_mass_mailing ============================== Mail tracking for mass mailing ============================== Links mail statistics objects with mail tracking objects. Installation ============ This addon will be automatically installed when 'mail_tracking' and 'mass_mailing' are both installed Usage ===== From mail statistic object, you can see: - Email tracking state - Email related tracking object - Email related tracking events From mass mailing contact, you can see: - Email score, in order to clean up your lists from bad score emails As a bonus feature, you have a new checkbox 'Avoid resend' in mass mailing, in order to not send twice the same email to the same recipient. This is very useful when you want to resend the mass mailing after changing selection recipients. Notice that recipient selection could be a domain over a model, so result ids could change over the time. With this flag you can send the same email several times but only once to each recipient. OCA Transbot updated translations from Transifex --- mail_tracking_mass_mailing/README.rst | 77 +++++++++ mail_tracking_mass_mailing/__init__.py | 6 + mail_tracking_mass_mailing/__openerp__.py | 28 ++++ mail_tracking_mass_mailing/hooks.py | 20 +++ mail_tracking_mass_mailing/i18n/ca.po | 142 ++++++++++++++++ mail_tracking_mass_mailing/i18n/de.po | 147 +++++++++++++++++ mail_tracking_mass_mailing/i18n/el_GR.po | 146 +++++++++++++++++ mail_tracking_mass_mailing/i18n/es.po | 148 +++++++++++++++++ mail_tracking_mass_mailing/i18n/es_CO.po | 142 ++++++++++++++++ mail_tracking_mass_mailing/i18n/fr.po | 148 +++++++++++++++++ mail_tracking_mass_mailing/i18n/hr.po | 146 +++++++++++++++++ mail_tracking_mass_mailing/i18n/it.po | 147 +++++++++++++++++ mail_tracking_mass_mailing/i18n/pt.po | 146 +++++++++++++++++ mail_tracking_mass_mailing/i18n/pt_BR.po | 147 +++++++++++++++++ mail_tracking_mass_mailing/i18n/sl.po | 151 ++++++++++++++++++ mail_tracking_mass_mailing/i18n/tr.po | 147 +++++++++++++++++ mail_tracking_mass_mailing/models/__init__.py | 10 ++ .../models/mail_mail.py | 24 +++ .../models/mail_mail_statistics.py | 16 ++ .../models/mail_mass_mailing.py | 31 ++++ .../models/mail_mass_mailing_contact.py | 35 ++++ .../models/mail_tracking_email.py | 58 +++++++ .../models/mail_tracking_event.py | 53 ++++++ .../static/description/icon.png | Bin 0 -> 9455 bytes mail_tracking_mass_mailing/tests/__init__.py | 5 + .../tests/test_mass_mailing.py | 131 +++++++++++++++ .../views/mail_mail_statistics_view.xml | 35 ++++ .../views/mail_mass_mailing_contact_view.xml | 32 ++++ .../views/mail_mass_mailing_view.xml | 46 ++++++ .../views/mail_tracking_email_view.xml | 20 +++ 30 files changed, 2384 insertions(+) create mode 100644 mail_tracking_mass_mailing/README.rst create mode 100644 mail_tracking_mass_mailing/__init__.py create mode 100644 mail_tracking_mass_mailing/__openerp__.py create mode 100644 mail_tracking_mass_mailing/hooks.py create mode 100644 mail_tracking_mass_mailing/i18n/ca.po create mode 100644 mail_tracking_mass_mailing/i18n/de.po create mode 100644 mail_tracking_mass_mailing/i18n/el_GR.po create mode 100644 mail_tracking_mass_mailing/i18n/es.po create mode 100644 mail_tracking_mass_mailing/i18n/es_CO.po create mode 100644 mail_tracking_mass_mailing/i18n/fr.po create mode 100644 mail_tracking_mass_mailing/i18n/hr.po create mode 100644 mail_tracking_mass_mailing/i18n/it.po create mode 100644 mail_tracking_mass_mailing/i18n/pt.po create mode 100644 mail_tracking_mass_mailing/i18n/pt_BR.po create mode 100644 mail_tracking_mass_mailing/i18n/sl.po create mode 100644 mail_tracking_mass_mailing/i18n/tr.po create mode 100644 mail_tracking_mass_mailing/models/__init__.py create mode 100644 mail_tracking_mass_mailing/models/mail_mail.py create mode 100644 mail_tracking_mass_mailing/models/mail_mail_statistics.py create mode 100644 mail_tracking_mass_mailing/models/mail_mass_mailing.py create mode 100644 mail_tracking_mass_mailing/models/mail_mass_mailing_contact.py create mode 100644 mail_tracking_mass_mailing/models/mail_tracking_email.py create mode 100644 mail_tracking_mass_mailing/models/mail_tracking_event.py create mode 100644 mail_tracking_mass_mailing/static/description/icon.png create mode 100644 mail_tracking_mass_mailing/tests/__init__.py create mode 100644 mail_tracking_mass_mailing/tests/test_mass_mailing.py create mode 100644 mail_tracking_mass_mailing/views/mail_mail_statistics_view.xml create mode 100644 mail_tracking_mass_mailing/views/mail_mass_mailing_contact_view.xml create mode 100644 mail_tracking_mass_mailing/views/mail_mass_mailing_view.xml create mode 100644 mail_tracking_mass_mailing/views/mail_tracking_email_view.xml diff --git a/mail_tracking_mass_mailing/README.rst b/mail_tracking_mass_mailing/README.rst new file mode 100644 index 000000000..9b8bc85e3 --- /dev/null +++ b/mail_tracking_mass_mailing/README.rst @@ -0,0 +1,77 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +============================== +Mail tracking for mass mailing +============================== + +Links mail statistics objects with mail tracking objects. + + +Installation +============ + +This addon will be automatically installed when 'mail_tracking' and +'mass_mailing' are both installed + + +Usage +===== + +From mail statistic object, you can see: +- Email tracking state +- Email related tracking object +- Email related tracking events + +From mass mailing contact, you can see: +- Email score, in order to clean up your lists from bad score emails + +As a bonus feature, you have a new checkbox 'Avoid resend' in mass mailing, +in order to not send twice the same email to the same recipient. This is very +useful when you want to resend the mass mailing after changing selection +recipients. Notice that recipient selection could be a domain over a model, so +result ids could change over the time. With this flag you can send +the same email several times but only once to each recipient. + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/205/8.0 + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed feedback. + +Credits +======= + +Images +------ + +* Odoo Community Association: `Icon `_. + +Contributors +------------ + +* Pedro M. Baeza +* Antonio Espinosa + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +To contribute to this module, please visit https://odoo-community.org. diff --git a/mail_tracking_mass_mailing/__init__.py b/mail_tracking_mass_mailing/__init__.py new file mode 100644 index 000000000..ba08c9ff4 --- /dev/null +++ b/mail_tracking_mass_mailing/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# © 2016 Antonio Espinosa - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import models +from .hooks import pre_init_hook diff --git a/mail_tracking_mass_mailing/__openerp__.py b/mail_tracking_mass_mailing/__openerp__.py new file mode 100644 index 000000000..0f01f6e0e --- /dev/null +++ b/mail_tracking_mass_mailing/__openerp__.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# © 2016 Antonio Espinosa - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + "name": "Mail tracking for mass mailing", + "summary": "Improve mass mailing email tracking", + "version": "8.0.1.0.1", + "category": "Social Network", + "website": "http://www.tecnativa.com", + "author": "Tecnativa, " + "Odoo Community Association (OCA)", + "license": "AGPL-3", + "application": False, + "installable": True, + 'auto_install': True, + "depends": [ + "mass_mailing", + "mail_tracking", + ], + "data": [ + "views/mail_tracking_email_view.xml", + "views/mail_mail_statistics_view.xml", + "views/mail_mass_mailing_view.xml", + "views/mail_mass_mailing_contact_view.xml", + ], + "pre_init_hook": "pre_init_hook", +} diff --git a/mail_tracking_mass_mailing/hooks.py b/mail_tracking_mass_mailing/hooks.py new file mode 100644 index 000000000..b3601a298 --- /dev/null +++ b/mail_tracking_mass_mailing/hooks.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# © 2016 Antonio Espinosa - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +import logging +try: + from openerp.addons.mail_tracking.hooks import column_add_with_value +except ImportError: + column_add_with_value = False + +_logger = logging.getLogger(__name__) + + +def pre_init_hook(cr): + if column_add_with_value: + _logger.info("Creating mail.mass_mailing.contact.email_score column " + "with value 50.0") + column_add_with_value( + cr, 'mail_mass_mailing_contact', 'email_score', 'double precision', + 50.0) diff --git a/mail_tracking_mass_mailing/i18n/ca.po b/mail_tracking_mass_mailing/i18n/ca.po new file mode 100644 index 000000000..272e10b1c --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/ca.po @@ -0,0 +1,142 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# Carles Antoli , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-08-17 02:42+0000\n" +"PO-Revision-Date: 2016-08-17 02:42+0000\n" +"Last-Translator: Carles Antoli , 2016\n" +"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail.statistics,tracking_state:0 +msgid "" +" * The 'Error' status indicates that there was an error when trying to sent the email, for example, 'No valid recipient'\n" +" * The 'Sent' status indicates that message was succesfully sent via outgoing email server (SMTP).\n" +" * The 'Delivered' status indicates that message was succesfully delivered to recipient Mail Exchange (MX) server.\n" +" * The 'Open' status indicates that message was opened or clicked by recipient.\n" +" * The 'Rejected' status indicates that recipient email address is blacklisted by outgoing email server (SMTP). It is recomended to delete this email address.\n" +" * The 'Spam' status indicates that outgoing email server (SMTP) consider this message as spam.\n" +" * The 'Unsubscribed' status indicates that recipient has requested to be unsubscribed from this message.\n" +" * The 'Bounced' status indicates that message was bounced by recipient Mail Exchange (MX) server.\n" +" * The 'Soft bounced' status indicates that message was soft bounced by recipient Mail Exchange (MX) server.\n" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing,avoid_resend:0 +msgid "Avoid resend" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mass_mailing,avoid_resend:0 +msgid "Avoid to send this mass mailing email twice to the same recipient" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "Estadístiques de correu electrònic" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "Correus sortints" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail.statistics,tracking_state:0 +msgid "State" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: code:addons/mail_tracking_mass_mailing/models/mail_mass_mailing.py:28 +#, python-format +msgid "" +"There is no more recipients to send and 'Avoid resend' option is enabled" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,tracking_email_ids:0 +msgid "Tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "" diff --git a/mail_tracking_mass_mailing/i18n/de.po b/mail_tracking_mass_mailing/i18n/de.po new file mode 100644 index 000000000..50f47410b --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/de.po @@ -0,0 +1,147 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# OCA Transbot , 2016 +# Rudolf Schnapka , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 18:06+0000\n" +"PO-Revision-Date: 2016-11-25 18:06+0000\n" +"Last-Translator: Rudolf Schnapka , 2016\n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing,avoid_resend:0 +msgid "Avoid resend" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mass_mailing,avoid_resend:0 +msgid "Avoid to send this mass mailing email twice to the same recipient" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "Email-Statistiken" + +#. module: mail_tracking_mass_mailing +#: view:mail.mass_mailing.contact:mail_tracking_mass_mailing.view_mail_mass_mailing_contact_search +#: field:mail.mass_mailing.contact,email_bounced:0 +msgid "Email bounced" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_email_menu +msgid "Emails" +msgstr "Emails" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_event_menu +msgid "Events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_menu +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_email +msgid "Mail tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_event +msgid "Mail tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +#: field:mail.tracking.event,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "Ausgehende Nachrichten" + +#. module: mail_tracking_mass_mailing +#: code:addons/mail_tracking_mass_mailing/models/mail_mass_mailing.py:28 +#, python-format +msgid "" +"There is no more recipients to send and 'Avoid resend' option is enabled" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "" diff --git a/mail_tracking_mass_mailing/i18n/el_GR.po b/mail_tracking_mass_mailing/i18n/el_GR.po new file mode 100644 index 000000000..1d1187c65 --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/el_GR.po @@ -0,0 +1,146 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# Kostas Goutoudis , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 18:06+0000\n" +"PO-Revision-Date: 2016-11-25 18:06+0000\n" +"Last-Translator: Kostas Goutoudis , 2016\n" +"Language-Team: Greek (Greece) (https://www.transifex.com/oca/teams/23907/el_GR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: el_GR\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing,avoid_resend:0 +msgid "Avoid resend" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mass_mailing,avoid_resend:0 +msgid "Avoid to send this mass mailing email twice to the same recipient" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "Χώρα" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mass_mailing.contact:mail_tracking_mass_mailing.view_mail_mass_mailing_contact_search +#: field:mail.mass_mailing.contact,email_bounced:0 +msgid "Email bounced" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_email_menu +msgid "Emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_event_menu +msgid "Events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_menu +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_email +msgid "Mail tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_event +msgid "Mail tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +#: field:mail.tracking.event,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: code:addons/mail_tracking_mass_mailing/models/mail_mass_mailing.py:28 +#, python-format +msgid "" +"There is no more recipients to send and 'Avoid resend' option is enabled" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "" diff --git a/mail_tracking_mass_mailing/i18n/es.po b/mail_tracking_mass_mailing/i18n/es.po new file mode 100644 index 000000000..976aef7cc --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/es.po @@ -0,0 +1,148 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# OCA Transbot , 2016 +# Gelo Joga Landoo , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 18:06+0000\n" +"PO-Revision-Date: 2016-11-25 18:06+0000\n" +"Last-Translator: Gelo Joga Landoo , 2016\n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing,avoid_resend:0 +msgid "Avoid resend" +msgstr "Evitar reenvios" + +#. module: mail_tracking_mass_mailing +#: help:mail.mass_mailing,avoid_resend:0 +msgid "Avoid to send this mass mailing email twice to the same recipient" +msgstr "" +"Evitar que se envíe este correo masivo dos veces al mismo destinatario" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "País" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "Estadísticas del email" + +#. module: mail_tracking_mass_mailing +#: view:mail.mass_mailing.contact:mail_tracking_mass_mailing.view_mail_mass_mailing_contact_search +#: field:mail.mass_mailing.contact,email_bounced:0 +msgid "Email bounced" +msgstr "E mail rebotado" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "Reputación del email" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_email_menu +msgid "Emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_event_menu +msgid "Events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "Mail ID" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "Estadísticas del email" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_menu +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "Seguimiento del email" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_email +msgid "Mail tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_event +msgid "Mail tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "MailTracking email" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "MailTracking event" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "Envío masivo" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "Contacto de envío masivo" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +#: field:mail.tracking.event,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "Envío masivo" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "Correos salientes" + +#. module: mail_tracking_mass_mailing +#: code:addons/mail_tracking_mass_mailing/models/mail_mass_mailing.py:28 +#, python-format +msgid "" +"There is no more recipients to send and 'Avoid resend' option is enabled" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "Eventos de seguimiento" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "Aplicación del usuario" diff --git a/mail_tracking_mass_mailing/i18n/es_CO.po b/mail_tracking_mass_mailing/i18n/es_CO.po new file mode 100644 index 000000000..362d52007 --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/es_CO.po @@ -0,0 +1,142 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# John Toro , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-08-17 02:42+0000\n" +"PO-Revision-Date: 2016-08-17 02:42+0000\n" +"Last-Translator: John Toro , 2016\n" +"Language-Team: Spanish (Colombia) (https://www.transifex.com/oca/teams/23907/es_CO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_CO\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail.statistics,tracking_state:0 +msgid "" +" * The 'Error' status indicates that there was an error when trying to sent the email, for example, 'No valid recipient'\n" +" * The 'Sent' status indicates that message was succesfully sent via outgoing email server (SMTP).\n" +" * The 'Delivered' status indicates that message was succesfully delivered to recipient Mail Exchange (MX) server.\n" +" * The 'Open' status indicates that message was opened or clicked by recipient.\n" +" * The 'Rejected' status indicates that recipient email address is blacklisted by outgoing email server (SMTP). It is recomended to delete this email address.\n" +" * The 'Spam' status indicates that outgoing email server (SMTP) consider this message as spam.\n" +" * The 'Unsubscribed' status indicates that recipient has requested to be unsubscribed from this message.\n" +" * The 'Bounced' status indicates that message was bounced by recipient Mail Exchange (MX) server.\n" +" * The 'Soft bounced' status indicates that message was soft bounced by recipient Mail Exchange (MX) server.\n" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing,avoid_resend:0 +msgid "Avoid resend" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mass_mailing,avoid_resend:0 +msgid "Avoid to send this mass mailing email twice to the same recipient" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "Correos Salientes" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail.statistics,tracking_state:0 +msgid "State" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: code:addons/mail_tracking_mass_mailing/models/mail_mass_mailing.py:28 +#, python-format +msgid "" +"There is no more recipients to send and 'Avoid resend' option is enabled" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,tracking_email_ids:0 +msgid "Tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "" diff --git a/mail_tracking_mass_mailing/i18n/fr.po b/mail_tracking_mass_mailing/i18n/fr.po new file mode 100644 index 000000000..184a52388 --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/fr.po @@ -0,0 +1,148 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 18:06+0000\n" +"PO-Revision-Date: 2016-11-25 18:06+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing,avoid_resend:0 +msgid "Avoid resend" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mass_mailing,avoid_resend:0 +msgid "Avoid to send this mass mailing email twice to the same recipient" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "Pays" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "Parcours de discussion" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "Statistiques de courriel" + +#. module: mail_tracking_mass_mailing +#: view:mail.mass_mailing.contact:mail_tracking_mass_mailing.view_mail_mass_mailing_contact_search +#: field:mail.mass_mailing.contact,email_bounced:0 +msgid "Email bounced" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "Score du courriel" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_email_menu +msgid "Emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_event_menu +msgid "Events" +msgstr "Événements" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_menu +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_email +msgid "Mail tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_event +msgid "Mail tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "Suivi du courriel: courriel" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "Suivi du courriel: évènement" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "Publipostage" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "Contact de la liste de diffusion" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +#: field:mail.tracking.event,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "Publipostage" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "Courriels sortants" + +#. module: mail_tracking_mass_mailing +#: code:addons/mail_tracking_mass_mailing/models/mail_mass_mailing.py:28 +#, python-format +msgid "" +"There is no more recipients to send and 'Avoid resend' option is enabled" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "Suivi du courriel: évènements" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" +"Utilisé pour afficher des messages dans une zone de discussion employant un " +"chemin unique;" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "Navigateur" diff --git a/mail_tracking_mass_mailing/i18n/hr.po b/mail_tracking_mass_mailing/i18n/hr.po new file mode 100644 index 000000000..9db970f40 --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/hr.po @@ -0,0 +1,146 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-29 17:50+0000\n" +"PO-Revision-Date: 2016-11-29 17:50+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: hr\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing,avoid_resend:0 +msgid "Avoid resend" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mass_mailing,avoid_resend:0 +msgid "Avoid to send this mass mailing email twice to the same recipient" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "Statistika e-maila" + +#. module: mail_tracking_mass_mailing +#: view:mail.mass_mailing.contact:mail_tracking_mass_mailing.view_mail_mass_mailing_contact_search +#: field:mail.mass_mailing.contact,email_bounced:0 +msgid "Email bounced" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_email_menu +msgid "Emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_event_menu +msgid "Events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_menu +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_email +msgid "Mail tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_event +msgid "Mail tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "Kontakti za masovno slanje" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +#: field:mail.tracking.event,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: code:addons/mail_tracking_mass_mailing/models/mail_mass_mailing.py:28 +#, python-format +msgid "" +"There is no more recipients to send and 'Avoid resend' option is enabled" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "" diff --git a/mail_tracking_mass_mailing/i18n/it.po b/mail_tracking_mass_mailing/i18n/it.po new file mode 100644 index 000000000..b2ea3157b --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/it.po @@ -0,0 +1,147 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# OCA Transbot , 2016 +# Paolo Valier , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-29 17:50+0000\n" +"PO-Revision-Date: 2016-11-29 17:50+0000\n" +"Last-Translator: Paolo Valier , 2016\n" +"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing,avoid_resend:0 +msgid "Avoid resend" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mass_mailing,avoid_resend:0 +msgid "Avoid to send this mass mailing email twice to the same recipient" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mass_mailing.contact:mail_tracking_mass_mailing.view_mail_mass_mailing_contact_search +#: field:mail.mass_mailing.contact,email_bounced:0 +msgid "Email bounced" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_email_menu +msgid "Emails" +msgstr "Email" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_event_menu +msgid "Events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_menu +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_email +msgid "Mail tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_event +msgid "Mail tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "Contatto Mass Mailing" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +#: field:mail.tracking.event,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "Mail in Uscita" + +#. module: mail_tracking_mass_mailing +#: code:addons/mail_tracking_mass_mailing/models/mail_mass_mailing.py:28 +#, python-format +msgid "" +"There is no more recipients to send and 'Avoid resend' option is enabled" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "" diff --git a/mail_tracking_mass_mailing/i18n/pt.po b/mail_tracking_mass_mailing/i18n/pt.po new file mode 100644 index 000000000..873ed8eed --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/pt.po @@ -0,0 +1,146 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# Tiago Baptista , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 18:06+0000\n" +"PO-Revision-Date: 2016-11-25 18:06+0000\n" +"Last-Translator: Tiago Baptista , 2016\n" +"Language-Team: Portuguese (https://www.transifex.com/oca/teams/23907/pt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing,avoid_resend:0 +msgid "Avoid resend" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mass_mailing,avoid_resend:0 +msgid "Avoid to send this mass mailing email twice to the same recipient" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "País" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mass_mailing.contact:mail_tracking_mass_mailing.view_mail_mass_mailing_contact_search +#: field:mail.mass_mailing.contact,email_bounced:0 +msgid "Email bounced" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_email_menu +msgid "Emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_event_menu +msgid "Events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_menu +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_email +msgid "Mail tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_event +msgid "Mail tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +#: field:mail.tracking.event,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: code:addons/mail_tracking_mass_mailing/models/mail_mass_mailing.py:28 +#, python-format +msgid "" +"There is no more recipients to send and 'Avoid resend' option is enabled" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "" diff --git a/mail_tracking_mass_mailing/i18n/pt_BR.po b/mail_tracking_mass_mailing/i18n/pt_BR.po new file mode 100644 index 000000000..80f53d7fc --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/pt_BR.po @@ -0,0 +1,147 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# OCA Transbot , 2016 +# Armando Vulcano Junior , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 18:06+0000\n" +"PO-Revision-Date: 2016-11-25 18:06+0000\n" +"Last-Translator: Armando Vulcano Junior , 2016\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/23907/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing,avoid_resend:0 +msgid "Avoid resend" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mass_mailing,avoid_resend:0 +msgid "Avoid to send this mass mailing email twice to the same recipient" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mass_mailing.contact:mail_tracking_mass_mailing.view_mail_mass_mailing_contact_search +#: field:mail.mass_mailing.contact,email_bounced:0 +msgid "Email bounced" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_email_menu +msgid "Emails" +msgstr "Emails" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_event_menu +msgid "Events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_menu +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_email +msgid "Mail tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_event +msgid "Mail tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +#: field:mail.tracking.event,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "Mails de Saída" + +#. module: mail_tracking_mass_mailing +#: code:addons/mail_tracking_mass_mailing/models/mail_mass_mailing.py:28 +#, python-format +msgid "" +"There is no more recipients to send and 'Avoid resend' option is enabled" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "" diff --git a/mail_tracking_mass_mailing/i18n/sl.po b/mail_tracking_mass_mailing/i18n/sl.po new file mode 100644 index 000000000..0bd40aa3b --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/sl.po @@ -0,0 +1,151 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# OCA Transbot , 2016 +# Matjaž Mozetič , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 18:06+0000\n" +"PO-Revision-Date: 2016-11-25 18:06+0000\n" +"Last-Translator: Matjaž Mozetič , 2016\n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing,avoid_resend:0 +msgid "Avoid resend" +msgstr "Izogibaj se ponovnemu pošiljanju" + +#. module: mail_tracking_mass_mailing +#: help:mail.mass_mailing,avoid_resend:0 +msgid "Avoid to send this mass mailing email twice to the same recipient" +msgstr "Izogibaj se dvakratnemu masovnemu pošiljanju istemu prejemniku." + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "Država" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "Pot do razprave" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "Statistika e-pošte" + +#. module: mail_tracking_mass_mailing +#: view:mail.mass_mailing.contact:mail_tracking_mass_mailing.view_mail_mass_mailing_contact_search +#: field:mail.mass_mailing.contact,email_bounced:0 +msgid "Email bounced" +msgstr "E-pošta odbita" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "Točkovanje e-pošte" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_email_menu +msgid "Emails" +msgstr "E-poštna sporočila" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_event_menu +msgid "Events" +msgstr "Dogodki" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "ID pošte" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "Poštna statistika" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_menu +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "Sledenje pošte" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_email +msgid "Mail tracking emails" +msgstr "Sledilna sporočila" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_event +msgid "Mail tracking events" +msgstr "Sledilni dogodki" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "Sledenje e-pošte" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "Dogodek sledenja e-pošte" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "Masovno razpošiljanje" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "Stik masovne pošte" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +#: field:mail.tracking.event,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "Masovna pošta" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "Izhodna pošta" + +#. module: mail_tracking_mass_mailing +#: code:addons/mail_tracking_mass_mailing/models/mail_mass_mailing.py:28 +#, python-format +msgid "" +"There is no more recipients to send and 'Avoid resend' option is enabled" +msgstr "" +"Ni več potencialnih prejemnikov, pa tudi opcija 'Izogibaj se ponovnemu " +"pošiljanju' je omogočena." + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "Sledilni dogodki" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" +"Uporabljeno za prikaz sporočil v sklopu razgovora na osnovi odstavkov z " +"uporabo unikatne poti;" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "Uporabnikov odjemalec" diff --git a/mail_tracking_mass_mailing/i18n/tr.po b/mail_tracking_mass_mailing/i18n/tr.po new file mode 100644 index 000000000..74194bedc --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/tr.po @@ -0,0 +1,147 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# OCA Transbot , 2016 +# Ahmet Altinisik , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-24 06:25+0000\n" +"PO-Revision-Date: 2016-12-24 06:25+0000\n" +"Last-Translator: Ahmet Altinisik , 2016\n" +"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: tr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing,avoid_resend:0 +msgid "Avoid resend" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mass_mailing,avoid_resend:0 +msgid "Avoid to send this mass mailing email twice to the same recipient" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "Ülke" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mass_mailing.contact:mail_tracking_mass_mailing.view_mail_mass_mailing_contact_search +#: field:mail.mass_mailing.contact,email_bounced:0 +msgid "Email bounced" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_email_menu +msgid "Emails" +msgstr "Epostalar" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_event_menu +msgid "Events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_menu +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_email +msgid "Mail tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_event +msgid "Mail tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +#: field:mail.tracking.event,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: code:addons/mail_tracking_mass_mailing/models/mail_mass_mailing.py:28 +#, python-format +msgid "" +"There is no more recipients to send and 'Avoid resend' option is enabled" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "" diff --git a/mail_tracking_mass_mailing/models/__init__.py b/mail_tracking_mass_mailing/models/__init__.py new file mode 100644 index 000000000..94fdb95ce --- /dev/null +++ b/mail_tracking_mass_mailing/models/__init__.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# © 2016 Antonio Espinosa - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import mail_mail +from . import mail_tracking_email +from . import mail_tracking_event +from . import mail_mail_statistics +from . import mail_mass_mailing +from . import mail_mass_mailing_contact diff --git a/mail_tracking_mass_mailing/models/mail_mail.py b/mail_tracking_mass_mailing/models/mail_mail.py new file mode 100644 index 000000000..952d3b42d --- /dev/null +++ b/mail_tracking_mass_mailing/models/mail_mail.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# © 2016 Antonio Espinosa - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, api + + +class MailMail(models.Model): + _inherit = "mail.mail" + + @api.model + def _tracking_email_prepare(self, mail, partner, email): + res = super(MailMail, self)._tracking_email_prepare( + mail, partner, email) + res['mail_id_int'] = mail.id + res['mass_mailing_id'] = mail.mailing_id.id + res['mail_stats_id'] = mail.statistics_ids[:1].id \ + if mail.statistics_ids else False + return res + + @api.model + def _get_tracking_url(self, mail, partner=None): + # Invalid this tracking image, we have other to do the same + return False diff --git a/mail_tracking_mass_mailing/models/mail_mail_statistics.py b/mail_tracking_mass_mailing/models/mail_mail_statistics.py new file mode 100644 index 000000000..dbcfe9bd2 --- /dev/null +++ b/mail_tracking_mass_mailing/models/mail_mail_statistics.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# © 2016 Antonio Espinosa - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields + + +class MailMailStatistics(models.Model): + _inherit = "mail.mail.statistics" + + mail_tracking_id = fields.Many2one( + string="Mail tracking", comodel_name='mail.tracking.email', + readonly=True) + tracking_event_ids = fields.One2many( + string="Tracking events", comodel_name='mail.tracking.event', + related='mail_tracking_id.tracking_event_ids', readonly=True) diff --git a/mail_tracking_mass_mailing/models/mail_mass_mailing.py b/mail_tracking_mass_mailing/models/mail_mass_mailing.py new file mode 100644 index 000000000..db32bc8d8 --- /dev/null +++ b/mail_tracking_mass_mailing/models/mail_mass_mailing.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# © 2016 Antonio Espinosa - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, api, fields, _ +from openerp.exceptions import Warning as UserError + + +class MailMassMailing(models.Model): + _inherit = 'mail.mass_mailing' + + avoid_resend = fields.Boolean( + string="Avoid resend", + help="Avoid to send this mass mailing email twice " + "to the same recipient") + + @api.model + def get_recipients(self, mailing): + res_ids = super(MailMassMailing, self).get_recipients(mailing) + if mailing.avoid_resend: + already_sent = self.env['mail.mail.statistics'].search([ + ('mass_mailing_id', '=', mailing.id), + ('model', '=', mailing.mailing_model), + ]) + res_ids = list(set(res_ids).difference( + already_sent.mapped('res_id'))) + if not res_ids: + raise UserError(_( + "There is no more recipients to send and 'Avoid resend' " + "option is enabled")) + return res_ids diff --git a/mail_tracking_mass_mailing/models/mail_mass_mailing_contact.py b/mail_tracking_mass_mailing/models/mail_mass_mailing_contact.py new file mode 100644 index 000000000..4edbcf6bb --- /dev/null +++ b/mail_tracking_mass_mailing/models/mail_mass_mailing_contact.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# © 2016 Antonio Espinosa - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, api, fields + + +class MailMassMailingContact(models.Model): + _inherit = 'mail.mass_mailing.contact' + + email_bounced = fields.Boolean(string="Email bounced") + email_score = fields.Float( + string="Email score", readonly=True, store=False, + compute='_compute_email_score') + + @api.multi + @api.depends('email') + def _compute_email_score(self): + for contact in self.filtered('email'): + contact.email_score = self.env['mail.tracking.email'].\ + email_score_from_email(contact.email) + + @api.multi + def email_bounced_set(self, tracking_emails, reason, event=None): + contacts = self.filtered(lambda r: not r.email_bounced) + return contacts.write({'email_bounced': True}) + + @api.multi + def write(self, vals): + email = vals.get('email') + if email is not None: + vals['email_bounced'] = ( + bool(email) and + self.env['mail.tracking.email'].email_is_bounced(email)) + return super(MailMassMailingContact, self).write(vals) diff --git a/mail_tracking_mass_mailing/models/mail_tracking_email.py b/mail_tracking_mass_mailing/models/mail_tracking_email.py new file mode 100644 index 000000000..83aca64fc --- /dev/null +++ b/mail_tracking_mass_mailing/models/mail_tracking_email.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +# © 2016 Antonio Espinosa - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api + + +class MailTrackingEmail(models.Model): + _inherit = "mail.tracking.email" + + mass_mailing_id = fields.Many2one( + string="Mass mailing", comodel_name='mail.mass_mailing', readonly=True) + mail_stats_id = fields.Many2one( + string="Mail statistics", comodel_name='mail.mail.statistics', + readonly=True) + mail_id_int = fields.Integer(string="Mail ID", readonly=True) + + @api.model + def _statistics_link_prepare(self, tracking): + """Inherit this method to link other object to mail.mail.statistics""" + return { + 'mail_tracking_id': tracking.id, + } + + @api.model + def create(self, vals): + tracking = super(MailTrackingEmail, self).create(vals) + # Link mail statistics with this tracking + if tracking.mail_stats_id: + tracking.mail_stats_id.write( + self._statistics_link_prepare(tracking)) + return tracking + + @api.multi + def _contacts_email_bounced_set(self, reason, event=None): + recipients = [] + if event and event.recipient_address: + recipients.append(event.recipient_address) + else: + recipients = list(filter(None, self.mapped('recipient_address'))) + for recipient in recipients: + self.env['mail.mass_mailing.contact'].search([ + ('email', '=ilike', recipient) + ]).email_bounced_set(self, reason, event=event) + + @api.multi + def smtp_error(self, mail_server, smtp_server, exception): + res = super(MailTrackingEmail, self).smtp_error( + mail_server, smtp_server, exception) + self._contacts_email_bounced_set('error') + return res + + @api.multi + def event_create(self, event_type, metadata): + res = super(MailTrackingEmail, self).event_create(event_type, metadata) + if event_type in {'hard_bounce', 'spam', 'reject'}: + self._contacts_email_bounced_set(event_type) + return res diff --git a/mail_tracking_mass_mailing/models/mail_tracking_event.py b/mail_tracking_mass_mailing/models/mail_tracking_event.py new file mode 100644 index 000000000..f18d5166a --- /dev/null +++ b/mail_tracking_mass_mailing/models/mail_tracking_event.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# © 2016 Antonio Espinosa - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import api, fields, models + + +class MailTrackingEvent(models.Model): + _inherit = "mail.tracking.event" + + mass_mailing_id = fields.Many2one( + string="Mass mailing", comodel_name='mail.mass_mailing', readonly=True, + related='tracking_email_id.mass_mailing_id', store=True) + + @api.model + def process_open(self, tracking_email, metadata): + res = super(MailTrackingEvent, self).process_open( + tracking_email, metadata) + mail_mail_stats = self.sudo().env['mail.mail.statistics'] + mail_mail_stats.set_opened(mail_mail_ids=[tracking_email.mail_id_int]) + return res + + def _tracking_set_bounce(self, tracking_email, metadata): + mail_mail_stats = self.sudo().env['mail.mail.statistics'] + mail_mail_stats.set_bounced(mail_mail_ids=[tracking_email.mail_id_int]) + + @api.model + def process_hard_bounce(self, tracking_email, metadata): + res = super(MailTrackingEvent, self).process_hard_bounce( + tracking_email, metadata) + self._tracking_set_bounce(tracking_email, metadata) + return res + + @api.model + def process_soft_bounce(self, tracking_email, metadata): + res = super(MailTrackingEvent, self).process_soft_bounce( + tracking_email, metadata) + self._tracking_set_bounce(tracking_email, metadata) + return res + + @api.model + def process_reject(self, tracking_email, metadata): + res = super(MailTrackingEvent, self).process_reject( + tracking_email, metadata) + self._tracking_set_bounce(tracking_email, metadata) + return res + + @api.model + def process_spam(self, tracking_email, metadata): + res = super(MailTrackingEvent, self).process_spam( + tracking_email, metadata) + self._tracking_set_bounce(tracking_email, metadata) + return res diff --git a/mail_tracking_mass_mailing/static/description/icon.png b/mail_tracking_mass_mailing/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/mail_tracking_mass_mailing/tests/__init__.py b/mail_tracking_mass_mailing/tests/__init__.py new file mode 100644 index 000000000..b804cd496 --- /dev/null +++ b/mail_tracking_mass_mailing/tests/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# © 2016 Antonio Espinosa - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import test_mass_mailing diff --git a/mail_tracking_mass_mailing/tests/test_mass_mailing.py b/mail_tracking_mass_mailing/tests/test_mass_mailing.py new file mode 100644 index 000000000..d086d7367 --- /dev/null +++ b/mail_tracking_mass_mailing/tests/test_mass_mailing.py @@ -0,0 +1,131 @@ +# -*- coding: utf-8 -*- +# © 2016 Antonio Espinosa - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +import mock +from openerp.tests.common import TransactionCase +from openerp.exceptions import Warning as UserError + +mock_send_email = ('openerp.addons.base.ir.ir_mail_server.' + 'ir_mail_server.send_email') + + +class TestMassMailing(TransactionCase): + def setUp(self, *args, **kwargs): + super(TestMassMailing, self).setUp(*args, **kwargs) + self.list = self.env['mail.mass_mailing.list'].create({ + 'name': 'Test mail tracking', + }) + self.contact_a = self.env['mail.mass_mailing.contact'].create({ + 'list_id': self.list.id, + 'name': 'Test contact A', + 'email': 'contact_a@example.com', + }) + self.mailing = self.env['mail.mass_mailing'].create({ + 'name': 'Test subject', + 'email_from': 'from@example.com', + 'mailing_model': 'mail.mass_mailing.contact', + 'mailing_domain': "[('list_id', 'in', [%d]), " + "('opt_out', '=', False)]" % self.list.id, + 'contact_list_ids': [(6, False, [self.list.id])], + 'body_html': '

Test email body

', + 'reply_to_mode': 'email', + }) + + def resend_mass_mailing(self, first, second): + self.mailing.send_mail() + self.assertEqual(len(self.mailing.statistics_ids), first) + self.env['mail.mass_mailing.contact'].create({ + 'list_id': self.list.id, + 'name': 'Test contact B', + 'email': 'contact_b@example.com', + }) + self.mailing.send_mail() + self.assertEqual(len(self.mailing.statistics_ids), second) + + def test_avoid_resend_enable(self): + self.mailing.avoid_resend = True + self.resend_mass_mailing(1, 2) + with self.assertRaises(UserError): + self.mailing.send_mail() + + def test_avoid_resend_disable(self): + self.mailing.avoid_resend = False + self.resend_mass_mailing(1, 3) + + def test_smtp_error(self): + with mock.patch(mock_send_email) as mock_func: + mock_func.side_effect = Warning('Test error') + self.mailing.send_mail() + for stat in self.mailing.statistics_ids: + if stat.mail_mail_id: + stat.mail_mail_id.send() + tracking = self.env['mail.tracking.email'].search([ + ('mail_id_int', '=', stat.mail_mail_id_int), + ]) + self.assertEqual('error', tracking.state) + self.assertEqual('Warning', tracking.error_type) + self.assertEqual('Test error', tracking.error_description) + self.assertTrue(self.contact_a.email_bounced) + + def test_tracking_email_link(self): + self.mailing.send_mail() + for stat in self.mailing.statistics_ids: + if stat.mail_mail_id: + stat.mail_mail_id.send() + tracking_email = self.env['mail.tracking.email'].search([ + ('mail_id_int', '=', stat.mail_mail_id_int), + ]) + self.assertTrue(tracking_email) + self.assertEqual( + tracking_email.mass_mailing_id.id, self.mailing.id) + self.assertEqual(tracking_email.mail_stats_id.id, stat.id) + self.assertEqual(stat.mail_tracking_id.id, tracking_email.id) + # And now open the email + metadata = { + 'ip': '127.0.0.1', + 'user_agent': 'Odoo Test/1.0', + 'os_family': 'linux', + 'ua_family': 'odoo', + } + tracking_email.event_create('open', metadata) + self.assertTrue(stat.opened) + + def _tracking_email_bounce(self, event_type, state): + self.mailing.send_mail() + for stat in self.mailing.statistics_ids: + if stat.mail_mail_id: + stat.mail_mail_id.send() + tracking_email = self.env['mail.tracking.email'].search([ + ('mail_id_int', '=', stat.mail_mail_id_int), + ]) + # And now mark the email as bounce + metadata = { + 'bounce_type': '499', + 'bounce_description': 'Unable to connect to MX servers', + } + tracking_email.event_create(event_type, metadata) + self.assertTrue(stat.bounced) + + def test_tracking_email_hard_bounce(self): + self._tracking_email_bounce('hard_bounce', 'bounced') + + def test_tracking_email_soft_bounce(self): + self._tracking_email_bounce('soft_bounce', 'soft-bounced') + + def test_tracking_email_reject(self): + self._tracking_email_bounce('reject', 'rejected') + + def test_tracking_email_spam(self): + self._tracking_email_bounce('spam', 'spam') + + def test_contact_tracking_emails(self): + self._tracking_email_bounce('hard_bounce', 'bounced') + self.assertTrue(self.contact_a.email_bounced) + self.assertTrue(self.contact_a.email_score < 50.0) + self.contact_a.email = 'other_contact_a@example.com' + self.assertFalse(self.contact_a.email_bounced) + self.assertTrue(self.contact_a.email_score == 50.0) + self.contact_a.email = 'contact_a@example.com' + self.assertTrue(self.contact_a.email_bounced) + self.assertTrue(self.contact_a.email_score < 50.0) diff --git a/mail_tracking_mass_mailing/views/mail_mail_statistics_view.xml b/mail_tracking_mass_mailing/views/mail_mail_statistics_view.xml new file mode 100644 index 000000000..d67ddd219 --- /dev/null +++ b/mail_tracking_mass_mailing/views/mail_mail_statistics_view.xml @@ -0,0 +1,35 @@ + + + + + + + Add tracking email info + mail.mail.statistics + + + + + + + + + + + + diff --git a/mail_tracking_mass_mailing/views/mail_mass_mailing_contact_view.xml b/mail_tracking_mass_mailing/views/mail_mass_mailing_contact_view.xml new file mode 100644 index 000000000..967cabccb --- /dev/null +++ b/mail_tracking_mass_mailing/views/mail_mass_mailing_contact_view.xml @@ -0,0 +1,32 @@ + + + + + + + Add email score and stars + mail.mass_mailing.contact + + + + + + + + + + + Filter bounced contacts + mail.mass_mailing.contact + + + + + + + + + + diff --git a/mail_tracking_mass_mailing/views/mail_mass_mailing_view.xml b/mail_tracking_mass_mailing/views/mail_mass_mailing_view.xml new file mode 100644 index 000000000..b0c0ae4cc --- /dev/null +++ b/mail_tracking_mass_mailing/views/mail_mass_mailing_view.xml @@ -0,0 +1,46 @@ + + + + + + + Add avoid resend field + mail.mass_mailing + + + + + + + + + + Mail tracking emails + mail.tracking.email + form + tree,form + [('mass_mailing_id', '!=', False)] + + + + Mail tracking events + mail.tracking.event + form + tree,form + [('mass_mailing_id', '!=', False)] + + + + + + + + + + diff --git a/mail_tracking_mass_mailing/views/mail_tracking_email_view.xml b/mail_tracking_mass_mailing/views/mail_tracking_email_view.xml new file mode 100644 index 000000000..5549650e3 --- /dev/null +++ b/mail_tracking_mass_mailing/views/mail_tracking_email_view.xml @@ -0,0 +1,20 @@ + + + + + + + Add mass mailing and mail stadistics + mail.tracking.email + + + + + + + + + + +