Your IP : 216.73.216.213
�
e f� � @ s� 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 d � Z d d � Z d
d � Z
d d
� Z d d � Z e d k r� e � n d S)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)�HeaderParserz1.1� c C s@ t t d t j �| r/ t | d t j �n t j | � d S)N�file)�print�__doc__�sys�stderr�exit)�code�msg� r �6/opt/alt/python34/lib64/python3.4/Tools/i18n/msgfmt.py�usage) s r c C s | r | r | t | <n d S)z.Add a non-fuzzy translation to the dictionary.N)�MESSAGES)�id�str�fuzzyr r r
�add1 s
r c C sy t t j � � } g } d } } xc | D][ } | j t | � t | � t | � t t | � f � | | d 7} | t | d 7} q) Wd } d d t | � } | t | � } g } g } xB | D]: \ }
} } }
| | |
| g 7} | |
| | g 7} q� W| | } t j d d d t | � d
d t | � d
d d � } | t j d | � j � 7} | | 7} | | 7} | S)zReturn the generated output.� s r � � � ZIiiiiiil �* r � �i� r r ) �sortedr �keys�append�len�structZpack�arrayZtostring)r ZoffsetsZidsZstrsr �outputZkeystartZ
valuestartZkoffsetsZvoffsetsZo1�l1Zo2�l2r r r
�generate9 s6
5
r$ c C s| d } d } | j d � r$ | } n
| d } | d k rW t j j | � d d } n y t | d � j � } WnE t k
r� } z% t | d t j �t j
d � WYd d } ~ Xn Xd } d } d } d }
x(| D] } | j | � } |
d 7}
| d d k r1| | k r1t | |
| � d } d } n | d d � d
k r\d | k r\d } n | d d k rrq� n | j
d � r| j
d
� r| | k r�t | |
| � | s�t � } | j |
j | � � j � } | r�| } q�q�n | } | d d � } d } }
d } n4| j
d
� r�| | k r`t d | |
f d t j �t j
d � n | d d � } | d 7} d } n� | j
d � rL| } | j
d � r| s�t d | |
f d t j �t j
d � n | j d d � d } |
rI|
d 7}
qIqL| r9t d | |
f d t j �t j
d � n | d d � } n | j � } | sdq� n t j | � } | | k r�| | j | � 7} q� | | k r�|
| j | � 7}
q� t d | |
f d d t j �t | d t j �t j
d � q� W| | k rt | |
| � n t � } y t | d � j | � Wn8 t k
rw} z t | d t j �WYd d } ~ Xn Xd S)N� � z.por z.mo�rbr zlatin-1�#z#,r �msgidZmsgid_plural� r Fz+msgid_plural not preceded by msgid on %s:%d� s T�msgstrzmsgstr[z$plural without msgid_plural on %s:%d�]z,indexed msgstr required for plural on %s:%d� zSyntax error on %s:%dzbefore:�wb)�endswith�os�path�splitext�open� readlines�IOErrorr r r r �decoder �
startswithr ZparsestrZget_content_charset�split�strip�astZliteral_eval�encoder$ �write)�filename�outfileZIDZSTRZinfile�linesr Zsectionr �encodingZlno�lr) r, �p�charsetZ is_pluralr! r r r
�makec s�
"
rE c C s3 y5 t j t j d d � d d d d g � \ } } Wn5 t j k
rl } z t d | � WYd d } ~ Xn Xd } xk | D]c \ } } | d k r� t d � qz | d k r� t d t � t j d � qz | d k rz | } qz qz W| st d d t j �t d d t j �d Sx | D] } t | | � qWd S)Nr% zhVo:�help�versionzoutput-file=�-h�--helpr �-V� --versionz msgfmt.py�-o�
--output-filezNo input file givenr z)Try `msgfmt --help' for more information.)rH rI )rJ rK )rL rM )
�getoptr �argv�errorr r �__version__r r rE )Zopts�argsr r? Zopt�argr>