%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/227033/root/opt/alt/python27/lib/python2.7/site-packages/babel/messages/
Upload File :
Create Path :
Current File : //proc/227033/root/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyo

�
���Qc@szdZddlZddlZddlmZddlmZmZddlmZddl	m
Z
ddlmZddlm
Zdd	lmZdd
lmZddlmZddlmZmZmZmZdd
lmZmZmZmZdddgZej d�Z!de"fd��YZ#de$fd��YZ%dZ&erZd�Z'ne
Z'de"fd��YZ(dS(s�
    babel.messages.catalog
    ~~~~~~~~~~~~~~~~~~~~~~

    Data structures for message catalogs.

    :copyright: (c) 2013 by the Babel Team.
    :license: BSD, see LICENSE for more details.
i����N(tparse_header(tdatetimettime(tget_close_matches(tmessage_from_string(tcopy(t__version__(tLocale(tformat_datetime(t
get_plural(todicttdistincttLOCALTZtFixedOffsetTimezone(tstring_typestnumber_typestPY2tcmptMessagetCatalogtTranslationErrors�(?x)
    \%
        (?:\(([\w]*)\))?
        (
            [-#0\ +]?(?:\*|[\d]+)?
            (?:\.(?:\*|[\d]+))?
            [hlL]?
        )
        ([diouxXeEfFgGcrs%])
c	Bs�eZdZddddddddd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
dd�Zed
��Zed��Zed��ZRS(s0Representation of a single message in a catalog.uc

Cs�||_|r"|jr"d}n||_tt|��|_t|�|_|rq|jrq|jj	d�n|jj
d�tt|��|_tt|��|_t
|t�r�|g|_nt|�|_||_|	|_dS(s`Create the message object.

        :param id: the message ID, or a ``(singular, plural)`` tuple for
                   pluralizable messages
        :param string: the translated message string, or a
                       ``(singular, plural)`` tuple for pluralizable messages
        :param locations: a sequence of ``(filenname, lineno)`` tuples
        :param flags: a set or sequence of flags
        :param auto_comments: a sequence of automatic comments for the message
        :param user_comments: a sequence of user comments for the message
        :param previous_id: the previous message ID, or a ``(singular, plural)``
                            tuple for pluralizable messages
        :param lineno: the line number on which the msgid line was found in the
                       PO file, if any
        :param context: the message context
        us
python-formatN(uu(tidtpluralizabletstringtlistRt	locationstsettflagst
python_formattaddtdiscardt
auto_commentst
user_commentst
isinstanceRtprevious_idtlinenotcontext(
tselfRRRRRR R"R#R$((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt__init__.s 				cCs&dt|�j|jt|j�fS(Ns<%s %r (flags: %r)>(ttypet__name__RRR(R%((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt__repr__Sscs.��fd�}|�\}}t||�S(s0Compare Messages, taking into account plural idscs�t�t�r|�j}�j}|rE|rE�jd�jdfS|r_�jd�jfS|r|�j�jdfSn�j�jfS(Ni(R!RRR(tpluralt
obj_plural(tobjR%(sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pytvalues_to_compareYs		(R(R%R,R-tthistother((R,R%sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt__cmp__WscCs|j|�dkS(Ni(R0(R%R/((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt__gt__gscCs|j|�dkS(Ni(R0(R%R/((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt__lt__jscCs|j|�dkS(Ni(R0(R%R/((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt__ge__mscCs|j|�dkS(Ni(R0(R%R/((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt__le__pscCs|j|�dkS(Ni(R0(R%R/((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt__eq__sscCs|j|�dkS(Ni(R0(R%R/((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt__ne__vscCsIttt|j|j|j|j|j|j|j	|j
|jf	��S(N(RtmapRRRRRRR R"R#R$(R%((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pytcloneyscCs_ddlm}g}xB|D]:}y|||�Wqtk
rV}|j|�qXqW|S(s�Run various validation checks on the message.  Some validations
        are only performed if the catalog is provided.  This method returns
        a sequence of `TranslationError` objects.

        :rtype: ``iterator``
        :param catalog: A catalog instance that is passed to the checkers
        :see: `Catalog.check` for a way to perform checks for all messages
              in a catalog.
        i����(tcheckers(tbabel.messages.checkersR9Rtappend(R%tcatalogR9terrorstcheckerte((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pytchecks

cCs
d|jkS(sWhether the translation is fuzzy.

        >>> Message('foo').fuzzy
        False
        >>> msg = Message('foo', 'foo', flags=['fuzzy'])
        >>> msg.fuzzy
        True
        >>> msg
        <Message 'foo' (flags: ['fuzzy'])>

        :type:  `bool`tfuzzy(R(R%((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyRA�s
cCst|jttf�S(s�Whether the message is plurizable.

        >>> Message('foo').pluralizable
        False
        >>> Message(('foo', 'bar')).pluralizable
        True

        :type:  `bool`(R!RRttuple(R%((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyR�s
cCs>|j}t|ttf�s*|g}ntd�|D��S(s�Whether the message contains Python-style parameters.

        >>> Message('foo %(name)s bar').python_format
        True
        >>> Message(('foo %(name)s', 'foo %(name)s')).python_format
        True

        :type:  `bool`css|]}tj|�VqdS(N(t
PYTHON_FORMATtsearch(t.0R((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pys	<genexpr>�s(RR!RRBtany(R%tids((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyR�s
	(((((N(R(t
__module__t__doc__tNoneR&R)R0R1R2R3R4R5R6R8R@tpropertyRARR(((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyR+s $									cBseZdZRS(s_Exception thrown by translation checkers when invalid message
    translations are encountered.(R(RHRI(((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyR�su�# Translations template for PROJECT.
# Copyright (C) YEAR ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#cCsdt|jd��}i}xB|j�D]4\}}|jd�}|jd�}|||<q(W|S(Ntutf8(Rtencodetitemstdecode(t
header_stringtheaderstdecoded_headerstnametvalue((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt
_parse_header�scBsReZdZddeddddddddded�
Zd�Zd�Ze	eedd�Z
d�Zd�Ze	eedd�Z
e	d	��Ze	d
��Ze	d��Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zddddddddd�Zd�Zdd�Zdd�Zed�Zdd�ZRS(s$Representation of a message catalog.cCst||_|r!tj|�}n||_||_t�|_|pHd|_|pWd|_|pfd|_	|pud|_
|
p�d|_|p�d|_|p�d|_
|d
kr�tjt�}n.t|t�r�|jr�|jdt�}n||_|	d
krd	}	n.t|	t�r@|	jr@|	jdt�}	n|	|_|
|_t�|_d
|_d
|_d
S(sDInitialize the catalog object.

        :param locale: the locale identifier or `Locale` object, or `None`
                       if the catalog is not bound to a locale (which basically
                       means it's a template)
        :param domain: the message domain
        :param header_comment: the header comment as string, or `None` for the
                               default header
        :param project: the project's name
        :param version: the project's version
        :param copyright_holder: the copyright holder of the catalog
        :param msgid_bugs_address: the email address or URL to submit bug
                                   reports to
        :param creation_date: the date the catalog was created
        :param revision_date: the date the catalog was revised
        :param last_translator: the name and email of the last translator
        :param language_team: the name and email of the language team
        :param charset: the encoding to use in the output (defaults to utf-8)
        :param fuzzy: the fuzzy bit on the catalog header
        tPROJECTtVERSIONtORGANIZATIONs
EMAIL@ADDRESSsFULL NAME <EMAIL@ADDRESS>sLANGUAGE <LL@li.org>sutf-8ttzinfosYEAR-MO-DA HO:MI+ZONEN(tdomainRtparsetlocalet_header_commentR
t	_messagestprojecttversiontcopyright_holdertmsgid_bugs_addresstlast_translatort
language_teamtcharsetRJRtnowRR!RYtreplacet
creation_datet
revision_dateRAtobsoletet_num_pluralst_plural_expr(R%R\RZtheader_commentR_R`RaRbRhRiRcRdReRA((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyR&�s6								cCs�|j}tjt�jd�}t|jd�rH|jjd�}n|jd|j�jd|j	�jd|�jd|j
�}|jr�|jdd|jj�}n|S(	Ns%YtstrftimeRVRWtYEARRXsTranslations templates%s translations(
R]RRfRRnthasattrRiRgR_R`RaR\tenglish_name(R%tcommenttyear((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt_get_header_comments		cCs
||_dS(N(R](R%R((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt_set_header_comment&stdocs�    The header comment for the catalog.

    >>> catalog = Catalog(project='Foobar', version='1.0',
    ...                   copyright_holder='Foo Company')
    >>> print catalog.header_comment #doctest: +ELLIPSIS
    # Translations template for Foobar.
    # Copyright (C) ... Foo Company
    # This file is distributed under the same license as the Foobar project.
    # FIRST AUTHOR <EMAIL@ADDRESS>, ....
    #

    The header can also be set from a string. Any known upper-case variables
    will be replaced when the header is retrieved again:

    >>> catalog = Catalog(project='Foobar', version='1.0',
    ...                   copyright_holder='Foo Company')
    >>> catalog.header_comment = '''\
    ... # The POT for my really cool PROJECT project.
    ... # Copyright (C) 1990-2003 ORGANIZATION
    ... # This file is distributed under the same license as the PROJECT
    ... # project.
    ... #'''
    >>> print catalog.header_comment
    # The POT for my really cool Foobar project.
    # Copyright (C) 1990-2003 Foo Company
    # This file is distributed under the same license as the Foobar
    # project.
    #

    :type: `unicode`
    cCs�g}|jdd|j|jff�|jd|jf�|jdt|jddd�f�t|jtt	ft
�r�|jdt|jddd�f�n|jd|jf�|jd	|jf�|jdk	r d
|jkr |jd|jjd
t|j��f�n|jd|jf�|jdk	r^|jd|jf�n|jd�|jdd|jf�|jd�|jddtf�|S(NsProject-Id-Versions%s %ssReport-Msgid-Bugs-TosPOT-Creation-Datesyyyy-MM-dd HH:mmZR\tensPO-Revision-DatesLast-TranslatortLANGUAGEs
Language-TeamsPlural-FormssMIME-Versions1.0sContent-Typestext/plain; charset=%ssContent-Transfer-Encodingt8bitsGenerated-Bys	Babel %s
(sMIME-Versions1.0(sContent-Transfer-EncodingRy(R;R_R`RbRRhR!RiRttime_RRcR\RJRdRgtstrtplural_formsReRW(R%RQ((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt_get_mime_headersJs4		
			
	
cCs3x,|D]$\}}|j�}|dkr`|jd�}dj|d �|_|d|_q|dkrx||_q|dkr�||_q|dkr�||_q|dkr�t|�\}}d	|kr+|d	j�|_	q+q|d
kr@td|�\}}t
|jdd
��|_|jdd�|_
q|dkr.tjd|d�\}}}tj|d�}	tj|	�}
|d|d}}|d
 |d
}
}t
|d�}t
|
�}t
|�}|d}||7}||9}t|�}tj|
�}|jd|�|_q|dkrd|kr+tjd|d�\}}}tj|d�}	tj|	�}
|d|d}}|d
 |d
}
}t
|d�}t
|
�}t
|�}|d}||7}||9}t|�}tj|
�}|jd|�|_q+qqWdS(Nsproject-id-versiont u i����sreport-msgid-bugs-toslast-translators
language-teamscontent-typeResplural-formss ;tnpluralsiR*s(n != 1)spot-creation-dates([+-]\d{4})$is%Y-%m-%d %H:%Mit1i<RYspo-revision-dateRo(tlowertsplittjoinR_R`RbRcRdRRetinttgetRkRltreRtstrptimetmktimeR
Rt
fromtimestampRgRhRi(R%RQRSRTtpartstmimetypetparamst_ttzoffsettttttstplus_minus_strestthours_offset_st
mins_offset_st
plus_minusthours_offsettmins_offsettnet_mins_offsettdt((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt_set_mime_headershsf





s�    The MIME headers of the catalog, used for the special ``msgid ""`` entry.

    The behavior of this property changes slightly depending on whether a locale
    is set or not, the latter indicating that the catalog is actually a template
    for actual translations.

    Here's an example of the output for such a catalog template:

    >>> from babel.dates import UTC
    >>> created = datetime(1990, 4, 1, 15, 30, tzinfo=UTC)
    >>> catalog = Catalog(project='Foobar', version='1.0',
    ...                   creation_date=created)
    >>> for name, value in catalog.mime_headers:
    ...     print '%s: %s' % (name, value)
    Project-Id-Version: Foobar 1.0
    Report-Msgid-Bugs-To: EMAIL@ADDRESS
    POT-Creation-Date: 1990-04-01 15:30+0000
    PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE
    Last-Translator: FULL NAME <EMAIL@ADDRESS>
    Language-Team: LANGUAGE <LL@li.org>
    MIME-Version: 1.0
    Content-Type: text/plain; charset=utf-8
    Content-Transfer-Encoding: 8bit
    Generated-By: Babel ...

    And here's an example of the output when the locale is set:

    >>> revised = datetime(1990, 8, 3, 12, 0, tzinfo=UTC)
    >>> catalog = Catalog(locale='de_DE', project='Foobar', version='1.0',
    ...                   creation_date=created, revision_date=revised,
    ...                   last_translator='John Doe <jd@example.com>',
    ...                   language_team='de_DE <de@example.com>')
    >>> for name, value in catalog.mime_headers:
    ...     print '%s: %s' % (name, value)
    Project-Id-Version: Foobar 1.0
    Report-Msgid-Bugs-To: EMAIL@ADDRESS
    POT-Creation-Date: 1990-04-01 15:30+0000
    PO-Revision-Date: 1990-08-03 12:00+0000
    Last-Translator: John Doe <jd@example.com>
    Language-Team: de_DE <de@example.com>
    Plural-Forms: nplurals=2; plural=(n != 1)
    MIME-Version: 1.0
    Content-Type: text/plain; charset=utf-8
    Content-Transfer-Encoding: 8bit
    Generated-By: Babel ...

    :type: `list`
    cCsG|jdkr@d}|jr4t|j�d}n||_n|jS(s�The number of plurals used by the catalog or locale.

        >>> Catalog(locale='en').num_plurals
        2
        >>> Catalog(locale='ga').num_plurals
        3

        :type: `int`iiN(RkRJR\R	(R%tnum((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pytnum_plurals�s
	cCsG|jdkr@d}|jr4t|j�d}n||_n|jS(s�The plural expression used by the catalog or locale.

        >>> Catalog(locale='en').plural_expr
        '(n != 1)'
        >>> Catalog(locale='ga').plural_expr
        '(n==1 ? 0 : n==2 ? 1 : 2)'

        :type: `string_types`s(n != 1)iN(RlRJR\R	(R%texpr((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pytplural_expr�s
	cCsd|j|jfS(s�Return the plural forms declaration for the locale.

        >>> Catalog(locale='en').plural_forms
        'nplurals=2; plural=(n != 1)'
        >>> Catalog(locale='pt_BR').plural_forms
        'nplurals=2; plural=(n > 1)'

        :type: `str`snplurals=%s; plural=%s(R�R�(R%((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyR|s
cCs|j|�|jkS(s?Return whether the catalog has a message with the specified ID.(t_key_forR^(R%R((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt__contains__scCs
t|j�S(seThe number of messages in the catalog.

        This does not include the special ``msgid ""`` entry.(tlenR^(R%((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt__len__sccs�g}x.|jD]#\}}|jd||f�qWt�}|jr_|tdg�O}ntddj|�d|�Vx|jD]}|j|Vq�WdS(s�Iterates through all the entries in the catalog, in the order they
        were added, yielding a `Message` object for every entry.

        :rtype: ``iterator``s%s: %sRAus
RN(tmime_headersR;RRARR�R^(R%tbufRSRTRtkey((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt__iter__"s		cCs<d}|jrd|j}ndt|�j|j|fS(Nts %ss	<%s %r%s>(R\R'R(RZ(R%R\((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyR)1s	cCs|j|�dS(s)Delete the message with the specified ID.N(tdelete(R%R((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt__delitem__7scCs
|j|�S(sUReturn the message with the specified ID.

        :param id: the message ID
        (R�(R%R((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt__getitem__;scCsa|j||j�}|jj|�}|r�|jr[|jr[|j|_|j|_ntt|j	|j	��|_	tt|j
|j
��|_
tt|j|j��|_|j|jO_|}n�|dkr8t
|j�j�|_djg|jD]}d|j�^q�|_|j|_n%t|ttf�rPn||j|<dS(s�Add or update the message with the specified ID.

        >>> catalog = Catalog()
        >>> catalog[u'foo'] = Message(u'foo')
        >>> catalog[u'foo']
        <Message u'foo' (flags: [])>

        If a message with that ID is already in the catalog, it is updated
        to include the locations and flags of the new message.

        >>> catalog = Catalog()
        >>> catalog[u'foo'] = Message(u'foo', locations=[('main.py', 1)])
        >>> catalog[u'foo'].locations
        [('main.py', 1)]
        >>> catalog[u'foo'] = Message(u'foo', locations=[('utils.py', 5)])
        >>> catalog[u'foo'].locations
        [('main.py', 1), ('utils.py', 5)]

        :param id: the message ID
        :param message: the `Message` object
        R�s
s# %sN(R�R$R^R�RRRRRRRR RRURNR�R�trstripRmRAR!RB(R%RtmessageR�tcurrenttc((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt__setitem__Bs,		)c
Cs>t||t|�||||d|d|	�}
|
||<|
S(suAdd or update the message with the specified ID.

        >>> catalog = Catalog()
        >>> catalog.add(u'foo')
        <Message ...>
        >>> catalog[u'foo']
        <Message u'foo' (flags: [])>

        This method simply constructs a `Message` object with the given
        arguments and invokes `__setitem__` with that object.

        :param id: the message ID, or a ``(singular, plural)`` tuple for
                   pluralizable messages
        :param string: the translated message string, or a
                       ``(singular, plural)`` tuple for pluralizable messages
        :param locations: a sequence of ``(filenname, lineno)`` tuples
        :param flags: a set or sequence of flags
        :param auto_comments: a sequence of automatic comments
        :param user_comments: a sequence of user comments
        :param previous_id: the previous message ID, or a ``(singular, plural)``
                            tuple for pluralizable messages
        :param lineno: the line number on which the msgid line was found in the
                       PO file, if any
        :param context: the message context
        R#R$(RR(R%RRRRRR R"R#R$R�((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyRts
	
ccsDx=|jj�D],}|jd|�}|r||fVqqWdS(sBRun various validation checks on the translations in the catalog.

        For every message which fails validation, this method yield a
        ``(message, errors)`` tuple, where ``message`` is the `Message` object
        and ``errors`` is a sequence of `TranslationError` objects.

        :rtype: ``iterator``
        R<N(R^tvaluesR@(R%R�R=((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyR@�s	cCs|jj|j||��S(s�Return the message with the specified ID and context.

        :param id: the message ID
        :param context: the message context, or ``None`` for no context
        (R^R�R�(R%RR$((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyR��scCs2|j||�}||jkr.|j|=ndS(s�Delete the message with the specified ID and context.

        :param id: the message ID
        :param context: the message context, or ``None`` for no context
        N(R�R^(R%RR$R�((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyR��scs��j��j��t��_g}|sxtg�D]5}|r7�|jr7�j|��|jf^q7�}nt������fd�}x�|D]�}|jr��j|j|j�}|�kr�||||�q�|t	kr�t
|t�r|d}n|}t|j
�j�|j�d�}	|	r�|	d}
||
}|dk	rm|
|f}
n|||
|�q�q�n|�|j<q�q�Wx4�D],}|s�|�kr��|�j|<q�q�W|j�_dS(s�Update the catalog based on the given template catalog.

        >>> from babel.messages import Catalog
        >>> template = Catalog()
        >>> template.add('green', locations=[('main.py', 99)])
        <Message ...>
        >>> template.add('blue', locations=[('main.py', 100)])
        <Message ...>
        >>> template.add(('salad', 'salads'), locations=[('util.py', 42)])
        <Message ...>
        >>> catalog = Catalog(locale='de_DE')
        >>> catalog.add('blue', u'blau', locations=[('main.py', 98)])
        <Message ...>
        >>> catalog.add('head', u'Kopf', locations=[('util.py', 33)])
        <Message ...>
        >>> catalog.add(('salad', 'salads'), (u'Salat', u'Salate'),
        ...             locations=[('util.py', 38)])
        <Message ...>

        >>> catalog.update(template)
        >>> len(catalog)
        3

        >>> msg1 = catalog['green']
        >>> msg1.string
        >>> msg1.locations
        [('main.py', 99)]

        >>> msg2 = catalog['blue']
        >>> msg2.string
        u'blau'
        >>> msg2.locations
        [('main.py', 100)]

        >>> msg3 = catalog['salad']
        >>> msg3.string
        (u'Salat', u'Salate')
        >>> msg3.locations
        [('util.py', 42)]

        Messages that are in the catalog but not in the template are removed
        from the main collection, but can still be accessed via the `obsolete`
        member:

        >>> 'head' in catalog
        False
        >>> catalog.obsolete.values()
        [<Message 'head' (flags: [])>]

        :param template: the reference catalog, usually read from a POT file
        :param no_fuzzy_matching: whether to use fuzzy matching of message IDs
        cs�|j�}t}||kryt}�j|��j|�}t|jt�rd|jg|_q�t	|j�|_n�j
|d�}|j|_t|jt	t
f�r@t|jt	t
f�s�t}t
|jgdgt|j�d�|_qqt|j��jkrqt}t
|jt|j� �|_qqn1t|jt	t
f�rqt}|jd|_n|j|jO_|r�|jtdg�O_n|�|j<dS(Nuiiufuzzy(R8tFalsetTrueRR�R!RRR"RtpopRJRRBR�R�RR(R�toldkeytnewkeyRAtoldmsg(t
fuzzy_matchestmessagest	remainingR%(sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt_merge�s4
-%iiN(R^RR
tdictRR�R$RRR�R!RBRR�tstriptkeysRJRjRh(R%ttemplatetno_fuzzy_matchingtfuzzy_candidatestmsgidR�R�R�tmatchkeytmatchesR�tnewctxt((R�R�R�R%sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pytupdate�sB5	E	
	


	
cCsG|}t|ttf�r(|d}n|dk	rC||f}n|S(s�The key for a message is just the singular ID even for pluralizable
        messages, but is a ``(msgid, msgctxt)`` tuple for context-specific
        messages.
        iN(R!RRBRJ(R%RR$R�((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyR�5s
N((((((R(RHRIRJtDEFAULT_HEADERR�R&RtRuRKRmR}R�R�R�R�R|R�R�R�R)R�R�R�RR@R�R�R�R�R�(((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyR�s>			8					P0								2 	
�()RIR�RtcgiRRRztdifflibRtemailRRtbabelRRWt
babel.coreRtbabel.datesRtbabel.messages.pluralsR	t
babel.utilR
RRR
t
babel._compatRRRRt__all__tcompileRCtobjectRt	ExceptionRR�RUR(((sG/opt/alt/python27/lib/python2.7/site-packages/babel/messages/catalog.pyt<module>
s.""		�


Zerion Mini Shell 1.0