jmr-san wrote (11/ 1/08 09:26 PM): > Hi - new webrev that simplifies things further. If we want to make RC1 > this would need to land on Monday our time or else it will have to go > into RC2.
Please let me reply to update three strings with have two %s today to sync the latest translations. > > I have smoke tested this with the PM, UM and CLI. I have brought up the > BE Management in the PM to exercise the bytes_to_str call in misc.py and > I have done a full Update All from b99 -> b100 to exercise the UM and > the libbe code that was failing due to lack of _() in the global namespace. > > > Webrev: http://cr.opensolaris.org/~jmr/pm_4126_v10_Nov01 > Stopper Bug: http://defect.opensolaris.org/bz/show_bug.cgi?id=4126 > > CLI: uses set_locale and gettext.install, has _() available in the > global namespace and is the recommended way to l10n enable python apps. > Python l10n Docs: http://docs.python.org/library/gettext.html > "The class-based API of the gettext module gives you more flexibility > and greater convenience than the GNU *gettext* API. It is the > recommended way of localizing your Python applications". > > GUI: uses set_locale, bindtextdomain and textdoamin to setup glade so > widgets are instantiated with the correct textdomain and is the > recommended approach for l10n enabling of PyGTK apps, see faq below. > PyGTK Faq: http://faq.pygtk.org/index.py?req=show&file=faq22.002.htp > <http://faq.pygtk.org/index.py?req=show&file=faq22.002.htp> > > Problem: several modules used by the GUI need _() in the global > namespace which is not provided by using just bindtextdomain and > textdomain. Solution is to alias __builtin__._ = gettext.gettext in the > top level GUI module, so any modules it uses that need _() in the global > namespace are happy, namely misc.py and installupdates.py (calling libbe > that needs _() via beadm.py). Great, I think it's a better solution. > > Builtin and PyGTK: > http://lucumr.pocoo.org/articles/internationalized-pygtk-applications > > > One query remains, use of N_(). I understand the usage but just don't > think we need it at present. > Use of N_: > http://docs.python.org/library/gettext.html#deferred-translations > > When I search for N_ I see it defined in packagemanager.py but not used > anywhere. It is also defined and used in l10n.py, but the comment is > talking about categories such as l10n08 = N_("RasterGraphics") which are > not used in the GUI anywhere. Is this a hold over from some old > translation? It looks to me like l10n.py should be removed and the > definition of N_ removed from packagemanger.py. Fujiwara what do you think? I notice opensolaris.org* files are integrated recently. I don't check how it effects GUI yet. Could you leave l10n.py until we confirm the i18n of the category is no problem? Becase some of the translatins are resused. Probably I think l10n.py will be need because opensolaris.org* are not python files. > > Fujiwara can you please review the pkgdefs/SUNWipkg-gui/Makefile to make > sure it is ok for your purposes. There where conflicts between your diff > and what was in the gate, so I took the gate. I checked the bug of the Makefile is fixed. So my patch is not needed for pkgdefs/SUNWipkg-gui/Makefile > > Post 2008.11: GUI should be modified to use _() as opposed to self._() > and self.parent._(). No functional difference, just keeps things > consistent. > > JR > > > jmr wrote: >> Doing some more digging and seeing examples like the following for >> gnome pygtk apps, so perhaps this approach of using: >> >> locale.setlocale(locale.LC_ALL, '') >> for module in (gettext, gtk.glade): >> module.bindtextdomain("pkg", self.application_dir + \ >> "/usr/share/locale") >> module.textdomain("pkg") >> gettext.install("pkg", self.application_dir + "/usr/share/locale") >> >> Is what's needed after all. If we do this then we do not need to have >> self._ = gettext.gettext and self.parent._ through out the GUI code, >> the addition of _ = gettext.gettext could be dropped from misc.py as >> well. Then _() will be in the global python namespace for both CLI and >> GUI. >> >> JR >> >> http://kefir.sourceforge.net/tepache/SimpleGladeApp.html >> def bindtextdomain(app_name, locale_dir=None): >> try: >> import locale >> import gettext >> locale.setlocale(locale.LC_ALL, "") >> gtk.glade.bindtextdomain(app_name, locale_dir) >> gettext.install(app_name, locale_dir, unicode=1) >> except (IOError,locale.Error), e: >> print "Warning", app_name, e >> __builtins__.__dict__["_"] = lambda x : x >> >> || >> >> http://www.pointy-stick.com/lca-2005/ >> >> import gettext, locale >> ... >> def main(name, version): >> gettextName = 'debuggerDemo' >> localeDir = '%s/locale' % _currentDir() >> gettext.bindtextdomain(gettextName, localeDir) >> gettext.textdomain(gettextName) >> gettext.install(gettextName, localeDir, unicode = 1) >> >> >> http://www.pixelbeat.org/programming/i18n.html >> >> Python: >> >> import gettext, locale >> gettext.bindtextdomain("fslint", "/usr/share/locale") #sys >> default used if localedir=None >> locale.setlocale(locale.LC_ALL,'') >> gettext.textdomain("fslint") >> >> #Note if you initially do the following, it is much >> #faster as lookup for mo file not done for each translation >> #(the C version automatically caches the translations so it's >> not needed there). >> gettext.install("fslint",localedir=None,unicode=1) #None is >> sys default locale >> >> >> jmr wrote: >> >>> New webrev: >>> >>> http://cr.opensolaris.org/~jmr/pm_4126_v9_Oct31/ >>> >>> Moved the gettext.install() in client.py back into main_func() >>> >>> Tried experimenting with dropping the gettext.install from >>> installupdate and setting _ = gettext.gettext in beadm.py, this did >>> not help when I tried to do an update all and I get an error from >>> libbe about _ not being a global name. So put it back. >>> >>> In the end we might just have to settle on adding gettext.install() >>> for any underlying python module support in the GUI which cannot use >>> the self._ setup in the PM or UM, as well as the textdomain for the >>> glade support. If we did that then we could drop the _ = >>> gettext.gettext in misc.py and the gettext.install() in >>> installupdate.py as well. >>> >>> Let me know what you want us to do. >>> >>> JR >>> >>> >>> jmr wrote: >>> >>>> Yep - I also wanted to generate a new one but am not able to as I've >>>> exceed my disc quota and cannot move any old webrevs to the .trash >>>> folder as per instructions on cr.opensolaris.org. Michal has the >>>> same problem so assume this is a problem with the machine. >>>> >>>> I've attached rev8. >>>> >>>> JR >>>> >>>> >>>> >>> _______________________________________________ >>> pkg-discuss mailing list >>> [email protected] >>> http://mail.opensolaris.org/mailman/listinfo/pkg-discuss >>> >> >> _______________________________________________ >> pkg-discuss mailing list >> [email protected] >> http://mail.opensolaris.org/mailman/listinfo/pkg-discuss >> > > _______________________________________________ pkg-discuss mailing list [email protected] http://mail.opensolaris.org/mailman/listinfo/pkg-discuss
