Your IP : 216.73.216.213
��Yf� � @ 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 � 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 �t j | � d S)N�file)�print�__doc__�sys�stderr�exit)�code�msg� r �6/opt/alt/python35/lib64/python3.5/Tools/i18n/msgfmt.py�usage) s r c C s | r | r | t | <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 sR d } d } | j d � r$ | } n
| d } | d k rT t j j | � d d } 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 r+| | k r+t | |
| � d } d } | d d � d
k rSd | k rSd } | d d k rfq� | j
d � r| j
d
� r| | k r�t | |
| � | s�t � } | j |
j | � � j � } | r�| } | } | d d � } d } }
d } n%| j
d
� rk| | k rHt d | |
f d t j �t j
d � | d d � } | d 7} d } n� | j
d � r(| } | j
d � r�| s�t d | |
f d t j �t j
d � | j d d � d } |
r(|
d 7}
n@ | rt d | |
f d t j �t j
d � | d d � } | j � } | s=q� t j | � } | | k rn| | 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 r�t | |
| � t � } y t | d � j | � Wn8 t k
rM} 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 s0 y5 t j t j d d � d d d d g � \ } } Wn5 t j k
rl } z t d | � WYd d } ~ Xn Xd } xh | D]` \ } } | d k r� t d � qz | d k r� t d t � t j d � qz | d k rz | } 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>