From 86b2f33f712d04a0088cf940a9858d92c329dd9e Mon Sep 17 00:00:00 2001 From: Antonin Bourguignon Date: Wed, 20 Jun 2012 19:47:43 +0200 Subject: [PATCH] [IMP] slightly refactor timeago.js for l18n's sake bzr revid: abo@openerp.com-20120620174743-s603skiqcisu2yhm --- addons/mail/i18n/fr.po | 34 +++++++++++++++++++-- addons/mail/static/src/js/mail.js | 51 +++++++++++++++++++------------ 2 files changed, 62 insertions(+), 23 deletions(-) diff --git a/addons/mail/i18n/fr.po b/addons/mail/i18n/fr.po index 9062a02c6d4..8ac20093e62 100644 --- a/addons/mail/i18n/fr.po +++ b/addons/mail/i18n/fr.po @@ -166,17 +166,17 @@ msgstr "" #. module: mail #: view:mail.message:0 field:mail.message,state:0 msgid "State" -msgstr "" +msgstr "État" #. module: mail #: view:mail.message:0 msgid "Reply" -msgstr "" +msgstr "Répondre" #. module: mail #: view:mail.message:0 selection:mail.message,state:0 msgid "Sent" -msgstr "" +msgstr "Envoyé" #. module: mail #: help:mail.compose.message,subtype:0 help:mail.message,subtype:0 @@ -514,6 +514,34 @@ msgstr "" msgid "Preferred response address for the message" msgstr "Adresse de réponse préférée pour le message" +#. openerp-web +msgid "about a minute ago" +msgstr "il y a une minute" + +#. openerp-web +msgid "%d minutes ago" +msgstr "il y a %d minutes" + +#. openerp-web +msgid "a day ago" +msgstr "il y a un jour" + +#. openerp-web +msgid "%d days ago" +msgstr "il y a %d jours" + +#. openerp-web +msgid "a month ago" +msgstr "il y a un mois" + +#. openerp-web +msgid "%d months ago" +msgstr "il y a %d mois" + +#. openerp-web +msgid "History and Comments" +msgstr "Historique et commentaires" + #~ msgid "Text contents" #~ msgstr "Contenu du texte" diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index d3d67d0f6ee..cbc3ef518bc 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -841,10 +841,13 @@ openerp.mail = function(session) { var call_done = this.ds_users.call('message_append_note', [[this.session.uid], 'Tweet', body_text, false, 'comment', 'html']).then(this.proxy('init_and_fetch_comments')); }, }); - + + + /** * Compute relative time from a date (ISO format) * Code from http://timeago.yarp.com/ + * Please note that the library has been slightly refactored for i18n's sake. * * * @@ -910,33 +913,41 @@ openerp.mail = function(session) { suffix = $l.suffixFromNow; } } - + var seconds = Math.abs(distanceMillis) / 1000; var minutes = seconds / 60; var hours = minutes / 60; var days = hours / 24; var years = days / 365; - - function substitute(stringOrFunction, number) { + + function convert(stringOrFunction, number) { var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction; - var value = ($l.numbers && $l.numbers[number]) || number; - return string.replace(/%d/i, value); + + // return the proper string and the numeric value that goes in it + return stringAndNumber = {'string': string, 'value': ($l.numbers && $l.numbers[number]) || number}; } - - var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) || - seconds < 90 && substitute($l.minute, 1) || - minutes < 45 && substitute($l.minutes, Math.round(minutes)) || - minutes < 90 && substitute($l.hour, 1) || - hours < 24 && substitute($l.hours, Math.round(hours)) || - hours < 42 && substitute($l.day, 1) || - days < 30 && substitute($l.days, Math.round(days)) || - days < 45 && substitute($l.month, 1) || - days < 365 && substitute($l.months, Math.round(days / 30)) || - years < 1.5 && substitute($l.year, 1) || - substitute($l.years, Math.round(years)); - + + var stringAndNumber = seconds < 45 && convert($l.seconds, Math.round(seconds)) || + seconds < 90 && convert($l.minute, 1) || + minutes < 45 && convert($l.minutes, Math.round(minutes)) || + minutes < 90 && convert($l.hour, 1) || + hours < 24 && convert($l.hours, Math.round(hours)) || + hours < 42 && convert($l.day, 1) || + days < 30 && convert($l.days, Math.round(days)) || + days < 45 && convert($l.month, 1) || + days < 365 && convert($l.months, Math.round(days / 30)) || + years < 1.5 && convert($l.year, 1) || + convert($l.years, Math.round(years)); + + var string = stringAndNumber.string; + var value = stringAndNumber.value; var separator = $l.wordSeparator === undefined ? " " : $l.wordSeparator; - return $.trim([prefix, words, suffix].join(separator)); + + // compose and translate the final string + var finalString = $.trim([prefix, string, suffix].join(separator)); + var translatedFinalString = _.str.sprintf(_t(finalString), value); + + return translatedFinalString; }, parse: function(iso8601) { var s = $.trim(iso8601);