
^Q\'                 @   s  d  Z  d d l m Z d d l Z d d l Z d d l m Z d d l m Z d d l	 m
 Z
 d d l m Z d d l m Z d	 d
 d d d d d d d d d d d d d d d d d d d d d d  d! d" d# g Z d$ Z Gd% d&   d& e  Z Gd' d(   d( e  Z e   Z [ d) d   Z e Z d* d   Z d+ d   Z d, d   Z d- d   Z d. d   Z d/ d!   Z e e e  Z e e e j   Z! e e e j   Z" d d0 d1  Z# d2 d3   Z$ d d4 d  Z% d d5 d  Z& d d6 d"  Z' d7 d	   Z( d8 d
   Z) Gd9 d   d e  Z* d: d   Z+ d; d   Z, d< d   Z- d= d   Z. d> d? d  Z/ d@ dA   Z0 dB d   Z1 dC d   Z2 dD dE   Z3 e e3 e j   Z4 dF d   Z5 e j6 dG  Z7 dH dI   Z8 d S)Jz
Internationalization support.
    )unicode_literalsN)six)ContextDecorator)RemovedInDjango21Warning)
force_text)lazyactivate
deactivateoverridedeactivate_allget_languageget_language_from_requestget_language_infoget_language_bidicheck_for_language	to_locale
templatizestring_concatgettextgettext_lazygettext_noopugettextugettext_lazyugettext_noopngettextngettext_lazy	ungettextungettext_lazypgettextpgettext_lazy	npgettextnpgettext_lazyLANGUAGE_SESSION_KEYZ	_languagec               @   s   e  Z d  Z d S)TranslatorCommentWarningN)__name__
__module____qualname__ r'   r'   G/var/www/dbchiro/venv/build/Django/django/utils/translation/__init__.pyr#       s   r#   c               @   s"   e  Z d  Z d Z d d   Z d S)Transa  
    The purpose of this class is to store the actual translation function upon
    receiving the first call to that function. After this is done, changes to
    USE_I18N will have no effect to which function is served upon request. If
    your tests rely on changing USE_I18N, you can delete all the functions
    from _trans.__dict__.

    Note that storing the function with setattr will have a noticeable
    performance effect, as access to the function goes the normal path,
    instead of using __getattr__.
    c             C   sb   d d l  m } | j r, d d l m } n d d l m } t |  | t | |   t | |  S)Nr   )settings)
trans_real)
trans_null)Zdjango.confr*   ZUSE_I18NZdjango.utils.translationr+   r,   setattrgetattr)selfZ	real_namer*   transr'   r'   r(   __getattr__9   s    	zTrans.__getattr__N)r$   r%   r&   __doc__r1   r'   r'   r'   r(   r)   ,   s   r)   c             C   s   t  j |   S)N)_transr   )messager'   r'   r(   r   I   s    c             C   s   t  j |   S)N)r3   r   )r4   r'   r'   r(   r   P   s    c             C   s   t  j |  | |  S)N)r3   r   )singularpluralnumberr'   r'   r(   r   T   s    c             C   s   t  j |   S)N)r3   r   )r4   r'   r'   r(   r   X   s    c             C   s   t  j |  | |  S)N)r3   r   )r5   r6   r7   r'   r'   r(   r   \   s    c             C   s   t  j |  |  S)N)r3   r   )contextr4   r'   r'   r(   r   `   s    c             C   s   t  j |  | | |  S)N)r3   r    )r8   r5   r6   r7   r'   r'   r(   r    d   s    c                s   t   t j  r4   d <t       } nm  j    G   f d d   d     t   f d d         }     f d d   | _ | S)Nr7   c                   sF   e  Z d  Z  f d d   Z d d   Z     f d d   Z d S)z&lazy_number.<locals>.NumberAwareStringc                s   t    d  S)Nr5   )bool)r/   )kwargsr'   r(   __bool__u   s    z/lazy_number.<locals>.NumberAwareString.__bool__c             S   s   t  |   j |   S)N)typer;   )r/   r'   r'   r(   __nonzero__x   s    z2lazy_number.<locals>.NumberAwareString.__nonzero__c                s   t  | t  rK  rK y |  } WqQ t k
 rG t d    YqQ Xn | } |  d <     } y | | } Wn t k
 r Yn X| S)Nz|Your dictionary lacks key '%s'. Please provide it, because it is required to determine whether string is singular or plural.r7   )
