[Chandler-dev] Re: [commits] (vajda) [13406] - fixed bug 8296

Brian Kirsch bkirsch at osafoundation.org
Wed Mar 7 11:19:04 PST 2007


Yes,
Good catch Heikki. Exceptions are a real issue with i18n in that  
libraries we leverage such as
Twisted etc return English 8-bit exception strings.

There is a ChandlerException which for example  
osaf.mail.errors.MailException inherits from.
The ChandlerException has been designed with localization in mind and  
can be passed
localized Unicode strings.

For example:
raise ChandlerException(_(u"Localized Error Message Here"))

The ChandlerException or its inherited classes should always be used  
when raising Exceptions in
Chandler.

Of course this does not solve the case where the Exception is raised  
in Python or Twisted or Wx etc.
In those cases you have to catch the Exception and translate it.


On Mar 7, 2007, at 8:35 AM, Heikki Toivonen wrote:

> commits at osafoundation.org wrote:
>> Revision
>>     13406 <http://viewcvs.osafoundation.org/chandler? 
>> view=rev&rev=13406>
>> Author
>>     vajda
>
>>          try:
>>              self.itsView.commit()
>>              activity.completed()
>>          except Exception, e:
>>              logger.exception("Commit failed")
>> +            self.setStatusMessage("Commit failed with %s" %(e))

The "Commit failed with %s" % (e) also needs to be wrapped in a  
MessageFactory.
And in addition for all localizable strings we do not use the %s but  
instead use
lookup dicts to help give the translator sentence context.

So taking the above text literally, to localize would be:

from i18n import ChandlerMessageFactory as _
  self.setStatusMessage(_(u"Commit failed with %(errorDescription)s")  
% {"errorDescription":  e})

However, as Heikki pointed out the Exception is not localized so the  
better option would be:

from i18n import ChandlerMessageFactory as _
self.setStatusMessage(_(u"Commit failed, see log for details"))

-Brian



>
> I don't think this is right, the message can not be localized  
> AFAIK. The
> exception could be anything, and almost certainly will contain English
> text. Besides, exception messages are generally meant for programmers,
> not end users.
>
> I suggest showing just "Commit failed, see log for details", and  
> log the
> actual exception.
>
> -- 
>   Heikki Toivonen
>
>
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> Open Source Applications Foundation "chandler-dev" mailing list
> http://lists.osafoundation.org/mailman/listinfo/chandler-dev



More information about the chandler-dev mailing list