[Erp5-report] r8084 - /erp5/trunk/products/ERP5Type/Message.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Jun 20 12:04:41 CEST 2006


Author: yo
Date: Tue Jun 20 12:04:33 2006
New Revision: 8084

URL: http://svn.erp5.org?rev=8084&view=rev
Log:
Add a new method "translate".
Make sure that __str__ returns a string object.
Add __unicode__ to return a unicode object.

Modified:
    erp5/trunk/products/ERP5Type/Message.py

Modified: erp5/trunk/products/ERP5Type/Message.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Message.py?rev=8084&r1=8083&r2=8084&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Message.py (original)
+++ erp5/trunk/products/ERP5Type/Message.py Tue Jun 20 12:04:33 2006
@@ -86,24 +86,24 @@
     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 @@
                                              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)




More information about the Erp5-report mailing list