It doesn't seem too much of a hack to me. If you don't get any feedback, just go ahead and commit your changes.
thanks Lucie -- S i x F e e t U p , I n c . | http://www.sixfeetup.com Phone: +1 (317) 861-5948 x605 ANNOUNCING the first Plone Immersive Training Experience | Sept. 10-11-12, 2009 http://www.sixfeetup.com/immerse On Wed, Apr 29, 2009 at 3:07 AM, Ilja Everilä <[email protected]> wrote: > > Hello, > > I've been translating GetPaid (0.7) core and some plugins to Finnish > and encountered some issues. For example when rendering cart contents > table headings wouldn't localize. After some digging it turned out > that these strings were rendered in python and not in template > context. > > The problematic classes were > Products.PloneGetPaid.browser.cart.CartFormatter and > Products.PloneGetPaid.browser.cart.ShoppingCartListing. Now, I tried > to use context.translate to wrap these messages, but it turned out > that the cart context was missing this method. Finally I used (ugly) > hacks and used zope.app.component.hooks.getSite method to fetch site > object and used its translate method. > > As commented in the diff, these feel like ugly hacks and that's why > I'm asking what would be the correct way of fixing these messages. I'm > new to Plone and haven't gotten familiar with its possibilities yet. > > Here's the diff on cart.py: > > Index: browser/ > cart.py > =================================================================== > --- browser/cart.py (revision > 2446) > +++ browser/cart.py (working > copy) > @@ -11,6 +11,9 > @@ > from zope.formlib import > form > from zc.table import column, > table > > +# FIXME: this is here for translation > hacks > +from zope.app.component.hooks import > getSite > + > from ore.viewlet.container import ContainerViewlet > from ore.viewlet.core import FormViewlet > > @@ -196,6 +199,11 @@ > return interfaces.ILineContainerTotals( self.context ) > > def renderExtra( self ): > + > + # FIXME: This is an ugly hack that fixes certain strings not > translating since > + # they're never rendered in template context > + translate = lambda msg: getSite().translate(msgid=msg, > domain='plonegetpaid') > + > if not len( self.context ): > return super( CartFormatter, self).renderExtra() > > @@ -206,16 +214,22 @@ > subtotal_price = totals.getSubTotalPrice() > total_price = totals.getTotalPrice() > > - buffer = [ '<div class="getpaid-totals"><table > class="listing">'] > - buffer.append( '<tr><th>SubTotal</th><td style="border-top: > 1px solid #8CACBB;">%0.2f</td></tr>'%( subtotal_price ) ) > + buffer = [ u'<div class="getpaid-totals"><table > class="listing">'] > + buffer.append('<tr><th>') > + buffer.append( translate(_(u"SubTotal")) ) > + buffer.append( '</th><td style="border-top:1px solid > #8CACBB;">%0.2f</td></tr>'%( subtotal_price ) ) > > - buffer.append( "<tr><th>Shipping</th><td>%0.2f</td></tr>"% > ( shipping_price ) ) > + buffer.append( "<tr><th>" ) > + buffer.append( translate(_(u"Shipping")) ) > + buffer.append( "</th><td>%0.2f</td></tr>"% > ( shipping_price ) ) > > for tax in tax_list: > buffer.append( "<tr><th>%s</th><td>%0.2f</td></tr>"%( tax > ['name'], tax['value'] ) ) > - buffer.append( "<tr><th>Total</th><td>%0.2f</td></tr>"% > ( total_price ) ) > + buffer.append( "<tr><th>" ) > + buffer.append( translate(_(u"Total")) ) > + buffer.append( "</th><td>%0.2f</td></tr>"%( total_price ) ) > buffer.append('</table></div>') > - > + > return u''.join( buffer) + super( CartFormatter, > self).renderExtra() > > class ShoppingCartListing( ContainerViewlet ): > @@ -240,6 +254,11 @@ > def __init__( self, *args, **kw): > super( ShoppingCartListing, self ).__init__( *args, **kw ) > > + # FIXME: Translation hacks, should not use something like > this > + for column in self.columns: > + if hasattr(column, 'title'): > + column.title = getSite().translate > (msgid=column.title, domain='plonegetpaid') > + > def getContainerContext( self ): > return self.__parent__.cart > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "getpaid-dev" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/getpaid-dev?hl=en -~----------~----~----~----~------~----~------~--~---
