m
/Ec           @   s?   d  k  Z  d  k Z d f  d     YZ d e f d     YZ d  S(   Nt   POFilec           B   sI  t  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d	   Z
 d
 d  Z d   Z d   Z d  d  Z d  d  Z d   Z d   Z d   Z d   Z h  d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d d   Z  d!   Z! d"   Z" d#   Z# d$   Z$ RS(%   Nc         C   s   | |  _  d  |  _ d  |  _ d  |  _ d  |  _ g  |  _ g  |  _ g  |  _	 g  |  _
 g  |  _ g  |  _ d  |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ g  |  _ d |  _ d  S(   Ni   i    t   &t   cat(   t   filenamet   selft   Nonet   fuzzyt   untranslatedt
   translatedt   validateErrort   datat   errorst   spellErrorst   glossaryErrorst   ignoreConsistencyt   consistencyAliast
   allowCountt   enableCheckAcceleratort   enableCheckCapitalizationt   acceleratort   enableCheckEndPontuationt   enableCheckLineLengtht   ignoreFuzzyt
   spellExtrat   spellCommand(   R   R   (    (    t	   POFile.pyt   __init__   s(    																			c         C   sn   |  i d  j o d  Sn |  i } |  i o | |  i } n |  i o | |  i } n t |  i  t |  S(   N(   R   R   R   t   totalR   R   t   float(   R   R   (    (    R   t   getRatio&   s     	
 
 c         C   s   |  i o |  i o |  i S(   N(   R   R   R   R   (   R   (    (    R   t   isFullyTranslated-   s    c         C   s   d  k  } d |  i } | i |  i   } |  i | d  |  _ |  i d  j o | |  _
 n |  i | d  |  _ |  i | d  |  _ |  i
 d  j S(   Ns(   msgfmt --statistics -o /dev/null %s 2>&1s    translateds    fuzzys    untranslated(   t   osR   R   t   commandt   popent   readt   outputt   _POFile__vextractR   R   R	   R   R   (   R   R    R   R#   (    (    R   t   validate0   s    	 c         C   sN   | i |  } | d j o d  Sn | i d d |  d } t | | | ! S(   Nit    i    i   (   R#   t   findt   tokent   endR   t   rfindt   startt   int(   R   R#   R(   R)   R+   (    (    R   t
   __vextract:   s
     c         C   sK   y- t  |  i  } | i   } | i   | SWn t j
 o d  Sn Xd  S(   N(	   t   openR   R   t   pofilet	   readlinest   linest   closet   IOErrorR   (   R   R1   R/   (    (    R   t
   read_lines@   s    
c         C   s  |  i   } | d  j o d Sn d } d } d } g  |  _ d }	 d }
 d } d } d } xg| D]_} |	 d }	 | i   } t |  d j o qa n | d d j o! | i d  o
 d } qa qa n | d  d j p | d  d j of | d	 j o# |  i i |
 | | | | f  n d } d } |	 }
 | d } | } d } | d } n | d
  d j p | d
  d j o1 | d j o
 | } n d } d	 } | d
 } n | o | | d d !} qa qa W| d	 j o# |  i i |
 | | | | f  n d S(   Ni    t    i   t   #s   #, fuzzyi   s   msgid s   msgid	i   i   s   msgstr s   msgstr	i(   R   R4   R1   R   t   currentt   msgidt   modeR
   t   linet	   msgidlinet   messaget
   mode1fuzzyR   t   it   stript   lt   lent
   startswitht   append(   R   R>   R8   R1   R@   R7   R=   R9   R   R:   R;   R<   (    (    R   t   parseI   sV     	 
  
"#
" 
 #c         C   sO   |  i |  } | d  j o d Sn | d  j o |  i | | | |  n d S(   Ni    i   (	   R   t   prepare_replacet   numbert   prepareR   R#   t   execute_replacet   textt   removeFuzzy(   R   RF   RI   RJ   R#   RG   (    (    R   t   replaceq   s     c   
      C   sZ  |  i   } | d  j o d  Sn d } d } d  } d  } d  } x | D] } | d } | i
   }	 t |	  d j p | d d j o4 | i d  o
 | } n | o | d } Pq3qF | d  d j p | d  d j o | d } | } d  } qF | d  d	 j p | d  d
 j o | | j o
 | } q3qF qF W| p d  Sn | | d | | f S(   Ni    i   R6   s   #, fuzzyi   s   msgid s   msgid	i   s   msgstr s   msgstr	(   R   R4   R1   R   R:   R<   t   headlinet	   fuzzylinet   fuzzylinetmpR>   R?   R@   RA   RB   RF   (
   R   RF   RL   RM   R1   RN   R>   R:   R<   R@   (    (    R   RE   x   s8      
$ 

	"

"  i    c         C   sp  | \ } }
 } } d } x | | d  D]r }	 | d } | oN | d  j oA | | j o4 |	 i	 d d  }	 |	 d j o | i |	  q q' | i |	  q' Wx+ |  i D]  }	 | i	 |	 d |	 d  } q W| oc | i d  d j oM | i d  xN | i d  D]( }	 t |	  o | i d |	  qqWn | i d	 |  x# | |
 d D] }	 | i |	  qUWd  S(
   Ni    i   s   , fuzzyR5   s   #
s   \ns
   msgstr ""
s   "%s\n"
s   msgstr "%s"
(   RG   RL   t   taillineR1   RM   R:   R>   RJ   R   RK   R#   t   writeR   R   RI   t   breaknewlinesR'   t   splitRA   (   R   RG   RI   RJ   R#   RQ   RL   RM   R1   R>   RO   R:   (    (    R   RH      s.     
! 
     c         C   s4   |  i | |  } | d  j o | i |  n d  S(   N(   R   t   get_header_stringR:   t   keyt   xR   t   listRC   (   R   R:   RT   RV   RU   (    (    R   t   append_header_string   s     c         C   sN   |  i | |  } | d  j o+ x( | i d  D] } | i	 |  q/ Wn d  S(   NR&   (
   R   RS   R:   RT   RU   R   RR   R>   RV   RC   (   R   R:   RT   RV   R>   RU   (    (    R   t   append_header_strings   s
      c         C   s.   | i d |  o | t d |  Sn | S(   Ns   X-POFile-%s: (   R:   RB   RT   RA   R7   (   R   R:   RT   R7   (    (    R   RS      s    c         C   sG   |  i | |  } | d  j o | Sn y t |  SWn | Sn Xd  S(   N(   R   RS   R:   RT   RU   R   R7   R,   (   R   R:   RT   R7   RU   (    (    R   t   get_header_int   s     c         C   s5  t  |  i  d j o|  i d d i d  } x | D] } |  i | d |  i  |  _ |  i | d |  i  |  _ |  i | d |  i	  |  _	 |  i | d |  i
  |  _
 |  i | d |  i  |  i | d	 |  i  | i d
  oD | t  d
  i d  } t  |  d j o |  i i |  q)q7 q7 Wn d  S(   Ni    i   s   \nt   Allowt   CheckAcceleratort   CheckEndPontuationt   CheckLineLengtht   IgnoreConsistencyt
   SpellExtras   X-POFile-ConsistencyAlias: R&   i   (   RA   R   R
   RR   t   headerLinesR>   RY   R   R   R   R   RW   R   RX   R   RB   t   sR   RC   (   R   R>   Ra   R`   (    (    R   t   parseHeader   s      

 c         C   s=  | i d d  i d d  i d d  i d d  i d d  i d d  i d d  i d	 d  i d
 d  i d d  i d d  i d d  i d d  i d d  i d d  i d d  i d d  } | i   } | d  j p t |  d j  o | Sn h  } x$ | D] } | i   | | i   <qW| i	   S(   Ns   \nR&   s   \tt   ,t   .t   ?t   !t   :t   ;t   (t   )t   /s   &&R   R5   s   </t   <t   >s   \"i   (
   Ra   RK   RR   R@   R   RA   t   retR>   t   lowert   values(   R   Ra   R>   R@   Rn   (    (    R   t
   toWordList   s        c         C   s\  xU|  i D]J\ } } } } } t |  d j p t |  d j o q
 n |  i |  }
 t |
  d j o q
 n |  i |  } t |  d j o q
 n x |
 D] } |  i |  | j o h  }	 | i |  o | | }	 n xZ | D]R } |  i |  | j o6 d } |	 i |  o |	 | } n | d |	 | <q q W|	 | | <q q Wq
 W| S(   Ni    i   (   R   R
   R@   t   mR>   Ra   R   RA   Rq   t   sit   sst   wordt   trueStringLent	   minLengtht   countMapt   equivt   has_keyt   corrt   count(   R   Rw   Ry   R|   Ru   Rt   R>   Rr   R@   Rx   Rs   Ra   R{   R   (    (    R   t	   findEquiv   s2    
 &       c         C   s   | i   |  _ d S(   Ni    (   t	   child_outR0   R   t   read_lines_buffer(   R   R~   (    (    R   t   __read_lines_thread   s    c         C   s  d k  l }
 d k l } |
 |  i  \ } } | d |  i d | f  }	 |	 i
   |  i   } | i |  | i   |	 i   |  i } | i   | i   } x |  i D] } | | | <q Wh  } x6 | D]. } | d  } | i |  p | | | <q q W| i   |  _ d S(   N(   s   popen4(   s   Threadt   targett   argsii   (   t   popen2t   popen4t	   threadingt   ThreadR   R   R~   t   child_int   _POFile__read_lines_threadt   read_lines_threadR+   t   getCleanMsgstrRU   RP   R2   t   joinR   t   wordst   dictt   copyt   wseR   Ru   t   wsRz   t   keysR   (   R   R   R   R   R~   Ru   R   R   RU   R   R   R   (    (    R   t   spell   s0    


	

   
 c         C   s  g  |  _ d }
 x|  i D] \ } } } } } |
 d }
 | i	 d  } x | D] } d }	 yv | i   } | | o[ d }	 | | } xH | D]< } | i d  i   i | i    d j o d }	 Pq q Wn Wn t j
 o n X|	 d j o |  i i | |
 | f  qN qN Wq Wd S(   Ni    i   R&   s   utf-8i(   R   R   t   msgR
   R:   R<   R8   t   msgstrR   RR   R   Ru   t   errorRo   t   lwordt   glossaryt   translationst   translationt   decodeR'   t   KeyErrorRC   (   R   R   R   Ru   R8   R   R   R   R   R   R   R   R<   R:   (    (    R   R     s0    	
 
 
 +%c         C   s  |  i   d j o d Sn |  i   x^|  i D]S\ } }	 } } } |  i	 o | o
 d } n t
 |  d j o| |  i j o x2 | D]* } | i | d  } | i | d  } q WxE |  i D]: } | i | d | d  } | i | d | d  } q W| i |  } |  i |	 f } | d  j o h  | | g <| | <q| i |  }
 |
 d  j o | g | | <q|
 i |  q/ q/ Wd S(   Ni    R5   i   (   R   RD   Rb   R
   R:   R<   R8   R   R   R   RA   R   R?   R>   RK   R   t   mapt   gett   cmsgidR   t   addR   t   cmsgstrRC   (   R   R   R?   R   R>   R8   R   R   R   R<   R   R:   (    (    R   t   consistency  s2     

  
# 
 c         C   s  g  |  _ d } x|  i D]\ } } } } } | d } t	 |  d j p t	 |  d j o q n | o |  i
 o q n |  i o  |  i | | | | |  i  n |  i o |  i | | | |  n |  i o |  i | | | |  n t	 |  d j o. | d  d j o |  i i | | d f  n | d d j o. | d d j o |  i i | | d f  n | i d	  d j o3 | i d	  d j o |  i i | | d
 f  n |  i o# |  i | | | |  i d d q q Wd  S(   Ni    i   i   s   _:s   _: on msgstriRl   s   < trailling msgstrs   \ns   extra \nt   single_lines(   R   R   R   R
   R@   Rr   R>   Ra   R   RA   R   R   t   checkAcceleratorR   R   t   checkCapitalizationR   t   checkEndPontuationRC   R|   R   t   checkLineLength(   R   R>   Rr   R@   Ra   R   R   (    (    R   t   check7  s0    	
 
&  
 

$",
c         C   s  | i |  d j oQ | i | d  d j o7 | i |  d j o! |  i i | | d | f  n | i |  d j oQ | i | d  d j o7 | i |  d j o! |  i i | | d | f  n | i |  d j o7 | i |  d j o! |  i i | | d | f  n d  S(   Ni   R&   i    s   missing %s acelerators   extra %s acelerator(	   R>   R|   t   accRa   R   R   RC   t   posR   (   R   R>   Ra   R   R   R   (    (    R   R   N  s    F!F!,c         C   s   | i d  o d  Sn | i d  o d  Sn t i | f  d  } | t i j oC t i | f  d  } | | j o |  i i	 | | d f  q n d  S(   Ns   _: NAME OF TRANSLATORSs   _: EMAIL OF TRANSLATORSt   tot   det   dot   dat   dost   dast   ot   at   eR   t   ast   pelot   paras   capitalization error(   R   (   R   R   R   R   R   R   R   R   s   osR   R   R   (   R>   RB   t   capitalizationt   ict   CAP_UNKNOWNRa   t   scR   R   RC   R   R   (   R   R>   Ra   R   R   R   R   (    (    R   R   V  s      c         C   sL  | d d j o. | d d j o |  i i | | d f  n t |  d j oR t |  d j o? | d d j o. | d d j o |  i i | | d f  n t |  d j oR t |  d j o? | d	 d
 j o. | d	 d
 j o |  i i | | d f  n@ | d d j o. | d d j o |  i i | | d f  n d  S(   NiRg   s	   missing :i   is   : s
   missing : i   is   ...s   missing ...Rd   s	   missing .(   R>   Ra   R   R   RC   R   R   RA   (   R   R>   Ra   R   R   (    (    R   R   c  s    "HH"c   
      C   s  | i d  }	 t |	  d j o d } x |	 D]m } | d } t |  | j oJ |  i |  } | | j o* |  i
 i | | d | | | f f  q q/ q/ Wnp | oh |	 d } t |  | j oG |  i |  } | | j o' |  i
 i | | d | | f f  qqn d  S(   Ns   \ni   i    s   %d > %d chars [line %d]s   %d > %d chars(   R:   RR   t	   linesplitRA   t   ilt   ft   limitR   Rv   t   lenfR   RC   R   R   R   (
   R   R:   R   R   R   R   R   R   R   R   (    (    R   R   m  s      
6
c         C   sJ   d } x/ | D]' } t |  d j o | d } q q Wt |  | d S(   Ni    i   i   i   (   t   unicodeR   R>   t   ordRA   (   R   R   R>   R   (    (    R   Rv     s      c         C   sL   d } x? |  i D]4 \ } } } } } | d j o | | d } q q W| S(   NR5   s   
(   R   R   R
   R@   Rr   R>   Ra   R   (   R   R   R>   Rr   R@   Ra   R   (    (    R   t	   getMsgstr  s    
  c         C   s-  | i | |  }
 |
 d j  o |
 d  f Sn t |  } t |  } |
 d j o& | |
 d t	 i
 j o |
 d  f Sn |
 | | d j  o& | |
 | t	 i
 j o |
 d  f Sn |
 | d } } | d j  o d \ } } n |
 | | d } }	 | | j o | d } }	 n |
 | | | | !|	 f S(   Ni    i   s   ...R5   (   i    R5   (   t   textToSearchR'   t
   wordToFindt   indexRU   R   RA   t   lwft   ltst   stringt   letterst   contextt   xat   eat   xbt   eb(   R   R   R   R   R   R   R   R   R   R   RU   R   (    (    R   t   searchWordInText  s      %-  i
   c         C   s   g  } x |  i D] \ } } } } }
 | d j om d } xd |  i	 | | | | d  \ } }	 | d j  o Pn |	 d  j o | i | | |	 f  q; q; Wq q W| S(   NR5   ii   i    (   t   rR   R
   R@   Rr   R>   Ra   R   R   R   RI   R   t   ctxR   RC   (   R   RI   R   R   R>   Rr   R@   Ra   R   R   R   (    (    R   t   searchInMsgstr  s    
     'c         C   s   |  i   } d } d } d  k } | i d d |  } | i d d |  } | i d d |  } | i d	 d |  } x  | D] } | i | d  } q| Wx  | D] } | i | d
  } q W| S(   Ns   \ns   \tR   t   _s   &[^;]*;R&   s   <[^>]*>s   <[^>]*/>s   </[^>]*>R5   (   s   \ns   \t(   R   R   (	   R   R   Ra   t   spacet   emptyt   ret   subt   tRK   (   R   R   R   Ra   R   R   (    (    R   R     s    	    c   	   
   C   s   d } d } x |  i D] \ } } } } } | d j ow | i	 d d  i	 d d  } xD | D]< } | i	 d | d  i	 d | d  i	 d | d  } q] W| | d } q q W| S(   NR5   t   olt   pt   qtt   brt   lit   ult   strongt   bR>   t   ems   \nR&   R   s   <%s>s   </%s>s   <%s/>(
   R   R   R   R   R   R   R   R   R>   R   (   R   t   htmltagsR   R
   R@   Rr   R>   Ra   R   RK   R   (	   R   R   R   Rr   R@   R>   Ra   R   R   (    (    R   t   getTmp  s    
  :c         C   s   |  i S(   N(   R   R   (   R   (    (    R   t	   getErrors  s    c         C   s   t  |  i  d j S(   Ni    (   RA   R   R   (   R   (    (    R   t	   hasErrors  s    (%   t   __name__t
   __module__R   R   R   R%   R$   R4   RD   RK   RE   RH   RW   RX   R   RS   RY   Rb   Rq   R}   R   R   R   R   R   R   R   R   R   Rv   R   R   R   R   R   R   R   (    (    (    R   R       sD   				
				(														
							t   POTFilec           B   s   t  Z d   Z d   Z RS(   Nc         C   s   t  i |  |  d  S(   N(   R    R   R   R   (   R   R   (    (    R   R     s    c         C   s   g  |  _ x |  i D] \ } } } } } t |  d j o q n t	 i
 |  } t	 i	 |  } | t	 i j o. | | j o! |  i i | | d | f  q q Wd  S(   Ni    s   wrong capitalization - %s(   R   R   R
   R@   Rr   R>   Ra   R   RA   R   t   requiredCapitalizationt   reqt   capR   RC   (   R   R   R>   R   Rr   R@   Ra   R   (    (    R   R     s    	
  (   R   R   R   R   (    (    (    R   R     s   	(   R   R   R    R   (   R   R   R   R    (    (    R   Re      s   		 