From 32d230e1fc1d5f8ea2f735a1d9893599c793264c Mon Sep 17 00:00:00 2001 From: Yoshinori Okuji <yo@nexedi.com> Date: Tue, 20 Jun 2006 10:04:33 +0000 Subject: [PATCH] Add a new method "translate". Make sure that __str__ returns a string object. Add __unicode__ to return a unicode object. git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@8084 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5Type/Message.py | 43 ++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/product/ERP5Type/Message.py b/product/ERP5Type/Message.py index 0d016e58c5..c7dd9b6f70 100644 --- a/product/ERP5Type/Message.py +++ b/product/ERP5Type/Message.py @@ -86,24 +86,24 @@ class Message(Persistent): self.mapping = o.mapping self.default = o.default - def __str__(self): + def translate(self): """ - Return the translated message + Return the translated message. If the original is a string object, + the return value is a string object. If it is a unicode object, + the return value is a unicode object. """ request = get_request() if request is not None: context = request['PARENTS'][0] translation_service = getGlobalTranslationService() + + message = self.message if self.domain is None or request is None or translation_service is None : # Map the translated string with given parameters - message = self.message if type(self.mapping) is type({}): if isinstance(message, unicode) : - message = message.encode('utf8') + message = message.encode('utf-8') message = Template(message).substitute(self.mapping) - if not isinstance(message, unicode): - message = message.decode('utf8') - return message else: translated_message = translation_service.translate( self.domain, @@ -112,9 +112,32 @@ class Message(Persistent): context=context, default=self.default) if translated_message is not None: - return translated_message.encode('utf8') - else: - return self.message + message = translated_message + + if isinstance(self.message, str) and isinstance(message, unicode): + message = message.encode('utf-8') + elif isinstance(self.message, unicode) and isinstance(message, str): + message = message.decode('utf-8') + + return message + + def __str__(self): + """ + Return the translated message as a string object. + """ + message = self.translate() + if isinstance(message, unicode): + message = message.encode('utf-8') + return message + + def __unicode__(self): + """ + Return the translated message as a unicode object. + """ + message = self.translate() + if isinstance(message, str): + message = message.decode('utf-8') + return message InitializeClass(Message) allow_class(Message) -- 2.30.9