‡Æ
Uó9c       sS  d  Z  d k Z d k Z d Z e d Z g  Z xM d d d d f d r7 Z e i i e ƒ o e i	 e i e d	 ƒ Z Pn qC Wx e d rw Z
 e i e
 d
 ƒ Z e d j oN e i e
 e  ƒ e i e
 e  d
 ƒ Z e d j o e i e
 e  ƒ n n [ q‡ Wd e j o e i d ƒ n e i i d ƒ o e i d Z n e Z [ [ d Z d „  Z d „  Z d d „ Z d f  d „  ƒ  YZ e Z h  Z e og d f  d „  ƒ  YZ d k Z e e d ƒ o e i Z n e Z e e d „ Z e e _ [ [ [ [ n e d „ Z d „  Z d „  Z e Z d „  Z d „  Z  e! d j o e  ƒ  n d S(   s  This module allows python programs to use GNU gettext message catalogs.

Author: James Henstridge <james@daa.com.au>
(This is loosely based on gettext.pl in the GNU gettext distribution)

[Small change by H.Duerer <holly@starship.python.net> -- see below]


The best way to use it is like so:
    import gettext
    gettext.bindtextdomain(PACKAGE, LOCALEDIR)
    gettext.textdomain(PACKAGE)
    _ = gettext.gettext
    print _('Hello World')

where PACKAGE is the domain for this package, and LOCALEDIR is usually
'$prefix/share/locale' where $prefix is the install prefix.

If you have more than one catalog to use, you can directly create catalog
objects.  These objects are created as so:
    import gettext
    cat = gettext.Catalog(PACKAGE, localedir=LOCALEDIR)
    _ = cat.gettext
    print _('Hello World')

The catalog object can also be accessed as a dictionary (ie cat['hello']).

There are also some experimental features.  You can add to the catalog, just
as you would with a normal dictionary.  When you are finished, you can call
its save method, which will create a new .mo file containing all the
translations:
    import gettext
    cat = Catalog()
    cat['Hello'] = 'konichiwa'
    cat.save('./tmp.mo')

Once you have written an internationalized program, you can create a .po file
for it with "xgettext --keyword=_ fillename ...".  Then do the translation and
compile it into a .mo file, ready for use with this module.  Note that you
will have to use C style strings (ie. use double quotes) for proper string
extraction.


Addition by Holger Duerer <holly@starship.python.net>:
When language is set to ll_CC (ll=language, CC=country code) the
gettext file is not only looked for in subdirectory ll_CC/LC_MESSAGES
but also in ll/LC_MESSAGES.
Also, on some systems, ll_CC_cc is used, where cc is an encoding (e.g.
ISO8859-1.  For this we also check ll_CC and ll.
This seems to mirror the behaviour of other programs.
Ns
   /usr/locals   /share/locales   LANGUAGEs   LC_ALLs   LC_MESSAGESs   LANGi    s   :s   _i   s   Cs   PY_XGETTEXTs   gettext.errorc    sH   t  |  d ƒ t  |  d ƒ d >t  |  d ƒ d >t  |  d ƒ d >Sd  S(   Ni    i   i   i   i   i   i   (   s   ords   str(   s   strs9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   _lsbStrToIntR s    c    sH   t  |  d @ƒ t  |  d ?d @ƒ t  |  d ?d @ƒ t  |  d ?d @ƒ Sd  S(   Niÿ   i   i   i   (   s   chrs   int(   s   ints9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   _intToLsbStrW s    c    s‡   d k  } y
 t ‚ Wn t j
 o | i i } n X| i } x% |  d j o | i } |  d }  qA W| i d | i i	 | i
 f Sd S(   s|   Returns the position in the code where the function was called.
	The function uses some knowledge about python stack frames.Ni    i   s   __name__(   s   syss   RuntimeErrors   exc_tracebacks   tb_frames   frames   f_backs   levelss	   f_globalss   f_codes   co_names   f_lineno(   s   levelss   syss   frames9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   _getpos] s     	
	 	s   Catalogc      s8   e  e d „ Z d „  Z e Z e Z d „  Z d „  Z RS(   Nc    sê  | |  _  | |  _ h  |  _ | o d  Sn x~ t d rp |  _ |  i d j o d  Sn d | |  i | f } y# t | d ƒ } | i ƒ  } ~ PWn t
 j
 o n Xq4 Wd  St | d  ƒ d j o t d | f ‚ n t | d d !ƒ |  _ t | d d	 !ƒ } t | d	 d
 !ƒ } t | d
 d !ƒ } x½ t | ƒ d r­ }	 t | | | d !ƒ }
 t | | d | d !ƒ } | d } | | | |
 !} t | | | d !ƒ } t | | d | d !ƒ } | d } | | | | !} | |  i | <q5Wd  S(   Ni    s   Cs   %s//%s/LC_MESSAGES/%s.mos   rbi   iÞ•s   Bad magic number in %si   i   i   i   (   s   domains   selfs	   localedirs   cats   langs   catalogs   opens   fs   reads   buffers   IOErrors   _lsbStrToInts   errors   revisions   nstringss   origTabOffsets   transTabOffsets   ranges   is
   origLengths
   origOffsets   origStrs   transLengths   transOffsets   transStr(   s   selfs   domains	   localedirs   catalogs   fs   buffers   nstringss   origTabOffsets   transTabOffsets   is
   origLengths
   origOffsets   origStrs   transLengths   transOffsets   transStrs9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   __init__o sF    			 	 		 

c    s*   |  i i | ƒ o |  i | Sn | Sd S(   s%   Get the translation of a given stringN(   s   selfs   cats   has_keys   string(   s   selfs   strings9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   gettextœ s     c    s   | |  i | <d S(   s%   Set the translation of a given stringN(   s   transs   selfs   cats   string(   s   selfs   strings   transs9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   __setitem__§ s     c    s  y t  | d ƒ } Wn$ t j
 o t d | d ‚ n X| i t d ƒ ƒ | i t d ƒ ƒ | i t t |  i	 ƒ ƒ ƒ g  } d } g  } d } xy |  i	 i ƒ  d rf \ } } | i t | ƒ t | ƒ f ƒ | | d } | i t | ƒ t | ƒ f ƒ | | d } q¦ Wd }	 |	 d	 t | ƒ }
 |
 d	 t | ƒ } | t | ƒ } | i t |	 ƒ ƒ | i t |
 ƒ ƒ x@ | d r6 \ } } | i t | ƒ ƒ | i t | | ƒ ƒ q}Wx@ | d r6 \ } } | i t | ƒ ƒ | i t | | ƒ ƒ qÀW| i | ƒ | i | ƒ d
 S(   s'   Create a .mo file from a Catalog objects   wbs   can't open s    for writingiÞ•i    s    s    i   i   N(   s   opens   files   fs   IOErrors   errors   writes   _intToLsbStrs   lens   selfs   cats   oIndexs   oDatas   tIndexs   tDatas   itemss   origs   transs   appends	   oIndexOfss	   tIndexOfss   oDataOfss   tDataOfss   lengths   offset(   s   selfs   files   fs   oIndexs   oDatas   tIndexs   tDatas   origs   transs	   oIndexOfss	   tIndexOfss   oDataOfss   tDataOfss   lengths   offsets9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   saveª s@      	 	 (   s   Nones	   localedirs   __init__s   gettexts   __getitem__s   __call__s   __setitem__s   save(    s9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   Catalogn s    -		c      s;   d „  Z  d „  Z e Z e Z d „  Z d „  Z d „  Z RS(   Nc    s   | |  _  | |  _ h  |  _ d  S(   N(   s   domains   selfs	   localedirs   _strings(   s   selfs   domains	   localedirs9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   __init__Ï s    		c    sg   t  d ƒ } |  i i | ƒ o0 | |  i | j o |  i | i | ƒ n n | g |  i | <| Sd  S(   Ni   (   s   _getposs   poss   selfs   _stringss   has_keys   strings   append(   s   selfs   strings   poss9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   gettextÓ s    c    s   d  S(   N(    (   s   selfs   items   datas9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   __setitem__ß s    c    s   d  S(   N(    (   s   selfs   files9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   saveá s    c    sm  d  k  } | i d |  i f ƒ xF|  i i ƒ  d r3} t d „  |  i | ƒ } | i
 ƒ  d } xl | d rb } | t | ƒ d j o | i d ƒ d } n | i d ƒ | i | ƒ | d	 t | ƒ } qj W| i d
 ƒ d
 | j oZ | i d ƒ | i | d
 ƒ } t d „  | d	  ƒ d | d	 f g } | i | ƒ n | i d | f ƒ | i d ƒ q2 Wd  S(   Ns   # POT file for domain %s
i    c    s   d |  S(   Ns	   %s(%s):%d(   s   x(   s   xs9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   <lambda>ç s    iP   iJ   s   
#:i   s    i   s   
s	   msgid ""
c    s   d |  f S(   Ns   "%s\n"
(   s   x(   s   xs9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   <lambda>ö s    s   "%s"
s   msgid "%s"
s
   msgstr ""
(   s   strings   fps   writes   selfs   domains   _stringss   keyss   strs   maps   poss   sorts   lengths   ps   lens   splits   liness
   writelines(   s   selfs   fps   strings   strs   poss   lengths   ps   liness9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   outputã s2    	 	
	 
	!(   s   __init__s   gettexts   __getitem__s   __call__s   __setitem__s   saves   output(    s9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   CatalogÎ s    		
		s   exitfuncc    s{   d  k  } xY t i ƒ  d rI } t | i i |  | d ƒ d ƒ } t | } | i
 | ƒ | i ƒ  q W| o | ƒ  n d  S(   Ni    s   .pots   w(   s   oss   _catss   keyss   files   opens   paths   joins   dirs   fps   cats   outputs   closes
   _exitchain(   s   dirs
   _exitchains   oss   files   fps   cats9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   exitfuncs    	 "
 c    sB   t  i |  ƒ o t |  | ƒ t  |  <n t o t  |  a n d  S(   N(   s   _catss   has_keys   domains   Catalogs	   localedirs   _cat(   s   domains	   localedirs9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   bindtextdomains
      c    s3   t  i |  ƒ o t |  ƒ t  |  <n t  |  a d  S(   N(   s   _catss   has_keys   domains   Catalogs   _cat(   s   domains9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys
   textdomains     c    s+   t  t j o t d ‚ n t  i |  ƒ Sd  S(   Ns   No catalog loaded(   s   _cats   Nones   errors   gettexts   string(   s   strings9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   gettexts     c    sV   |  t j o t | ƒ Sn t i |  ƒ o t d |  d ‚ n t |  i | ƒ Sd  S(   Ns   Domain 's   ' not loaded(   s   domains   Nones   gettexts   strings   _catss   has_keys   error(   s   domains   strings9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   dgettext"s
    c     sÅ   d  k  }  t |  i ƒ d d f j o$ d |  i d f GH|  i d ƒ n |  i d } t |  i ƒ d j o t | |  i d ƒ n t | ƒ t d ƒ } | o d | t	 i
 f GH| GHn d GHd  S(	   Ni   i   s   Usage: %s DOMAIN [LOCALEDIR]i    i   s    s   Info for domain %s, lang %s.s   No info given in mo file.(   s   syss   lens   argvs   exits   domains   bindtextdomains
   textdomains   gettexts   infos   _cats   lang(   s   syss   domains   infos9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   test)s    	 
	s   __main__("   s   __doc__s   oss   strings   prefixs	   localedirs   langs   envs   environs   has_keys   splits   ls   rfinds   poss   appends   xgettexts   Nones   errors   _lsbStrToInts   _intToLsbStrs   _getposs   Catalogs   _cats   _catss   syss   hasattrs   exitfuncs
   _exitchains   bindtextdomains
   textdomains   gettexts   _s   dgettexts   tests   __name__(    s9   /mit/python/lib/python2.0/site-packages/Pyrite/gettext.pys   ?3 s`   
 		 		\1							