From 57facf47cd80688ac1e96ba6de2261ce2e87d20c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?=
Date: Thu, 27 Dec 2012 17:43:16 +0100
Subject: [PATCH 01/79] [IMP] Invite wizard: show emails of partners you choose
as recipients.
bzr revid: tde@openerp.com-20121227164316-8bfs1m6vs2sonits
---
addons/mail/wizard/invite_view.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/mail/wizard/invite_view.xml b/addons/mail/wizard/invite_view.xml
index 5b3b679ae9f..e957d546d37 100644
--- a/addons/mail/wizard/invite_view.xml
+++ b/addons/mail/wizard/invite_view.xml
@@ -13,7 +13,7 @@
+ context="{'force_email':True, 'show_email':True}"/>
From 92b9d1222227ee13ff982f1dcba83a19f7a86cde Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?=
Date: Thu, 27 Dec 2012 17:43:36 +0100
Subject: [PATCH 02/79] [FIX] Invite wizard: model and res_id were overrided
with False by default, not necessary.
bzr revid: tde@openerp.com-20121227164336-22ejph1imvl6hl65
---
addons/mail/wizard/invite.py | 2 --
1 file changed, 2 deletions(-)
diff --git a/addons/mail/wizard/invite.py b/addons/mail/wizard/invite.py
index ee3053014af..9d100da1b87 100644
--- a/addons/mail/wizard/invite.py
+++ b/addons/mail/wizard/invite.py
@@ -69,8 +69,6 @@ class invite_wizard(osv.osv_memory):
'subject': 'Invitation to follow %s' % document.name_get()[0][1],
'body_html': '%s' % wizard.message,
'auto_delete': True,
- 'res_id': False,
- 'model': False,
}, context=context)
mail_mail.send(cr, uid, [mail_id], recipient_ids=[follower_id], context=context)
return {'type': 'ir.actions.act_window_close'}
From 57eb08beab177d67a49b6d50b9be0927192d86de Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?=
Date: Thu, 27 Dec 2012 17:44:25 +0100
Subject: [PATCH 03/79] [REM] mail_followers: removed unnecessary code about
notifications for messages we cannot read, because this makes no sense with
our access rules (you see when you have a notification -> mutualy exclusive).
bzr revid: tde@openerp.com-20121227164425-gvxrcq5rgk51k532
---
addons/mail/mail_followers.py | 7 -------
1 file changed, 7 deletions(-)
diff --git a/addons/mail/mail_followers.py b/addons/mail/mail_followers.py
index 66da33d35f0..ec9bc86d6c5 100644
--- a/addons/mail/mail_followers.py
+++ b/addons/mail/mail_followers.py
@@ -75,13 +75,6 @@ class mail_notification(osv.Model):
if not cr.fetchone():
cr.execute('CREATE INDEX mail_notification_partner_id_read_starred_message_id ON mail_notification (partner_id, read, starred, message_id)')
- def create(self, cr, uid, vals, context=None):
- """ Override of create to check that we can not create a notification
- for a message the user can not read. """
- if self.pool.get('mail.message').check_access_rights(cr, uid, 'read'):
- return super(mail_notification, self).create(cr, uid, vals, context=context)
- return False
-
def get_partners_to_notify(self, cr, uid, message, context=None):
""" Return the list of partners to notify, based on their preferences.
From 876e53dfcf70ec6ebd61afd60b73d3237c43786a Mon Sep 17 00:00:00 2001
From: Christophe Matthieu
Date: Mon, 31 Dec 2012 15:22:50 +0100
Subject: [PATCH 04/79] [IMP] mail: add email_from like partner before opening
wizard composer
bzr revid: chm@openerp.com-20121231142250-ykdxaqoqfvush1ah
---
addons/mail/static/src/js/mail.js | 84 ++++++++++++++++---------------
1 file changed, 43 insertions(+), 41 deletions(-)
diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js
index f8643e94bb3..953cc907f25 100644
--- a/addons/mail/static/src/js/mail.js
+++ b/addons/mail/static/src/js/mail.js
@@ -370,6 +370,7 @@ openerp.mail = function (session) {
this.show_compact_message = false;
this.show_delete_attachment = true;
this.emails_from = [];
+ this.partners_from = [];
},
start: function () {
@@ -494,43 +495,41 @@ openerp.mail = function (session) {
this.$(".oe_msg_attachment_list").on('click', '.oe_delete', this.on_attachment_delete);
this.$(".oe_emails_from").on('change', 'input', this.on_checked_email_from);
+ this.$(".oe_partners_from").on('change', 'input', this.on_checked_partner_from);
},
on_compose_fullmail: function (default_composition_mode) {
-
+ var self = this;
if(!this.do_check_attachment_upload()) {
return false;
}
- if (default_composition_mode == 'reply') {
+ // create list of new partners
+ var extra_email = _.map(_.filter(this.emails_from, function (f) {return f[1]}), function (f) {return f[0]});
+ this.check_recipient_partners(extra_email).done(function () {
var context = {
+ 'default_model': default_composition_mode == 'reply' ? undefined : self.context.default_model,
+ 'default_res_id': default_composition_mode == 'reply' ? undefined : self.context.default_res_id,
'default_composition_mode': default_composition_mode,
- 'default_parent_id': this.id,
- 'default_body': mail.ChatterUtils.get_text2html(this.$el ? (this.$el.find('textarea:not(.oe_compact)').val() || '') : ''),
- 'default_attachment_ids': this.attachment_ids,
+ 'default_parent_id': self.id,
+ 'default_body': mail.ChatterUtils.get_text2html(self.$el ? (self.$el.find('textarea:not(.oe_compact)').val() || '') : ''),
+ 'default_attachment_ids': self.attachment_ids,
+ 'default_partner_ids': _.map(_.filter(self.partners_from, function (f) {return f[1]}), function (f) {return f[0]}),
};
- } else {
- var context = {
- 'default_model': this.context.default_model,
- 'default_res_id': this.context.default_res_id,
- 'default_composition_mode': default_composition_mode,
- 'default_parent_id': this.id,
- 'default_body': mail.ChatterUtils.get_text2html(this.$el ? (this.$el.find('textarea:not(.oe_compact)').val() || '') : ''),
- 'default_attachment_ids': this.attachment_ids,
+ var action = {
+ type: 'ir.actions.act_window',
+ res_model: 'mail.compose.message',
+ view_mode: 'form',
+ view_type: 'form',
+ views: [[false, 'form']],
+ target: 'new',
+ context: context,
};
- }
- var action = {
- type: 'ir.actions.act_window',
- res_model: 'mail.compose.message',
- view_mode: 'form',
- view_type: 'form',
- views: [[false, 'form']],
- target: 'new',
- context: context,
- };
- this.do_action(action);
- this.on_cancel();
+ self.do_action(action);
+ self.on_cancel();
+ });
+
},
reinit: function() {
@@ -564,14 +563,13 @@ openerp.mail = function (session) {
check_recipient_partners: function (emails) {
var self = this;
+ self.partners_from = [];
var deferreds = [];
- for (var i = 0; i < emails.length; i++) {
- deferreds.push($.Deferred());
- }
var ds_partner = new session.web.DataSetSearch(this, 'res.partner');
_.each(emails, function (email) {
- ds_partner.call('search', [[['email', 'ilike', email]]]).then(function (partner_ids) {
- var deferred = deferreds[_.indexOf(emails, email)];
+ var deferred = $.Deferred();
+ deferreds.push(deferred);
+ ds_partner.call('search', [[['email', 'like', email]]]).then(function (partner_ids) {
if (!partner_ids.length) {
var pop = new session.web.form.FormOpenPopup(this);
pop.show_element(
@@ -586,17 +584,22 @@ openerp.mail = function (session) {
title: _t("Please complete partner's informations"),
}
);
- pop.on('write_completed, closed', self, function () {
+ pop.on('closed', self, function () {
+ deferred.resolve();
+ });
+ pop.on('saved', self, function (id) {
+ self.partners_from.push([id, true]);
deferred.resolve();
});
}
else {
+ self.partners_from.push([partner_ids[0], true]);
deferred.resolve();
}
return deferred;
});
});
- return $.when.apply( $, deferreds ).done();
+ return $.when.apply( $, deferreds );
},
on_message_post: function (event) {
@@ -639,7 +642,7 @@ openerp.mail = function (session) {
/* convert the compact mode into the compose message
*/
on_compose_expandable: function (event) {
- this.get_emails_from();
+ this.get_from();
if ((!this.stay_open || (event && event.type == 'click')) && (!this.show_composer || !this.$('textarea:not(.oe_compact)').val().match(/\S+/) && !this.attachment_ids.length)) {
this.show_composer = !this.show_composer || this.stay_open;
this.reinit();
@@ -664,7 +667,7 @@ openerp.mail = function (session) {
}
},
- get_emails_from: function () {
+ get_from: function () {
var self = this;
var messages = [];
@@ -678,13 +681,12 @@ openerp.mail = function (session) {
_.each(this.options.root_thread.messages, function (msg) {messages.push(msg); messages.concat(msg.get_childs());});
}
- var emails_from = _.map(_.filter(messages,
- function (thread) {return thread.author_id && !thread.author_id[0];}),
- function (thread) {return thread.author_id[1];});
+ _.each(messages, function (thread) {
+ if (thread.author_id && !thread.author_id[0] &&
+ !_.find(self.emails_from, function (from) {return from[0] == thread.author_id[1];})) {
+
+ self.emails_from.push([thread.author_id[1], true]);
- return _.each(emails_from, function (email_from) {
- if (!_.find(self.emails_from, function (from) {return from[0] == email_from;})) {
- self.emails_from.push([email_from, true]);
}
});
},
@@ -697,7 +699,7 @@ openerp.mail = function (session) {
email_from[1] = $input.is(":checked");
}
});
- }
+ },
});
/**
From 8758afd045e7ac7d7f630cfa02b871012c06b547 Mon Sep 17 00:00:00 2001
From: Christophe Matthieu
Date: Mon, 31 Dec 2012 15:35:33 +0100
Subject: [PATCH 05/79] [IMP] mail: js: get_from back to get_emails_from
bzr revid: chm@openerp.com-20121231143533-lpo5f2eg20zkf2el
---
addons/mail/static/src/js/mail.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js
index 953cc907f25..41adf0b2ab0 100644
--- a/addons/mail/static/src/js/mail.js
+++ b/addons/mail/static/src/js/mail.js
@@ -642,7 +642,7 @@ openerp.mail = function (session) {
/* convert the compact mode into the compose message
*/
on_compose_expandable: function (event) {
- this.get_from();
+ this.get_emails_from();
if ((!this.stay_open || (event && event.type == 'click')) && (!this.show_composer || !this.$('textarea:not(.oe_compact)').val().match(/\S+/) && !this.attachment_ids.length)) {
this.show_composer = !this.show_composer || this.stay_open;
this.reinit();
@@ -667,7 +667,7 @@ openerp.mail = function (session) {
}
},
- get_from: function () {
+ get_emails_from: function () {
var self = this;
var messages = [];
From e794672dd20763e2e3668e2249ba45da17d1b03a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?=
Date: Wed, 2 Jan 2013 13:59:02 +0100
Subject: [PATCH 06/79] [IMP] Notification emails: link in signature improved.
If access to document: direct link to document. If no document or not access:
link to portal.
bzr revid: tde@openerp.com-20130102125902-xp3vcs1ay7oog1ke
---
addons/portal/mail_mail.py | 25 ++++++++++++++++++++++++-
1 file changed, 24 insertions(+), 1 deletion(-)
diff --git a/addons/portal/mail_mail.py b/addons/portal/mail_mail.py
index a18c71759f8..a6532bf482c 100644
--- a/addons/portal/mail_mail.py
+++ b/addons/portal/mail_mail.py
@@ -19,6 +19,9 @@
#
##############################################################################
+from urllib import urlencode
+from urlparse import urljoin
+
from openerp import SUPERUSER_ID
from openerp.osv import osv
from openerp.tools import append_content_to_html
@@ -39,6 +42,26 @@ class mail_mail(osv.Model):
if partner:
context = dict(context or {}, signup_valid=True)
partner = self.pool.get('res.partner').browse(cr, SUPERUSER_ID, partner.id, context=context)
- text = _("""Access your personal documents through our Customer Portal """) % partner.signup_url
+ text = ''
+ # private message
+ if not mail.model or not mail.res_id:
+ text = _("""Access your messages through our Customer Portal
""") % partner.signup_url
+ # partner is also an user: add a link if read access to the document
+ elif partner.user_ids and self.check_access_rights(cr, partner.user_ids[0].id, 'read', raise_exception=False):
+ related_user = partner.user_ids[0]
+ try:
+ self.check_access_rule(cr, related_user.id, [mail.res_id], 'read', context=context)
+ base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url')
+ url_params = {
+ 'model': mail.model,
+ 'id': mail.res_id,
+ }
+ url = urljoin(base_url, "?#%s" % (urlencode(url_params)))
+ text = _("""Read this document directly in OpenERP
""") % url
+ except: # TODO: catch good exception
+ text = _("""Access your messages through our Customer Portal
""") % partner.signup_url
+ # partner not user
+ else:
+ text = _("""Access your messages through our Customer Portal
""") % partner.signup_url
body = append_content_to_html(body, ("" % text), plaintext=False)
return body
From c33dff10f16d40776f716aa1102f483ad7cbab98 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?=
Date: Wed, 2 Jan 2013 14:00:25 +0100
Subject: [PATCH 07/79] [IMP] mail: send emails now have a reply_to based on
aliases, if defined, and if not reply_to already defined in the mail.mail
object.
bzr revid: tde@openerp.com-20130102130025-5wa2k8wzv1vgg2xx
---
addons/mail/mail_mail.py | 20 +++++++++++++++++++-
addons/mail/mail_thread.py | 12 ++++++++++++
2 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/addons/mail/mail_mail.py b/addons/mail/mail_mail.py
index d6cb2a2cf7e..bb33c75758d 100644
--- a/addons/mail/mail_mail.py
+++ b/addons/mail/mail_mail.py
@@ -160,6 +160,22 @@ class mail_mail(osv.Model):
"""
return mail.body_html
+ def send_get_mail_reply_to(self, cr, uid, mail, partner=None, context=None):
+ """ Return a specific ir_email body. The main purpose of this method
+ is to be inherited by Portal, to add a link for signing in, in
+ each notification email a partner receives.
+
+ :param browse_record mail: mail.mail browse_record
+ :param browse_record partner: specific recipient partner
+ """
+ if mail.reply_to:
+ return mail.reply_to
+ if not mail.model or not mail.res_id:
+ return False
+ if not hasattr(self.pool.get(mail.model), 'message_get_reply_to'):
+ return False
+ return self.pool.get(mail.model).message_get_reply_to(cr, uid, [mail.res_id], context=context)[0]
+
def send_get_email_dict(self, cr, uid, mail, partner=None, context=None):
""" Return a dictionary for specific email values, depending on a
partner, or generic to the whole recipients given by mail.email_to.
@@ -169,6 +185,7 @@ class mail_mail(osv.Model):
"""
body = self.send_get_mail_body(cr, uid, mail, partner=partner, context=context)
subject = self.send_get_mail_subject(cr, uid, mail, partner=partner, context=context)
+ reply_to = self.send_get_mail_reply_to(cr, uid, mail, partner=partner, context=context)
body_alternative = tools.html2plaintext(body)
email_to = [partner.email] if partner else tools.email_split(mail.email_to)
return {
@@ -176,6 +193,7 @@ class mail_mail(osv.Model):
'body_alternative': body_alternative,
'subject': subject,
'email_to': email_to,
+ 'reply_to': reply_to,
}
def send(self, cr, uid, ids, auto_commit=False, recipient_ids=None, context=None):
@@ -219,7 +237,7 @@ class mail_mail(osv.Model):
body = email.get('body'),
body_alternative = email.get('body_alternative'),
email_cc = tools.email_split(mail.email_cc),
- reply_to = mail.reply_to,
+ reply_to = email.get('reply_to'),
attachments = attachments,
message_id = mail.message_id,
references = mail.references,
diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py
index 5054bf89b8c..59628d73c0a 100644
--- a/addons/mail/mail_thread.py
+++ b/addons/mail/mail_thread.py
@@ -387,6 +387,18 @@ class mail_thread(osv.AbstractModel):
return [('message_unread', '=', True)]
return []
+ #------------------------------------------------------
+ # Email specific
+ #------------------------------------------------------
+
+ def message_get_reply_to(self, cr, uid, ids, context=None):
+ if not self._inherits.get('mail.alias'):
+ return False
+ return ["%s@%s" % (record['alias_name'], record['alias_domain'])
+ if record.get('alias_domain') and record.get('alias_name')
+ else False
+ for record in self.read(cr, uid, ids, ['alias_name', 'alias_domain'], context=context)]
+
#------------------------------------------------------
# Mail gateway
#------------------------------------------------------
From 272b2347e6dc13080853aa838bb60e124b8ffb11 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?=
Date: Wed, 2 Jan 2013 14:50:20 +0100
Subject: [PATCH 08/79] [FIX] get_reply_to: fixed False value, also returning
an array.
bzr revid: tde@openerp.com-20130102135020-s9ssadzms5s8f0hp
---
addons/mail/mail_thread.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py
index 59628d73c0a..31d43481947 100644
--- a/addons/mail/mail_thread.py
+++ b/addons/mail/mail_thread.py
@@ -393,7 +393,7 @@ class mail_thread(osv.AbstractModel):
def message_get_reply_to(self, cr, uid, ids, context=None):
if not self._inherits.get('mail.alias'):
- return False
+ return [False for id in ids]
return ["%s@%s" % (record['alias_name'], record['alias_domain'])
if record.get('alias_domain') and record.get('alias_name')
else False
From 1774e390ecc114033a23072f7a8b20e8ae00c3d2 Mon Sep 17 00:00:00 2001
From: "vta vta@openerp.com" <>
Date: Wed, 2 Jan 2013 16:58:22 +0100
Subject: [PATCH 09/79] [IMP] Refactoring web_analytics, step 1
bzr revid: vta@openerp.com-20130102155822-6t78t8tfbnhtfmg1
---
.../static/src/js/web_analytics.js | 43 +++++++++++--------
1 file changed, 25 insertions(+), 18 deletions(-)
diff --git a/addons/web_analytics/static/src/js/web_analytics.js b/addons/web_analytics/static/src/js/web_analytics.js
index 01c7cc2a7a3..1f1941b768b 100644
--- a/addons/web_analytics/static/src/js/web_analytics.js
+++ b/addons/web_analytics/static/src/js/web_analytics.js
@@ -20,37 +20,42 @@ openerp.web_analytics = function(instance) {
s.parentNode.insertBefore(ga,s);
})();
+ instance.web_analytics.Tracker = instance.web.Class.extend({
+ init: function() {
+ // initialize tracker
+ _gaq.push(['_setAccount', 'UA-35793871-1']);
+ // _gaq.push(['_setAccount', 'UA-7333765-1']);
+ //_gaq.push(['_setAccount', 'UA-36797757-1']); // Debug code
+ _gaq.push(['_setDomainName', 'none']); // Change for the real domain
+ this.initialize_custom();
+ instance.client.on('state_pushed', this, on_state_pushed);
+ this.include_tracker();
+ },
+ initialize_custom: function() {},
+ on_state_pushed: function() {},
+ include_tracker: function() {},
+ });
var init_tracker = function() {
// initialize tracker
- _gaq.push(['_setAccount', 'UA-7333765-1']);
+ _gaq.push(['_setAccount', 'UA-35793871-1']);
+ // _gaq.push(['_setAccount', 'UA-7333765-1']);
//_gaq.push(['_setAccount', 'UA-36797757-1']); // Debug code
_gaq.push(['_setDomainName', 'none']); // Change for the real domain
// Track user types
- if (instance.session.uid !== 1) {
- if ((/\.demo.openerp.com/).test(instance.session.server)) {
- _gaq.push(['_setCustomVar', 1, 'User Type', 'Demo User', 1]);
- } else {
- _gaq.push(['_setCustomVar', 1, 'User Type', 'Normal User', 1]);
- }
- } else {
+ if (instance.session.uid === 1) {
_gaq.push(['_setCustomVar', 1, 'User Type', 'Admin User', 1]);
+ } else {
+ _gaq.push(['_setCustomVar', 1, 'User Type', 'Normal User', 1]);
}
-
- // Track object usage
- _gaq.push(['_setCustomVar', 2, 'Object', 'no_model', 3]);
- // Tack view usage
- _gaq.push(['_setCustomVar', 3, 'View Type', 'default', 3]);
-
- _gaq.push(['_trackPageview']);
};
var on_state_pushed = function(state) {
// Track only pages corresponding to a 'normal' view of OpenERP, views
// related to client actions are tracked by the action manager
- if (state.model && state.view_type) {
- // Track object usage
+ if (state.model && state.view_type) {
+ // Track object usage
_gaq.push(['_setCustomVar', 2, 'Object', state.model, 3]);
// Tack view usage
_gaq.push(['_setCustomVar', 3, 'View Type', state.view_type, 3]);
@@ -82,6 +87,8 @@ openerp.web_analytics = function(instance) {
// Track client actions
instance.web.ActionManager.include({
ir_actions_client: function (action, options) {
+ console.log(action);
+ console.log(options);
var url = instance.web_analytics.generateUrl({'action': action.tag});
_gaq.push(['_trackPageview', url]);
return this._super.apply(this, arguments);
@@ -95,7 +102,7 @@ openerp.web_analytics = function(instance) {
var category = this.model || dataset.model || '';
var action;
if (action_data.name && _.isNaN(action_data.name-0)) {
- action = action_data.name;
+ action = action_data.name;
} else {
action = action_data.string || action_data.special || '';
}
From a1d18ccb7a338ce01cfe45108a5443aaee96ee6c Mon Sep 17 00:00:00 2001
From: "vta vta@openerp.com" <>
Date: Thu, 3 Jan 2013 10:18:21 +0100
Subject: [PATCH 10/79] [IMP] Refactoring web_analytics, step 2
bzr revid: vta@openerp.com-20130103091821-mo57o9oybzpyrzqm
---
.../static/src/js/web_analytics.js | 261 +++++++++---------
1 file changed, 135 insertions(+), 126 deletions(-)
diff --git a/addons/web_analytics/static/src/js/web_analytics.js b/addons/web_analytics/static/src/js/web_analytics.js
index 1f1941b768b..a25c2169528 100644
--- a/addons/web_analytics/static/src/js/web_analytics.js
+++ b/addons/web_analytics/static/src/js/web_analytics.js
@@ -3,12 +3,13 @@ var _gaq = _gaq || []; // asynchronous stack used by google analytics
openerp.web_analytics = function(instance) {
- /** The Google Analytics Module inserts the Google Analytics JS Snippet
- * at the top of the page, and sends to google an url each time the
- * openerp url is changed.
- * The pushes of the urls is made by triggering the 'state_pushed' event in the
- * web_client.do_push_state() method which is responsible of changing the openerp current url
- */
+ /*
+ * The Google Analytics Module inserts the Google Analytics JS Snippet
+ * at the top of the page, and sends to google an url each time the
+ * openerp url is changed.
+ * The pushes of the urls is made by triggering the 'state_pushed' event in the
+ * web_client.do_push_state() method which is responsible of changing the openerp current url
+ */
// Google Analytics Code snippet
(function() {
@@ -21,142 +22,150 @@ openerp.web_analytics = function(instance) {
})();
instance.web_analytics.Tracker = instance.web.Class.extend({
+ /*
+ * This method initializes the tracker
+ */
init: function() {
- // initialize tracker
_gaq.push(['_setAccount', 'UA-35793871-1']);
// _gaq.push(['_setAccount', 'UA-7333765-1']);
//_gaq.push(['_setAccount', 'UA-36797757-1']); // Debug code
_gaq.push(['_setDomainName', 'none']); // Change for the real domain
this.initialize_custom();
- instance.client.on('state_pushed', this, on_state_pushed);
+ instance.client.on('state_pushed', this, this.on_state_pushed);
this.include_tracker();
},
- initialize_custom: function() {},
- on_state_pushed: function() {},
- include_tracker: function() {},
+ /*
+ * This method contains the initialization of all user-related custom variables
+ * stored in GA. Also other modules can override it to add new custom variables
+ */
+ initialize_custom: function() {
+ // Track User Access Level, Custom Variable 4 in GA with visitor level scope
+ // Values: 'Admin User', 'Normal User', 'Portal User', 'Anonymous User'
+ if (instance.session.uid === 1) {
+ _gaq.push(['_setCustomVar', 4, 'User Type', 'Admin User', 1]);
+ // Make the difference between portal users and anonymous users
+ } else if (instance.session.username.indexOf('@') !== -1) {
+ if (instance.session.username.indexOf('anonymous') === -1) {
+ _gaq.push(['_setCustomVar', 4, 'User Type', 'Portal User', 1]);
+ } else {
+ _gaq.push(['_setCustomVar', 4, 'User Type', 'Anonymous User', 1]);
+ }
+ } else if (instance.session.username.indexOf('anonymous') !== -1) {
+ _gaq.push(['_setCustomVar', 4, 'User Type', 'Anonymous User', 1]);
+ } else {
+ _gaq.push(['_setCustomVar', 4, 'User Type', 'Normal User', 1]);
+ }
+ },
+ /*
+ * This method contains the initialization of the object and view type
+ * custom variables stored in GA. Setting here the CV will work if web_analytics
+ * module is auto-install, because the first view of a fresh DB is the modules
+ * kanban view (also in trial), otherwise the responsibility of the first
+ * initialization relies on instance.web.ActionManager#ir_actions_client
+ * method
+ */
+ on_state_pushed: function(state) {
+ // Track only pages corresponding to a 'normal' view of OpenERP, views
+ // related to client actions are tracked by the action manager
+ if (state.model && state.view_type) {
+ // Track object usage
+ _gaq.push(['_setCustomVar', 2, 'Object', state.model, 3]);
+ // Tack view usage
+ _gaq.push(['_setCustomVar', 3, 'View Type', state.view_type, 3]);
+ // Track the page
+ var url = instance.web_analytics.generateUrl({'model': state.model, 'view_type': state.view_type});
+ _gaq.push(['_trackPageview', url]);
+ }
+ },
+ /*
+ * This method includes the tracker into view and managers. It can be overriden
+ * by other modules in order to extend tracking functionalities
+ */
+ include_tracker: function() {
+ // Track the events related with the creation and the modification of records,
+ // the view type is always form
+ instance.web.FormView = instance.web.FormView.extend({
+ init: function(parent, dataset, view_id, options) {
+ this._super.apply(this, arguments);
+ var self = this;
+ this.on('record_created', self, function(r) {
+ var url = instance.web_analytics.generateUrl({'model': this.model, 'view_type': 'form'});
+ _gaq.push(['_trackEvent', this.model, 'on_button_create_save', url]);
+ });
+ this.on('record_saved', self, function(r) {
+ var url = instance.web_analytics.generateUrl({'model': this.model, 'view_type': 'form'});
+ _gaq.push(['_trackEvent', this.model, 'on_button_edit_save', url]);
+ });
+ }
+ });
+
+ // Track client actions, also if not in a fresh DB it initializes the
+ // CV related to objects and view types
+ instance.web.ActionManager.include({
+ ir_actions_client: function (action, options) {
+ if (action.res_model) {
+ _gaq.push(['_setCustomVar', 2, 'Object', action.res_model, 3]);
+ } else {
+ _gaq.push(['_setCustomVar', 2, 'Object', action.type, 3]);
+ }
+ _gaq.push(['_setCustomVar', 2, 'View Type', action.name, 3]);
+ var url = instance.web_analytics.generateUrl({'action': action.tag});
+ _gaq.push(['_trackPageview', url]);
+ return this._super.apply(this, arguments);
+ },
+ });
+
+ // Track button events
+ instance.web.View.include({
+ do_execute_action: function(action_data, dataset, record_id, on_closed) {
+ console.log(action_data);
+ var category = this.model || dataset.model || '';
+ var action;
+ if (action_data.name && _.isNaN(action_data.name-0)) {
+ action = action_data.name;
+ } else {
+ action = action_data.string || action_data.special || '';
+ }
+ var label = instance.web_analytics.generateUrl({'model': category, 'view_type': this.view_type});
+ _gaq.push(['_trackEvent', category, action, label]);
+ return this._super.apply(this, arguments);
+ },
+ });
+
+ // Track error events
+ instance.web.CrashManager.include({
+ show_error: function(error) {
+ var hash = window.location.hash;
+ var params = $.deparam(hash.substr(hash.indexOf('#')+1));
+ var options = {};
+ if (params.model && params.view_type) {
+ options = {'model': params.model, 'view_type': params.view_type};
+ } else {
+ options = {'action': params.action};
+ }
+ var label = instance.web_analytics.generateUrl(options);
+ if (error.code) {
+ _gaq.push(['_trackEvent', error.message, error.data.fault_code, label, ,true]);
+ } else {
+ _gaq.push(['_trackEvent', error.type, error.data.debug, label, ,true]);
+ }
+ this._super.apply(this, arguments);
+ },
+ });
+ },
});
- var init_tracker = function() {
- // initialize tracker
- _gaq.push(['_setAccount', 'UA-35793871-1']);
- // _gaq.push(['_setAccount', 'UA-7333765-1']);
- //_gaq.push(['_setAccount', 'UA-36797757-1']); // Debug code
- _gaq.push(['_setDomainName', 'none']); // Change for the real domain
-
- // Track user types
- if (instance.session.uid === 1) {
- _gaq.push(['_setCustomVar', 1, 'User Type', 'Admin User', 1]);
- } else {
- _gaq.push(['_setCustomVar', 1, 'User Type', 'Normal User', 1]);
- }
- };
-
- var on_state_pushed = function(state) {
- // Track only pages corresponding to a 'normal' view of OpenERP, views
- // related to client actions are tracked by the action manager
- if (state.model && state.view_type) {
- // Track object usage
- _gaq.push(['_setCustomVar', 2, 'Object', state.model, 3]);
- // Tack view usage
- _gaq.push(['_setCustomVar', 3, 'View Type', state.view_type, 3]);
- // Track the page
- var url = instance.web_analytics.generateUrl({'model': state.model, 'view_type': state.view_type});
- _gaq.push(['_trackPageview', url]);
- }
- };
-
- var include_tracker = function() {
- // include the tracker into views and managers
-
- // Track the events related with the creation and the modification of records
- instance.web.FormView = instance.web.FormView.extend({
- init: function(parent, dataset, view_id, options) {
- this._super.apply(this, arguments);
- var self = this;
- this.on('record_created', self, function(r) {
- var url = instance.web_analytics.generateUrl({'model': this.model, 'view_type': 'form'});
- _gaq.push(['_trackEvent', this.model, 'on_button_create_save', url]);
- });
- this.on('record_saved', self, function(r) {
- var url = instance.web_analytics.generateUrl({'model': this.model, 'view_type': 'form'});
- _gaq.push(['_trackEvent', this.model, 'on_button_edit_save', url]);
- });
- }
- });
-
- // Track client actions
- instance.web.ActionManager.include({
- ir_actions_client: function (action, options) {
- console.log(action);
- console.log(options);
- var url = instance.web_analytics.generateUrl({'action': action.tag});
- _gaq.push(['_trackPageview', url]);
- return this._super.apply(this, arguments);
- },
- });
-
- // Track button events
- instance.web.View.include({
- do_execute_action: function(action_data, dataset, record_id, on_closed) {
- console.log(action_data);
- var category = this.model || dataset.model || '';
- var action;
- if (action_data.name && _.isNaN(action_data.name-0)) {
- action = action_data.name;
- } else {
- action = action_data.string || action_data.special || '';
- }
- var label = instance.web_analytics.generateUrl({'model': category, 'view_type': this.view_type});
- _gaq.push(['_trackEvent', category, action, label]);
- return this._super.apply(this, arguments);
- },
- });
-
- // Track error events
- instance.web.CrashManager.include({
- show_error: function(error) {
- var hash = window.location.hash;
- var params = $.deparam(hash.substr(hash.indexOf('#')+1));
- var options = {};
- if (params.model && params.view_type) {
- options = {'model': params.model, 'view_type': params.view_type};
- } else {
- options = {'action': params.action};
- }
- var label = instance.web_analytics.generateUrl(options);
- if (error.code) {
- _gaq.push(['_trackEvent', error.message, error.data.fault_code, label, ,true]);
- } else {
- _gaq.push(['_trackEvent', error.type, error.data.debug, label, ,true]);
- }
- this._super.apply(this, arguments);
- },
- });
- };
-
-
+ // Set correctly the tracker in the current instance
if (instance.client instanceof instance.web.WebClient) { // not for embedded clients
- init_tracker();
-
- // Set the account and domain to start tracking
- instance.client.on('state_pushed', this, on_state_pushed);
-
- include_tracker();
+ instance.webclient.tracker = new instance.web_analytics.Tracker();
} else if (!instance.client) {
// client does not already exists, we are in monodb mode
-
instance.web.WebClient.include({
init: function() {
- init_tracker();
- return this._super.apply(this, arguments);
+ var d = this._super.apply(this, arguments);
+ this.tracker = new instance.web_analytics.Tracker();
+ return d;
},
- start: function() {
- var self = this;
- return this._super.apply(this, arguments).done(function() {
- self.on('state_pushed', self, on_state_pushed);
- include_tracker();
- });
- }
});
}
From 1bbb44915b9197c768252e9043f723df1ce08938 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?=
Date: Thu, 3 Jan 2013 10:52:34 +0100
Subject: [PATCH 11/79] [FIX] crm_demo: changed an opportunity from US to UK,
because base_action_rule was changing the salesperson, leading to an access
right issues on demo user with its demo messages and notifications linked to
a lead he cannot see anymore.
bzr revid: tde@openerp.com-20130103095234-bzwdpif809sgvxko
---
addons/crm/crm_lead_demo.xml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/addons/crm/crm_lead_demo.xml b/addons/crm/crm_lead_demo.xml
index 86a944544ff..99fb0e895c2 100644
--- a/addons/crm/crm_lead_demo.xml
+++ b/addons/crm/crm_lead_demo.xml
@@ -402,9 +402,9 @@ Andrew
Leland Martinez
info@deltapc.com
Delta PC
- Fremont
+ London
3661 Station Street
-
+
From 9c6489d9a4badeb6e68a041b947089658cf8d69d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?=
Date: Thu, 3 Jan 2013 11:10:36 +0100
Subject: [PATCH 12/79] [FIX] crm, project, project_issue: fixed
default_stage_id assignment, not overriding values in vals when writing.
bzr revid: tde@openerp.com-20130103101036-eroa3fd31dcqly8i
---
addons/crm/crm_lead.py | 6 ++++--
addons/project/project.py | 4 +++-
addons/project_issue/project_issue.py | 4 +++-
3 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py
index 87624699ff9..982235ad511 100644
--- a/addons/crm/crm_lead.py
+++ b/addons/crm/crm_lead.py
@@ -87,15 +87,17 @@ class crm_lead(base_stage, format_address, osv.osv):
def create(self, cr, uid, vals, context=None):
if context is None:
context = {}
- if not context.get('default_section_id', False) and vals.get('section_id', False):
+ if not vals.get('stage_id') and vals.get('section_id'):
ctx = context.copy()
ctx['default_section_id'] = vals['section_id']
vals['stage_id'] = self._get_default_stage_id(cr, uid, context=ctx)
+ elif not vals.get('stage_id') and context.get('default_section_id'):
+ vals['stage_id'] = self._get_default_stage_id(cr, uid, context=context)
return super(crm_lead, self).create(cr, uid, vals, context=context)
def _get_default_section_id(self, cr, uid, context=None):
""" Gives default section by checking if present in the context """
- return (self._resolve_section_id_from_context(cr, uid, context=context) or False)
+ return self._resolve_section_id_from_context(cr, uid, context=context) or False
def _get_default_stage_id(self, cr, uid, context=None):
""" Gives default stage_id """
diff --git a/addons/project/project.py b/addons/project/project.py
index 41b41a3dfc9..e98254d2fa1 100644
--- a/addons/project/project.py
+++ b/addons/project/project.py
@@ -1091,10 +1091,12 @@ class task(base_stage, osv.osv):
def create(self, cr, uid, vals, context=None):
if context is None:
context = {}
- if not context.get('default_project_id', False) and vals.get('project_id', False):
+ if not vals.get('stage_id') and vals.get('project_id'):
ctx = context.copy()
ctx['default_project_id'] = vals['project_id']
vals['stage_id'] = self._get_default_stage_id(cr, uid, context=ctx)
+ elif not vals.get('stage_id') and context.get('default_project_id'):
+ vals['stage_id'] = self._get_default_stage_id(cr, uid, context=context)
task_id = super(task, self).create(cr, uid, vals, context=context)
self._store_history(cr, uid, [task_id], context=context)
return task_id
diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py
index a01e0266f90..8b2afb130e1 100644
--- a/addons/project_issue/project_issue.py
+++ b/addons/project_issue/project_issue.py
@@ -67,10 +67,12 @@ class project_issue(base_stage, osv.osv):
def create(self, cr, uid, vals, context=None):
if context is None:
context = {}
- if not context.get('default_project_id', False) and vals.get('project_id', False):
+ if not vals.get('stage_id') and vals.get('project_id'):
ctx = context.copy()
ctx['default_project_id'] = vals['project_id']
vals['stage_id'] = self._get_default_stage_id(cr, uid, context=ctx)
+ elif not vals.get('stage_id') and context.get('default_project_id'):
+ vals['stage_id'] = self._get_default_stage_id(cr, uid, context=context)
return super(project_issue, self).create(cr, uid, vals, context=context)
def _get_default_project_id(self, cr, uid, context=None):
From 61ce1e837010ee3c38d761fa294f4f7950eabb85 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?=
Date: Thu, 3 Jan 2013 11:11:03 +0100
Subject: [PATCH 13/79] [IMP] portal: email signature: better error catching
for access rights.
bzr revid: tde@openerp.com-20130103101103-qbuhqu6sl9l4ta4h
---
addons/portal/mail_mail.py | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/addons/portal/mail_mail.py b/addons/portal/mail_mail.py
index a6532bf482c..3c9f245e578 100644
--- a/addons/portal/mail_mail.py
+++ b/addons/portal/mail_mail.py
@@ -24,6 +24,7 @@ from urlparse import urljoin
from openerp import SUPERUSER_ID
from openerp.osv import osv
+from openerp.osv.orm import except_orm
from openerp.tools import append_content_to_html
from openerp.tools.translate import _
@@ -57,8 +58,8 @@ class mail_mail(osv.Model):
'id': mail.res_id,
}
url = urljoin(base_url, "?#%s" % (urlencode(url_params)))
- text = _("""Read this document directly in OpenERP
""") % url
- except: # TODO: catch good exception
+ text = _("""Access this document directly in OpenERP
""") % url
+ except except_orm, e:
text = _("""Access your messages through our Customer Portal
""") % partner.signup_url
# partner not user
else:
From 8dbb1e46881789727962bc41e58cfceaf7158720 Mon Sep 17 00:00:00 2001
From: "vta vta@openerp.com" <>
Date: Thu, 3 Jan 2013 11:12:32 +0100
Subject: [PATCH 14/79] [IMP] Refactoring web_analytics, final step
bzr revid: vta@openerp.com-20130103101232-00tsmlnvi00wsgha
---
.../static/src/js/web_analytics.js | 43 ++++++++++++-------
1 file changed, 27 insertions(+), 16 deletions(-)
diff --git a/addons/web_analytics/static/src/js/web_analytics.js b/addons/web_analytics/static/src/js/web_analytics.js
index a25c2169528..94c58bdf9ea 100644
--- a/addons/web_analytics/static/src/js/web_analytics.js
+++ b/addons/web_analytics/static/src/js/web_analytics.js
@@ -26,13 +26,15 @@ openerp.web_analytics = function(instance) {
* This method initializes the tracker
*/
init: function() {
+ var self = this;
_gaq.push(['_setAccount', 'UA-35793871-1']);
// _gaq.push(['_setAccount', 'UA-7333765-1']);
//_gaq.push(['_setAccount', 'UA-36797757-1']); // Debug code
_gaq.push(['_setDomainName', 'none']); // Change for the real domain
- this.initialize_custom();
- instance.client.on('state_pushed', this, this.on_state_pushed);
- this.include_tracker();
+ this.initialize_custom().then(function() {
+ instance.client.on('state_pushed', self, self.on_state_pushed);
+ self.include_tracker();
+ });
},
/*
* This method contains the initialization of all user-related custom variables
@@ -42,27 +44,31 @@ openerp.web_analytics = function(instance) {
// Track User Access Level, Custom Variable 4 in GA with visitor level scope
// Values: 'Admin User', 'Normal User', 'Portal User', 'Anonymous User'
if (instance.session.uid === 1) {
- _gaq.push(['_setCustomVar', 4, 'User Type', 'Admin User', 1]);
+ _gaq.push(['_setCustomVar', 4, 'User Access Level', 'Admin User', 1]);
// Make the difference between portal users and anonymous users
} else if (instance.session.username.indexOf('@') !== -1) {
if (instance.session.username.indexOf('anonymous') === -1) {
- _gaq.push(['_setCustomVar', 4, 'User Type', 'Portal User', 1]);
+ _gaq.push(['_setCustomVar', 4, 'User Access Level', 'Portal User', 1]);
} else {
- _gaq.push(['_setCustomVar', 4, 'User Type', 'Anonymous User', 1]);
+ _gaq.push(['_setCustomVar', 4, 'User Access Level', 'Anonymous User', 1]);
}
} else if (instance.session.username.indexOf('anonymous') !== -1) {
- _gaq.push(['_setCustomVar', 4, 'User Type', 'Anonymous User', 1]);
+ _gaq.push(['_setCustomVar', 4, 'User Access Level', 'Anonymous User', 1]);
} else {
- _gaq.push(['_setCustomVar', 4, 'User Type', 'Normal User', 1]);
+ _gaq.push(['_setCustomVar', 4, 'User Access Level', 'Normal User', 1]);
}
+ return instance.session.rpc("/web/webclient/version_info", {})
+ .done(function(res) {
+ _gaq.push(['_setCustomVar', 5, 'Version', res.server_version, 3]);
+ });
},
/*
* This method contains the initialization of the object and view type
* custom variables stored in GA. Setting here the CV will work if web_analytics
- * module is auto-install, because the first view of a fresh DB is the modules
- * kanban view (also in trial), otherwise the responsibility of the first
- * initialization relies on instance.web.ActionManager#ir_actions_client
- * method
+ * module is auto-install and not anonymous user, because the first view
+ * of a fresh DB is the modules kanban view (also in trial), otherwise the
+ * responsibility of the first initialization relies on
+ * instance.web.ActionManager#ir_actions_client method
*/
on_state_pushed: function(state) {
// Track only pages corresponding to a 'normal' view of OpenERP, views
@@ -99,16 +105,22 @@ openerp.web_analytics = function(instance) {
}
});
- // Track client actions, also if not in a fresh DB it initializes the
- // CV related to objects and view types
+ // Track client actions, also if not in a fresh DB or anonymous user,
+ // it initializes the CV related to objects and view types
instance.web.ActionManager.include({
ir_actions_client: function (action, options) {
+ // Try to set the correct model, else it will be 'ir.actions.client'
if (action.res_model) {
_gaq.push(['_setCustomVar', 2, 'Object', action.res_model, 3]);
} else {
_gaq.push(['_setCustomVar', 2, 'Object', action.type, 3]);
}
- _gaq.push(['_setCustomVar', 2, 'View Type', action.name, 3]);
+ // Try to set a view type as accurate as possible
+ if (action.name) {
+ _gaq.push(['_setCustomVar', 3, 'View Type', action.name, 3]);
+ } else {
+ _gaq.push(['_setCustomVar', 3, 'View Type', action.tag, 3]);
+ }
var url = instance.web_analytics.generateUrl({'action': action.tag});
_gaq.push(['_trackPageview', url]);
return this._super.apply(this, arguments);
@@ -118,7 +130,6 @@ openerp.web_analytics = function(instance) {
// Track button events
instance.web.View.include({
do_execute_action: function(action_data, dataset, record_id, on_closed) {
- console.log(action_data);
var category = this.model || dataset.model || '';
var action;
if (action_data.name && _.isNaN(action_data.name-0)) {
From 4aceb1d1be2db602eb1878d31ed8974a3514068c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?=
Date: Thu, 3 Jan 2013 13:00:15 +0100
Subject: [PATCH 15/79] [FIX] fetchmail: fixed message_process on res.users;
now having a message_subscribe method, because of automatic subscription of
recognized partners on the document; fixed override of message_post in
res_partner, using a wrong type variiable; fixed message_post_user_api giving
a set instead of a list.
bzr revid: tde@openerp.com-20130103120015-h9tmekrbbettikr1
---
addons/mail/mail_thread.py | 2 +-
addons/mail/res_partner.py | 4 ++--
addons/mail/res_users.py | 15 +++++++++++----
3 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py
index 31d43481947..63f4e875493 100644
--- a/addons/mail/mail_thread.py
+++ b/addons/mail/mail_thread.py
@@ -973,7 +973,7 @@ class mail_thread(osv.AbstractModel):
# 3. Post message
return self.message_post(cr, uid, thread_id=thread_id, body=body,
type=msg_type, subtype=msg_subtype, parent_id=parent_id,
- attachment_ids=attachment_ids, partner_ids=partner_ids, context=context, **kwargs)
+ attachment_ids=attachment_ids, partner_ids=list(partner_ids), context=context, **kwargs)
#------------------------------------------------------
# Followers API
diff --git a/addons/mail/res_partner.py b/addons/mail/res_partner.py
index cfcb1106afc..77f680bcab2 100644
--- a/addons/mail/res_partner.py
+++ b/addons/mail/res_partner.py
@@ -51,9 +51,9 @@ class res_partner_mail(osv.Model):
"""
if isinstance(thread_id, (list, tuple)):
thread_id = thread_id[0]
- if type == 'email':
+ if kwargs.get('type') == 'email':
partner_ids = kwargs.get('partner_ids', [])
- if thread_id not in partner_ids:
+ if thread_id not in [command[1] for command in partner_ids]:
partner_ids.append((4, thread_id))
kwargs['partner_ids'] = partner_ids
thread_id = False
diff --git a/addons/mail/res_users.py b/addons/mail/res_users.py
index 160335fba2a..3f33f1dbca5 100644
--- a/addons/mail/res_users.py
+++ b/addons/mail/res_users.py
@@ -122,7 +122,7 @@ class res_users(osv.Model):
context['thread_model'] = 'res.partner'
if isinstance(thread_id, (list, tuple)):
thread_id = thread_id[0]
- return self.browse(cr, uid, thread_id).partner_id.id
+ return self.browse(cr, SUPERUSER_ID, thread_id).partner_id.id
def message_post_user_api(self, cr, uid, thread_id, context=None, **kwargs):
""" Redirect the posting of message on res.users to the related partner.
@@ -139,9 +139,16 @@ class res_users(osv.Model):
return self.pool.get('res.partner').message_post(cr, uid, partner_id, context=context, **kwargs)
def message_update(self, cr, uid, ids, msg_dict, update_vals=None, context=None):
- partner_id = self.browse(cr, uid, ids)[0].partner_id.id
- return self.pool.get('res.partner').message_update(cr, uid, [partner_id], msg_dict,
- update_vals=update_vals, context=context)
+ for id in ids:
+ partner_id = self.browse(cr, SUPERUSER_ID, id).partner_id.id
+ self.pool.get('res.partner').message_update(cr, uid, [partner_id], msg_dict, update_vals=update_vals, context=context)
+ return True
+
+ def message_subscribe(self, cr, uid, ids, partner_ids, subtype_ids=None, context=None):
+ for id in ids:
+ partner_id = self.browse(cr, SUPERUSER_ID, id).partner_id.id
+ self.pool.get('res.partner').message_subscribe(cr, uid, [partner_id], partner_ids, subtype_ids=subtype_ids, context=context)
+ return True
class res_users_mail_group(osv.Model):
From 408ce4a241e6d9a5033295cbe5049b653576dbd2 Mon Sep 17 00:00:00 2001
From: "vta vta@openerp.com" <>
Date: Thu, 3 Jan 2013 14:25:19 +0100
Subject: [PATCH 16/79] [IMP] Add multi-domain tracking capabilites
bzr revid: vta@openerp.com-20130103132519-qypobspl58v435xw
---
addons/web_analytics/static/src/js/web_analytics.js | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/addons/web_analytics/static/src/js/web_analytics.js b/addons/web_analytics/static/src/js/web_analytics.js
index 94c58bdf9ea..44cfcf65581 100644
--- a/addons/web_analytics/static/src/js/web_analytics.js
+++ b/addons/web_analytics/static/src/js/web_analytics.js
@@ -27,10 +27,17 @@ openerp.web_analytics = function(instance) {
*/
init: function() {
var self = this;
+
+ /* Comment this lines when going on production, only used for testing on localhost */
_gaq.push(['_setAccount', 'UA-35793871-1']);
- // _gaq.push(['_setAccount', 'UA-7333765-1']);
- //_gaq.push(['_setAccount', 'UA-36797757-1']); // Debug code
- _gaq.push(['_setDomainName', 'none']); // Change for the real domain
+ _gaq.push(['_setDomainName', 'none']);
+ /**/
+
+ /* Uncomment this lines when going on production
+ _gaq.push(['_setAccount', 'UA-7333765-1']);
+ _gaq.push(['_setDomainName', '.openerp.com']); // Allow multi-domain
+ */
+
this.initialize_custom().then(function() {
instance.client.on('state_pushed', self, self.on_state_pushed);
self.include_tracker();
From 0b02663f9a9fcfce4b83f0b92e4386e6ed5c6ce6 Mon Sep 17 00:00:00 2001
From: "vta vta@openerp.com" <>
Date: Thu, 3 Jan 2013 14:27:05 +0100
Subject: [PATCH 17/79] [IMP] Added comment line
bzr revid: vta@openerp.com-20130103132705-evxyn3dyvjes7q6k
---
addons/web_analytics/static/src/js/web_analytics.js | 1 +
1 file changed, 1 insertion(+)
diff --git a/addons/web_analytics/static/src/js/web_analytics.js b/addons/web_analytics/static/src/js/web_analytics.js
index 44cfcf65581..599b34c4af0 100644
--- a/addons/web_analytics/static/src/js/web_analytics.js
+++ b/addons/web_analytics/static/src/js/web_analytics.js
@@ -64,6 +64,7 @@ openerp.web_analytics = function(instance) {
} else {
_gaq.push(['_setCustomVar', 4, 'User Access Level', 'Normal User', 1]);
}
+ // Fetch OpenERP's version of the instance
return instance.session.rpc("/web/webclient/version_info", {})
.done(function(res) {
_gaq.push(['_setCustomVar', 5, 'Version', res.server_version, 3]);
From 16d25f400e57e31ffa00774c740f878d50b2a27f Mon Sep 17 00:00:00 2001
From: "vta vta@openerp.com" <>
Date: Thu, 3 Jan 2013 15:05:10 +0100
Subject: [PATCH 18/79] [FIX] Fixed comment
bzr revid: vta@openerp.com-20130103140510-eyjh56vhh7n8lqol
---
addons/web_analytics/static/src/js/web_analytics.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/web_analytics/static/src/js/web_analytics.js b/addons/web_analytics/static/src/js/web_analytics.js
index 599b34c4af0..c75eeb39e4a 100644
--- a/addons/web_analytics/static/src/js/web_analytics.js
+++ b/addons/web_analytics/static/src/js/web_analytics.js
@@ -4,7 +4,7 @@ var _gaq = _gaq || []; // asynchronous stack used by google analytics
openerp.web_analytics = function(instance) {
/*
- * The Google Analytics Module inserts the Google Analytics JS Snippet
+ * The Web Analytics Module inserts the Google Analytics JS Snippet
* at the top of the page, and sends to google an url each time the
* openerp url is changed.
* The pushes of the urls is made by triggering the 'state_pushed' event in the
From 64ff6a065d7f776c79433461db29709e4c230925 Mon Sep 17 00:00:00 2001
From: "vta vta@openerp.com" <>
Date: Thu, 3 Jan 2013 15:31:02 +0100
Subject: [PATCH 19/79] [FIX] Now auto_install, also removed dependency on
auth_signup
bzr revid: vta@openerp.com-20130103143102-06jg3bkioi4xzox2
---
addons/web_analytics/__openerp__.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/addons/web_analytics/__openerp__.py b/addons/web_analytics/__openerp__.py
index a15e770b120..5dc7be454a2 100644
--- a/addons/web_analytics/__openerp__.py
+++ b/addons/web_analytics/__openerp__.py
@@ -31,9 +31,10 @@ Collects web application usage with Google Analytics.
""",
'author': 'OpenERP SA',
'website': 'http://openerp.com',
- 'depends': ['web', 'auth_signup'],
+ 'depends': ['web'],
'data': [],
'installable': True,
+ 'auto_install': True,
'active': False,
'js': ['static/src/js/web_analytics.js'],
}
From 4899a0df0268d83f669bd75022adacb5f0e3f743 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?=
Date: Thu, 3 Jan 2013 17:25:11 +0100
Subject: [PATCH 20/79] [FIX] Notification link: access rights check was
performed on an incorrect model.
bzr revid: tde@openerp.com-20130103162511-w8s6sxjbjfc8iao1
---
addons/portal/mail_mail.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/portal/mail_mail.py b/addons/portal/mail_mail.py
index 3c9f245e578..80c76602419 100644
--- a/addons/portal/mail_mail.py
+++ b/addons/portal/mail_mail.py
@@ -51,7 +51,7 @@ class mail_mail(osv.Model):
elif partner.user_ids and self.check_access_rights(cr, partner.user_ids[0].id, 'read', raise_exception=False):
related_user = partner.user_ids[0]
try:
- self.check_access_rule(cr, related_user.id, [mail.res_id], 'read', context=context)
+ self.pool.get(mail.model).check_access_rule(cr, related_user.id, [mail.res_id], 'read', context=context)
base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url')
url_params = {
'model': mail.model,
From 8da57cbd2ed6a073d558b0495ec68d923741c7aa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?=
Date: Thu, 3 Jan 2013 18:03:16 +0100
Subject: [PATCH 21/79] [IMP] crm, project, project_issue: reply_to address is
now the alias of the parent section, project, project, if any.
bzr revid: tde@openerp.com-20130103170316-8n6d8u0h14dy4x48
---
addons/crm/crm_lead.py | 5 +++++
addons/project/project.py | 5 +++++
addons/project_issue/project_issue.py | 5 +++++
3 files changed, 15 insertions(+)
diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py
index 3fae85f311d..6e484506223 100644
--- a/addons/crm/crm_lead.py
+++ b/addons/crm/crm_lead.py
@@ -966,6 +966,11 @@ class crm_lead(base_stage, format_address, osv.osv):
# Mail Gateway
# ----------------------------------------
+ def message_get_reply_to(self, cr, uid, ids, context=None):
+ """ Override to get the reply_to of the parent project. """
+ return [lead.section_id.message_get_reply_to()[0] if lead.section_id else False
+ for lead in self.browse(cr, uid, ids, context=context)]
+
def message_new(self, cr, uid, msg, custom_values=None, context=None):
""" Overrides mail_thread message_new that is called by the mailgateway
through message_process.
diff --git a/addons/project/project.py b/addons/project/project.py
index e98254d2fa1..40fb6bb4efd 100644
--- a/addons/project/project.py
+++ b/addons/project/project.py
@@ -1166,6 +1166,11 @@ class task(base_stage, osv.osv):
# Mail gateway
# ---------------------------------------------------
+ def message_get_reply_to(self, cr, uid, ids, context=None):
+ """ Override to get the reply_to of the parent project. """
+ return [task.project_id.message_get_reply_to()[0] if task.project_id else False
+ for task in self.browse(cr, uid, ids, context=context)]
+
def message_new(self, cr, uid, msg, custom_values=None, context=None):
""" Override to updates the document according to the email. """
if custom_values is None: custom_values = {}
diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py
index 8b2afb130e1..5a757fdac39 100644
--- a/addons/project_issue/project_issue.py
+++ b/addons/project_issue/project_issue.py
@@ -481,6 +481,11 @@ class project_issue(base_stage, osv.osv):
# Mail gateway
# -------------------------------------------------------
+ def message_get_reply_to(self, cr, uid, ids, context=None):
+ """ Override to get the reply_to of the parent project. """
+ return [issue.project_id.message_get_reply_to()[0] if issue.project_id else False
+ for issue in self.browse(cr, uid, ids, context=context)]
+
def message_new(self, cr, uid, msg, custom_values=None, context=None):
""" Overrides mail_thread message_new that is called by the mailgateway
through message_process.
From 253e3647b8a6328e283581636fefe3bd471a3de5 Mon Sep 17 00:00:00 2001
From: niv-openerp
Date: Fri, 4 Jan 2013 11:24:58 +0100
Subject: [PATCH 22/79] [IMP] crm: cosmetic change in opportunities list view
lp bug: https://launchpad.net/bugs/1095675 fixed
bzr revid: nicolas.vanhoren@openerp.com-20130104102458-k8axo9nyc4ar7g8j
---
addons/crm/crm_lead_view.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml
index 24837cff586..3d7bd45a209 100644
--- a/addons/crm/crm_lead_view.xml
+++ b/addons/crm/crm_lead_view.xml
@@ -514,7 +514,7 @@
-
+
From e40b49a83884d68a6c6e37c882e490da93c5a040 Mon Sep 17 00:00:00 2001
From: Christophe Matthieu
Date: Fri, 4 Jan 2013 12:10:04 +0100
Subject: [PATCH 23/79] [IMP] mail: htmlEntities for the author email, select
list of new partner by real email
bzr revid: chm@openerp.com-20130104111004-9l0hb6zu33o5b2v6
---
addons/mail/mail_thread.py | 2 +-
addons/mail/static/src/js/mail.js | 43 +++++++++++++++++++----------
addons/mail/static/src/xml/mail.xml | 8 +++---
3 files changed, 33 insertions(+), 20 deletions(-)
diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py
index 5054bf89b8c..71ef8fa964a 100644
--- a/addons/mail/mail_thread.py
+++ b/addons/mail/mail_thread.py
@@ -914,7 +914,7 @@ class mail_thread(osv.AbstractModel):
for email in extra_emails:
partner_id = partner_obj.find_or_create(cr, uid, email, context=context)
# link mail with this from mail to the new partner id
- partner_msg_ids = mail_message_obj.search(cr, SUPERUSER_ID, [('email_from', '=', email), ('author_id', '=', False)], context=context)
+ partner_msg_ids = mail_message_obj.search(cr, SUPERUSER_ID, ['|', ('email_from', '=', email), ('email_from', 'ilike', '<%s>' % email), ('author_id', '=', False)], context=context)
if partner_id and partner_msg_ids:
mail_message_obj.write(cr, SUPERUSER_ID, partner_msg_ids, {'email_from': None, 'author_id': partner_id}, context=context)
partner_ids.add((4, partner_id))
diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js
index 41adf0b2ab0..56494a3aa91 100644
--- a/addons/mail/static/src/js/mail.js
+++ b/addons/mail/static/src/js/mail.js
@@ -253,7 +253,14 @@ openerp.mail = function (session) {
} else {
this.avatar = mail.ChatterUtils.get_image(this.session, 'res.users', 'image_small', this.session.uid);
}
-
+ if (this.author_id) {
+ var email = this.author_id[1].match(/(.*)<(.*@.*)>/);
+ if (!email) {
+ this.author_id.push(_.str.escapeHTML(this.author_id[1]), '', this.author_id[1]);
+ } else {
+ this.author_id.push(_.str.escapeHTML(email[0]), _.str.trim(email[1]), email[2]);
+ }
+ }
},
@@ -505,8 +512,7 @@ openerp.mail = function (session) {
}
// create list of new partners
- var extra_email = _.map(_.filter(this.emails_from, function (f) {return f[1]}), function (f) {return f[0]});
- this.check_recipient_partners(extra_email).done(function () {
+ this.check_recipient_partners().done(function () {
var context = {
'default_model': default_composition_mode == 'reply' ? undefined : self.context.default_model,
'default_res_id': default_composition_mode == 'reply' ? undefined : self.context.default_res_id,
@@ -561,22 +567,31 @@ openerp.mail = function (session) {
}
},
- check_recipient_partners: function (emails) {
+ check_recipient_partners: function () {
var self = this;
- self.partners_from = [];
+ var emails = [];
+ _.each(this.emails_from, function (email_from) {
+ if (email_from[1]) {
+ if (!_.find(emails, function (email) {return email[4] == email_from[0][4];})) {
+ emails.push(email_from[0]);
+ }
+ }
+ });
var deferreds = [];
var ds_partner = new session.web.DataSetSearch(this, 'res.partner');
+ this.partners_from = [];
_.each(emails, function (email) {
var deferred = $.Deferred();
deferreds.push(deferred);
- ds_partner.call('search', [[['email', 'like', email]]]).then(function (partner_ids) {
+ ds_partner.call('search', [[['email', 'like', email[4]]]]).then(function (partner_ids) {
if (!partner_ids.length) {
var pop = new session.web.form.FormOpenPopup(this);
pop.show_element(
'res.partner',
0,
{
- 'default_email': email,
+ 'default_email': email[4],
+ 'default_name': email[3],
'force_email': true,
'ref': "compound_context",
},
@@ -606,8 +621,7 @@ openerp.mail = function (session) {
var self = this;
if (this.do_check_attachment_upload() && (this.attachment_ids.length || this.$('textarea').val().match(/\S+/))) {
// create list of new partners
- var extra_email = _.map(_.filter(this.emails_from, function (f) {return f[1]}), function (f) {return f[0]});
- this.check_recipient_partners(extra_email).done(function () {
+ this.check_recipient_partners().done(function () {
self.do_send_message_post();
});
}
@@ -621,7 +635,7 @@ openerp.mail = function (session) {
'subject': false,
'parent_id': this.context.default_parent_id,
'attachment_ids': _.map(this.attachment_ids, function (file) {return file.id;}),
- 'extra_emails': _.map(_.filter(this.emails_from, function (f) {return f[1]}), function (f) {return f[0]}),
+ 'extra_emails': _.map(_.filter(this.emails_from, function (f) {return f[1]}), function (f) {return f[0][4]}),
'context': this.parent_thread.context,
}).done(function (message_id) {
var thread = self.parent_thread;
@@ -683,19 +697,18 @@ openerp.mail = function (session) {
_.each(messages, function (thread) {
if (thread.author_id && !thread.author_id[0] &&
- !_.find(self.emails_from, function (from) {return from[0] == thread.author_id[1];})) {
-
- self.emails_from.push([thread.author_id[1], true]);
-
+ !_.find(self.emails_from, function (from) {return from[0][4] == thread.author_id[4];})) {
+ self.emails_from.push([thread.author_id, true]);
}
});
+ return self.emails_from;
},
on_checked_email_from: function (event) {
var $input = $(event.target);
var email = $input.attr("data");
_.each(this.emails_from, function (email_from) {
- if (email_from[0] == email) {
+ if (email_from[0][4] == email) {
email_from[1] = $input.is(":checked");
}
});
diff --git a/addons/mail/static/src/xml/mail.xml b/addons/mail/static/src/xml/mail.xml
index c1a32a2fe89..63f8a10658f 100644
--- a/addons/mail/static/src/xml/mail.xml
+++ b/addons/mail/static/src/xml/mail.xml
@@ -132,8 +132,8 @@
-
-
+
+
@@ -243,8 +243,8 @@
-
-
+
+
•
•
From c7a865754ddf880205dff2a8934ea9a37f9204fe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?=
Date: Fri, 4 Jan 2013 12:32:41 +0100
Subject: [PATCH 24/79] [IMP] auth_signup: added a model parameter for
generating URLs. Portal: improved code and url generation for links in send
emails.
bzr revid: tde@openerp.com-20130104113241-z4go3ac6qtl23ke8
---
addons/auth_signup/res_users.py | 5 ++++-
addons/portal/mail_mail.py | 30 +++++++++---------------------
2 files changed, 13 insertions(+), 22 deletions(-)
diff --git a/addons/auth_signup/res_users.py b/addons/auth_signup/res_users.py
index 5c558ca68d7..b35ff274a6d 100644
--- a/addons/auth_signup/res_users.py
+++ b/addons/auth_signup/res_users.py
@@ -52,7 +52,7 @@ class res_partner(osv.Model):
(not partner.signup_expiration or dt <= partner.signup_expiration)
return res
- def _get_signup_url_for_action(self, cr, uid, ids, action='login', view_type=None, menu_id=None, res_id=None, context=None):
+ def _get_signup_url_for_action(self, cr, uid, ids, action='login', view_type=None, menu_id=None, res_id=None, model=None, context=None):
""" generate a signup url for the given partner ids and action, possibly overriding
the url state components (menu_id, id, view_type) """
res = dict.fromkeys(ids, False)
@@ -61,6 +61,7 @@ class res_partner(osv.Model):
# when required, make sure the partner has a valid signup token
if context and context.get('signup_valid') and not partner.user_ids:
self.signup_prepare(cr, uid, [partner.id], context=context)
+ partner.refresh()
# the parameters to encode for the query and fragment part of url
query = {'db': cr.dbname}
@@ -78,6 +79,8 @@ class res_partner(osv.Model):
fragment['view_type'] = view_type
if menu_id:
fragment['menu_id'] = menu_id
+ if model:
+ fragment['model'] = model
if res_id:
fragment['id'] = res_id
diff --git a/addons/portal/mail_mail.py b/addons/portal/mail_mail.py
index 80c76602419..5f73deccf9d 100644
--- a/addons/portal/mail_mail.py
+++ b/addons/portal/mail_mail.py
@@ -19,9 +19,6 @@
#
##############################################################################
-from urllib import urlencode
-from urlparse import urljoin
-
from openerp import SUPERUSER_ID
from openerp.osv import osv
from openerp.osv.orm import except_orm
@@ -39,30 +36,21 @@ class mail_mail(osv.Model):
:param partner: browse_record of the specific recipient partner
:return: the resulting body_html
"""
+ partner_obj = self.pool.get('res.partner')
body = super(mail_mail, self).send_get_mail_body(cr, uid, mail, partner, context=context)
if partner:
- context = dict(context or {}, signup_valid=True)
- partner = self.pool.get('res.partner').browse(cr, SUPERUSER_ID, partner.id, context=context)
- text = ''
- # private message
- if not mail.model or not mail.res_id:
- text = _("""Access your messages through our Customer Portal
""") % partner.signup_url
- # partner is also an user: add a link if read access to the document
- elif partner.user_ids and self.check_access_rights(cr, partner.user_ids[0].id, 'read', raise_exception=False):
+ contex_signup = dict(context or {}, signup_valid=True)
+ partner = partner_obj.browse(cr, SUPERUSER_ID, partner.id, context=contex_signup)
+ text = _("""Access your messages and personal documents through our Customer Portal
""") % partner.signup_url
+ # partner is an user: add a link to the document if read access
+ if partner.user_ids and mail.model and mail.res_id \
+ and self.check_access_rights(cr, partner.user_ids[0].id, 'read', raise_exception=False):
related_user = partner.user_ids[0]
try:
self.pool.get(mail.model).check_access_rule(cr, related_user.id, [mail.res_id], 'read', context=context)
- base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url')
- url_params = {
- 'model': mail.model,
- 'id': mail.res_id,
- }
- url = urljoin(base_url, "?#%s" % (urlencode(url_params)))
+ url = partner_obj._get_signup_url_for_action(cr, related_user.id, [partner.id], action='', res_id=mail.res_id, model=mail.model, context=context)[partner.id]
text = _("""Access this document directly in OpenERP
""") % url
except except_orm, e:
- text = _("""Access your messages through our Customer Portal
""") % partner.signup_url
- # partner not user
- else:
- text = _("""Access your messages through our Customer Portal
""") % partner.signup_url
+ pass
body = append_content_to_html(body, ("" % text), plaintext=False)
return body
From 3eb82b81dd55f0871a4ecc2e8326fb152da276bc Mon Sep 17 00:00:00 2001
From: Cedric Snauwaert
Date: Fri, 4 Jan 2013 13:52:34 +0100
Subject: [PATCH 25/79] [FIX]fleet : fix infinite loop due to onchange in fuel
log form view
bzr revid: csn@openerp.com-20130104125234-hr8qagufpdmm5v4o
---
addons/fleet/fleet.py | 48 ++++++++++++++++++++++++++-----------------
1 file changed, 29 insertions(+), 19 deletions(-)
diff --git a/addons/fleet/fleet.py b/addons/fleet/fleet.py
index 83f96bd71b5..7c5e01415e1 100644
--- a/addons/fleet/fleet.py
+++ b/addons/fleet/fleet.py
@@ -483,15 +483,18 @@ class fleet_vehicle_log_fuel(osv.Model):
#make any difference between 3.0 and 3). This cause a problem if you encode, for example, 2 liters at 1.5 per
#liter => total is computed as 3.0, then trigger an onchange that recomputes price_per_liter as 3/2=1 (instead
#of 3.0/2=1.5)
+ #If there is no change in the result, we return an empty dict to prevent an infinite loop due to the 3 intertwine
+ #onchange. And in order to verify that there is no change in the result, we have to limit the precision of the
+ #computation to 2 decimal
liter = float(liter)
price_per_liter = float(price_per_liter)
amount = float(amount)
- if liter > 0 and price_per_liter > 0:
- return {'value' : {'amount' : liter * price_per_liter,}}
- elif liter > 0 and amount > 0:
- return {'value' : {'price_per_liter' : amount / liter,}}
- elif price_per_liter > 0 and amount > 0:
- return {'value' : {'liter' : amount / price_per_liter,}}
+ if liter > 0 and price_per_liter > 0 and round(liter*price_per_liter,2) != amount:
+ return {'value' : {'amount' : round(liter * price_per_liter,2),}}
+ elif amount > 0 and liter > 0 and round(amount/liter,2) != price_per_liter:
+ return {'value' : {'price_per_liter' : round(amount / liter,2),}}
+ elif amount > 0 and price_per_liter > 0 and round(amount/price_per_liter,2) != liter:
+ return {'value' : {'liter' : round(amount / price_per_liter,2),}}
else :
return {}
@@ -500,15 +503,18 @@ class fleet_vehicle_log_fuel(osv.Model):
#make any difference between 3.0 and 3). This cause a problem if you encode, for example, 2 liters at 1.5 per
#liter => total is computed as 3.0, then trigger an onchange that recomputes price_per_liter as 3/2=1 (instead
#of 3.0/2=1.5)
+ #If there is no change in the result, we return an empty dict to prevent an infinite loop due to the 3 intertwine
+ #onchange. And in order to verify that there is no change in the result, we have to limit the precision of the
+ #computation to 2 decimal
liter = float(liter)
price_per_liter = float(price_per_liter)
amount = float(amount)
- if price_per_liter > 0 and liter > 0:
- return {'value' : {'amount' : liter * price_per_liter,}}
- elif price_per_liter > 0 and amount > 0:
- return {'value' : {'liter' : amount / price_per_liter,}}
- elif liter > 0 and amount > 0:
- return {'value' : {'price_per_liter' : amount / liter,}}
+ if liter > 0 and price_per_liter > 0 and round(liter*price_per_liter,2) != amount:
+ return {'value' : {'amount' : round(liter * price_per_liter,2),}}
+ elif amount > 0 and price_per_liter > 0 and round(amount/price_per_liter,2) != liter:
+ return {'value' : {'liter' : round(amount / price_per_liter,2),}}
+ elif amount > 0 and liter > 0 and round(amount/liter,2) != price_per_liter:
+ return {'value' : {'price_per_liter' : round(amount / liter,2),}}
else :
return {}
@@ -517,16 +523,20 @@ class fleet_vehicle_log_fuel(osv.Model):
#make any difference between 3.0 and 3). This cause a problem if you encode, for example, 2 liters at 1.5 per
#liter => total is computed as 3.0, then trigger an onchange that recomputes price_per_liter as 3/2=1 (instead
#of 3.0/2=1.5)
+ #If there is no change in the result, we return an empty dict to prevent an infinite loop due to the 3 intertwine
+ #onchange. And in order to verify that there is no change in the result, we have to limit the precision of the
+ #computation to 2 decimal
liter = float(liter)
price_per_liter = float(price_per_liter)
amount = float(amount)
- if amount > 0 and liter > 0:
- return {'value': {'price_per_liter': amount / liter,}}
- elif amount > 0 and price_per_liter > 0:
- return {'value': {'liter': amount / price_per_liter,}}
- elif liter > 0 and price_per_liter > 0:
- return {'value': {'amount': liter * price_per_liter,}}
- return {}
+ if amount > 0 and liter > 0 and round(amount/liter,2) != price_per_liter:
+ return {'value': {'price_per_liter': round(amount / liter,2),}}
+ elif amount > 0 and price_per_liter > 0 and round(amount/price_per_liter,2) != liter:
+ return {'value': {'liter': round(amount / price_per_liter,2),}}
+ elif liter > 0 and price_per_liter > 0 and round(liter*price_per_liter,2) != amount:
+ return {'value': {'amount': round(liter * price_per_liter,2),}}
+ else :
+ return {}
def _get_default_service_type(self, cr, uid, context):
try:
From d67d895220a6c6af993f41af2ef43b62e4586516 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?=
Date: Fri, 4 Jan 2013 13:57:54 +0100
Subject: [PATCH 26/79] [IMP] Notifications: link to the document basically in
mail module, with basic parameters. Portal improve this.
bzr revid: tde@openerp.com-20130104125754-mmh2n0qcbvn4kd0s
---
addons/mail/mail_mail.py | 27 +++++++++++++++++++++++++--
addons/portal/mail_mail.py | 2 +-
2 files changed, 26 insertions(+), 3 deletions(-)
diff --git a/addons/mail/mail_mail.py b/addons/mail/mail_mail.py
index bb33c75758d..7b8ec0b3579 100644
--- a/addons/mail/mail_mail.py
+++ b/addons/mail/mail_mail.py
@@ -21,10 +21,13 @@
import base64
import logging
-from openerp import tools
+from urllib import urlencode
+from urlparse import urljoin
+from openerp import tools
from openerp import SUPERUSER_ID
from openerp.osv import fields, osv
+from openerp.osv.orm import except_orm
from openerp.tools.translate import _
_logger = logging.getLogger(__name__)
@@ -158,7 +161,27 @@ class mail_mail(osv.Model):
:param browse_record mail: mail.mail browse_record
:param browse_record partner: specific recipient partner
"""
- return mail.body_html
+ body = mail.body_html
+ # partner is a user, link to a related document (incentive to install portal)
+ if partner and partner.user_ids and mail.model and mail.res_id \
+ and self.check_access_rights(cr, partner.user_ids[0].id, 'read', raise_exception=False):
+ related_user = partner.user_ids[0]
+ try:
+ self.pool.get(mail.model).check_access_rule(cr, related_user.id, [mail.res_id], 'read', context=context)
+ base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url')
+ # the parameters to encode for the query and fragment part of url
+ query = {'db': cr.dbname}
+ fragment = {
+ 'login': related_user.login,
+ 'model': mail.model,
+ 'id': mail.res_id,
+ }
+ url = urljoin(base_url, "?%s#%s" % (urlencode(query), urlencode(fragment)))
+ text = _("""Access this document directly in OpenERP
""") % url
+ body = tools.append_content_to_html(body, ("" % text), plaintext=False)
+ except except_orm, e:
+ pass
+ return body
def send_get_mail_reply_to(self, cr, uid, mail, partner=None, context=None):
""" Return a specific ir_email body. The main purpose of this method
diff --git a/addons/portal/mail_mail.py b/addons/portal/mail_mail.py
index 5f73deccf9d..5d2a91e691f 100644
--- a/addons/portal/mail_mail.py
+++ b/addons/portal/mail_mail.py
@@ -37,7 +37,7 @@ class mail_mail(osv.Model):
:return: the resulting body_html
"""
partner_obj = self.pool.get('res.partner')
- body = super(mail_mail, self).send_get_mail_body(cr, uid, mail, partner, context=context)
+ body = mail.body_html
if partner:
contex_signup = dict(context or {}, signup_valid=True)
partner = partner_obj.browse(cr, SUPERUSER_ID, partner.id, context=contex_signup)
From 6389eaa52b3363fce19ef94f433b172ec3189148 Mon Sep 17 00:00:00 2001
From: "vta vta@openerp.com" <>
Date: Fri, 4 Jan 2013 13:58:49 +0100
Subject: [PATCH 27/79] [IMP] Refactor initialize_custom
bzr revid: vta@openerp.com-20130104125849-0p3wm2g1hpvlyory
---
.../static/src/js/web_analytics.js | 65 ++++++++++++-------
1 file changed, 42 insertions(+), 23 deletions(-)
diff --git a/addons/web_analytics/static/src/js/web_analytics.js b/addons/web_analytics/static/src/js/web_analytics.js
index c75eeb39e4a..806803c80a7 100644
--- a/addons/web_analytics/static/src/js/web_analytics.js
+++ b/addons/web_analytics/static/src/js/web_analytics.js
@@ -26,8 +26,6 @@ openerp.web_analytics = function(instance) {
* This method initializes the tracker
*/
init: function() {
- var self = this;
-
/* Comment this lines when going on production, only used for testing on localhost */
_gaq.push(['_setAccount', 'UA-35793871-1']);
_gaq.push(['_setDomainName', 'none']);
@@ -37,11 +35,29 @@ openerp.web_analytics = function(instance) {
_gaq.push(['_setAccount', 'UA-7333765-1']);
_gaq.push(['_setDomainName', '.openerp.com']); // Allow multi-domain
*/
-
- this.initialize_custom().then(function() {
- instance.client.on('state_pushed', self, self.on_state_pushed);
- self.include_tracker();
- });
+ },
+ /*
+ * This method MUST be overriden by saas_demo and saas_trial in order to
+ * set the correct user type. By default, the user connected is local to the DB.
+ */
+ _get_user_type: function() {
+ return 'Local User';
+ },
+ _set_user_access_level: function() {
+ if (instance.session.uid === 1) {
+ return 'Admin User';
+ // Make the difference between portal users and anonymous users
+ } else if (instance.session.username.indexOf('@') !== -1) {
+ if (instance.session.username.indexOf('anonymous') === -1) {
+ return 'Portal User';
+ } else {
+ return 'Anonymous User';
+ }
+ } else if (instance.session.username.indexOf('anonymous') !== -1) {
+ return 'Anonymous User';
+ } else {
+ return 'Normal User';
+ }
},
/*
* This method contains the initialization of all user-related custom variables
@@ -50,24 +66,16 @@ openerp.web_analytics = function(instance) {
initialize_custom: function() {
// Track User Access Level, Custom Variable 4 in GA with visitor level scope
// Values: 'Admin User', 'Normal User', 'Portal User', 'Anonymous User'
- if (instance.session.uid === 1) {
- _gaq.push(['_setCustomVar', 4, 'User Access Level', 'Admin User', 1]);
- // Make the difference between portal users and anonymous users
- } else if (instance.session.username.indexOf('@') !== -1) {
- if (instance.session.username.indexOf('anonymous') === -1) {
- _gaq.push(['_setCustomVar', 4, 'User Access Level', 'Portal User', 1]);
- } else {
- _gaq.push(['_setCustomVar', 4, 'User Access Level', 'Anonymous User', 1]);
- }
- } else if (instance.session.username.indexOf('anonymous') !== -1) {
- _gaq.push(['_setCustomVar', 4, 'User Access Level', 'Anonymous User', 1]);
- } else {
- _gaq.push(['_setCustomVar', 4, 'User Access Level', 'Normal User', 1]);
- }
- // Fetch OpenERP's version of the instance
+ _gaq.push(['_setCustomVar', 4, 'User Access Level', this.user_access_level, 1]);
+
+ // Track User Type Conversion, Custom Variable 3 in GA with session level scope
+ // Values: 'Visitor', 'Demo', 'Online Trial', 'Online Paying', 'Local User'
+ _gaq.push(['_setCustomVar', 1, 'User Type Conversion', this._get_user_type(), 2]);
+
return instance.session.rpc("/web/webclient/version_info", {})
.done(function(res) {
_gaq.push(['_setCustomVar', 5, 'Version', res.server_version, 3]);
+ return;
});
},
/*
@@ -180,11 +188,22 @@ openerp.web_analytics = function(instance) {
} else if (!instance.client) {
// client does not already exists, we are in monodb mode
instance.web.WebClient.include({
- init: function() {
+ start: function() {
var d = this._super.apply(this, arguments);
this.tracker = new instance.web_analytics.Tracker();
return d;
},
+ show_application: function() {
+ var self = this;
+ $.when(this.tracker._set_user_access_level()).then(function(r) {
+ self.tracker.user_access_level = r;
+ self.tracker.initialize_custom().then(function() {
+ instance.webclient.on('state_pushed', self, self.tracker.on_state_pushed);
+ self.tracker.include_tracker();
+ });
+ self._super();
+ });
+ },
});
}
From 185aac252a988cc32a41bbce3c97c2284ffc0673 Mon Sep 17 00:00:00 2001
From: "vta vta@openerp.com" <>
Date: Fri, 4 Jan 2013 14:04:25 +0100
Subject: [PATCH 28/79] [FIX] Add support for multidb mode
bzr revid: vta@openerp.com-20130104130425-t5b1etm074ha4lmz
---
addons/web_analytics/static/src/js/web_analytics.js | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/addons/web_analytics/static/src/js/web_analytics.js b/addons/web_analytics/static/src/js/web_analytics.js
index 806803c80a7..1e02de4f051 100644
--- a/addons/web_analytics/static/src/js/web_analytics.js
+++ b/addons/web_analytics/static/src/js/web_analytics.js
@@ -185,6 +185,13 @@ openerp.web_analytics = function(instance) {
// Set correctly the tracker in the current instance
if (instance.client instanceof instance.web.WebClient) { // not for embedded clients
instance.webclient.tracker = new instance.web_analytics.Tracker();
+ $.when(instance.webclient.tracker._set_user_access_level()).then(function(r) {
+ instance.webclient.tracker.user_access_level = r;
+ instance.webclient.tracker.initialize_custom().then(function() {
+ instance.webclient.on('state_pushed', self, instance.webclient.tracker.on_state_pushed);
+ instance.webclient.tracker.include_tracker();
+ });
+ });
} else if (!instance.client) {
// client does not already exists, we are in monodb mode
instance.web.WebClient.include({
From a1e39f8d75ef757f6dd3380decdd650c72557190 Mon Sep 17 00:00:00 2001
From: Christophe Matthieu
Date: Fri, 4 Jan 2013 15:00:00 +0100
Subject: [PATCH 29/79] [FIX] py.js: add the name of value to display error
when debugging.
bzr revid: chm@openerp.com-20130104140000-22t1wj95jp7ro2ho
---
addons/web/static/lib/py.js/lib/py.js | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/addons/web/static/lib/py.js/lib/py.js b/addons/web/static/lib/py.js/lib/py.js
index 4ef92b40112..8d6443b7753 100644
--- a/addons/web/static/lib/py.js/lib/py.js
+++ b/addons/web/static/lib/py.js/lib/py.js
@@ -521,7 +521,7 @@ var py = {};
}
};
py.PY_getAttr = function (o, attr_name) {
- return PY_ensurepy(o.__getattribute__(attr_name));
+ return PY_ensurepy(o.__getattribute__(attr_name),attr_name);
};
py.PY_str = function (o) {
var v = o.__str__();
@@ -998,7 +998,7 @@ var py = {};
}
var t = py.PY_call(py.tuple);
for(var i=0; i
Date: Fri, 4 Jan 2013 15:48:33 +0100
Subject: [PATCH 30/79] [FIX] mail: default_partner_ids
bzr revid: chm@openerp.com-20130104144833-1wf6fc00jl6vrmri
---
addons/mail/static/src/js/mail.js | 18 ++++++++++--------
addons/mail/wizard/mail_compose_message.py | 1 +
2 files changed, 11 insertions(+), 8 deletions(-)
diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js
index 56494a3aa91..fc6ddb5efde 100644
--- a/addons/mail/static/src/js/mail.js
+++ b/addons/mail/static/src/js/mail.js
@@ -514,14 +514,17 @@ openerp.mail = function (session) {
// create list of new partners
this.check_recipient_partners().done(function () {
var context = {
- 'default_model': default_composition_mode == 'reply' ? undefined : self.context.default_model,
- 'default_res_id': default_composition_mode == 'reply' ? undefined : self.context.default_res_id,
'default_composition_mode': default_composition_mode,
'default_parent_id': self.id,
'default_body': mail.ChatterUtils.get_text2html(self.$el ? (self.$el.find('textarea:not(.oe_compact)').val() || '') : ''),
'default_attachment_ids': self.attachment_ids,
'default_partner_ids': _.map(_.filter(self.partners_from, function (f) {return f[1]}), function (f) {return f[0]}),
};
+ if (default_composition_mode != 'reply' && self.context.default_model && self.context.default_res_id) {
+ context.default_model = self.context.default_model;
+ context.default_res_id = self.context.default_res_id;
+ }
+
var action = {
type: 'ir.actions.act_window',
res_model: 'mail.compose.message',
@@ -570,19 +573,19 @@ openerp.mail = function (session) {
check_recipient_partners: function () {
var self = this;
var emails = [];
+ var deferreds = [];
_.each(this.emails_from, function (email_from) {
if (email_from[1]) {
if (!_.find(emails, function (email) {return email[4] == email_from[0][4];})) {
emails.push(email_from[0]);
+ deferreds.push($.Deferred());
}
}
});
- var deferreds = [];
- var ds_partner = new session.web.DataSetSearch(this, 'res.partner');
this.partners_from = [];
- _.each(emails, function (email) {
- var deferred = $.Deferred();
- deferreds.push(deferred);
+ var ds_partner = new session.web.DataSetSearch(this, 'res.partner');
+ _.each(emails, function (email, key) {
+ var deferred = deferreds[key];
ds_partner.call('search', [[['email', 'like', email[4]]]]).then(function (partner_ids) {
if (!partner_ids.length) {
var pop = new session.web.form.FormOpenPopup(this);
@@ -611,7 +614,6 @@ openerp.mail = function (session) {
self.partners_from.push([partner_ids[0], true]);
deferred.resolve();
}
- return deferred;
});
});
return $.when.apply( $, deferreds );
diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py
index 0062b5e01bd..229d72455d1 100644
--- a/addons/mail/wizard/mail_compose_message.py
+++ b/addons/mail/wizard/mail_compose_message.py
@@ -168,6 +168,7 @@ class mail_compose_message(osv.TransientModel):
reply_subject = "%s %s" % (re_prefix, reply_subject)
# get partner_ids from original message
partner_ids = [partner.id for partner in message_data.partner_ids] if message_data.partner_ids else []
+ partner_ids += context.get('default_partner_ids') or []
# update the result
result = {
From 2156c8368773082f6b685e37d9725dbc696adadc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?=
Date: Fri, 4 Jan 2013 15:50:30 +0100
Subject: [PATCH 31/79] [IMP] hr_holidays: removed 'document created' automatic
log, as the request is automatically confirmed, leading to a status update
message that is now the first message logged.
bzr revid: tde@openerp.com-20130104145030-6t6jtu4chizgs3jk
---
addons/hr_holidays/hr_holidays.py | 11 +++++++++--
addons/hr_holidays/hr_holidays_data.xml | 2 +-
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/addons/hr_holidays/hr_holidays.py b/addons/hr_holidays/hr_holidays.py
index ab078766edc..c7d7867911d 100644
--- a/addons/hr_holidays/hr_holidays.py
+++ b/addons/hr_holidays/hr_holidays.py
@@ -283,7 +283,14 @@ class hr_holidays(osv.osv):
result['value']['number_of_days_temp'] = 0
return result
-
+
+ def create(self, cr, uid, values, context=None):
+ """ Override to avoid automatic logging of creation """
+ if context is None:
+ context = {}
+ context = dict(context, mail_create_nolog=True)
+ return super(hr_holidays, self).create(cr, uid, values, context=context)
+
def write(self, cr, uid, ids, vals, context=None):
check_fnct = self.pool.get('hr.holidays.status').check_access_rights
for holiday in self.browse(cr, uid, ids, context=context):
@@ -430,7 +437,7 @@ class hr_holidays(osv.osv):
def holidays_first_validate_notificate(self, cr, uid, ids, context=None):
for obj in self.browse(cr, uid, ids, context=context):
self.message_post(cr, uid, [obj.id],
- _("Request approved , waiting second validation."), context=context)
+ _("Request approved, waiting second validation."), context=context)
class resource_calendar_leaves(osv.osv):
_inherit = "resource.calendar.leaves"
diff --git a/addons/hr_holidays/hr_holidays_data.xml b/addons/hr_holidays/hr_holidays_data.xml
index 365423427c5..2b370f08821 100644
--- a/addons/hr_holidays/hr_holidays_data.xml
+++ b/addons/hr_holidays/hr_holidays_data.xml
@@ -49,7 +49,7 @@
To Approve
hr.holidays
- Request confirmed, waiting confirmation
+ Request created and waiting confirmation
Approved
From 3be31fa63dc9c588feb3bdf4130deb5872f5dccf Mon Sep 17 00:00:00 2001
From: Christophe Matthieu
Date: Fri, 4 Jan 2013 16:44:24 +0100
Subject: [PATCH 32/79] [MERGE] trunk-bug-1095257-vja: In IE9,create database
page should display in center.
bzr revid: chm@openerp.com-20130104154424-joyb3r3hfa2twslw
---
addons/web/static/src/css/base.css | 3 +++
addons/web/static/src/css/base.sass | 2 ++
2 files changed, 5 insertions(+)
diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css
index 978e8191e74..745899bb776 100644
--- a/addons/web/static/src/css/base.css
+++ b/addons/web/static/src/css/base.css
@@ -3141,6 +3141,9 @@ div.ui-widget-overlay {
.openerp_ie .oe_form_field_boolean input {
background: white;
}
+.openerp_ie .db_option_table .oe_form_field_selection {
+ width: auto;
+}
.openerp_ie input[type='checkbox'] {
border: none;
background: none;
diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass
index d3153bbb56e..4a670843288 100644
--- a/addons/web/static/src/css/base.sass
+++ b/addons/web/static/src/css/base.sass
@@ -2480,6 +2480,8 @@ div.ui-widget-overlay
.openerp_ie
.oe_form_field_boolean input
background: #fff
+ .db_option_table .oe_form_field_selection
+ width: auto
input[type='checkbox']
border: none
background: none
From 571504342e72c6025a50eda5f34eb47dd5b19171 Mon Sep 17 00:00:00 2001
From: Fabien Pinckaers
Date: Fri, 4 Jan 2013 17:54:29 +0100
Subject: [PATCH 33/79] [FIX] kanban width improvement
bzr revid: fp@tinyerp.com-20130104165429-51o2azb657i7b91q
---
addons/web_kanban/static/src/css/kanban.css | 6 +++---
addons/web_kanban/static/src/css/kanban.sass | 6 +++---
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css
index 99fe1854c02..1dd5406450e 100644
--- a/addons/web_kanban/static/src/css/kanban.css
+++ b/addons/web_kanban/static/src/css/kanban.css
@@ -88,8 +88,8 @@
display: inline-block;
}
.openerp .oe_kanban_view.oe_kanban_grouped .oe_kanban_column, .openerp .oe_kanban_view.oe_kanban_grouped .oe_kanban_group_header {
- width: 200px;
- min-width: 200px;
+ width: 185px;
+ min-width: 185px;
}
.openerp .oe_kanban_view.oe_kanban_grouped .oe_kanban_column.oe_kanban_group_folded, .openerp .oe_kanban_view.oe_kanban_grouped .oe_kanban_group_header.oe_kanban_group_folded {
width: auto;
@@ -172,7 +172,7 @@
margin: 4px 0;
}
.openerp .oe_kanban_view .oe_kanban_no_group .oe_kanban_quick_create {
- width: 200px;
+ width: 185px;
padding: 10px;
}
.openerp .oe_kanban_view .oe_kanban_quick_create input {
diff --git a/addons/web_kanban/static/src/css/kanban.sass b/addons/web_kanban/static/src/css/kanban.sass
index e454cc29caa..f787072447a 100644
--- a/addons/web_kanban/static/src/css/kanban.sass
+++ b/addons/web_kanban/static/src/css/kanban.sass
@@ -116,8 +116,8 @@
&.oe_kanban_grouped
.oe_kanban_column, .oe_kanban_group_header
- width: 200px
- min-width: 200px
+ width: 185px
+ min-width: 185px
&.oe_kanban_group_folded
width: auto
min-width: 30px
@@ -188,7 +188,7 @@
.oe_kanban_quick_create_buttons
margin: 4px 0
.oe_kanban_no_group .oe_kanban_quick_create
- width: 200px
+ width: 185px
padding: 10px
.oe_kanban_quick_create input
@include box-sizing(border-box)
From d4fe8fe12a1fdf9158704237efb8df43e46cc382 Mon Sep 17 00:00:00 2001
From: Launchpad Translations on behalf of openerp <>
Date: Sat, 5 Jan 2013 05:40:51 +0000
Subject: [PATCH 34/79] Launchpad automatic translations update.
bzr revid: launchpad_translations_on_behalf_of_openerp-20130105054051-qzsonom63if47pod
---
addons/account/i18n/fr.po | 111 +++++----
addons/account_analytic_analysis/i18n/fr.po | 13 +-
addons/account_analytic_analysis/i18n/mn.po | 2 +-
addons/account_budget/i18n/mn.po | 12 +-
addons/account_voucher/i18n/fr.po | 22 +-
addons/base_gengo/i18n/fr.po | 249 +++++++++++++++++++
addons/base_import/i18n/fr.po | 29 ++-
addons/crm/i18n/mn.po | 2 +-
addons/crm_claim/i18n/fr.po | 18 +-
addons/crm_profiling/i18n/mn.po | 12 +-
addons/crm_todo/i18n/mn.po | 12 +-
addons/event/i18n/fr.po | 6 +-
addons/event_moodle/i18n/pt.po | 185 ++++++++++++++
addons/event_sale/i18n/fr.po | 22 +-
addons/fetchmail/i18n/fr.po | 10 +-
addons/google_docs/i18n/zh_CN.po | 197 +++++++++++++++
addons/hr/i18n/mn.po | 40 +--
addons/knowledge/i18n/fr.po | 31 ++-
addons/l10n_ar/i18n/pt.po | 173 +++++++++++++
addons/l10n_be_invoice_bba/i18n/pt.po | 10 +-
addons/l10n_bo/i18n/pt.po | 43 ++++
addons/l10n_br/i18n/pt.po | 183 ++++++++++++++
addons/l10n_cr/i18n/it.po | 12 +-
addons/l10n_multilang/i18n/fr.po | 10 +-
addons/lunch/i18n/it.po | 70 +++---
addons/mail/i18n/fr.po | 16 +-
addons/mail/i18n/hu.po | 62 +++--
addons/mail/i18n/it.po | 17 +-
addons/marketing/i18n/fr.po | 10 +-
addons/mrp/i18n/fr.po | 84 +++++--
addons/mrp/i18n/hu.po | 145 +++++++++--
addons/mrp/i18n/it.po | 14 +-
addons/mrp_byproduct/i18n/hu.po | 16 +-
addons/note_pad/i18n/fr.po | 6 +-
addons/plugin_outlook/i18n/fr.po | 10 +-
addons/plugin_thunderbird/i18n/fr.po | 8 +-
addons/point_of_sale/i18n/fr.po | 116 ++++-----
addons/portal/i18n/fr.po | 66 ++++-
addons/product/i18n/de.po | 58 ++---
addons/product/i18n/fr.po | 8 +-
addons/product_manufacturer/i18n/fr.po | 12 +-
addons/product_margin/i18n/fr.po | 52 ++--
addons/project_gtd/i18n/fr.po | 8 +-
addons/project_issue/i18n/hu.po | 20 +-
addons/project_issue_sheet/i18n/hu.po | 2 +-
addons/project_long_term/i18n/hu.po | 2 +-
addons/project_mrp/i18n/hu.po | 2 +-
addons/project_timesheet/i18n/it.po | 20 +-
addons/purchase/i18n/fr.po | 55 +++-
addons/purchase/i18n/pt.po | 44 ++--
addons/purchase_double_validation/i18n/fr.po | 10 +-
addons/sale/i18n/fr.po | 23 +-
addons/sale/i18n/it.po | 61 +++--
addons/sale_journal/i18n/it.po | 10 +-
addons/sale_stock/i18n/fr.po | 18 +-
addons/sale_stock/i18n/it.po | 84 ++++---
addons/stock/i18n/it.po | 42 ++--
addons/survey/i18n/fr.po | 10 +-
addons/survey/i18n/it.po | 34 +--
addons/web_shortcuts/i18n/hu.po | 25 ++
60 files changed, 2044 insertions(+), 600 deletions(-)
create mode 100644 addons/base_gengo/i18n/fr.po
create mode 100644 addons/event_moodle/i18n/pt.po
create mode 100644 addons/google_docs/i18n/zh_CN.po
create mode 100644 addons/l10n_ar/i18n/pt.po
create mode 100644 addons/l10n_bo/i18n/pt.po
create mode 100644 addons/l10n_br/i18n/pt.po
create mode 100644 addons/web_shortcuts/i18n/hu.po
diff --git a/addons/account/i18n/fr.po b/addons/account/i18n/fr.po
index 231eb28c721..e445f7d31d3 100644
--- a/addons/account/i18n/fr.po
+++ b/addons/account/i18n/fr.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
-"PO-Revision-Date: 2013-01-03 17:00+0000\n"
-"Last-Translator: Numérigraphe \n"
+"PO-Revision-Date: 2013-01-04 13:38+0000\n"
+"Last-Translator: WANTELLET Sylvain \n"
"Language-Team: French \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-01-04 05:27+0000\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:39+0000\n"
"X-Generator: Launchpad (build 16393)\n"
#. module: account
@@ -741,6 +741,8 @@ msgid ""
"Invoice_${(object.number or '').replace('/','_')}_${object.state == 'draft' "
"and 'draft' or ''}"
msgstr ""
+"Invoice_${(object.number or '').replace('/','_')}_${object.state == 'draft' "
+"and 'draft' or ''}"
#. module: account
#: view:account.period:0
@@ -1884,7 +1886,7 @@ msgstr "Ventes par type de compte"
#: model:account.payment.term,name:account.account_payment_term_15days
#: model:account.payment.term,note:account.account_payment_term_15days
msgid "15 Days"
-msgstr ""
+msgstr "15 jours"
#. module: account
#: model:ir.ui.menu,name:account.periodical_processing_invoicing
@@ -2009,7 +2011,7 @@ msgstr "Référence Client:"
#: help:account.tax.template,ref_tax_code_id:0
#: help:account.tax.template,tax_code_id:0
msgid "Use this code for the tax declaration."
-msgstr ""
+msgstr "Utiliser ce code pour la déclaration de taxe."
#. module: account
#: help:account.period,special:0
@@ -2024,7 +2026,7 @@ msgstr "Relevé en brouillon"
#. module: account
#: model:mail.message.subtype,description:account.mt_invoice_validated
msgid "Invoice validated"
-msgstr ""
+msgstr "Facture validée"
#. module: account
#: field:account.config.settings,module_account_check_writing:0
@@ -2152,6 +2154,8 @@ msgid ""
"This journal already contains items for this period, therefore you cannot "
"modify its company field."
msgstr ""
+"Ce journal contient des éléments pour cette période, vous ne pouvez donc pas "
+"modifier le champ \"Société\"."
#. module: account
#: model:ir.actions.act_window,name:account.action_project_account_analytic_line_form
@@ -2268,7 +2272,7 @@ msgstr ""
#: code:addons/account/static/src/xml/account_move_line_quickadd.xml:14
#, python-format
msgid "Journal :"
-msgstr ""
+msgstr "Journal :"
#. module: account
#: sql_constraint:account.fiscal.position.tax:0
@@ -2458,7 +2462,7 @@ msgstr "Vous n'avez pas les droits d'ouvrir ce %s journal"
#. module: account
#: model:res.groups,name:account.group_supplier_inv_check_total
msgid "Check Total on supplier invoices"
-msgstr ""
+msgstr "Vérifier le total des factures fournisseurs"
#. module: account
#: selection:account.invoice,state:0
@@ -2662,6 +2666,8 @@ msgid ""
"In order to delete a bank statement, you must first cancel it to delete "
"related journal items."
msgstr ""
+"Pour pouvoir supprimer un relevé bancaire, vous devez tout d'abord l'annuler "
+"pour supprimer les enregistrements associés du journal."
#. module: account
#: field:account.invoice.report,payment_term:0
@@ -3433,7 +3439,7 @@ msgstr "Nombre de chiffres dans les numéros des comptes"
#. module: account
#: field:res.partner,property_supplier_payment_term:0
msgid "Supplier Payment Term"
-msgstr ""
+msgstr "Conditions de paiement fournisseur"
#. module: account
#: view:account.fiscalyear:0
@@ -3785,7 +3791,7 @@ msgstr "Clôturer une période"
#: view:account.bank.statement:0
#: field:account.cashbox.line,subtotal_opening:0
msgid "Opening Subtotal"
-msgstr ""
+msgstr "Sous-total d'ouverture"
#. module: account
#: constraint:account.move.line:0
@@ -4081,7 +4087,7 @@ msgstr ""
#. module: account
#: model:ir.model,name:account.model_account_journal_cashbox_line
msgid "account.journal.cashbox.line"
-msgstr ""
+msgstr "account.journal.cashbox.line"
#. module: account
#: model:ir.model,name:account.model_account_partner_reconcile_process
@@ -4571,6 +4577,8 @@ msgid ""
"If you put \"%(year)s\" in the prefix, it will be replaced by the current "
"year."
msgstr ""
+"Si vous indiquez \"%(year)s\" dans le préfixe, ce sera remplacé par l'année "
+"actuelle."
#. module: account
#: help:account.account,active:0
@@ -4682,6 +4690,8 @@ msgid ""
"Error!\n"
"You cannot create recursive Tax Codes."
msgstr ""
+"Erreur !\n"
+"Vous ne pouvez pas créer de codes de taxe récursifs."
#. module: account
#: constraint:account.period:0
@@ -4712,7 +4722,7 @@ msgstr ""
#. module: account
#: field:account.config.settings,purchase_sequence_prefix:0
msgid "Supplier invoice sequence"
-msgstr ""
+msgstr "Séquence de facture fournisseur"
#. module: account
#: code:addons/account/account_invoice.py:587
@@ -4743,7 +4753,7 @@ msgstr "Type de cpte."
#. module: account
#: selection:account.journal,type:0
msgid "Bank and Checks"
-msgstr ""
+msgstr "Banque et chèques"
#. module: account
#: field:account.account.template,note:0
@@ -4771,7 +4781,7 @@ msgstr "Laissez vide pour utiliser la date courante"
#: view:account.bank.statement:0
#: field:account.cashbox.line,subtotal_closing:0
msgid "Closing Subtotal"
-msgstr ""
+msgstr "Sous-total de clôture"
#. module: account
#: field:account.tax,base_code_id:0
@@ -4841,7 +4851,7 @@ msgstr "Dernier lettrage"
#. module: account
#: selection:account.move.line,state:0
msgid "Balanced"
-msgstr ""
+msgstr "Équilibrée"
#. module: account
#: model:process.node,note:account.process_node_importinvoice0
@@ -4855,6 +4865,8 @@ msgid ""
"There is currently no company without chart of account. The wizard will "
"therefore not be executed."
msgstr ""
+"Il n'y a pour l'instant pas de société sans plan comptable. L'assistant ne "
+"peut donc pas être exécuté."
#. module: account
#: model:ir.actions.act_window,name:account.action_wizard_multi_chart
@@ -4869,7 +4881,7 @@ msgstr "Plan comptable"
#. module: account
#: field:account.invoice,reference_type:0
msgid "Payment Reference"
-msgstr ""
+msgstr "Référence du paiement"
#. module: account
#: selection:account.financial.report,style_overwrite:0
@@ -5177,7 +5189,7 @@ msgstr "Factures"
#. module: account
#: help:account.config.settings,expects_chart_of_accounts:0
msgid "Check this box if this company is a legal entity."
-msgstr ""
+msgstr "Cochez cette case si cette société est une entité juridique."
#. module: account
#: model:account.account.type,name:account.conf_account_type_chk
@@ -5344,7 +5356,7 @@ msgstr "Actif"
#: view:account.bank.statement:0
#: field:account.journal,cash_control:0
msgid "Cash Control"
-msgstr ""
+msgstr "Contrôle de caisse"
#. module: account
#: field:account.analytic.balance,date2:0
@@ -5374,7 +5386,7 @@ msgstr "Balance par type de compte"
#: code:addons/account/account_cash_statement.py:301
#, python-format
msgid "There is no %s Account on the journal %s."
-msgstr ""
+msgstr "Il n'y a pas de compte %s dans le journal %s."
#. module: account
#: model:res.groups,name:account.group_account_user
@@ -5662,6 +5674,7 @@ msgstr "Mode de Calcul (si type=code)"
msgid ""
"Cannot find a chart of accounts for this company, you should create one."
msgstr ""
+"Plan comptable introuvable pour cette société : vous devez en créer un."
#. module: account
#: selection:account.analytic.journal,type:0
@@ -6064,7 +6077,7 @@ msgstr ""
#: code:addons/account/wizard/account_report_aged_partner_balance.py:56
#, python-format
msgid "You must set a period length greater than 0."
-msgstr ""
+msgstr "Vous devez indiquer une longueur de période supérieure à 0."
#. module: account
#: view:account.fiscal.position.template:0
@@ -6750,7 +6763,7 @@ msgstr ""
#: code:addons/account/installer.py:48
#, python-format
msgid "Custom"
-msgstr ""
+msgstr "Personnalisé"
#. module: account
#: view:account.analytic.account:0
@@ -6819,7 +6832,7 @@ msgstr "Numéro de facture"
#. module: account
#: field:account.bank.statement,difference:0
msgid "Difference"
-msgstr ""
+msgstr "Différence"
#. module: account
#: help:account.tax,include_base_amount:0
@@ -6891,12 +6904,12 @@ msgstr ""
#: code:addons/account/wizard/account_report_aged_partner_balance.py:58
#, python-format
msgid "User Error!"
-msgstr ""
+msgstr "Erreur utilisateur !"
#. module: account
#: view:account.open.closed.fiscalyear:0
msgid "Discard"
-msgstr ""
+msgstr "Annuler"
#. module: account
#: selection:account.account,type:0
@@ -6914,7 +6927,7 @@ msgstr "Lignes d'écritures analytiques"
#. module: account
#: field:account.config.settings,has_default_company:0
msgid "Has default company"
-msgstr ""
+msgstr "A une société par défaut"
#. module: account
#: view:account.fiscalyear.close:0
@@ -7273,7 +7286,7 @@ msgstr ""
#: code:addons/account/wizard/account_report_aged_partner_balance.py:58
#, python-format
msgid "You must set a start date."
-msgstr ""
+msgstr "Vous devez indiquer une date de début."
#. module: account
#: view:account.automatic.reconcile:0
@@ -7321,7 +7334,7 @@ msgstr "Pièces comptables"
#: code:addons/account/wizard/account_invoice_refund.py:147
#, python-format
msgid "No period found on the invoice."
-msgstr ""
+msgstr "Aucune période trouvée sur la facture."
#. module: account
#: help:account.partner.ledger,page_split:0
@@ -7456,6 +7469,8 @@ msgid ""
"Configuration error!\n"
"The currency chosen should be shared by the default accounts too."
msgstr ""
+"Erreur de paramétrage !\n"
+"La devise choisie doit être également partagée par les comptes par défaut."
#. module: account
#: code:addons/account/account.py:2256
@@ -7595,7 +7610,7 @@ msgstr "Rapport comptable"
#. module: account
#: field:account.analytic.line,currency_id:0
msgid "Account Currency"
-msgstr ""
+msgstr "Devise du compte"
#. module: account
#: report:account.invoice:0
@@ -7661,7 +7676,7 @@ msgstr "Compte de charge pour l'écriture d'ouverture"
#. module: account
#: view:account.invoice:0
msgid "Customer Reference"
-msgstr ""
+msgstr "Référence client"
#. module: account
#: field:account.account.template,parent_id:0
@@ -7718,7 +7733,7 @@ msgstr "Grouper par année de facturation"
#. module: account
#: field:account.config.settings,purchase_tax_rate:0
msgid "Purchase tax (%)"
-msgstr ""
+msgstr "Taxe d'achat (%)"
#. module: account
#: help:res.partner,credit:0
@@ -7821,7 +7836,7 @@ msgstr "Créer les écritures"
#. module: account
#: model:ir.model,name:account.model_cash_box_out
msgid "cash.box.out"
-msgstr ""
+msgstr "cash.box.out"
#. module: account
#: help:account.config.settings,currency_id:0
@@ -8247,11 +8262,13 @@ msgid ""
"Error!\n"
"You cannot create recursive accounts."
msgstr ""
+"Erreur !\n"
+"Vous ne pouvez pas créer de comptes récursifs."
#. module: account
#: model:ir.model,name:account.model_cash_box_in
msgid "cash.box.in"
-msgstr ""
+msgstr "cash.box.in"
#. module: account
#: help:account.invoice,move_id:0
@@ -8261,7 +8278,7 @@ msgstr "Lier automatiquement à la ligne d'écriture générée"
#. module: account
#: model:ir.model,name:account.model_account_config_settings
msgid "account.config.settings"
-msgstr ""
+msgstr "account.config.settings"
#. module: account
#: selection:account.config.settings,period:0
@@ -8284,7 +8301,7 @@ msgstr "Solde calculé"
#: code:addons/account/static/src/js/account_move_reconciliation.js:89
#, python-format
msgid "You must choose at least one record."
-msgstr ""
+msgstr "Vous devez sélectionner au moins un enregistrement."
#. module: account
#: field:account.account,parent_id:0
@@ -8296,7 +8313,7 @@ msgstr "Parent"
#: code:addons/account/account_cash_statement.py:292
#, python-format
msgid "Profit"
-msgstr ""
+msgstr "Bénéfice"
#. module: account
#: help:account.payment.term.line,days2:0
@@ -8373,7 +8390,7 @@ msgstr "Avertissement !"
#: help:account.bank.statement,message_unread:0
#: help:account.invoice,message_unread:0
msgid "If checked new messages require your attention."
-msgstr ""
+msgstr "Si coché, de nouveaux messages demandent votre attention."
#. module: account
#: field:res.company,tax_calculation_rounding_method:0
@@ -8531,7 +8548,7 @@ msgstr "Total résiduel"
#. module: account
#: view:account.bank.statement:0
msgid "Opening Cash Control"
-msgstr ""
+msgstr "Contrôle d'ouverture de caisse"
#. module: account
#: model:process.node,note:account.process_node_invoiceinvoice0
@@ -8602,7 +8619,7 @@ msgstr "Journal des avoirs d'achats"
#: code:addons/account/account.py:1297
#, python-format
msgid "Please define a sequence on the journal."
-msgstr ""
+msgstr "Veuillez définir une séquence sur ce journal."
#. module: account
#: help:account.tax.template,amount:0
@@ -8675,7 +8692,7 @@ msgstr "Total net :"
#: code:addons/account/wizard/account_report_common.py:158
#, python-format
msgid "Select a starting and an ending period."
-msgstr ""
+msgstr "Sélectionnez une période de début et de fin."
#. module: account
#: field:account.config.settings,sale_sequence_next:0
@@ -8821,7 +8838,7 @@ msgstr "Import automatique du rel. bancaire"
#: code:addons/account/account_invoice.py:389
#, python-format
msgid "Unknown Error!"
-msgstr ""
+msgstr "Erreur inconnue !"
#. module: account
#: model:ir.model,name:account.model_account_move_bank_reconcile
@@ -8831,7 +8848,7 @@ msgstr "Rapprochement d'écritures bancaires"
#. module: account
#: view:account.config.settings:0
msgid "Apply"
-msgstr ""
+msgstr "Appliquer"
#. module: account
#: field:account.financial.report,account_type_ids:0
@@ -9093,7 +9110,7 @@ msgstr "Comptes autorisés"
#. module: account
#: field:account.config.settings,sale_tax_rate:0
msgid "Sales tax (%)"
-msgstr ""
+msgstr "Taxe de vente (%)"
#. module: account
#: model:ir.actions.act_window,name:account.action_account_analytic_account_tree2
@@ -9335,7 +9352,7 @@ msgstr "Les brouillons de facture sont vérifiés, validés et imprimés."
#: field:account.bank.statement,message_is_follower:0
#: field:account.invoice,message_is_follower:0
msgid "Is a Follower"
-msgstr ""
+msgstr "Est abonné"
#. module: account
#: view:account.move:0
@@ -9371,7 +9388,7 @@ msgstr ""
#: code:addons/account/account.py:634
#, python-format
msgid "You cannot deactivate an account that contains journal items."
-msgstr ""
+msgstr "Vous ne pouvez pas désactiver un compte contenant des écritures."
#. module: account
#: selection:account.tax,applicable_type:0
@@ -9953,13 +9970,13 @@ msgstr "Date d'échéance"
#: model:account.payment.term,name:account.account_payment_term_immediate
#: model:account.payment.term,note:account.account_payment_term_immediate
msgid "Immediate Payment"
-msgstr ""
+msgstr "Paiement immédiat"
#. module: account
#: code:addons/account/account.py:1464
#, python-format
msgid " Centralisation"
-msgstr ""
+msgstr " Centralisation"
#. module: account
#: help:account.journal,type:0
@@ -11225,7 +11242,7 @@ msgstr "Compte de dépense sur les modèles d'article"
#. module: account
#: field:res.partner,property_payment_term:0
msgid "Customer Payment Term"
-msgstr ""
+msgstr "Conditions de paiement du client"
#. module: account
#: help:accounting.report,label_filter:0
diff --git a/addons/account_analytic_analysis/i18n/fr.po b/addons/account_analytic_analysis/i18n/fr.po
index 61ad50f20e3..76cc3e5e7ac 100644
--- a/addons/account_analytic_analysis/i18n/fr.po
+++ b/addons/account_analytic_analysis/i18n/fr.po
@@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
-"PO-Revision-Date: 2012-12-21 23:00+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2013-01-04 08:18+0000\n"
+"Last-Translator: Nicolas JEUDY \n"
"Language-Team: French \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-22 07:02+0000\n"
-"X-Generator: Launchpad (build 16378)\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:39+0000\n"
+"X-Generator: Launchpad (build 16393)\n"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
msgid "No order to invoice, create"
-msgstr ""
+msgstr "Aucune commande à facturer, créer"
#. module: account_analytic_analysis
#: view:account.analytic.account:0
@@ -99,7 +99,7 @@ msgstr "Montant total facturé au client pour ce compte"
#. module: account_analytic_analysis
#: help:account.analytic.account,timesheet_ca_invoiced:0
msgid "Sum of timesheet lines invoiced for this contract."
-msgstr ""
+msgstr "Total du temps passé facturé pour ce contrat."
#. module: account_analytic_analysis
#: code:addons/account_analytic_analysis/account_analytic_analysis.py:462
@@ -212,6 +212,7 @@ msgstr "Taux de marge réel (%)"
#: help:account.analytic.account,remaining_hours:0
msgid "Computed using the formula: Maximum Time - Total Worked Time"
msgstr ""
+"Calculé en appliquant la formule: Temps Maximum - Total du temps passé"
#. module: account_analytic_analysis
#: help:account.analytic.account,hours_quantity:0
diff --git a/addons/account_analytic_analysis/i18n/mn.po b/addons/account_analytic_analysis/i18n/mn.po
index 30647aa61fa..0a75f27f99d 100644
--- a/addons/account_analytic_analysis/i18n/mn.po
+++ b/addons/account_analytic_analysis/i18n/mn.po
@@ -14,7 +14,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-01-04 05:27+0000\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:39+0000\n"
"X-Generator: Launchpad (build 16393)\n"
#. module: account_analytic_analysis
diff --git a/addons/account_budget/i18n/mn.po b/addons/account_budget/i18n/mn.po
index 9d380393b77..3edf6782de0 100644
--- a/addons/account_budget/i18n/mn.po
+++ b/addons/account_budget/i18n/mn.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
-"PO-Revision-Date: 2012-12-21 23:00+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2013-01-04 11:31+0000\n"
+"Last-Translator: gobi \n"
"Language-Team: Mongolian \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-22 07:03+0000\n"
-"X-Generator: Launchpad (build 16378)\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:39+0000\n"
+"X-Generator: Launchpad (build 16393)\n"
#. module: account_budget
#: view:account.budget.analytic:0
@@ -235,7 +235,7 @@ msgstr "Төсөвүүдийг Батлах"
#. module: account_budget
#: view:crossovered.budget:0
msgid "Duration"
-msgstr ""
+msgstr "Үргэлжлэх хугацаа"
#. module: account_budget
#: field:account.budget.post,code:0
@@ -333,7 +333,7 @@ msgstr "Онолын дүн"
#: view:account.budget.crossvered.summary.report:0
#: view:account.budget.report:0
msgid "or"
-msgstr ""
+msgstr "эсвэл"
#. module: account_budget
#: field:crossovered.budget.lines,analytic_account_id:0
diff --git a/addons/account_voucher/i18n/fr.po b/addons/account_voucher/i18n/fr.po
index edd1c998848..c68be4d12e7 100644
--- a/addons/account_voucher/i18n/fr.po
+++ b/addons/account_voucher/i18n/fr.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
-"PO-Revision-Date: 2012-12-21 23:00+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2013-01-04 08:21+0000\n"
+"Last-Translator: halgandd \n"
"Language-Team: French \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-22 07:05+0000\n"
-"X-Generator: Launchpad (build 16378)\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
+"X-Generator: Launchpad (build 16393)\n"
#. module: account_voucher
#: field:account.bank.statement.line,voucher_id:0
@@ -60,8 +60,8 @@ msgid ""
"Computed as the difference between the amount stated in the voucher and the "
"sum of allocation on the voucher lines."
msgstr ""
-"Calculé comme la différence entre le montant indiqué sur le reçu et la somme "
-"des allocations sur les lignes du reçu."
+"L'écart correspond à la différence entre le montant réglé et la somme des "
+"allocations."
#. module: account_voucher
#: view:account.voucher:0
@@ -149,7 +149,7 @@ msgstr "Valider"
#: model:ir.actions.act_window,name:account_voucher.action_vendor_payment
#: model:ir.ui.menu,name:account_voucher.menu_action_vendor_payment
msgid "Supplier Payments"
-msgstr ""
+msgstr "Paiements fournisseurs"
#. module: account_voucher
#: model:ir.actions.act_window,help:account_voucher.action_purchase_receipt
@@ -225,7 +225,7 @@ msgstr "Messages"
#: model:ir.actions.act_window,name:account_voucher.action_purchase_receipt
#: model:ir.ui.menu,name:account_voucher.menu_action_purchase_receipt
msgid "Purchase Receipts"
-msgstr ""
+msgstr "Reçus d'achat"
#. module: account_voucher
#: field:account.voucher.line,move_line_id:0
@@ -787,7 +787,7 @@ msgstr "Réglé"
#: model:ir.actions.act_window,name:account_voucher.action_sale_receipt
#: model:ir.ui.menu,name:account_voucher.menu_action_sale_receipt
msgid "Sales Receipts"
-msgstr ""
+msgstr "Reçus de ventes"
#. module: account_voucher
#: field:account.voucher,message_is_follower:0
@@ -892,7 +892,7 @@ msgstr ""
#: model:ir.ui.menu,name:account_voucher.menu_action_sale_receipt_report_all
#: view:sale.receipt.report:0
msgid "Sales Receipts Analysis"
-msgstr ""
+msgstr "Analyse des reçus de ventes"
#. module: account_voucher
#: view:sale.receipt.report:0
@@ -949,7 +949,7 @@ msgstr "Relevé bancaire"
#. module: account_voucher
#: view:account.bank.statement:0
msgid "onchange_amount(amount)"
-msgstr ""
+msgstr "onchange_amount(amount)"
#. module: account_voucher
#: selection:sale.receipt.report,month:0
diff --git a/addons/base_gengo/i18n/fr.po b/addons/base_gengo/i18n/fr.po
new file mode 100644
index 00000000000..8a05fc1a3fa
--- /dev/null
+++ b/addons/base_gengo/i18n/fr.po
@@ -0,0 +1,249 @@
+# French translation for openobject-addons
+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-12-21 17:05+0000\n"
+"PO-Revision-Date: 2013-01-04 11:28+0000\n"
+"Last-Translator: Jerome CHARLOT \n"
+"Language-Team: French \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
+"X-Generator: Launchpad (build 16393)\n"
+
+#. module: base_gengo
+#: view:res.company:0
+msgid "Comments for Translator"
+msgstr ""
+
+#. module: base_gengo
+#: field:ir.translation,job_id:0
+msgid "Gengo Job ID"
+msgstr ""
+
+#. module: base_gengo
+#: code:addons/base_gengo/wizard/base_gengo_translations.py:114
+#, python-format
+msgid "This language is not supported by the Gengo translation services."
+msgstr "Cette langue n'est pas supportée par le service de traduction Gengo."
+
+#. module: base_gengo
+#: field:res.company,gengo_comment:0
+msgid "Comments"
+msgstr "Commentaires"
+
+#. module: base_gengo
+#: field:res.company,gengo_private_key:0
+msgid "Gengo Private Key"
+msgstr "Clé privée Gengo"
+
+#. module: base_gengo
+#: model:ir.model,name:base_gengo.model_base_gengo_translations
+msgid "base.gengo.translations"
+msgstr "base.gengo.translations"
+
+#. module: base_gengo
+#: help:res.company,gengo_auto_approve:0
+msgid "Jobs are Automatically Approved by Gengo."
+msgstr "Les travaux sont automatiquement validés par Gengo."
+
+#. module: base_gengo
+#: field:base.gengo.translations,lang_id:0
+msgid "Language"
+msgstr "Langue"
+
+#. module: base_gengo
+#: field:ir.translation,gengo_comment:0
+msgid "Comments & Activity Linked to Gengo"
+msgstr ""
+
+#. module: base_gengo
+#: code:addons/base_gengo/wizard/base_gengo_translations.py:124
+#, python-format
+msgid "Gengo Sync Translation (Response)"
+msgstr ""
+
+#. module: base_gengo
+#: code:addons/base_gengo/wizard/base_gengo_translations.py:72
+#, python-format
+msgid ""
+"Gengo `Public Key` or `Private Key` are missing. Enter your Gengo "
+"authentication parameters under `Settings > Companies > Gengo Parameters`."
+msgstr ""
+
+#. module: base_gengo
+#: selection:ir.translation,gengo_translation:0
+msgid "Translation By Machine"
+msgstr ""
+
+#. module: base_gengo
+#: code:addons/base_gengo/wizard/base_gengo_translations.py:155
+#, python-format
+msgid ""
+"%s\n"
+"\n"
+"--\n"
+" Commented on %s by %s."
+msgstr ""
+
+#. module: base_gengo
+#: field:ir.translation,gengo_translation:0
+msgid "Gengo Translation Service Level"
+msgstr ""
+
+#. module: base_gengo
+#: constraint:ir.translation:0
+msgid ""
+"The Gengo translation service selected is not supported for this language."
+msgstr ""
+
+#. module: base_gengo
+#: selection:ir.translation,gengo_translation:0
+msgid "Standard"
+msgstr ""
+
+#. module: base_gengo
+#: help:ir.translation,gengo_translation:0
+msgid ""
+"You can select here the service level you want for an automatic translation "
+"using Gengo."
+msgstr ""
+
+#. module: base_gengo
+#: field:base.gengo.translations,restart_send_job:0
+msgid "Restart Sending Job"
+msgstr ""
+
+#. module: base_gengo
+#: view:ir.translation:0
+msgid "To Approve In Gengo"
+msgstr ""
+
+#. module: base_gengo
+#: view:res.company:0
+msgid "Private Key"
+msgstr ""
+
+#. module: base_gengo
+#: view:res.company:0
+msgid "Public Key"
+msgstr ""
+
+#. module: base_gengo
+#: field:res.company,gengo_public_key:0
+msgid "Gengo Public Key"
+msgstr ""
+
+#. module: base_gengo
+#: code:addons/base_gengo/wizard/base_gengo_translations.py:123
+#, python-format
+msgid "Gengo Sync Translation (Request)"
+msgstr ""
+
+#. module: base_gengo
+#: view:ir.translation:0
+msgid "Translations"
+msgstr ""
+
+#. module: base_gengo
+#: field:res.company,gengo_auto_approve:0
+msgid "Auto Approve Translation ?"
+msgstr ""
+
+#. module: base_gengo
+#: model:ir.actions.act_window,name:base_gengo.action_wizard_base_gengo_translations
+#: model:ir.ui.menu,name:base_gengo.menu_action_wizard_base_gengo_translations
+msgid "Gengo: Manual Request of Translation"
+msgstr ""
+
+#. module: base_gengo
+#: code:addons/base_gengo/ir_translation.py:62
+#: code:addons/base_gengo/wizard/base_gengo_translations.py:109
+#, python-format
+msgid "Gengo Authentication Error"
+msgstr ""
+
+#. module: base_gengo
+#: model:ir.model,name:base_gengo.model_res_company
+msgid "Companies"
+msgstr ""
+
+#. module: base_gengo
+#: view:ir.translation:0
+msgid ""
+"Note: If the translation state is 'In Progress', it means that the "
+"translation has to be approved to be uploaded in this system. You are "
+"supposed to do that directly by using your Gengo Account"
+msgstr ""
+
+#. module: base_gengo
+#: code:addons/base_gengo/wizard/base_gengo_translations.py:82
+#, python-format
+msgid ""
+"Gengo connection failed with this message:\n"
+"``%s``"
+msgstr ""
+
+#. module: base_gengo
+#: view:res.company:0
+msgid "Gengo Parameters"
+msgstr ""
+
+#. module: base_gengo
+#: view:base.gengo.translations:0
+msgid "Send"
+msgstr ""
+
+#. module: base_gengo
+#: selection:ir.translation,gengo_translation:0
+msgid "Ultra"
+msgstr ""
+
+#. module: base_gengo
+#: model:ir.model,name:base_gengo.model_ir_translation
+msgid "ir.translation"
+msgstr ""
+
+#. module: base_gengo
+#: view:ir.translation:0
+msgid "Gengo Translation Service"
+msgstr ""
+
+#. module: base_gengo
+#: selection:ir.translation,gengo_translation:0
+msgid "Pro"
+msgstr ""
+
+#. module: base_gengo
+#: view:base.gengo.translations:0
+msgid "Gengo Request Form"
+msgstr ""
+
+#. module: base_gengo
+#: code:addons/base_gengo/wizard/base_gengo_translations.py:114
+#, python-format
+msgid "Warning"
+msgstr ""
+
+#. module: base_gengo
+#: help:res.company,gengo_comment:0
+msgid ""
+"This comment will be automatically be enclosed in each an every request sent "
+"to Gengo"
+msgstr ""
+
+#. module: base_gengo
+#: view:base.gengo.translations:0
+msgid "Cancel"
+msgstr ""
+
+#. module: base_gengo
+#: view:base.gengo.translations:0
+msgid "or"
+msgstr ""
diff --git a/addons/base_import/i18n/fr.po b/addons/base_import/i18n/fr.po
index 399163800aa..84fec73aa3a 100644
--- a/addons/base_import/i18n/fr.po
+++ b/addons/base_import/i18n/fr.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
-"PO-Revision-Date: 2013-01-03 12:36+0000\n"
-"Last-Translator: P. M. Seck \n"
+"PO-Revision-Date: 2013-01-04 08:16+0000\n"
+"Last-Translator: Numérigraphe \n"
"Language-Team: French \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-01-04 05:27+0000\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
"X-Generator: Launchpad (build 16393)\n"
#. module: base_import
@@ -74,6 +74,9 @@ msgid ""
"Country/Database ID: the unique OpenERP ID for a \n"
" record, defined by the ID postgresql column"
msgstr ""
+"Pays/Id. base de données : l'identifiant unique OpenERP d'un \n"
+" enregistrement, défini par la colonne postgresql "
+"\"ID\"."
#. module: base_import
#. openerp-web
@@ -89,6 +92,16 @@ msgid ""
"\n"
" have a unique Database ID)"
msgstr ""
+"Utiliser \n"
+" Pays/id. base de données : Vous devriez rarement "
+"utiliser cette \n"
+" notation. Elle est en général utilisée par les "
+"développeurs : son principal \n"
+" avantage est de ne jamais avoir de conflits (vous "
+"pouvez avoir \n"
+" plusieurs enregistrements avec le même nom, mais ils "
+"ont toujours \n"
+" un identifiant de base de données unique)"
#. module: base_import
#. openerp-web
@@ -144,6 +157,10 @@ msgid ""
"\n"
" data from a third party application."
msgstr ""
+"Utilisez \n"
+" Pays/id. externe : Utilisez l'idenfiant externe "
+"quand vous importez \n"
+" des données d'une autre application."
#. module: base_import
#. openerp-web
@@ -224,7 +241,7 @@ msgstr "Valider"
#: code:addons/base_import/static/src/xml/import.xml:55
#, python-format
msgid "Map your data to OpenERP"
-msgstr ""
+msgstr "Faites les correspondre les données avec OpenERP"
#. module: base_import
#. openerp-web
@@ -235,6 +252,10 @@ msgid ""
" the easiest way when your data come from CSV files \n"
" that have been created manually."
msgstr ""
+"Utilisez le pays : ceci est \n"
+" la manière la plus facile quand vos données viennent "
+"de fichiers CSV \n"
+" qui ont été créés manuellement."
#. module: base_import
#. openerp-web
diff --git a/addons/crm/i18n/mn.po b/addons/crm/i18n/mn.po
index 6fd38cffd44..b748db18b2f 100644
--- a/addons/crm/i18n/mn.po
+++ b/addons/crm/i18n/mn.po
@@ -14,7 +14,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-01-04 05:27+0000\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
"X-Generator: Launchpad (build 16393)\n"
#. module: crm
diff --git a/addons/crm_claim/i18n/fr.po b/addons/crm_claim/i18n/fr.po
index 354526affdd..4e8020931d4 100644
--- a/addons/crm_claim/i18n/fr.po
+++ b/addons/crm_claim/i18n/fr.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
-"PO-Revision-Date: 2012-12-21 23:00+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2013-01-04 16:33+0000\n"
+"Last-Translator: Fabian Pilard \n"
"Language-Team: French \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-22 07:10+0000\n"
-"X-Generator: Launchpad (build 16378)\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
+"X-Generator: Launchpad (build 16393)\n"
#. module: crm_claim
#: help:crm.claim.stage,fold:0
@@ -33,7 +33,7 @@ msgstr "# de cas"
#: view:crm.claim:0
#: view:crm.claim.report:0
msgid "Group By..."
-msgstr "Grouper par ..."
+msgstr "Regrouper par..."
#. module: crm_claim
#: view:crm.claim:0
@@ -105,7 +105,7 @@ msgstr ""
#. module: crm_claim
#: view:crm.claim.report:0
msgid "Salesperson"
-msgstr ""
+msgstr "Vendeur"
#. module: crm_claim
#: selection:crm.claim,priority:0
@@ -290,7 +290,7 @@ msgstr "Objet de la réclamation"
#. module: crm_claim
#: model:crm.claim.stage,name:crm_claim.stage_claim3
msgid "Rejected"
-msgstr ""
+msgstr "Refusé"
#. module: crm_claim
#: field:crm.claim,date_action_next:0
@@ -344,7 +344,7 @@ msgstr ""
#: code:addons/crm_claim/crm_claim.py:194
#, python-format
msgid "No Subject"
-msgstr ""
+msgstr "Aucun objet"
#. module: crm_claim
#: help:crm.claim.stage,state:0
@@ -549,7 +549,7 @@ msgstr "Téléphone"
#. module: crm_claim
#: field:crm.claim,message_is_follower:0
msgid "Is a Follower"
-msgstr "Est un abonné"
+msgstr "Est abonné"
#. module: crm_claim
#: field:crm.claim.report,user_id:0
diff --git a/addons/crm_profiling/i18n/mn.po b/addons/crm_profiling/i18n/mn.po
index dd60743c6ef..b276e89f26a 100644
--- a/addons/crm_profiling/i18n/mn.po
+++ b/addons/crm_profiling/i18n/mn.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
-"PO-Revision-Date: 2012-12-21 23:00+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2013-01-04 11:43+0000\n"
+"Last-Translator: gobi \n"
"Language-Team: Mongolian \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-22 07:11+0000\n"
-"X-Generator: Launchpad (build 16378)\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
+"X-Generator: Launchpad (build 16393)\n"
#. module: crm_profiling
#: view:crm_profiling.questionnaire:0
@@ -151,7 +151,7 @@ msgstr "Профайлын Журмыг ашиглах"
#. module: crm_profiling
#: constraint:crm.segmentation:0
msgid "Error ! You cannot create recursive profiles."
-msgstr ""
+msgstr "Алдаа ! Та тойрог хамааралтай профайл үүсгэж чадахгүй."
#. module: crm_profiling
#: field:crm.segmentation,answer_yes:0
@@ -200,4 +200,4 @@ msgstr "Өгөгдлийг Хадгалах"
#. module: crm_profiling
#: view:open.questionnaire:0
msgid "or"
-msgstr ""
+msgstr "эсвэл"
diff --git a/addons/crm_todo/i18n/mn.po b/addons/crm_todo/i18n/mn.po
index 1457a28d10b..5fa4f2d6c1f 100644
--- a/addons/crm_todo/i18n/mn.po
+++ b/addons/crm_todo/i18n/mn.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
-"PO-Revision-Date: 2012-12-21 23:00+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2013-01-04 12:04+0000\n"
+"Last-Translator: gobi \n"
"Language-Team: Mongolian \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-22 07:11+0000\n"
-"X-Generator: Launchpad (build 16378)\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
+"X-Generator: Launchpad (build 16393)\n"
#. module: crm_todo
#: model:ir.model,name:crm_todo.model_project_task
@@ -30,7 +30,7 @@ msgstr "Хугацааны муж"
#. module: crm_todo
#: view:crm.lead:0
msgid "Lead"
-msgstr ""
+msgstr "Сэжим"
#. module: crm_todo
#: view:crm.lead:0
@@ -67,7 +67,7 @@ msgstr "Цуцлах"
#. module: crm_todo
#: model:ir.model,name:crm_todo.model_crm_lead
msgid "Lead/Opportunity"
-msgstr ""
+msgstr "Сэжим/Боломж"
#. module: crm_todo
#: field:project.task,lead_id:0
diff --git a/addons/event/i18n/fr.po b/addons/event/i18n/fr.po
index 6dc23d11417..37c9e06777c 100644
--- a/addons/event/i18n/fr.po
+++ b/addons/event/i18n/fr.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
-"PO-Revision-Date: 2013-01-03 12:41+0000\n"
+"PO-Revision-Date: 2013-01-04 08:23+0000\n"
"Last-Translator: Numérigraphe \n"
"Language-Team: French \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-01-04 05:27+0000\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
"X-Generator: Launchpad (build 16393)\n"
#. module: event
@@ -226,7 +226,7 @@ msgstr "Opéra de Verdi"
#: help:event.event,message_unread:0
#: help:event.registration,message_unread:0
msgid "If checked new messages require your attention."
-msgstr "Si cochée, de nouveau messages requierent votre attention"
+msgstr "Si coché, de nouveaux messages demandent votre attention."
#. module: event
#: view:report.event.registration:0
diff --git a/addons/event_moodle/i18n/pt.po b/addons/event_moodle/i18n/pt.po
new file mode 100644
index 00000000000..c94a4ce93f2
--- /dev/null
+++ b/addons/event_moodle/i18n/pt.po
@@ -0,0 +1,185 @@
+# Portuguese translation for openobject-addons
+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-12-21 17:05+0000\n"
+"PO-Revision-Date: 2013-01-04 17:38+0000\n"
+"Last-Translator: Andrei Talpa (multibase.pt) \n"
+"Language-Team: Portuguese \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
+"X-Generator: Launchpad (build 16393)\n"
+
+#. module: event_moodle
+#: view:event.moodle.config.wiz:0
+msgid "Connection with username and password"
+msgstr ""
+
+#. module: event_moodle
+#: model:ir.model,name:event_moodle.model_event_moodle_config_wiz
+msgid "event.moodle.config.wiz"
+msgstr "event.moodle.config.wiz"
+
+#. module: event_moodle
+#: help:event.moodle.config.wiz,server_moodle:0
+msgid ""
+"URL where you have your moodle server. For exemple: 'http://127.0.0.1' or "
+"'http://localhost'"
+msgstr ""
+
+#. module: event_moodle
+#: field:event.registration,moodle_user_password:0
+msgid "Password for Moodle User"
+msgstr ""
+
+#. module: event_moodle
+#: field:event.moodle.config.wiz,moodle_password:0
+msgid "Moodle Password"
+msgstr "Senha Moodle"
+
+#. module: event_moodle
+#: code:addons/event_moodle/event_moodle.py:137
+#, python-format
+msgid "Your email '%s' is wrong."
+msgstr "O seu email '%s' está errado."
+
+#. module: event_moodle
+#: view:event.moodle.config.wiz:0
+msgid "Connection with a Token"
+msgstr ""
+
+#. module: event_moodle
+#: view:event.moodle.config.wiz:0
+msgid ""
+"The easiest way to connect OpenERP with a moodle server is to create a "
+"'token' in Moodle. It will be used to authenticate OpenERP as a trustable "
+"application."
+msgstr ""
+
+#. module: event_moodle
+#: field:event.moodle.config.wiz,url:0
+msgid "URL to Moodle Server"
+msgstr "Endereço para o servidor Moodle"
+
+#. module: event_moodle
+#: help:event.moodle.config.wiz,url:0
+msgid "The url that will be used for the connection with moodle in xml-rpc"
+msgstr ""
+
+#. module: event_moodle
+#: model:ir.model,name:event_moodle.model_event_registration
+msgid "Event Registration"
+msgstr ""
+
+#. module: event_moodle
+#: view:event.moodle.config.wiz:0
+msgid ""
+"Another approach is to create a user for OpenERP in Moodle. If you do so, "
+"make sure that this user has appropriate access rights."
+msgstr ""
+
+#. module: event_moodle
+#: field:event.registration,moodle_uid:0
+msgid "Moodle User ID"
+msgstr ""
+
+#. module: event_moodle
+#: field:event.moodle.config.wiz,server_moodle:0
+msgid "Moodle Server"
+msgstr "Servidor Moodle"
+
+#. module: event_moodle
+#: field:event.event,moodle_id:0
+msgid "Moodle ID"
+msgstr ""
+
+#. module: event_moodle
+#: view:event.moodle.config.wiz:0
+msgid "Server"
+msgstr "Servidor"
+
+#. module: event_moodle
+#: code:addons/event_moodle/event_moodle.py:57
+#: code:addons/event_moodle/event_moodle.py:105
+#: code:addons/event_moodle/event_moodle.py:137
+#, python-format
+msgid "Error!"
+msgstr "Erro!"
+
+#. module: event_moodle
+#: code:addons/event_moodle/event_moodle.py:105
+#, python-format
+msgid "You must configure your moodle connection."
+msgstr ""
+
+#. module: event_moodle
+#: field:event.moodle.config.wiz,moodle_username:0
+#: field:event.registration,moodle_username:0
+msgid "Moodle Username"
+msgstr ""
+
+#. module: event_moodle
+#: view:event.moodle.config.wiz:0
+#: model:ir.actions.act_window,name:event_moodle.configure_moodle
+msgid "Configure Moodle"
+msgstr "Configurar Moodle"
+
+#. module: event_moodle
+#: field:event.moodle.config.wiz,moodle_token:0
+msgid "Moodle Token"
+msgstr ""
+
+#. module: event_moodle
+#: help:event.moodle.config.wiz,moodle_username:0
+msgid ""
+"You can also connect with your username that you define when you create a "
+"token"
+msgstr ""
+
+#. module: event_moodle
+#: help:event.event,moodle_id:0
+msgid "The identifier of this event in Moodle"
+msgstr ""
+
+#. module: event_moodle
+#: help:event.moodle.config.wiz,moodle_token:0
+msgid "Put your token that you created in your moodle server"
+msgstr ""
+
+#. module: event_moodle
+#: model:ir.ui.menu,name:event_moodle.wizard_moodle
+msgid "Moodle Configuration"
+msgstr ""
+
+#. module: event_moodle
+#: view:event.moodle.config.wiz:0
+msgid "or"
+msgstr ""
+
+#. module: event_moodle
+#: code:addons/event_moodle/event_moodle.py:57
+#, python-format
+msgid "First configure your moodle connection."
+msgstr ""
+
+#. module: event_moodle
+#: view:event.moodle.config.wiz:0
+msgid "Apply"
+msgstr "Aplicar"
+
+#. module: event_moodle
+#: view:event.moodle.config.wiz:0
+msgid "Cancel"
+msgstr "Cancelar"
+
+#. module: event_moodle
+#: model:ir.model,name:event_moodle.model_event_event
+msgid "Event"
+msgstr "Evento"
diff --git a/addons/event_sale/i18n/fr.po b/addons/event_sale/i18n/fr.po
index cc90bb197a0..1b3829265bb 100644
--- a/addons/event_sale/i18n/fr.po
+++ b/addons/event_sale/i18n/fr.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
-"PO-Revision-Date: 2012-12-21 23:00+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2013-01-04 08:28+0000\n"
+"Last-Translator: Florian Hatat \n"
"Language-Team: French \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-22 07:13+0000\n"
-"X-Generator: Launchpad (build 16378)\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
+"X-Generator: Launchpad (build 16393)\n"
#. module: event_sale
#: model:ir.model,name:event_sale.model_product_product
@@ -39,7 +39,7 @@ msgstr ""
#. module: event_sale
#: model:event.event,name:event_sale.event_technical_training
msgid "Technical training in Grand-Rosiere"
-msgstr ""
+msgstr "Formation technique à Grand-Rosière"
#. module: event_sale
#: help:product.product,event_type_id:0
@@ -51,27 +51,27 @@ msgstr ""
#. module: event_sale
#: field:product.product,event_type_id:0
msgid "Type of Event"
-msgstr ""
+msgstr "Type d'évènement"
#. module: event_sale
#: field:sale.order.line,event_ok:0
msgid "event_ok"
-msgstr ""
+msgstr "event_ok"
#. module: event_sale
#: field:product.product,event_ok:0
msgid "Event Subscription"
-msgstr ""
+msgstr "Inscription à un événement"
#. module: event_sale
#: field:sale.order.line,event_type_id:0
msgid "Event Type"
-msgstr ""
+msgstr "Type d'évènement"
#. module: event_sale
#: model:product.template,name:event_sale.event_product_product_template
msgid "Technical Training"
-msgstr ""
+msgstr "Formation technique"
#. module: event_sale
#: code:addons/event_sale/event_sale.py:88
@@ -82,7 +82,7 @@ msgstr ""
#. module: event_sale
#: field:sale.order.line,event_id:0
msgid "Event"
-msgstr ""
+msgstr "Évènement"
#. module: event_sale
#: model:ir.model,name:event_sale.model_sale_order_line
diff --git a/addons/fetchmail/i18n/fr.po b/addons/fetchmail/i18n/fr.po
index 52e323f7f80..8a63a37a0de 100644
--- a/addons/fetchmail/i18n/fr.po
+++ b/addons/fetchmail/i18n/fr.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
-"PO-Revision-Date: 2012-12-21 23:00+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2013-01-04 08:29+0000\n"
+"Last-Translator: Numérigraphe \n"
"Language-Team: French \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-22 07:13+0000\n"
-"X-Generator: Launchpad (build 16378)\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
+"X-Generator: Launchpad (build 16393)\n"
#. module: fetchmail
#: selection:fetchmail.server,state:0
@@ -72,7 +72,7 @@ msgstr ""
#. module: fetchmail
#: view:base.config.settings:0
msgid "Configure the incoming email gateway"
-msgstr ""
+msgstr "Paramétrez la passerelle de messagerie pour la réception"
#. module: fetchmail
#: view:fetchmail.server:0
diff --git a/addons/google_docs/i18n/zh_CN.po b/addons/google_docs/i18n/zh_CN.po
new file mode 100644
index 00000000000..5c4ddd1240d
--- /dev/null
+++ b/addons/google_docs/i18n/zh_CN.po
@@ -0,0 +1,197 @@
+# Chinese (Simplified) translation for openobject-addons
+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-12-21 17:05+0000\n"
+"PO-Revision-Date: 2013-01-04 11:31+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Chinese (Simplified) \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
+"X-Generator: Launchpad (build 16393)\n"
+
+#. module: google_docs
+#: code:addons/google_docs/google_docs.py:139
+#, python-format
+msgid "Key Error!"
+msgstr ""
+
+#. module: google_docs
+#: view:google.docs.config:0
+msgid ""
+"for a presentation (slide show) document with url like "
+"`https://docs.google.com/a/openerp.com/presentation/d/123456789/edit#slide=id"
+".p`, the ID is `presentation:123456789`"
+msgstr ""
+"网址如`https://docs.google.com/a/openerp.com/presentation/d/123456789/edit#slide"
+"=id.p`,的演示文档(幻灯片) 其 ID 为 `presentation:123456789`"
+
+#. module: google_docs
+#: view:google.docs.config:0
+msgid ""
+"for a text document with url like "
+"`https://docs.google.com/a/openerp.com/document/d/123456789/edit`, the ID is "
+"`document:123456789`"
+msgstr ""
+"网址如 `https://docs.google.com/a/openerp.com/document/d/123456789/edit`的文本文档, "
+"其 ID 为 `document:123456789`"
+
+#. module: google_docs
+#: field:google.docs.config,gdocs_resource_id:0
+msgid "Google Resource ID to Use as Template"
+msgstr ""
+
+#. module: google_docs
+#: view:google.docs.config:0
+msgid ""
+"for a drawing document with url like "
+"`https://docs.google.com/a/openerp.com/drawings/d/123456789/edit`, the ID is "
+"`drawings:123456789`"
+msgstr ""
+"网址如`https://docs.google.com/a/openerp.com/drawings/d/123456789/edit`的绘图文档, 其 "
+"ID 为 `drawings:123456789`"
+
+#. module: google_docs
+#. openerp-web
+#: code:addons/google_docs/static/src/xml/gdocs.xml:6
+#, python-format
+msgid "Add Google Doc..."
+msgstr ""
+
+#. module: google_docs
+#: view:google.docs.config:0
+msgid ""
+"This is the id of the template document, on google side. You can find it "
+"thanks to its URL:"
+msgstr "这是位于Google端的模板文档的 ID. 你可以通过其网址找到它:"
+
+#. module: google_docs
+#: model:ir.model,name:google_docs.model_google_docs_config
+msgid "Google Docs templates config"
+msgstr "配置Google文档模板"
+
+#. module: google_docs
+#. openerp-web
+#: code:addons/google_docs/static/src/js/gdocs.js:25
+#, python-format
+msgid ""
+"The user google credentials are not set yet. Contact your administrator for "
+"help."
+msgstr "用户 google 用户授权尚未被设定. 联系你的管理员以获得帮助."
+
+#. module: google_docs
+#: view:google.docs.config:0
+msgid ""
+"for a spreadsheet document with url like "
+"`https://docs.google.com/a/openerp.com/spreadsheet/ccc?key=123456789#gid=0`, "
+"the ID is `spreadsheet:123456789`"
+msgstr ""
+"网址如 "
+"`https://docs.google.com/a/openerp.com/spreadsheet/ccc?key=123456789#gid=0`的电"
+"子表格文档, 其 ID 为 `spreadsheet:123456789`"
+
+#. module: google_docs
+#: code:addons/google_docs/google_docs.py:101
+#, python-format
+msgid ""
+"Your resource id is not correct. You can find the id in the google docs URL."
+msgstr "你的源 id 不正确. 你可以在 google 文档的网址中找到它."
+
+#. module: google_docs
+#: code:addons/google_docs/google_docs.py:125
+#, python-format
+msgid "Creating google docs may only be done by one at a time."
+msgstr "一次只能生成一份google 文档."
+
+#. module: google_docs
+#: code:addons/google_docs/google_docs.py:56
+#: code:addons/google_docs/google_docs.py:101
+#: code:addons/google_docs/google_docs.py:125
+#, python-format
+msgid "Google Docs Error!"
+msgstr "Google 文档错误!"
+
+#. module: google_docs
+#: code:addons/google_docs/google_docs.py:56
+#, python-format
+msgid "Check your google configuration in Users/Users/Synchronization tab."
+msgstr "在Users/Users/Synchronization 标签中检查你的google 配置."
+
+#. module: google_docs
+#: model:ir.ui.menu,name:google_docs.menu_gdocs_config
+msgid "Google Docs configuration"
+msgstr "Google 文档配置"
+
+#. module: google_docs
+#: model:ir.actions.act_window,name:google_docs.action_google_docs_users_config
+#: model:ir.ui.menu,name:google_docs.menu_gdocs_model_config
+msgid "Models configuration"
+msgstr "模块配置"
+
+#. module: google_docs
+#: field:google.docs.config,model_id:0
+msgid "Model"
+msgstr "模块"
+
+#. module: google_docs
+#. openerp-web
+#: code:addons/google_docs/static/src/js/gdocs.js:28
+#, python-format
+msgid "User Google credentials are not yet set."
+msgstr "Google的用户证书尚未设定."
+
+#. module: google_docs
+#: code:addons/google_docs/google_docs.py:139
+#, python-format
+msgid "Your Google Doc Name Pattern's key does not found in object."
+msgstr ""
+
+#. module: google_docs
+#: help:google.docs.config,name_template:0
+msgid ""
+"Choose how the new google docs will be named, on google side. Eg. "
+"gdoc_%(field_name)s"
+msgstr "选择在Google端如何命名新的google 文档. 如. gdoc_%(field_name)s"
+
+#. module: google_docs
+#: view:google.docs.config:0
+msgid "Google Docs Configuration"
+msgstr "Google 文档设置"
+
+#. module: google_docs
+#: help:google.docs.config,gdocs_resource_id:0
+msgid ""
+"\n"
+"This is the id of the template document, on google side. You can find it "
+"thanks to its URL: \n"
+"*for a text document with url like "
+"`https://docs.google.com/a/openerp.com/document/d/123456789/edit`, the ID is "
+"`document:123456789`\n"
+"*for a spreadsheet document with url like "
+"`https://docs.google.com/a/openerp.com/spreadsheet/ccc?key=123456789#gid=0`, "
+"the ID is `spreadsheet:123456789`\n"
+"*for a presentation (slide show) document with url like "
+"`https://docs.google.com/a/openerp.com/presentation/d/123456789/edit#slide=id"
+".p`, the ID is `presentation:123456789`\n"
+"*for a drawing document with url like "
+"`https://docs.google.com/a/openerp.com/drawings/d/123456789/edit`, the ID is "
+"`drawings:123456789`\n"
+"...\n"
+msgstr ""
+
+#. module: google_docs
+#: model:ir.model,name:google_docs.model_ir_attachment
+msgid "ir.attachment"
+msgstr ""
+
+#. module: google_docs
+#: field:google.docs.config,name_template:0
+msgid "Google Doc Name Pattern"
+msgstr ""
diff --git a/addons/hr/i18n/mn.po b/addons/hr/i18n/mn.po
index ede0b017a3e..80d590dea2e 100644
--- a/addons/hr/i18n/mn.po
+++ b/addons/hr/i18n/mn.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
-"PO-Revision-Date: 2013-01-02 01:55+0000\n"
-"Last-Translator: Amartuvshin.e \n"
+"PO-Revision-Date: 2013-01-05 05:11+0000\n"
+"Last-Translator: erdenebold \n"
"Language-Team: Mongolian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-01-03 05:39+0000\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
"X-Generator: Launchpad (build 16393)\n"
#. module: hr
@@ -144,7 +144,7 @@ msgstr "Хүний нөөцийн бүрдүүлэлтээр хүлээгдсэ
#. module: hr
#: field:res.users,employee_ids:0
msgid "Related employees"
-msgstr ""
+msgstr "Холбоотой ажилчид"
#. module: hr
#: constraint:hr.employee.category:0
@@ -210,7 +210,7 @@ msgstr ""
#. module: hr
#: view:hr.employee:0
msgid "Mobile:"
-msgstr ""
+msgstr "Гар утас:"
#. module: hr
#: view:hr.employee:0
@@ -249,7 +249,7 @@ msgstr "Ялгах дугаар"
#. module: hr
#: selection:hr.employee,gender:0
msgid "Female"
-msgstr "эм"
+msgstr "Эмэгтэй"
#. module: hr
#: model:ir.ui.menu,name:hr.menu_open_view_attendance_reason_new_config
@@ -421,7 +421,7 @@ msgstr ""
#. module: hr
#: selection:hr.employee,gender:0
msgid "Male"
-msgstr "эр"
+msgstr "Эрэгтэй"
#. module: hr
#: view:hr.employee:0
@@ -433,7 +433,7 @@ msgstr ""
#. module: hr
#: help:hr.config.settings,module_hr_evaluation:0
msgid "This installs the module hr_evaluation."
-msgstr ""
+msgstr "hr_evalution модулийг суулгах."
#. module: hr
#: constraint:hr.employee:0
@@ -443,12 +443,12 @@ msgstr ""
#. module: hr
#: help:hr.config.settings,module_hr_attendance:0
msgid "This installs the module hr_attendance."
-msgstr ""
+msgstr "hr_attendance модулийг суулгах."
#. module: hr
#: field:hr.employee,image_small:0
msgid "Smal-sized photo"
-msgstr ""
+msgstr "Жижиг хэмжээт фото"
#. module: hr
#: view:hr.employee.category:0
@@ -464,7 +464,7 @@ msgstr ""
#. module: hr
#: help:hr.config.settings,module_hr_contract:0
msgid "This installs the module hr_contract."
-msgstr ""
+msgstr "hr_contract модулийг суулгах."
#. module: hr
#: view:hr.employee:0
@@ -571,7 +571,7 @@ msgstr "Идэвхитэй"
#. module: hr
#: view:hr.config.settings:0
msgid "Human Resources Management"
-msgstr ""
+msgstr "Хүний нөөцийн менежмент"
#. module: hr
#: view:hr.config.settings:0
@@ -618,12 +618,12 @@ msgstr ""
#. module: hr
#: view:hr.employee:0
msgid "HR Settings"
-msgstr ""
+msgstr "HR тохиргоонууд"
#. module: hr
#: view:hr.employee:0
msgid "Citizenship & Other Info"
-msgstr ""
+msgstr "Иргэний харьяалал & Бусад мэдээлэл"
#. module: hr
#: constraint:hr.department:0
@@ -638,7 +638,7 @@ msgstr "Ажлын хаяг"
#. module: hr
#: view:hr.employee:0
msgid "Public Information"
-msgstr ""
+msgstr "Бүх мэдээлэл"
#. module: hr
#: field:hr.employee,marital:0
@@ -682,7 +682,7 @@ msgstr ""
#. module: hr
#: help:hr.config.settings,module_hr_timesheet:0
msgid "This installs the module hr_timesheet."
-msgstr ""
+msgstr "hr_timesheet модулийг суулгах"
#. module: hr
#: help:hr.job,expected_employees:0
@@ -773,12 +773,12 @@ msgstr "Нээлттэй"
#. module: hr
#: help:hr.config.settings,module_hr_payroll:0
msgid "This installs the module hr_payroll."
-msgstr ""
+msgstr "hr_payroll модулийг суулгах"
#. module: hr
#: field:hr.config.settings,module_hr_contract:0
msgid "Record contracts per employee"
-msgstr ""
+msgstr "Ажилтнуудын гэрээний баримт"
#. module: hr
#: view:hr.department:0
@@ -857,7 +857,7 @@ msgstr ""
#: view:hr.config.settings:0
#: model:ir.actions.act_window,name:hr.action_human_resources_configuration
msgid "Configure Human Resources"
-msgstr ""
+msgstr "Хүний нөөцийн тохиргоо"
#. module: hr
#: selection:hr.job,state:0
@@ -935,7 +935,7 @@ msgstr "Нэг компаний ажлын байруудын нэр давхц
#. module: hr
#: help:hr.config.settings,module_hr_expense:0
msgid "This installs the module hr_expense."
-msgstr ""
+msgstr "hr_expense модулийг суулгах"
#. module: hr
#: model:ir.model,name:hr.model_hr_config_settings
diff --git a/addons/knowledge/i18n/fr.po b/addons/knowledge/i18n/fr.po
index 116cc822997..af16d3d872b 100644
--- a/addons/knowledge/i18n/fr.po
+++ b/addons/knowledge/i18n/fr.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
-"PO-Revision-Date: 2013-01-03 17:18+0000\n"
-"Last-Translator: William Dodé \n"
+"PO-Revision-Date: 2013-01-04 19:09+0000\n"
+"Last-Translator: Numérigraphe \n"
"Language-Team: French \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-01-04 05:27+0000\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
"X-Generator: Launchpad (build 16393)\n"
#. module: knowledge
@@ -33,11 +33,13 @@ msgid ""
"Access your documents in OpenERP through WebDAV.\n"
" This installs the module document_webdav."
msgstr ""
+"Accédez à vos documents OpenERP en WebDAV.\n"
+"Ceci installera le module document_webdav"
#. module: knowledge
#: help:knowledge.config.settings,module_document_page:0
msgid "This installs the module document_page."
-msgstr ""
+msgstr "Ceci installera le module document_page"
#. module: knowledge
#: model:ir.ui.menu,name:knowledge.menu_document2
@@ -48,12 +50,12 @@ msgstr "Contenu Collaboratif"
#: model:ir.actions.act_window,name:knowledge.action_knowledge_configuration
#: view:knowledge.config.settings:0
msgid "Configure Knowledge"
-msgstr ""
+msgstr "Configurer la base de connaissances"
#. module: knowledge
#: view:knowledge.config.settings:0
msgid "Knowledge and Documents Management"
-msgstr ""
+msgstr "Base de connaissance et documentaire"
#. module: knowledge
#: help:knowledge.config.settings,module_document:0
@@ -63,31 +65,36 @@ msgid ""
"and a document dashboard.\n"
" This installs the module document."
msgstr ""
+"Ceci est un système complet de gestion de document avec authentification de "
+"l'utilisateur,\n"
+"recherche complète dans les documents (mais pptx et docx ne sont pas pris en "
+"charge), et tableau de bord des documents.\n"
+"Ceci installe le module document."
#. module: knowledge
#: field:knowledge.config.settings,module_document_page:0
msgid "Create static web pages"
-msgstr ""
+msgstr "Créer des pages webs statiques"
#. module: knowledge
#: field:knowledge.config.settings,module_document_ftp:0
msgid "Share repositories (FTP)"
-msgstr ""
+msgstr "Partager les dépots (FTP)"
#. module: knowledge
#: field:knowledge.config.settings,module_document:0
msgid "Manage documents"
-msgstr ""
+msgstr "Gérer les documents"
#. module: knowledge
#: view:knowledge.config.settings:0
msgid "Cancel"
-msgstr ""
+msgstr "Annuler"
#. module: knowledge
#: view:knowledge.config.settings:0
msgid "Apply"
-msgstr ""
+msgstr "Appliquer"
#. module: knowledge
#: model:ir.ui.menu,name:knowledge.menu_document_configuration
@@ -100,6 +107,8 @@ msgid ""
"Access your documents in OpenERP through an FTP interface.\n"
" This installs the module document_ftp."
msgstr ""
+"Accédez à vos documents OpenERP par une interface FTP.\n"
+"Ceci installe le module document_ftp"
#. module: knowledge
#: view:knowledge.config.settings:0
diff --git a/addons/l10n_ar/i18n/pt.po b/addons/l10n_ar/i18n/pt.po
new file mode 100644
index 00000000000..e62b4336f96
--- /dev/null
+++ b/addons/l10n_ar/i18n/pt.po
@@ -0,0 +1,173 @@
+# Portuguese translation for openobject-addons
+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-11-24 02:53+0000\n"
+"PO-Revision-Date: 2013-01-04 17:41+0000\n"
+"Last-Translator: Andrei Talpa (multibase.pt) \n"
+"Language-Team: Portuguese \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
+"X-Generator: Launchpad (build 16393)\n"
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_BG_ACC_50
+msgid "Otros Créditos"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_view
+msgid "Vista"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_EGP_FU_160
+msgid "Ganancia (Pérdida) Neta del Ejercicio"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_BG_PAN_10
+msgid "Deudas Bancarias y Financieras a Largo Plazo"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_BG_PAN_40
+msgid "Previsiones"
+msgstr "Previsões"
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_EGP_FU_040
+msgid "Gastos de Administración"
+msgstr "Gastos de Administração"
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_BG_PAN_20
+msgid "Otros Pasivos a Largo Plazo"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_NCLASIFICADO
+msgid "Cuentas No Clasificadas"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_BG_ACC_30
+msgid "Créditos por Ventas"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_EGP_FU_080
+msgid "Otros Ingresos"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_ORD
+msgid "Cuentas de Orden"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_EGP_FU_090
+msgid "Otros Gastos"
+msgstr "Outros gastos"
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_EGP_FU_030
+msgid "Costo Mercaderías y Servicios Vendidos"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_BG_ACN_40
+msgid "Inversiones Permanentes"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_BG_ACC_20
+msgid "Inversiones"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_EGP_FU_010
+msgid "Ventas Netas de Bienes y Servicios"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_BG_ACN_10
+msgid "Otros Créditos No Corrientes"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_BG_PAC_40
+msgid "Cargas Fiscales"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_EGP_FU_050
+msgid "Gastos de Comercialización"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_EGP_FU_070
+msgid "Gastos Financieros y por tenencia"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_BG_PAC_45
+msgid "Otros Pasivos"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_EGP_FU_060
+msgid "Ingresos Financieros y por tenencia"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_BG_PAC_20
+msgid "Cuentas por Pagar"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_BG_PAC_35
+msgid "Remuneraciones y Cargas Sociales"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_BG_ACC_10
+msgid "Caja y Bancos"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_BG_PAC_10
+msgid "Deudas Bancarias y Financieras"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_BG_ACC_60
+msgid "Bienes de Cambio"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_BG_PTN_10
+msgid "Patrimonio Neto"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_BG_ACN_50
+msgid "Bienes de Uso"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_EGP_NA_010
+msgid "Compras de Bienes de Uso"
+msgstr ""
+
+#. module: l10n_ar
+#: model:account.account.type,name:l10n_ar.account_account_type_EGP_FU_120
+msgid "Impuesto a las Ganancias"
+msgstr ""
diff --git a/addons/l10n_be_invoice_bba/i18n/pt.po b/addons/l10n_be_invoice_bba/i18n/pt.po
index 51cace503d8..9a8c834b8fa 100644
--- a/addons/l10n_be_invoice_bba/i18n/pt.po
+++ b/addons/l10n_be_invoice_bba/i18n/pt.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-11-24 02:53+0000\n"
-"PO-Revision-Date: 2012-12-21 23:00+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2013-01-04 17:45+0000\n"
+"Last-Translator: Andrei Talpa (multibase.pt) \n"
"Language-Team: Portuguese \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-22 07:20+0000\n"
-"X-Generator: Launchpad (build 16378)\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
+"X-Generator: Launchpad (build 16393)\n"
#. module: l10n_be_invoice_bba
#: sql_constraint:account.invoice:0
@@ -93,7 +93,7 @@ msgstr ""
#: code:addons/l10n_be_invoice_bba/invoice.py:197
#, python-format
msgid "Warning!"
-msgstr ""
+msgstr "Aviso!"
#. module: l10n_be_invoice_bba
#: selection:res.partner,out_inv_comm_algorithm:0
diff --git a/addons/l10n_bo/i18n/pt.po b/addons/l10n_bo/i18n/pt.po
new file mode 100644
index 00000000000..78f6c1e4e3d
--- /dev/null
+++ b/addons/l10n_bo/i18n/pt.po
@@ -0,0 +1,43 @@
+# Portuguese translation for openobject-addons
+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2011-01-11 11:15+0000\n"
+"PO-Revision-Date: 2013-01-04 17:42+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Portuguese \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
+"X-Generator: Launchpad (build 16393)\n"
+
+#. module: l10n_ar
+#: model:ir.module.module,description:l10n_ar.module_meta_information
+msgid ""
+"\n"
+" Argentinian Accounting : chart of Account\n"
+" "
+msgstr ""
+
+#. module: l10n_ar
+#: model:ir.module.module,shortdesc:l10n_ar.module_meta_information
+msgid "Argentinian Chart of Account"
+msgstr ""
+
+#. module: l10n_ar
+#: model:ir.actions.todo,note:l10n_ar.config_call_account_template_in_minimal
+msgid ""
+"Generate Chart of Accounts from a Chart Template. You will be asked to pass "
+"the name of the company, the chart template to follow, the no. of digits to "
+"generate the code for your accounts and Bank account, currency to create "
+"Journals. Thus,the pure copy of chart Template is generated.\n"
+"\tThis is the same wizard that runs from Financial "
+"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
+"Chart of Accounts from a Chart Template."
+msgstr ""
diff --git a/addons/l10n_br/i18n/pt.po b/addons/l10n_br/i18n/pt.po
new file mode 100644
index 00000000000..1fadf0567c3
--- /dev/null
+++ b/addons/l10n_br/i18n/pt.po
@@ -0,0 +1,183 @@
+# Portuguese translation for openobject-addons
+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-11-24 02:53+0000\n"
+"PO-Revision-Date: 2013-01-04 17:44+0000\n"
+"Last-Translator: Andrei Talpa (multibase.pt) \n"
+"Language-Team: Portuguese \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
+"X-Generator: Launchpad (build 16393)\n"
+
+#. module: l10n_br
+#: field:account.tax,tax_discount:0
+#: field:account.tax.code,tax_discount:0
+#: field:account.tax.code.template,tax_discount:0
+#: field:account.tax.template,tax_discount:0
+msgid "Discount this Tax in Prince"
+msgstr ""
+
+#. module: l10n_br
+#: model:ir.actions.act_window,name:l10n_br.action_l10n_br_cst_form
+#: model:ir.model,name:l10n_br.model_l10n_br_account_cst
+#: model:ir.ui.menu,name:l10n_br.menu_action_l10n_br_cst
+#: view:l10n_br_account.cst:0
+msgid "Tax Situation Code"
+msgstr ""
+
+#. module: l10n_br
+#: model:account.account.type,name:l10n_br.despesa
+msgid "Despesas"
+msgstr ""
+
+#. module: l10n_br
+#: model:ir.model,name:l10n_br.model_account_tax_code
+#: field:l10n_br_account.cst,tax_code_id:0
+msgid "Tax Code"
+msgstr ""
+
+#. module: l10n_br
+#: help:account.tax.code,domain:0
+#: help:account.tax.code.template,domain:0
+msgid ""
+"This field is only used if you develop your own module allowing developers "
+"to create specific taxes in a custom domain."
+msgstr ""
+
+#. module: l10n_br
+#: model:account.account.type,name:l10n_br.resultado
+msgid "Resultado"
+msgstr ""
+
+#. module: l10n_br
+#: model:ir.model,name:l10n_br.model_account_tax_template
+msgid "account.tax.template"
+msgstr "account.tax.template"
+
+#. module: l10n_br
+#: model:account.account.type,name:l10n_br.passivo
+msgid "Passivo"
+msgstr ""
+
+#. module: l10n_br
+#: field:l10n_br_account.cst,name:0
+#: field:l10n_br_account.cst.template,name:0
+msgid "Description"
+msgstr "Descrição"
+
+#. module: l10n_br
+#: constraint:account.tax.code:0
+msgid ""
+"Error!\n"
+"You cannot create recursive accounts."
+msgstr ""
+
+#. module: l10n_br
+#: field:account.tax,amount_mva:0
+#: field:account.tax.template,amount_mva:0
+msgid "MVA Percent"
+msgstr ""
+
+#. module: l10n_br
+#: help:account.tax.template,amount_mva:0
+#: help:account.tax.template,base_reduction:0
+msgid "For taxes of type percentage, enter % ratio between 0-1."
+msgstr ""
+
+#. module: l10n_br
+#: field:account.tax,base_reduction:0
+#: field:account.tax.template,base_reduction:0
+msgid "Redution"
+msgstr ""
+
+#. module: l10n_br
+#: sql_constraint:account.tax:0
+msgid "Tax Name must be unique per company!"
+msgstr ""
+
+#. module: l10n_br
+#: model:ir.model,name:l10n_br.model_account_tax
+msgid "account.tax"
+msgstr "account.tax"
+
+#. module: l10n_br
+#: model:account.account.type,name:l10n_br.receita
+msgid "Receita"
+msgstr ""
+
+#. module: l10n_br
+#: model:ir.actions.act_window,name:l10n_br.action_l10n_br_cst_template_form
+#: model:ir.model,name:l10n_br.model_l10n_br_account_cst_template
+#: model:ir.ui.menu,name:l10n_br.menu_action_l10n_br_cst_template
+#: view:l10n_br_account.cst.template:0
+msgid "Tax Situation Code Template"
+msgstr ""
+
+#. module: l10n_br
+#: model:ir.model,name:l10n_br.model_wizard_multi_charts_accounts
+msgid "wizard.multi.charts.accounts"
+msgstr "wizard.multi.charts.accounts"
+
+#. module: l10n_br
+#: model:ir.actions.todo,note:l10n_br.config_call_account_template_brazilian_localization
+msgid ""
+"Generate Chart of Accounts from a Chart Template. You will be asked to pass "
+"the name of the company, the chart template to follow, the no. of digits to "
+"generate the code for your accounts and Bank account, currency to create "
+"Journals. Thus,the pure copy of chart Template is generated.\n"
+" This is the same wizard that runs from Financial "
+"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
+"Chart of Accounts from a Chart Template."
+msgstr ""
+
+#. module: l10n_br
+#: constraint:account.tax.code.template:0
+msgid ""
+"Error!\n"
+"You cannot create recursive Tax Codes."
+msgstr ""
+
+#. module: l10n_br
+#: help:account.tax,tax_discount:0
+#: help:account.tax.code,tax_discount:0
+#: help:account.tax.code.template,tax_discount:0
+#: help:account.tax.template,tax_discount:0
+msgid "Mark it for (ICMS, PIS e etc.)."
+msgstr ""
+
+#. module: l10n_br
+#: model:account.account.type,name:l10n_br.ativo
+msgid "Ativo"
+msgstr ""
+
+#. module: l10n_br
+#: field:account.tax.code,domain:0
+#: field:account.tax.code.template,domain:0
+msgid "Domain"
+msgstr ""
+
+#. module: l10n_br
+#: field:l10n_br_account.cst,code:0
+#: field:l10n_br_account.cst.template,code:0
+msgid "Code"
+msgstr ""
+
+#. module: l10n_br
+#: help:account.tax,amount_mva:0
+#: help:account.tax,base_reduction:0
+msgid "Um percentual decimal em % entre 0-1."
+msgstr ""
+
+#. module: l10n_br
+#: model:ir.model,name:l10n_br.model_account_tax_code_template
+#: field:l10n_br_account.cst.template,tax_code_template_id:0
+msgid "Tax Code Template"
+msgstr ""
diff --git a/addons/l10n_cr/i18n/it.po b/addons/l10n_cr/i18n/it.po
index d34e5cb2467..6be51d78377 100644
--- a/addons/l10n_cr/i18n/it.po
+++ b/addons/l10n_cr/i18n/it.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2011-01-07 05:56+0000\n"
-"PO-Revision-Date: 2012-12-21 23:00+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2013-01-04 22:04+0000\n"
+"Last-Translator: Sergio Corato \n"
"Language-Team: Italian \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-22 07:20+0000\n"
-"X-Generator: Launchpad (build 16378)\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
+"X-Generator: Launchpad (build 16393)\n"
#. module: l10n_cr
#: model:res.partner.title,name:l10n_cr.res_partner_title_ing
@@ -35,7 +35,7 @@ msgstr "Laureato"
#. module: l10n_cr
#: model:res.partner.title,shortcut:l10n_cr.res_partner_title_sal
msgid "S.A.L."
-msgstr ""
+msgstr "S.A.L."
#. module: l10n_cr
#: model:res.partner.title,shortcut:l10n_cr.res_partner_title_dr
@@ -65,7 +65,7 @@ msgstr ""
#. module: l10n_cr
#: model:res.partner.title,name:l10n_cr.res_partner_title_gov
msgid "Government"
-msgstr ""
+msgstr "Governo"
#. module: l10n_cr
#: model:res.partner.title,name:l10n_cr.res_partner_title_edu
diff --git a/addons/l10n_multilang/i18n/fr.po b/addons/l10n_multilang/i18n/fr.po
index 733cfcee3d0..973595b3068 100644
--- a/addons/l10n_multilang/i18n/fr.po
+++ b/addons/l10n_multilang/i18n/fr.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-02-08 01:06+0000\n"
-"PO-Revision-Date: 2013-01-03 17:14+0000\n"
-"Last-Translator: Numérigraphe \n"
+"PO-Revision-Date: 2013-01-04 08:31+0000\n"
+"Last-Translator: WANTELLET Sylvain \n"
"Language-Team: French \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-01-04 05:27+0000\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
"X-Generator: Launchpad (build 16393)\n"
#. module: l10n_multilang
@@ -110,6 +110,10 @@ msgid ""
"the final object when generating them from templates. You must provide the "
"language codes separated by ';'"
msgstr ""
+"Énumérez ici les langues pour lesquelles des traductions de modèles "
+"pourraient être chargées lors de l'installation de ce module de localisation "
+"et copiées dans l'objet final lorsqu'il sera généré à partir des modèles. "
+"Vous devez indiquer les codes des langues séparés par \";\""
#. module: l10n_multilang
#: constraint:account.account:0
diff --git a/addons/lunch/i18n/it.po b/addons/lunch/i18n/it.po
index 6c9d2397420..69a3a812b64 100644
--- a/addons/lunch/i18n/it.po
+++ b/addons/lunch/i18n/it.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
-"PO-Revision-Date: 2013-01-03 22:46+0000\n"
-"Last-Translator: Sergio Corato \n"
+"PO-Revision-Date: 2013-01-04 21:23+0000\n"
+"Last-Translator: Massimiliano Casa \n"
"Language-Team: Italian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-01-04 05:27+0000\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
"X-Generator: Launchpad (build 16393)\n"
#. module: lunch
@@ -121,13 +121,13 @@ msgstr ""
#. module: lunch
#: view:lunch.order.line:0
msgid "Not Received"
-msgstr ""
+msgstr "Non ricevuto"
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_order_by_supplier_form
#: model:ir.ui.menu,name:lunch.menu_lunch_control_suppliers
msgid "Orders by Supplier"
-msgstr ""
+msgstr "Ordini per Fornitore"
#. module: lunch
#: view:lunch.validation:0
@@ -167,14 +167,14 @@ msgstr "Prodotti"
#. module: lunch
#: view:lunch.order.line:0
msgid "By Date"
-msgstr ""
+msgstr "Per Data"
#. module: lunch
#: selection:lunch.order,state:0
#: view:lunch.order.line:0
#: selection:lunch.order.line,state:0
msgid "Cancelled"
-msgstr ""
+msgstr "Annullato"
#. module: lunch
#: view:lunch.cashmove:0
@@ -200,12 +200,12 @@ msgstr ""
#: code:addons/lunch/lunch.py:183
#, python-format
msgid "Select a product and put your order comments on the note."
-msgstr ""
+msgstr "Selezionare un prodotto e mettere i commenti all'ordine nella nota."
#. module: lunch
#: selection:lunch.alert,alter_type:0
msgid "Every Week"
-msgstr ""
+msgstr "Ogni Settimana"
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_cashmove
@@ -251,7 +251,7 @@ msgstr ""
#: selection:lunch.order,state:0
#: selection:lunch.order.line,state:0
msgid "New"
-msgstr ""
+msgstr "Nuovo"
#. module: lunch
#: code:addons/lunch/lunch.py:180
@@ -287,13 +287,13 @@ msgstr "Luglio"
#. module: lunch
#: model:ir.ui.menu,name:lunch.menu_lunch_config
msgid "Configuration"
-msgstr ""
+msgstr "Configurazione"
#. module: lunch
#: field:lunch.order,state:0
#: field:lunch.order.line,state:0
msgid "Status"
-msgstr ""
+msgstr "Stato"
#. module: lunch
#: view:lunch.order.order:0
@@ -311,7 +311,7 @@ msgstr ""
#. module: lunch
#: selection:lunch.alert,alter_type:0
msgid "Every Day"
-msgstr ""
+msgstr "Ogni Giorno"
#. module: lunch
#: field:lunch.order.line,cashmove:0
@@ -357,12 +357,12 @@ msgstr ""
#. module: lunch
#: field:lunch.alert,tuesday:0
msgid "Tuesday"
-msgstr ""
+msgstr "Martedì"
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_order_tree
msgid "Your Orders"
-msgstr ""
+msgstr "Tuoi ordini"
#. module: lunch
#: field:report.lunch.order.line,month:0
@@ -444,13 +444,13 @@ msgstr ""
#: field:lunch.order.line,note:0
#: field:report.lunch.order.line,note:0
msgid "Note"
-msgstr ""
+msgstr "Note"
#. module: lunch
#: code:addons/lunch/lunch.py:250
#, python-format
msgid "Add"
-msgstr ""
+msgstr "Aggiungi"
#. module: lunch
#: view:lunch.product:0
@@ -487,12 +487,12 @@ msgstr "Agosto"
#. module: lunch
#: field:lunch.alert,monday:0
msgid "Monday"
-msgstr ""
+msgstr "Lunedi"
#. module: lunch
#: field:lunch.order.line,name:0
msgid "unknown"
-msgstr ""
+msgstr "sconosciuto"
#. module: lunch
#: model:ir.actions.act_window,name:lunch.validate_order_lines
@@ -560,7 +560,7 @@ msgstr ""
#: view:lunch.alert:0
#: view:lunch.order.line:0
msgid "Search"
-msgstr ""
+msgstr "Ricerca"
#. module: lunch
#: selection:report.lunch.order.line,month:0
@@ -595,17 +595,17 @@ msgstr "Gennaio"
#. module: lunch
#: selection:lunch.alert,alter_type:0
msgid "Specific Day"
-msgstr ""
+msgstr "Giorno Specifico"
#. module: lunch
#: field:lunch.alert,wednesday:0
msgid "Wednesday"
-msgstr ""
+msgstr "Mercoledì"
#. module: lunch
#: view:lunch.product.category:0
msgid "Product Category: "
-msgstr ""
+msgstr "Categoria prodotto: "
#. module: lunch
#: field:lunch.alert,active_to:0
@@ -615,7 +615,7 @@ msgstr ""
#. module: lunch
#: selection:lunch.order.line,state:0
msgid "Ordered"
-msgstr ""
+msgstr "Ordinato"
#. module: lunch
#: field:report.lunch.order.line,date:0
@@ -625,7 +625,7 @@ msgstr "Data ordine"
#. module: lunch
#: view:lunch.cancel:0
msgid "Cancel Orders"
-msgstr ""
+msgstr "Annulla Ordini"
#. module: lunch
#: model:ir.actions.act_window,help:lunch.action_lunch_alert
@@ -722,7 +722,7 @@ msgstr ""
#. module: lunch
#: field:lunch.alert,alter_type:0
msgid "Recurrency"
-msgstr ""
+msgstr "Ricorrente"
#. module: lunch
#: code:addons/lunch/lunch.py:189
@@ -733,7 +733,7 @@ msgstr ""
#. module: lunch
#: field:lunch.alert,thursday:0
msgid "Thursday"
-msgstr ""
+msgstr "Giovedì"
#. module: lunch
#: report:lunch.order.line:0
@@ -773,7 +773,7 @@ msgstr ""
#: model:ir.actions.act_window,name:lunch.action_lunch_order_form
#: model:ir.ui.menu,name:lunch.menu_lunch_order_form
msgid "New Order"
-msgstr ""
+msgstr "Nuovo ordine"
#. module: lunch
#: view:lunch.cashmove:0
@@ -794,7 +794,7 @@ msgstr ""
#: view:lunch.cashmove:0
#: selection:lunch.cashmove,state:0
msgid "Payment"
-msgstr ""
+msgstr "Pagamento"
#. module: lunch
#: selection:report.lunch.order.line,month:0
@@ -809,7 +809,7 @@ msgstr "Anno"
#. module: lunch
#: view:lunch.order:0
msgid "List"
-msgstr ""
+msgstr "Elenco"
#. module: lunch
#: model:ir.ui.menu,name:lunch.menu_lunch_admin
@@ -824,7 +824,7 @@ msgstr "Aprile"
#. module: lunch
#: view:lunch.order:0
msgid "Select your order"
-msgstr ""
+msgstr "Seleziona il tuo ordine"
#. module: lunch
#: field:lunch.cashmove,order_id:0
@@ -850,7 +850,7 @@ msgstr ""
#. module: lunch
#: view:lunch.cancel:0
msgid "cancel order lines"
-msgstr ""
+msgstr "annulla le linee d'ordine"
#. module: lunch
#: model:ir.model,name:lunch.model_lunch_product_category
@@ -860,7 +860,7 @@ msgstr ""
#. module: lunch
#: field:lunch.alert,saturday:0
msgid "Saturday"
-msgstr ""
+msgstr "Sabato"
#. module: lunch
#: model:res.groups,name:lunch.group_lunch_manager
@@ -888,9 +888,9 @@ msgstr ""
#: field:lunch.order,total:0
#: view:lunch.order.line:0
msgid "Total"
-msgstr ""
+msgstr "Totale"
#. module: lunch
#: model:ir.ui.menu,name:lunch.menu_lunch_order_tree
msgid "Previous Orders"
-msgstr ""
+msgstr "Ordini precedenti"
diff --git a/addons/mail/i18n/fr.po b/addons/mail/i18n/fr.po
index 7055e87d86c..c1418b5a1f2 100644
--- a/addons/mail/i18n/fr.po
+++ b/addons/mail/i18n/fr.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
-"PO-Revision-Date: 2013-01-03 17:14+0000\n"
-"Last-Translator: WANTELLET Sylvain \n"
+"PO-Revision-Date: 2013-01-04 13:00+0000\n"
+"Last-Translator: Numérigraphe \n"
"Language-Team: French \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-01-04 05:27+0000\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
"X-Generator: Launchpad (build 16393)\n"
#. module: mail
@@ -46,7 +46,7 @@ msgstr "Destinataires du message"
#. module: mail
#: help:mail.message.subtype,default:0
msgid "Activated by default when subscribing."
-msgstr ""
+msgstr "Activé par défaut lors de l'abonnement."
#. module: mail
#: view:mail.message:0
@@ -910,7 +910,7 @@ msgstr ""
#: field:mail.compose.message,body:0
#: field:mail.message,body:0
msgid "Contents"
-msgstr ""
+msgstr "Contenu"
#. module: mail
#: model:ir.actions.act_window,name:mail.action_view_mail_alias
@@ -1226,7 +1226,7 @@ msgstr ""
#: code:addons/mail/static/src/xml/mail_followers.xml:52
#, python-format
msgid "And"
-msgstr ""
+msgstr "Et"
#. module: mail
#: field:mail.compose.message,message_id:0
@@ -1531,7 +1531,7 @@ msgstr "autres..."
#: model:ir.actions.client,name:mail.action_mail_star_feeds
#: model:ir.ui.menu,name:mail.mail_starfeeds
msgid "To-do"
-msgstr ""
+msgstr "À faire"
#. module: mail
#: view:mail.alias:0
@@ -1544,7 +1544,7 @@ msgstr ""
#. module: mail
#: model:ir.model,name:mail.model_mail_mail
msgid "Outgoing Mails"
-msgstr ""
+msgstr "Courriels à envoyer"
#. module: mail
#: help:mail.compose.message,notification_ids:0
diff --git a/addons/mail/i18n/hu.po b/addons/mail/i18n/hu.po
index 759fd8b6357..a29f52ab584 100644
--- a/addons/mail/i18n/hu.po
+++ b/addons/mail/i18n/hu.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
-"PO-Revision-Date: 2012-12-21 23:00+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2013-01-05 01:47+0000\n"
+"Last-Translator: Balint (eSolve) \n"
"Language-Team: Hungarian \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-22 07:21+0000\n"
-"X-Generator: Launchpad (build 16378)\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
+"X-Generator: Launchpad (build 16393)\n"
#. module: mail
#: view:mail.followers:0
@@ -123,7 +123,7 @@ msgstr "Email varázsló"
#: code:addons/mail/static/src/xml/mail_followers.xml:23
#, python-format
msgid "Add others"
-msgstr ""
+msgstr "Mások hozzáadása"
#. module: mail
#: field:mail.message.subtype,parent_id:0
@@ -174,7 +174,7 @@ msgstr "Csoportok keresése"
#: code:addons/mail/static/src/js/mail_followers.js:156
#, python-format
msgid "followers"
-msgstr "Követők"
+msgstr "követők"
#. module: mail
#: code:addons/mail/mail_message.py:726
@@ -309,7 +309,7 @@ msgstr "Válaszcím"
#: code:addons/mail/wizard/invite.py:36
#, python-format
msgid "You have been invited to follow %s.
"
-msgstr ""
+msgstr "Önt meghívták, hogy kövesse: %s
"
#. module: mail
#: help:mail.group,message_unread:0
@@ -327,7 +327,7 @@ msgstr ""
#: model:ir.actions.client,name:mail.action_mail_to_me_feeds
#: model:ir.ui.menu,name:mail.mail_tomefeeds
msgid "To: me"
-msgstr ""
+msgstr "Címzett: én"
#. module: mail
#: field:mail.message.subtype,name:0
@@ -345,7 +345,7 @@ msgstr "Automatikus törlés"
#: view:mail.group:0
#, python-format
msgid "Unfollow"
-msgstr "Követés leállításA"
+msgstr "Követés leállítása"
#. module: mail
#. openerp-web
@@ -464,7 +464,7 @@ msgstr "Küldés"
#: code:addons/mail/static/src/js/mail_followers.js:152
#, python-format
msgid "No followers"
-msgstr ""
+msgstr "Nincs követő"
#. module: mail
#: view:mail.mail:0
@@ -482,7 +482,7 @@ msgstr "Sikertelen"
#: field:res.partner,message_follower_ids:0
#, python-format
msgid "Followers"
-msgstr ""
+msgstr "Követők"
#. module: mail
#: model:ir.actions.client,name:mail.action_mail_archives_feeds
@@ -511,7 +511,7 @@ msgstr "Válasz"
#: code:addons/mail/static/src/js/mail_followers.js:154
#, python-format
msgid "One follower"
-msgstr ""
+msgstr "Egy követő"
#. module: mail
#: field:mail.compose.message,type:0
@@ -573,7 +573,7 @@ msgstr ""
#: code:addons/mail/static/src/xml/mail.xml:43
#, python-format
msgid "Write to the followers of this document..."
-msgstr ""
+msgstr "Bejegyzés írás a dokumentum követőinek..."
#. module: mail
#: field:mail.group,group_public_id:0
@@ -583,7 +583,7 @@ msgstr ""
#. module: mail
#: view:mail.group:0
msgid "Join Group"
-msgstr ""
+msgstr "Csatlakozás a csoporthoz"
#. module: mail
#: help:mail.mail,email_from:0
@@ -594,7 +594,7 @@ msgstr ""
#: code:addons/mail/wizard/invite.py:39
#, python-format
msgid "You have been invited to follow a new document.
"
-msgstr ""
+msgstr "Önt meghívták, hogy kövessen egy új dokumentumot.
"
#. module: mail
#: field:mail.compose.message,parent_id:0
@@ -695,7 +695,7 @@ msgstr "Mégsem"
#: code:addons/mail/static/src/xml/mail.xml:44
#, python-format
msgid "Share with my followers..."
-msgstr ""
+msgstr "Üzenet a követőimnek..."
#. module: mail
#: field:mail.notification,partner_id:0
@@ -772,6 +772,16 @@ msgid ""
"
\n"
" "
msgstr ""
+"\n"
+" Szép munka! Az ön postafiókja üres.\n"
+"
\n"
+" A \"Beérkezett üzenetek\" az önnek küldött privát "
+"üzeneteket vagy email-eket,\n"
+" továbbá az ön által követett dokumentumokhoz vagy "
+"emberekhez kapcsolódó\n"
+" információkat tartalmaz.\n"
+"
\n"
+" "
#. module: mail
#: field:mail.mail,notification:0
@@ -783,7 +793,7 @@ msgstr ""
#: code:addons/mail/static/src/xml/mail.xml:170
#, python-format
msgid "Compose a new message"
-msgstr ""
+msgstr "Új üzenet küldés"
#. module: mail
#: view:mail.mail:0
@@ -928,12 +938,12 @@ msgstr ""
#. module: mail
#: view:mail.wizard.invite:0
msgid "Add Followers"
-msgstr ""
+msgstr "Követők hozzáadása"
#. module: mail
#: view:mail.compose.message:0
msgid "Followers of selected items and"
-msgstr ""
+msgstr "A kijelölt elemek követői és"
#. module: mail
#: field:mail.alias,alias_force_thread_id:0
@@ -943,7 +953,7 @@ msgstr ""
#. module: mail
#: model:ir.ui.menu,name:mail.mail_group_root
msgid "My Groups"
-msgstr ""
+msgstr "Saját csoportok"
#. module: mail
#: model:ir.actions.client,help:mail.action_mail_archives_feeds
@@ -1076,14 +1086,14 @@ msgstr "Kiterjesztett szűrők…"
#: code:addons/mail/static/src/xml/mail.xml:107
#, python-format
msgid "To:"
-msgstr ""
+msgstr "Címzett:"
#. module: mail
#. openerp-web
#: code:addons/mail/static/src/xml/mail.xml:175
#, python-format
msgid "Write to my followers"
-msgstr ""
+msgstr "Bejegyzés írás a követőimnek"
#. module: mail
#: model:ir.model,name:mail.model_res_groups
@@ -1170,7 +1180,7 @@ msgstr ""
#: code:addons/mail/static/src/xml/mail_followers.xml:13
#, python-format
msgid "Following"
-msgstr ""
+msgstr "Követés"
#. module: mail
#: sql_constraint:mail.alias:0
@@ -1265,7 +1275,7 @@ msgstr ""
#: code:addons/mail/static/src/xml/mail_followers.xml:11
#, python-format
msgid "Follow"
-msgstr ""
+msgstr "Követ"
#. module: mail
#: field:mail.group,name:0
@@ -1414,7 +1424,7 @@ msgstr ""
#: model:ir.actions.act_window,name:mail.action_view_groups
#: model:ir.ui.menu,name:mail.mail_allgroups
msgid "Join a group"
-msgstr ""
+msgstr "Csoporthoz csatlakozás"
#. module: mail
#: model:ir.actions.client,help:mail.action_mail_group_feeds
@@ -1493,7 +1503,7 @@ msgstr ""
#: model:ir.actions.client,name:mail.action_mail_star_feeds
#: model:ir.ui.menu,name:mail.mail_starfeeds
msgid "To-do"
-msgstr ""
+msgstr "Feladat"
#. module: mail
#: view:mail.alias:0
diff --git a/addons/mail/i18n/it.po b/addons/mail/i18n/it.po
index c5a8e13e7c7..9e6e4324809 100644
--- a/addons/mail/i18n/it.po
+++ b/addons/mail/i18n/it.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
-"PO-Revision-Date: 2012-12-24 00:05+0000\n"
-"Last-Translator: Sergio Corato \n"
+"PO-Revision-Date: 2013-01-04 22:02+0000\n"
+"Last-Translator: Massimiliano Casa \n"
"Language-Team: Italian \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-25 05:15+0000\n"
-"X-Generator: Launchpad (build 16378)\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
+"X-Generator: Launchpad (build 16393)\n"
#. module: mail
#: view:mail.followers:0
@@ -980,7 +980,7 @@ msgstr "Notifica"
#: code:addons/mail/static/src/js/mail.js:585
#, python-format
msgid "Please complete partner's informations"
-msgstr ""
+msgstr "Prego completare le informazioni sul Patner"
#. module: mail
#: view:mail.wizard.invite:0
@@ -1458,7 +1458,7 @@ msgstr "Followers del Documento"
#: code:addons/mail/static/src/xml/mail_followers.xml:35
#, python-format
msgid "Remove this follower"
-msgstr ""
+msgstr "Rimuovi questo follower"
#. module: mail
#: selection:res.partner,notification_email_send:0
@@ -1492,6 +1492,7 @@ msgstr "Contenuto Rich-text"
#: help:mail.message,to_read:0
msgid "Current user has an unread notification linked to this message"
msgstr ""
+"L'utente attuale ha una notifica non letta collegata a questo messaggio"
#. module: mail
#: help:res.partner,notification_email_send:0
@@ -1525,7 +1526,7 @@ msgstr ""
#: code:addons/mail/static/src/xml/mail.xml:195
#, python-format
msgid "Please, wait while the file is uploading."
-msgstr ""
+msgstr "Prego, attendere mentre il file viene caricato."
#. module: mail
#: view:mail.group:0
@@ -1592,7 +1593,7 @@ msgstr "altri..."
#: model:ir.actions.client,name:mail.action_mail_star_feeds
#: model:ir.ui.menu,name:mail.mail_starfeeds
msgid "To-do"
-msgstr ""
+msgstr "Cose da fare"
#. module: mail
#: view:mail.alias:0
diff --git a/addons/marketing/i18n/fr.po b/addons/marketing/i18n/fr.po
index 0fe52b28a17..ec24b4e55c8 100644
--- a/addons/marketing/i18n/fr.po
+++ b/addons/marketing/i18n/fr.po
@@ -8,19 +8,19 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
-"PO-Revision-Date: 2012-12-21 23:00+0000\n"
-"Last-Translator: FULL NAME \n"
+"PO-Revision-Date: 2013-01-04 15:20+0000\n"
+"Last-Translator: WANTELLET Sylvain \n"
"Language-Team: French \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-22 07:21+0000\n"
-"X-Generator: Launchpad (build 16378)\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
+"X-Generator: Launchpad (build 16393)\n"
#. module: marketing
#: model:ir.model,name:marketing.model_marketing_config_settings
msgid "marketing.config.settings"
-msgstr ""
+msgstr "marketing.config.settings"
#. module: marketing
#: help:marketing.config.settings,module_marketing_campaign_crm_demo:0
diff --git a/addons/mrp/i18n/fr.po b/addons/mrp/i18n/fr.po
index d4bcd925353..494a001c275 100644
--- a/addons/mrp/i18n/fr.po
+++ b/addons/mrp/i18n/fr.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
-"PO-Revision-Date: 2013-01-03 15:24+0000\n"
-"Last-Translator: Numérigraphe \n"
+"PO-Revision-Date: 2013-01-04 08:02+0000\n"
+"Last-Translator: Florian Hatat \n"
"Language-Team: French \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-01-04 05:27+0000\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
"X-Generator: Launchpad (build 16393)\n"
#. module: mrp
@@ -381,6 +381,20 @@ msgid ""
" \n"
" "
msgstr ""
+"\n"
+" Cliquez pour créer un ordre de fabrication. \n"
+"
\n"
+" Un ordre de fabrication, s'appuyant sur une nomenclature,\n"
+" consommera des matières premières et fabriquera des produits "
+"finis.\n"
+"
\n"
+" Les ordres de fabrication sont généralement proposés "
+"automatiquement selon\n"
+" les besoins des clients ou les règles automatiques telles "
+"que les règles de stock\n"
+" minimum.\n"
+"
\n"
+" "
#. module: mrp
#: sql_constraint:mrp.production:0
@@ -470,6 +484,17 @@ msgid ""
"'In Production'.\n"
" When the production is over, the status is set to 'Done'."
msgstr ""
+"Lorsque l'ordre de fabrication est créé son état est \"Brouillon\".\n"
+" Lorsque l'ordre est confirmé l'état passe à \"Attente de "
+"marchandise\".\n"
+" S'il se produit un incident, l'état passe à \"Incident de "
+"préparation\".\n"
+" Si le stock est disponible, l'état passe à \"Prêt à "
+"produire\".\n"
+" Lorsque la production commence, l'état passe à \"En "
+"production\".\n"
+" Lorsque la production est terminée, l'état passe à "
+"\"Terminé\"."
#. module: mrp
#: model:ir.actions.act_window,name:mrp.action_report_in_out_picking_tree
@@ -523,9 +548,9 @@ msgid ""
"needed.Set a location if you produce at a fixed location. This can be a "
"partner location if you subcontract the manufacturing operations."
msgstr ""
-"Laissez vide si vous produisez là où les produits finis sont nécessaires. "
-"Précisez l'emplacement si vous produisez sur un endroit fixe. Cela peut être "
-"chez un partenaire si vous sous-traitez votre production."
+"Laissez vide si vous produisez à l'emplacement où les produits finis sont "
+"nécessaires. Précisez l'emplacement si vous produisez sur un endroit fixe. "
+"Cela peut être chez un partenaire si vous sous-traitez votre production."
#. module: mrp
#: view:board.board:0
@@ -649,6 +674,15 @@ msgid ""
"assembly operation.\n"
" This installs the module stock_no_autopicking."
msgstr ""
+"Ce module permet à une préparation intermédiaire d'apporter les matières "
+"premières pour les ordres de fabrication.\n"
+" Par exemple : pour gérer une production effectuée par votre "
+"fournisseur (sous-traitance).\n"
+" Pour cela, choisissez l'option \"Pas de préparation auto\" "
+"sur l'article assemblé qui est sous-traité\n"
+" et ajoutez l'emplacement du fournisseur dans la gamme de "
+"l'opération d'assemblage.\n"
+" Cela installe le module stock_no_autopicking."
#. module: mrp
#: selection:mrp.production,state:0
@@ -1347,7 +1381,7 @@ msgstr "Notes"
#. module: mrp
#: view:mrp.production:0
msgid "Manufacturing Orders which are ready to start production."
-msgstr "Ordres de fabrication prêts à produire."
+msgstr "Ordres de fabrication dont la production est prête à démarrer."
#. module: mrp
#: model:ir.model,name:mrp.model_mrp_bom
@@ -1567,6 +1601,11 @@ msgid ""
"are attached to bills of materials\n"
" that will define the required raw materials."
msgstr ""
+"Les gammes permettent de créer et de gérer les opérations qui doivent être "
+"suivies\n"
+" dans les postes de charge pour produire un article. Elles "
+"sont rattachées aux nomenclatures\n"
+" qui définissent les matières premières nécessaires."
#. module: mrp
#: view:report.workcenter.load:0
@@ -1613,7 +1652,7 @@ msgstr "Pilote la gestion des approvisionnement en matières premières."
#. module: mrp
#: field:mrp.production.product.line,product_uos_qty:0
msgid "Product UOS Quantity"
-msgstr ""
+msgstr "Quantité en UdV"
#. module: mrp
#: field:mrp.workcenter,costs_general_account_id:0
@@ -2038,7 +2077,7 @@ msgstr "Confirmer"
#. module: mrp
#: field:mrp.bom,product_efficiency:0
msgid "Manufacturing Efficiency"
-msgstr "Efficacité de production"
+msgstr "Rendement de production"
#. module: mrp
#: field:mrp.bom,message_follower_ids:0
@@ -2181,7 +2220,7 @@ msgstr "Temps en heures pour la mise en place"
#. module: mrp
#: field:mrp.config.settings,module_mrp_repair:0
msgid "Manage repairs of products "
-msgstr ""
+msgstr "Gère les réparations d'articles "
#. module: mrp
#: help:mrp.config.settings,module_mrp_byproduct:0
@@ -2191,6 +2230,10 @@ msgid ""
" With this module: A + B + C -> D + E.\n"
" This installs the module mrp_byproduct."
msgstr ""
+"Vous pouvez paramétrer des sous-produits dans les nomenclatures.\n"
+" Sans ce module: A + B + C -> D.\n"
+" Avec ce module: A + B + C -> D + E.\n"
+" Cela installe le module mrp_byproduct."
#. module: mrp
#: field:procurement.order,bom_id:0
@@ -2282,7 +2325,7 @@ msgstr "Le type d'article est stockable ou consommable."
#. module: mrp
#: selection:mrp.production,state:0
msgid "Production Started"
-msgstr "Production démarrée"
+msgstr "La production a démarré."
#. module: mrp
#: model:process.node,name:mrp.process_node_procureproducts0
@@ -2308,7 +2351,7 @@ msgstr "Nomenclature"
#: code:addons/mrp/mrp.py:610
#, python-format
msgid "Cannot find a bill of material for this product."
-msgstr ""
+msgstr "Impossible de trouver une nomenclature pour cet article."
#. module: mrp
#: view:product.product:0
@@ -2422,12 +2465,18 @@ msgid ""
"product, it will be sold and shipped as a set of components, instead of "
"being produced."
msgstr ""
+"Si un sous-produit est utilisé dans plusieurs articles, il peut être utile "
+"de lui créer sa propre nomenclature. Néanmoins si vous ne souhaitez pas "
+"d'ordres de fabrication distincts pour ce sous-produit, choisissez le type "
+"de nomenclature \"Kit/Fantôme\". Si une nomenclature fantôme est utilisée "
+"pour un article racine, il sera vendu et livré comme un ensemble de "
+"composants, plutôt que d'être fabriqué."
#. module: mrp
#: model:ir.actions.act_window,name:mrp.action_mrp_configuration
#: view:mrp.config.settings:0
msgid "Configure Manufacturing"
-msgstr ""
+msgstr "Paramétrer la fabrication"
#. module: mrp
#: view:product.product:0
@@ -2435,11 +2484,14 @@ msgid ""
"a manufacturing\n"
" order"
msgstr ""
+"un ordre\n"
+" de fabrication"
#. module: mrp
#: field:mrp.config.settings,group_mrp_properties:0
msgid "Allow several bill of materials per products using properties"
msgstr ""
+"Permet plusieurs nomenclatures par article en utilisant des propriétés"
#. module: mrp
#: model:ir.actions.act_window,name:mrp.mrp_property_group_action
@@ -2477,7 +2529,7 @@ msgstr "Temps en heures pour le nettoyage."
#: field:mrp.production,message_summary:0
#: field:mrp.production.workcenter.line,message_summary:0
msgid "Summary"
-msgstr ""
+msgstr "Résumé"
#. module: mrp
#: model:process.transition,name:mrp.process_transition_purchaseprocure0
@@ -2516,7 +2568,7 @@ msgstr ""
#. module: mrp
#: selection:mrp.bom,method:0
msgid "On Stock"
-msgstr "Sur Stock"
+msgstr "Sur stock"
#. module: mrp
#: field:mrp.bom,sequence:0
@@ -2539,7 +2591,7 @@ msgstr "Donne l'ordre d'affichage d'une liste de nomenclatures."
#. module: mrp
#: model:ir.model,name:mrp.model_mrp_config_settings
msgid "mrp.config.settings"
-msgstr ""
+msgstr "mrp.config.settings"
#. module: mrp
#: view:mrp.production:0
diff --git a/addons/mrp/i18n/hu.po b/addons/mrp/i18n/hu.po
index e0a7a5621dd..7ff80610ad1 100644
--- a/addons/mrp/i18n/hu.po
+++ b/addons/mrp/i18n/hu.po
@@ -14,7 +14,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-01-04 05:27+0000\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
"X-Generator: Launchpad (build 16393)\n"
#. module: mrp
@@ -57,7 +57,7 @@ msgstr "Munkaállomások használata"
#. module: mrp
#: view:mrp.routing.workcenter:0
msgid "Routing Work Centers"
-msgstr "Eljárás munkaállomásai"
+msgstr "Munkaállomások irányítása"
#. module: mrp
#: field:mrp.production.workcenter.line,cycle:0
@@ -210,7 +210,7 @@ msgstr "Vásárolt termékhez"
#. module: mrp
#: model:ir.ui.menu,name:mrp.menu_mrp_production_order_action
msgid "Order Planning"
-msgstr ""
+msgstr "Megrendelés tervezése"
#. module: mrp
#: field:mrp.config.settings,module_mrp_operations:0
@@ -302,6 +302,8 @@ msgid ""
"The selection of the right Bill of Material to use will depend on the "
"properties specified on the sales order and the Bill of Material."
msgstr ""
+"A megfelelő darabjegyzék kiválasztása függ a vevői megrendelésekben és a "
+"darabjegyzékben megadott tulajdonságoktól."
#. module: mrp
#: view:mrp.bom:0
@@ -310,6 +312,9 @@ msgid ""
" will contain the raw materials, instead of "
"the finished product."
msgstr ""
+"Ha ehhez a termékhez vevői megrendelést dolgoz fel, a szállítási megbízás\n"
+" az alapanyagokat fogja tartalmazni, az "
+"elkészült végtermék helyett."
#. module: mrp
#: report:mrp.production.order:0
@@ -384,6 +389,20 @@ msgid ""
" \n"
" "
msgstr ""
+"\n"
+" Kattintson gyártási rendelés létrehozáshoz. \n"
+"
\n"
+" Egy gyártási rendelés, a darabjegyzékek alapján, "
+"alapanyagokat\n"
+" fog felhasználni és végtermékeket fog létrehozni.\n"
+"
\n"
+" Gyártási megrendelések általában automatikusan lesznek "
+"felajánlva\n"
+" a vevői igények vagy automatikus szabályok, mint a minimum "
+"raktárkészlet \n"
+" szabály alapján.\n"
+"
\n"
+" "
#. module: mrp
#: sql_constraint:mrp.production:0
@@ -511,6 +530,23 @@ msgid ""
" \n"
" "
msgstr ""
+"\n"
+" Kattintson új tulajdonság létrehozásához.\n"
+"
\n"
+" Az OpenERP-ben a tulajdonságok lehetővé teszik a termék "
+"gyártáshoz a \n"
+" megfelelő darabjegyzék kiválasztását a ha ugyanazt a "
+"terméket \n"
+" különböző módon is le lehet gyártani. Mindegyik "
+"darabjegyzékhez\n"
+" hozzárendelhet különböző tulajdonságokat. Ha egy kereskedő\n"
+" létrehoz egy vevői megrendelést, akkor ahhoz hozzárendelhet "
+"több\n"
+" tulajdonságot és OpenERP automatikusan ki fogja választani "
+"az \n"
+" igényeknek megfelelő darabjegyzékeket.\n"
+"
\n"
+" "
#. module: mrp
#: view:mrp.production:0
@@ -638,6 +674,8 @@ msgstr "Gyártás keresése"
msgid ""
"Gives the sequence order when displaying a list of routing Work Centers."
msgstr ""
+"Megrendelés sorrendet ad, ha a munkaállomások irányításainak listáját "
+"mutatja."
#. module: mrp
#: field:mrp.bom,child_complete_ids:0
@@ -774,6 +812,17 @@ msgid ""
" \n"
" "
msgstr ""
+"\n"
+" Kattintson darabjegyzék összetevők hozzáadásához.\n"
+"
\n"
+" A darabjegyzék összetevők lehetnek összetevők és mellék-"
+"termékek\n"
+" a mester darabjegyzékek létrehozásának használatához. "
+"Használja ezt a menüt,\n"
+" hogy melyik darabjegyzékben található egy konkrét "
+"részegység.\n"
+"
\n"
+" "
#. module: mrp
#: constraint:mrp.bom:0
@@ -801,6 +850,12 @@ msgid ""
" * Product Attributes.\n"
" This installs the module product_manufacturer."
msgstr ""
+"Ez lehetővé teszi egy termékre a következők meghatározását:\n"
+" * Gyártó\n"
+" * Gyártói termék név\n"
+" * Gyártói termék kód\n"
+" * Termék tulajdonságok.\n"
+" Ez a product_manufacturer modult telepíti."
#. module: mrp
#: view:mrp.product_price:0
@@ -828,6 +883,18 @@ msgid ""
" \n"
" "
msgstr ""
+"\n"
+" Kattintson munka állomás hozzáadásához.\n"
+"
\n"
+" Munka állomás lehetővé teszi a gyártási egységek "
+"létrehozását és\n"
+" szervezését. Ezek munkavállalókat és/vagy gépeket "
+"tartalmaznak, melyek\n"
+" mint feladathoz hozzárendelt egységek szerepelnek, valamint "
+"mint \n"
+" kapacitás és tervezett előrejelzés.\n"
+"
\n"
+" "
#. module: mrp
#: model:process.node,note:mrp.process_node_minimumstockrule0
@@ -1070,7 +1137,7 @@ msgstr "Teljes költség %s %s"
#: model:process.node,name:mrp.process_node_stockproduct1
#: model:process.process,name:mrp.process_process_stockableproductprocess0
msgid "Stockable Product"
-msgstr "Raktározható termék"
+msgstr "Készletezhető termék"
#. module: mrp
#: code:addons/mrp/report/price.py:130
@@ -1556,6 +1623,11 @@ msgid ""
"are attached to bills of materials\n"
" that will define the required raw materials."
msgstr ""
+"Az irányítás lehetővé teszi a gyártás végrehajtás létrehozását és "
+"vezérlését, melyet nyomon kell követni\n"
+" a munkaállomásokon keresztül, ha egy terméket szeretnénk "
+"létrehozni. Egy olyan darabjegyzékhez lesz kapcsolva,\n"
+" mely meghatározza az alapanyag igényeket."
#. module: mrp
#: view:report.workcenter.load:0
@@ -1601,7 +1673,7 @@ msgstr "Kezeli az alapanyagok beszerzési rendeléseit."
#. module: mrp
#: field:mrp.production.product.line,product_uos_qty:0
msgid "Product UOS Quantity"
-msgstr ""
+msgstr "Termék UOS mennyiség"
#. module: mrp
#: field:mrp.workcenter,costs_general_account_id:0
@@ -1685,6 +1757,24 @@ msgid ""
" \n"
" "
msgstr ""
+"\n"
+" Kattintson a tulajdonság csoportok létrehozásához.\n"
+"
\n"
+" Meghatároz specifikus tulajdonság csoportokat, melyeket "
+"hozzárendelheti az\n"
+" darabjegyzékekhez és vevői megrendelésekhez. A tulajdonságok "
+"lehetővé teszik az \n"
+" OpenERP részére a megfelelő darabjegyzék automatikus "
+"kiválasztását\n"
+" a kereskedő által a vevői megrendelésen kiválasztott "
+"tulajdonság alapján.\n"
+"
\n"
+" Például, a \"Garancia\" csoportban, két tulajdonság\n"
+" van: 1 év garancia, 3 év garancia. A vevői megrendelésen\n"
+" kiválasztott tulajdonságtól függően, OpenERP ütemezni\n"
+" fogja a termelést a megfelelő darabjegyzékeket használva.\n"
+"
\n"
+" "
#. module: mrp
#: field:mrp.workcenter,capacity_per_cycle:0
@@ -1972,7 +2062,7 @@ msgstr "Anyagjegyzék struktúra"
#. module: mrp
#: field:mrp.config.settings,module_mrp_jit:0
msgid "Generate procurement in real time"
-msgstr ""
+msgstr "Valós idejű beszerzés létrehozása"
#. module: mrp
#: field:mrp.bom,date_stop:0
@@ -2142,6 +2232,19 @@ msgid ""
" \n"
" "
msgstr ""
+"\n"
+" Kattintson darabjegyzék létrehozásához. \n"
+"
\n"
+" Darabjegyzék lehetővé teszi a végtermék nyers alapanyag "
+"lista \n"
+" igény meghatározását; egy gyártási megrendelésen vagy\n"
+" termékek összeállításán keresztül.\n"
+"
\n"
+" OpenERP a darabjegyzékeket (BoM) automatikus gyártási "
+"megrendelés javaslatkészítésre\n"
+" használja a beszerzési igények alapján.\n"
+"
\n"
+" "
#. module: mrp
#: field:mrp.routing.workcenter,routing_id:0
@@ -2156,7 +2259,7 @@ msgstr "A beállításhoz szükséges idő órákban megadva."
#. module: mrp
#: field:mrp.config.settings,module_mrp_repair:0
msgid "Manage repairs of products "
-msgstr ""
+msgstr "Termékek javításának szervezése "
#. module: mrp
#: help:mrp.config.settings,module_mrp_byproduct:0
@@ -2166,6 +2269,10 @@ msgid ""
" With this module: A + B + C -> D + E.\n"
" This installs the module mrp_byproduct."
msgstr ""
+"Ki tudja alakítani a mellék-terméket a darabjegyzéken.\n"
+" Ennek a modulnak a hiányában: A + B + C -> D.\n"
+" Ezzel a modullal: A + B + C -> D + E.\n"
+" Ez a mrp_byproduct modult telepíti."
#. module: mrp
#: field:procurement.order,bom_id:0
@@ -2188,7 +2295,7 @@ msgstr "Ellátás raktárból"
#: code:addons/mrp/report/price.py:139
#, python-format
msgid "Cost Price per Unit of Measure"
-msgstr ""
+msgstr "Mértékegységenkénti költség ár"
#. module: mrp
#: field:report.mrp.inout,date:0
@@ -2205,7 +2312,7 @@ msgstr "Normál"
#. module: mrp
#: view:mrp.production:0
msgid "Production started late"
-msgstr ""
+msgstr "A termelés késve indított"
#. module: mrp
#: model:process.node,note:mrp.process_node_routing0
@@ -2222,7 +2329,7 @@ msgstr "Költségszerkezet"
#. module: mrp
#: model:res.groups,name:mrp.group_mrp_user
msgid "User"
-msgstr ""
+msgstr "Felhasználó"
#. module: mrp
#: selection:mrp.product.produce,mode:0
@@ -2246,6 +2353,8 @@ msgid ""
"You are going to produce total %s quantities of \"%s\".\n"
"But you can only produce up to total %s quantities."
msgstr ""
+"Elfogja készíteni a teljes %s mennyiséget ebből \"%s\".\n"
+"De csak ekkora %s teljes mennyiséget tud termelni."
#. module: mrp
#: model:process.node,note:mrp.process_node_stockproduct0
@@ -2255,7 +2364,7 @@ msgstr "A termék típusa raktározható vagy felhasználható."
#. module: mrp
#: selection:mrp.production,state:0
msgid "Production Started"
-msgstr ""
+msgstr "Termelés elindítva"
#. module: mrp
#: model:process.node,name:mrp.process_node_procureproducts0
@@ -2281,7 +2390,7 @@ msgstr "Anyagjegyzékek"
#: code:addons/mrp/mrp.py:610
#, python-format
msgid "Cannot find a bill of material for this product."
-msgstr ""
+msgstr "Nem található darabjegyzék ehhez a termékhez."
#. module: mrp
#: view:product.product:0
@@ -2290,6 +2399,9 @@ msgid ""
" The delivery order will be ready once the production "
"is done."
msgstr ""
+"ehhez a termékhez hozzárendelt darabjegyzéket használ.\n"
+" A szállítási rendelés akkor lesz elérhető, ha a "
+"termék elkészült."
#. module: mrp
#: field:mrp.config.settings,module_stock_no_autopicking:0
@@ -2311,7 +2423,7 @@ msgstr "Gyártások"
#: model:ir.model,name:mrp.model_stock_move_split
#: view:mrp.production:0
msgid "Split in Serial Numbers"
-msgstr ""
+msgstr "Széria számok közti szétosztás"
#. module: mrp
#: help:mrp.bom,product_uos:0
@@ -2371,7 +2483,7 @@ msgstr "Gyártás áttekintő"
#: code:addons/mrp/wizard/change_production_qty.py:68
#, python-format
msgid "Active Id not found"
-msgstr ""
+msgstr "Aktív azonosító (ID) nem található"
#. module: mrp
#: model:process.node,note:mrp.process_node_procureproducts0
@@ -2421,6 +2533,7 @@ msgstr ""
#: field:mrp.config.settings,group_mrp_properties:0
msgid "Allow several bill of materials per products using properties"
msgstr ""
+"A tulajdonságok használatával termékenként több darabjegyzék engedélyezése"
#. module: mrp
#: model:ir.actions.act_window,name:mrp.mrp_property_group_action
@@ -2458,7 +2571,7 @@ msgstr "A tisztítás ideje (órákban)."
#: field:mrp.production,message_summary:0
#: field:mrp.production.workcenter.line,message_summary:0
msgid "Summary"
-msgstr ""
+msgstr "Összegzés"
#. module: mrp
#: model:process.transition,name:mrp.process_transition_purchaseprocure0
@@ -2520,7 +2633,7 @@ msgstr "Megadja a sorrendet, amikor az anyagjegyzékek listáját kiállítjuk."
#. module: mrp
#: model:ir.model,name:mrp.model_mrp_config_settings
msgid "mrp.config.settings"
-msgstr ""
+msgstr "mrp.config.settings"
#. module: mrp
#: view:mrp.production:0
diff --git a/addons/mrp/i18n/it.po b/addons/mrp/i18n/it.po
index 069b34ccaf4..3460180bd07 100644
--- a/addons/mrp/i18n/it.po
+++ b/addons/mrp/i18n/it.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
-"PO-Revision-Date: 2012-12-23 09:46+0000\n"
-"Last-Translator: Davide Corio - agilebg.com \n"
+"PO-Revision-Date: 2013-01-04 22:03+0000\n"
+"Last-Translator: Massimiliano Casa \n"
"Language-Team: Italian \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-24 05:10+0000\n"
-"X-Generator: Launchpad (build 16378)\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
+"X-Generator: Launchpad (build 16393)\n"
#. module: mrp
#: help:mrp.config.settings,module_mrp_repair:0
@@ -304,6 +304,8 @@ msgid ""
"The selection of the right Bill of Material to use will depend on the "
"properties specified on the sales order and the Bill of Material."
msgstr ""
+"La scelta della giusta distinta base da usare dipende dalle proprietà "
+"specificate dall'ordine di vendita e dalla distinta base."
#. module: mrp
#: view:mrp.bom:0
@@ -312,6 +314,10 @@ msgid ""
" will contain the raw materials, instead of "
"the finished product."
msgstr ""
+"Quando si processa un ordine di vendita per questo prodotto, l'ordine di "
+"consegna\n"
+" Conterrà le righe dei materiali, invece del "
+"prodotto finito."
#. module: mrp
#: report:mrp.production.order:0
diff --git a/addons/mrp_byproduct/i18n/hu.po b/addons/mrp_byproduct/i18n/hu.po
index e3c4ffb12af..b13987cb689 100644
--- a/addons/mrp_byproduct/i18n/hu.po
+++ b/addons/mrp_byproduct/i18n/hu.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
-"PO-Revision-Date: 2013-01-02 10:24+0000\n"
+"PO-Revision-Date: 2013-01-04 09:59+0000\n"
"Last-Translator: krnkris \n"
"Language-Team: Hungarian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-01-03 05:39+0000\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
"X-Generator: Launchpad (build 16393)\n"
#. module: mrp_byproduct
@@ -28,6 +28,14 @@ msgid ""
"BoM / quantity of manufactured product set on the BoM * quantity of "
"manufactured product in the production order.)'"
msgstr ""
+"Annak meghatározása, hogyan lesz beállítva a melléktermék mennyiség ehhez a "
+"darabjegyzékhez a termelési megbízáson. 'Fix' azt a szituációt írja le ahol "
+"a végtermék mennyiség mindig egyenlő a darabjegyzéken lévő mennyiséggel, "
+"függetlenül attól, mennyi készül a termelési megbízáskor. Ellenben, "
+"'Variálható' azt jelenti, hogy a mennyiség ki lesz számítva ezzel a "
+"függvénnyel '(a darabjegyzéken beállított melléktermék mennyiség / a "
+"darabjegyzéken beállított gyártott termék mennyiség * a termelési megbízáson "
+"található gyártott mennyiség.)'"
#. module: mrp_byproduct
#: field:mrp.subproduct,product_id:0
@@ -53,7 +61,7 @@ msgstr "Termékek mennyiségének megváltoztatása"
#: view:mrp.bom:0
#: field:mrp.bom,sub_products:0
msgid "Byproducts"
-msgstr ""
+msgstr "Melléktermékek"
#. module: mrp_byproduct
#: field:mrp.subproduct,subproduct_type:0
@@ -104,4 +112,4 @@ msgstr ""
#. module: mrp_byproduct
#: model:ir.model,name:mrp_byproduct.model_mrp_subproduct
msgid "Byproduct"
-msgstr ""
+msgstr "Melléktermék"
diff --git a/addons/note_pad/i18n/fr.po b/addons/note_pad/i18n/fr.po
index 7214d26a731..23dc7b000d6 100644
--- a/addons/note_pad/i18n/fr.po
+++ b/addons/note_pad/i18n/fr.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
-"PO-Revision-Date: 2013-01-03 17:05+0000\n"
+"PO-Revision-Date: 2013-01-04 08:32+0000\n"
"Last-Translator: Numérigraphe \n"
"Language-Team: French \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-01-04 05:27+0000\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
"X-Generator: Launchpad (build 16393)\n"
#. module: note_pad
@@ -25,4 +25,4 @@ msgstr "Note"
#. module: note_pad
#: field:note.note,note_pad_url:0
msgid "Pad Url"
-msgstr ""
+msgstr "URL du pad"
diff --git a/addons/plugin_outlook/i18n/fr.po b/addons/plugin_outlook/i18n/fr.po
index e6ecc646699..fa61395d88f 100644
--- a/addons/plugin_outlook/i18n/fr.po
+++ b/addons/plugin_outlook/i18n/fr.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
-"PO-Revision-Date: 2013-01-03 17:28+0000\n"
+"PO-Revision-Date: 2013-01-04 08:34+0000\n"
"Last-Translator: Numérigraphe \n"
"Language-Team: French \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-01-04 05:27+0000\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
"X-Generator: Launchpad (build 16393)\n"
#. module: plugin_outlook
@@ -48,7 +48,7 @@ msgstr "Installer l'extension pour Outlook"
#. module: plugin_outlook
#: view:outlook.installer:0
msgid "System requirements:"
-msgstr ""
+msgstr "Pré-requis :"
#. module: plugin_outlook
#: view:outlook.installer:0
@@ -61,6 +61,8 @@ msgid ""
"Click on the link above to download the installer for either 32 or 64 bits, "
"and execute it."
msgstr ""
+"Cliquez sur le lien ci-dessus pour télécharger l'installateur soit pour 32 "
+"bits, soit pour 64 bits, puis exécutez-le."
#. module: plugin_outlook
#: view:outlook.installer:0
@@ -87,3 +89,5 @@ msgstr "Etapes de l'installation et de la configuration"
#: help:outlook.installer,plugin64:0
msgid "Outlook plug-in file. Save this file and install it in Outlook."
msgstr ""
+"Fichier du greffon Outlook. Enregistrez ce fichier et installez-le dans "
+"Outlook."
diff --git a/addons/plugin_thunderbird/i18n/fr.po b/addons/plugin_thunderbird/i18n/fr.po
index 04c3bebba14..2fea5ab5289 100644
--- a/addons/plugin_thunderbird/i18n/fr.po
+++ b/addons/plugin_thunderbird/i18n/fr.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
-"PO-Revision-Date: 2013-01-03 17:34+0000\n"
-"Last-Translator: Numérigraphe \n"
+"PO-Revision-Date: 2013-01-04 08:35+0000\n"
+"Last-Translator: Florian Hatat \n"
"Language-Team: French \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-01-04 05:27+0000\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
"X-Generator: Launchpad (build 16393)\n"
#. module: plugin_thunderbird
@@ -119,4 +119,4 @@ msgstr ""
#. module: plugin_thunderbird
#: view:plugin_thunderbird.installer:0
msgid "From the Thunderbird menubar: OpenERP -> Configuration."
-msgstr "Depuis le menu Thunderbird : OpenERP -> Configuration"
+msgstr "Depuis le menu Thunderbird : OpenERP -> Configuration."
diff --git a/addons/point_of_sale/i18n/fr.po b/addons/point_of_sale/i18n/fr.po
index 0c4c48c4a1f..c254582679b 100644
--- a/addons/point_of_sale/i18n/fr.po
+++ b/addons/point_of_sale/i18n/fr.po
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
-"PO-Revision-Date: 2013-01-03 14:36+0000\n"
-"Last-Translator: Numérigraphe \n"
+"PO-Revision-Date: 2013-01-04 13:47+0000\n"
+"Last-Translator: WANTELLET Sylvain \n"
"Language-Team: French \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2013-01-04 05:27+0000\n"
+"X-Launchpad-Export-Date: 2013-01-05 05:40+0000\n"
"X-Generator: Launchpad (build 16393)\n"
#. module: point_of_sale
@@ -254,7 +254,7 @@ msgstr "Partenaire"
#. module: point_of_sale
#: view:pos.session:0
msgid "Closing Cash Control"
-msgstr ""
+msgstr "Contrôle de fermeture de caisse"
#. module: point_of_sale
#: report:pos.details:0
@@ -393,7 +393,7 @@ msgstr "Catégorie mère"
#: code:addons/point_of_sale/static/src/xml/pos.xml:488
#, python-format
msgid "Open Cashbox"
-msgstr ""
+msgstr "Ouvrir la caisse"
#. module: point_of_sale
#: view:pos.session.opening:0
@@ -427,14 +427,14 @@ msgstr ""
#. module: point_of_sale
#: field:product.product,to_weight:0
msgid "To Weight"
-msgstr ""
+msgstr "À peser"
#. module: point_of_sale
#. openerp-web
#: code:addons/point_of_sale/static/src/xml/pos.xml:482
#, python-format
msgid "Hardware Events"
-msgstr ""
+msgstr "Évènements matériels"
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:301
@@ -484,7 +484,7 @@ msgstr ""
#. module: point_of_sale
#: view:pos.session.opening:0
msgid ") is \""
-msgstr ""
+msgstr ") est \""
#. module: point_of_sale
#: model:product.template,name:point_of_sale.Onions_product_template
@@ -508,7 +508,7 @@ msgstr "En cours"
#: view:pos.session:0
#: field:pos.session,opening_details_ids:0
msgid "Opening Cash Control"
-msgstr ""
+msgstr "Contrôle d'ouverture de caisse"
#. module: point_of_sale
#: help:res.users,ean13:0
@@ -688,7 +688,7 @@ msgstr "Résumé"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.lays_naturel_45g_product_template
msgid "Lays Natural 45g"
-msgstr ""
+msgstr "Lays Natural 45g"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.chaudfontaine_50cl_product_template
@@ -904,7 +904,7 @@ msgstr ""
#. module: point_of_sale
#: model:pos.category,name:point_of_sale.rouges_noyau_fruits
msgid "Berries"
-msgstr ""
+msgstr "Baies"
#. module: point_of_sale
#: view:pos.ean_wizard:0
@@ -925,7 +925,7 @@ msgstr "Erreur : code EAN incorrect"
#. module: point_of_sale
#: model:pos.category,name:point_of_sale.legumes_racine
msgid "Root vegetables"
-msgstr ""
+msgstr "Légumes-racines"
#. module: point_of_sale
#: model:ir.actions.act_window,name:point_of_sale.act_pos_open_statement
@@ -1006,7 +1006,7 @@ msgstr "Non facturé"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.lays_pickles_250g_product_template
msgid "250g Lays Pickels"
-msgstr ""
+msgstr "Lays Pickles 250g"
#. module: point_of_sale
#: field:pos.session.opening,pos_session_id:0
@@ -1234,7 +1234,7 @@ msgstr "Total des ventes"
#: code:addons/point_of_sale/static/src/xml/pos.xml:744
#, python-format
msgid "ABC"
-msgstr ""
+msgstr "ABC"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.ijsboerke_dame_blanche_2,5l_product_template
@@ -1286,7 +1286,7 @@ msgstr "Les ventes du jour"
#: code:addons/point_of_sale/static/src/xml/pos.xml:334
#, python-format
msgid "Welcome"
-msgstr ""
+msgstr "Bienvenue"
#. module: point_of_sale
#: code:addons/point_of_sale/wizard/pos_box_entries.py:46
@@ -1375,7 +1375,7 @@ msgstr "Ventes par marge mensuelle"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.poivron_jaunes_product_template
msgid "Yellow Peppers"
-msgstr ""
+msgstr "Poivrons jaunes"
#. module: point_of_sale
#: view:pos.order:0
@@ -1395,7 +1395,7 @@ msgstr "Stella Artois 33cl"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.lays_naturel_300g_product_template
msgid "Lays Natural XXL 300g"
-msgstr ""
+msgstr "Lays Natural XXL 300g"
#. module: point_of_sale
#. openerp-web
@@ -1606,7 +1606,7 @@ msgstr "Obsolète"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.coca_light_decaf_33cl_product_template
msgid "Coca-Cola Light 33cl Decaf"
-msgstr ""
+msgstr "Coca-Cola Light 33cl Déca."
#. module: point_of_sale
#. openerp-web
@@ -1875,7 +1875,7 @@ msgstr "Suppression impossible !"
#. module: point_of_sale
#: model:pos.category,name:point_of_sale.autres_agrumes
msgid "Other Citrus"
-msgstr ""
+msgstr "Autres agrumes"
#. module: point_of_sale
#: report:pos.details:0
@@ -1990,7 +1990,7 @@ msgstr "Date d'impression"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.poireaux_poireaux_product_template
msgid "Leeks"
-msgstr ""
+msgstr "Poireaux"
#. module: point_of_sale
#: help:pos.category,sequence:0
@@ -2033,7 +2033,7 @@ msgstr "Fermer toute les caisses"
#. module: point_of_sale
#: field:pos.details,user_ids:0
msgid "Salespeople"
-msgstr ""
+msgstr "Vendeurs"
#. module: point_of_sale
#: code:addons/point_of_sale/point_of_sale.py:756
@@ -2077,7 +2077,7 @@ msgstr "Base"
#: code:addons/point_of_sale/static/src/xml/pos.xml:745
#, python-format
msgid " "
-msgstr ""
+msgstr " "
#. module: point_of_sale
#: model:pos.category,name:point_of_sale.categ_others
@@ -2120,7 +2120,7 @@ msgstr "Notes"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.coca_light_lemon_2l_product_template
msgid "Coca-Cola Light Lemon 2L"
-msgstr ""
+msgstr "Coca-Cola Light Lemon 2L"
#. module: point_of_sale
#: report:pos.details:0
@@ -2141,7 +2141,7 @@ msgstr "Ligne de Vente"
#: code:addons/point_of_sale/static/src/xml/pos.xml:744
#, python-format
msgid "123"
-msgstr ""
+msgstr "123"
#. module: point_of_sale
#: model:ir.actions.act_window,name:point_of_sale.product_normal_action
@@ -2159,7 +2159,7 @@ msgstr "Dr. Oetker Restaurant Quattro Formaggi"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.croky_naturel_45g_product_template
msgid "Croky Natural 45g"
-msgstr ""
+msgstr "Croky Naturel 45g"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.tomate_en_grappe_product_template
@@ -2169,7 +2169,7 @@ msgstr "Tomates grappe"
#. module: point_of_sale
#: model:ir.actions.client,name:point_of_sale.action_pos_pos
msgid "Start Point of Sale"
-msgstr ""
+msgstr "Démarrer le point de vente"
#. module: point_of_sale
#. openerp-web
@@ -2244,7 +2244,7 @@ msgstr "Fax :"
#. module: point_of_sale
#: view:pos.session:0
msgid "Point of Sale Session"
-msgstr ""
+msgstr "Session du point de vente"
#. module: point_of_sale
#: report:account.statement:0
@@ -2272,7 +2272,7 @@ msgstr "Moyen de paiement"
#. module: point_of_sale
#: model:product.template,name:point_of_sale.lays_paprika_45g_product_template
msgid "Lays Paprika 45g"
-msgstr ""
+msgstr "Lays Paprika 45g"
#. module: point_of_sale
#: model:ir.model,name:point_of_sale.model_account_bank_statement
@@ -2315,7 +2315,7 @@ msgstr "Eau"
#. module: point_of_sale
#: model:ir.model,name:point_of_sale.model_pos_ean_wizard
msgid "pos.ean_wizard"
-msgstr ""
+msgstr "pos.ean_wizard"
#. module: point_of_sale
#: selection:report.pos.order,month:0
@@ -2327,7 +2327,7 @@ msgstr "Juillet"
#: model:ir.ui.menu,name:point_of_sale.menu_pos_config_pos
#: view:pos.session:0
msgid "Point of Sales"
-msgstr ""
+msgstr "Point de vente"
#. module: point_of_sale
#: report:pos.details:0
@@ -2380,7 +2380,7 @@ msgstr "Article inconnu"
#: code:addons/point_of_sale/static/src/xml/pos.xml:36
#, python-format
msgid ""
-msgstr ""
+msgstr ""
#. module: point_of_sale
#: model:product.template,name:point_of_sale.jupiler_50cl_product_template
@@ -2403,7 +2403,7 @@ msgstr "Coca-Cola Light Citron 33cl"
#: code:addons/point_of_sale/static/src/xml/pos.xml:33
#, python-format
msgid "