
    |`                         d Z ddlZddlZddlZddlZddlZddlZddlmZ dZ	i a
ddZd Zd Zd Zd	 Zed
k(  r e        yy)a  Generate binary message catalog from textual translation description.

This program converts a textual Uniforum-style message catalog (.po file) into
a binary GNU catalog (.mo file).  This is essentially the same function as the
GNU msgfmt program, however, it is a simpler implementation.

Usage: msgfmt.py [OPTIONS] filename.po

Options:
    -o file
    --output-file=file
        Specify the output file to write to.  If omitted, output will go to a
        file named filename.mo (based off the input file name).

    -h
    --help
        Print this message and exit.

    -V
    --version
        Display version information and exit.
    N)HeaderParserz1.1c                     t         j                  j                  t               |rt         j                  j                  |       t        j                  |        y )N)sysstderrwrite__doc__exit)codemsgs     4/usr/lib/python3/dist-packages/imdb/locale/msgfmt.pyusager   )   s4    JJW


HHTN    c                 "    |s|r
|t         | <   yyy)z.Add a non-fuzzy translation to the dictionary.N)MESSAGES)idstrfuzzys      r   addr   0   s     S 5r   c                     t        t        j                               } g }dx}}| D ]Y  }|j                  t	        |      t	        |      t	        |      t	        t        |         f       ||dz   z  }|t        |   dz   z  }[ d}ddt	        |       z  z   }|t	        |      z   }g }g }	|D ]  \  }
}}}|||
|z   gz  }|	|||z   gz  }	 ||	z   }t        j                  dddt	        |       ddt	        |       d	z  z   dd      }t        j                  d
k  r(|t        j                  d|      j                         z  }n'|t        j                  d|      j                         z  }||z  }||z  }|S )zReturn the generated output.r              Iiiiiiil   * r      )      i)sortedr   keysappendlenstructpackr   version_infoarraytostringtobytes)r    offsetsidsstrsr   outputkeystart
valuestartkoffsetsvoffsetso1l1o2l2s                 r   generater5   7   s    (--/"DGC$ % 	C#b'3t9c(2,6GHIrEzu$$% F 2c$i<HCH$JHH " (BBRH%%RJ''( !G[[#TSYq[AF & %++c7+4466%++c7+3355
cMF
dNFMr   c                 v   i a d}d}| j                  d      r| }n| dz   }|%t        j                  j	                  |      d   dz   }	 t        |d      j                         }d }d}d}	d}
D ]:  }|j                  |	      }|
dz  }
|d   dk(  r||k(  rt        |       d }d}|d d d	k(  rd
|v rd}|d   dk(  rO|j                  d      ro|j                  d      s^||k(  rKt        |       |s<t               }|j                  |j                  |	            j!                         }|r|}	|}|dd  }dx}}d}n|j                  d      r7||k7  r%t        d||
fz         t        j                  d       |dd  }dz  }d}n|j                  d      r|}|j                  d      rDs%t        d||
fz         t        j                  d       |j#                  dd      d   }r2|dz  }n,r%t        d||
fz         t        j                  d       |dd  }|j%                         }|st'        j(                  |      }||k(  r|j+                  |	      z  }||k(  r|j+                  |	      z  }
t        d||
fz  d       t        |       t        j                  d       = ||k(  rt        |       t-               }	 t        |d      j/                  |       y # t        $ r+}t        |       t        j                  d       Y d }~d }~ww xY w# t        $ r}t        |       Y d }~y d }~ww xY w)N   r   z.por   z.morbzutf-8#z#,r   msgidmsgid_plural   r   Fz+msgid_plural not preceded by msgid on %s:%d   r   Tmsgstrzmsgstr[z$plural without msgid_plural on %s:%d]z,indexed msgstr required for plural on  %s:%d   zSyntax error on %s:%dzbefore:wb)r   endswithospathsplitextopen	readlinesIOErrorprintr   r	   decoder   
startswithr   parsestrget_content_charsetsplitstripastliteral_evalencoder5   r   )filenameoutfileIDSTRinfilelinesr   sectionr   encodinglnolr:   r>   pcharset	is_pluralr,   s                     r   maker`   c   sE    H	
B
C E!''""6*1-5VT",,.
 GE H C @HHXqQ43;7c>vu%GERa5D=W\EQ43;<< n)E#~E65)$Ajjx)@AUUWG#*G!"A  EFI\\.)"}CvsmST"#AUNEI\\(#G||I& @FC=PQHHQKGGCOA&eOFHFTW=XYHHQKabEGGIQb=QXXh''E^ahhx((F)VSM9!HHHQKA@D #~E65! ZFWT  (m  c
n  c

s0   K# L #	L, LL	L8#L33L8c                     	 t        j                   t        j                  dd  dg d      \  } }d } D ]F  \  }}|dv rt	        d       |dv r&t        dt               t        j                  d       @|dv sE|}H st        d	       t        d
       y |D ]  }t        ||        y # t         j                  $ r}t	        d|       Y d }~d }~ww xY w)Nr7   zhVo:)helpversionzoutput-file=)z-hz--helpr   )z-Vz	--versionz	msgfmt.py)z-oz--output-filezNo input file givenz)Try `msgfmt --help' for more information.)	getoptr   argverrorr   rI   __version__r	   r`   )optsargsr   rT   optargrS   s          r   mainrl      s    ]]388AB<#FH
d
 G S""!H''+{+HHQK++G #$9:  Xw ' << as   -B) )C<CC__main__)r   )r   rC   r   rP   rd   r#   r&   email.parserr   rg   r   r   r   r5   r`   rl   __name__ r   r   <module>rq      s[   
. 
 
 
    %)Xk\ 6 zF r   