B
    ª0H[K  ã               @   s¤  d 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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
G d"d#„ d#eƒZG d$d%„ d%ƒZeƒ Z[d&d„ ZeZd'd„ ZeZd(d„ ZeZd)d„ Zd*d„ Zeeeƒ ZZeeeƒZdDd+d,„Zd-d.„ ZdEd/d„ZeZdFd0d„Zd1d„ Z d2d„ Z!G d3d„ deƒZ"d4d
„ Z#d5d„ Z$d6d„ Z%d7d„ Z&dGd9d„Z'd:d;„ Z(d<d„ Z)d=d	„ Z*d>d?„ Z+ee+eƒZ,d@d„ Z-e .dA¡Z/dBdC„ Z0dS )Hz
Internationalization support.
é    N)ÚContextDecorator)ÚRemovedInDjango21Warning)Ú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$   úeC:\Users\HIRONO~1\AppData\Local\Temp\pip-install-6bm3nxem\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   sH   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'   Ztransr$   r$   r%   Ú__getattr__5   s    zTrans.__getattr__N)r!   r"   r#   Ú__doc__r-   r$   r$   r$   r%   r&   (   s   r&   c             C   s
   t  | ¡S )N)Ú_transr   )Úmessager$   r$   r%   r   E   s    c             C   s
   t  | ¡S )N)r/   r   )r0   r$   r$   r%   r   L   s    c             C   s   t  | ||¡S )N)r/   r   )ÚsingularÚpluralÚnumberr$   r$   r%   r   T   s    c             C   s   t  | |¡S )N)r/   r   )Úcontextr0   r$   r$   r%   r   \   s    c             C   s   t  | |||¡S )N)r/   r   )r4   r1   r2   r3   r$   r$   r%   r   `   s    c                st   t ˆtƒr$ˆˆd< tˆˆƒf ˆŽ}nLˆ ¡ ‰G ‡‡‡fdd„dˆƒ‰ t‡ fdd„ˆ ƒf ˆŽ}‡‡‡‡fdd„|_|S )Nr3   c                   s(   e Zd Z‡fdd„Z‡ ‡‡fdd„ZdS )z&lazy_number.<locals>.NumberAwareStringc                s   t ˆ d ƒS )Nr1   )Úbool)r,   )Úkwargsr$   r%   Ú__bool__p   s    z/lazy_number.<locals>.NumberAwareString.__bool__c                sz   t |tƒr>ˆr>y|ˆ }W qB tk
r:   tdˆ ƒ‚Y qBX n|}|ˆd< ˆ f ˆŽ}y|| }W n tk
rt   Y nX |S )Nz|Your dictionary lacks key '%s'. Please provide it, because it is required to determine whether string is singular or plural.r3   )Ú
isinstanceÚdictÚKeyErrorÚ	TypeError)r,   ÚrhsZnumber_valueZ
translated)Úfuncr6   r3   r$   r%   Ú__mod__s   s    
z.lazy_number.<locals>.NumberAwareString.__mod__N)r!   r"   r#   r7   r>   r$   )r=   r6   r3   r$   r%   ÚNumberAwareStringo   s   r?   c                 s   ˆ ƒ S )Nr$   )r6   )r?   r$   r%   Ú<lambda>ˆ   s    zlazy_number.<locals>.<lambda>c                  s   t ˆ ˆˆˆffS )N)Ú_lazy_number_unpickler$   )r=   r3   Úoriginal_kwargsÚresultclassr$   r%   r@   ‰   s    )r8   Úintr   ÚcopyÚ
__reduce__)r=   rC   r3   r6   Úproxyr$   )r?   r=   r6   r3   rB   rC   r%   Úlazy_numberh   s    
rH   c             C   s   t | |fd|i|—ŽS )Nr3   )rH   )r=   rC   r3   r6   r$   r$   r%   rA   �   s    rA   c             C   s   t tt| ||d�S )N)r1   r2   r3   )rH   r   Ústr)r1   r2   r3   r$   r$   r%   r   ‘   s    c             C   s   t tt| |||d�S )N)r4   r1   r2   r3   )rH   r   rI   )r4   r1   r2   r3   r$   r$   r%   r   ™   s    c             C   s
   t  | ¡S )N)r/   r   )Úlanguager$   r$   r%   r   �   s    c               C   s   t  ¡ S )N)r/   r   r$   r$   r$   r%   r   ¡   s    c               @   s&   e Zd Zd	dd„Zdd„ Zdd„ ZdS )
r   Fc             C   s   || _ || _d S )N)rJ   r   )r,   rJ   r   r$   r$   r%   Ú__init__¦   s    zoverride.__init__c             C   s(   t ƒ | _| jd k	rt| jƒ ntƒ  d S )N)r	   Úold_languagerJ   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)rL   r   r   r   )r,   Úexc_typeÚ	exc_valueÚ	tracebackr$   r$   r%   Ú__exit__±   s
    
zoverride.__exit__N)F)r!   r"   r#   rK   rM   rQ   r$   r$   r$   r%   r   ¥   s   
c               C   s   t  ¡ S )N)r/   r	   r$   r$   r$   r%   r	   º   s    c               C   s   t  ¡ S )N)r/   r   r$   r$   r$   r%   r   ¾   s    c             C   s
   t  | ¡S )N)r/   r   )Ú	lang_coder$   r$   r%   r   Â   s    c             C   s
   t  | ¡S )N)r/   r   )rJ   r$   r$   r%   r   Æ   s    Fc             C   s   t  | |¡S )N)r/   r
   )ÚrequestÚ
check_pathr$   r$   r%   r
   Ê   s    c             C   s
   t  | ¡S )N)r/   Úget_language_from_path)Úpathr$   r$   r%   rU   Î   s    rU   c             K   s   ddl m} || f|ŽS )Né   )r   )Útemplater   )Úsrcr6   r   r$   r$   r%   r   Ò   s    c               C   s   t  ¡ S )N)r/   r   r$   r$   r$   r%   r   ×   s    c              G   s$   t jdtdd� d 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)rI   )Ú.0Úsr$   r$   r%   ú	<genexpr>ä   s    z!_string_concat.<locals>.<genexpr>)ÚwarningsÚwarnr   Újoin)Ústringsr$   r$   r%   Ú_string_concatÛ   s    
rd   c             C   sÀ   ddl m} y2||  }d|kr8d|kr8t|d d ƒ}n|}W nh tk
r¦   d| krbtd|  ƒ‚|  d¡d }y|| }W n$ tk
r    td| |f ƒ‚Y nX Y nX |r¼t|d ƒ|d< |S )	Nr   )Ú	LANG_INFOÚfallbackÚnameú-zUnknown language code %s.z Unknown language code %s and %s.Zname_translated)Zdjango.conf.localere   r   r:   Úsplitr   )rR   re   Z	lang_infoÚinfoZgeneric_lang_coder$   r$   r%   r   ê   s"    z\s*\n\s*c             C   s   t  d|  ¡ ¡S )Nú )Útrim_whitespace_reÚsubÚstrip)r^   r$   r$   r%   Útrim_whitespace  s    ro   )N)N)N)F)1r.   Úrer`   Ú
contextlibr   Zdjango.utils.deprecationr   Zdjango.utils.functionalr   Ú__all__r   ÚSyntaxWarningr    r&   r/   r   r   r   r   r   r   r   r   rI   r   r   r   rH   rA   r   r   r   r   r   r   r	   r   r   r   r
   rU   r   r   rd   r   r   Úcompilerl   ro   r$   r$   r$   r%   Ú<module>   sh   

%