isinstancedictKeyError	TypeError)r/   ZrhsZnumber_valueZ
translated)funcr:   r7   r'   r(   __mod__{   s    
z.lazy_number.<locals>.NumberAwareString.__mod__N)r$   r%   r&   r;   r=   rC   r'   )rB   r:   r7   r'   r(   NumberAwareStringt   s   rD   c                 s       S)Nr'   )r:   )rD   r'   r(   <lambda>   s    zlazy_number.<locals>.<lambda>c                  s   t       f f S)N)_lazy_number_unpickler'   )rB   r7   original_kwargsresultclassr'   r(   rE      s    )r>   r   integer_typesr   copy
__reduce__)rB   rH   r7   r:   proxyr'   )rD   rB   r:   r7   rG   rH   r(   lazy_numberm   s    
"!rM   c             C   s   t  |  | d | | S)Nr7   )rM   )rB   rH   r7   r:   r'   r'   r(   rF      s    rF   c          	   C   s   t  t t d |  d | d | S)Nr5   r6   r7   )rM   r   str)r5   r6   r7   r'   r'   r(   r      s    c          	   C   s"   t  t t j d |  d | d | S)Nr5   r6   r7   )rM   r   r   	text_type)r5   r6   r7   r'   r'   r(   r      s    c             C   s(   t  t t j d |  d | d | d | S)Nr8   r5   r6   r7   )rM   r    r   rO   )r8   r5   r6   r7   r'   r'   r(   r!      s    c             C   s   t  j |   S)N)r3   r   )languager'   r'   r(   r      s    c               C   s
   t  j   S)N)r3   r	   r'   r'   r'   r(   r	      s    c               @   s7   e  Z d  Z d d d  Z d d   Z d d   Z d S)	r
   Fc             C   s   | |  _  | |  _ d  S)N)rP   r	   )r/   rP   r	   r'   r'   r(   __init__   s    	zoverride.__init__c             C   s6   t    |  _ |  j d  k	 r+ t |  j  n t   d  S)N)r   old_languagerP   r   r   )r/   r'   r'   r(   	__enter__   s    zoverride.__enter__c             C   s=   |  j  d  k r t   n  |  j r, t   n t |  j   d  S)N)rR   r   r	   r   )r/   exc_type	exc_value	tracebackr'   r'   r(   __exit__   s
    
	
zoverride.__exit__N)r$   r%   r&   rQ   rS   rW   r'   r'   r'   r(   r
      s   c               C   s
   t  j   S)N)r3   r   r'   r'   r'   r(   r      s    c               C   s
   t  j   S)N)r3   r   r'   r'   r'   r(   r      s    c             C   s   t  j |   S)N)r3   r   )	lang_coder'   r'   r(   r      s    c             C   s   t  j |   S)N)r3   r   )rP   r'   r'   r(   r      s    Fc             C   s   t  j |  |  S)N)r3   r   )request
check_pathr'   r'   r(   r      s    c             C   s   t  j |   S)N)r3   get_language_from_path)pathr'   r'   r(   r[      s    r[   c             K   s   d d l  m } | |  |  S)N   )r   )templater   )srcr:   r   r'   r'   r(   r      s    c               C   s
   t  j   S)N)r3   r   r'   r'   r'   r(   r      s    c              G   s0   t  j d t d d d j d d   |  D  S)zu
    Lazy variant of string concatenation, needed for translations that are
    constructed from multiple parts.
    zadjango.utils.translate.string_concat() is deprecated in favor of django.utils.text.format_lazy().
stacklevel    c             s   s   |  ] } t  |  Vq d  S)N)r   ).0sr'   r'   r(   	<genexpr>   s    z!_string_concat.<locals>.<genexpr>)warningswarnr   join)stringsr'   r'   r(   _string_concat   s    rj   c             C   s   d d l  m } yC | |  } d | k rL d | k rL t | d d  } n | } Wn} t k
 r d |  k r t d |    n  |  j d  d } y | | } Wn( t k
 r t d |  | f   Yn XYn X| r t | d  | d <n  | S)	Nr   )	LANG_INFOfallbackname-zUnknown language code %s.z Unknown language code %s and %s.Zname_translated)Zdjango.conf.localerk   r   r@   splitr   )rX   rk   Z	lang_infoinfoZgeneric_lang_coder'   r'   r(   r      s"    

 z\s*\n\s*c             C   s   t  j d |  j    S)N )trim_whitespace_resubstrip)rd   r'   r'   r(   trim_whitespace  s    ru   )9r2   
__future__r   rerf   Zdjango.utilsr   Zdjango.utils.decoratorsr   Zdjango.utils.deprecationr   Zdjango.utils.encodingr   Zdjango.utils.functionalr   __all__r"   SyntaxWarningr#   objectr)   r3   r   r   r   r   r   r   r   r    rN   r   rO   r   r   rM   rF   r   r   r!   r   r	   r
   r   r   r   r   r   r[   r   r   rj   r   r   compilerr   ru   r'   r'   r'   r(   <module>   sp   				(