o
    ÕèFh®"  ã                   @   st  d Z ddlmZ ddlmZmZ ddlmZmZ ddl	m
Z
 ddlmZ g d¢ZG dd	„ d	eƒZG d
d„ dƒZeƒ Z[dd„ Zdd„ Zdd„ Zdd„ Zdd„ Ze
eeƒZe
eeƒZdBdd„Zdd„ ZdBdd„ZdBdd„Zdd „ Zd!d"„ ZG d#d$„ d$eƒZ d%d&„ Z!d'd(„ Z"d)d*„ Z#d+d,„ Z$d-d.„ Z%dCd0d1„Z&d2d3„ Z'd/d4œd5d6„Z(d7d8„ Z)d9d:„ Z*d;d<„ Z+ed=ƒZ,d>d?„ Z-d@dA„ Z.dS )Dz
Internationalization support.
é    )ÚContextDecorator)ÚROUND_UPÚDecimal)Úautoreload_startedÚfile_changed)Úlazy)Ú_lazy_re_compile)ÚactivateÚ
deactivateÚoverrideÚdeactivate_allÚget_languageÚget_language_from_requestÚget_language_infoÚget_language_bidiÚcheck_for_languageÚto_languageÚ	to_localeÚ
templatizeÚgettextÚgettext_lazyÚgettext_noopÚngettextÚngettext_lazyÚpgettextÚpgettext_lazyÚ	npgettextÚnpgettext_lazyc                   @   s   e Zd ZdS )ÚTranslatorCommentWarningN)Ú__name__Ú
__module__Ú__qualname__© r"   r"   úZ/var/www/html/loop/nvenv/lib/python3.10/site-packages/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   st   ddl m} |jr&ddlm} ddlm}m} tj	|dd� t
j	|dd� nddlm} t| |t||ƒƒ t||ƒS )Nr   )Úsettings)Ú
trans_real)Útranslation_file_changedÚwatch_for_translation_changesr'   )Údispatch_uid)Ú
trans_null)Údjango.confr%   ÚUSE_I18NÚdjango.utils.translationr&   Ú!django.utils.translation.reloaderr'   r(   r   Úconnectr   r*   ÚsetattrÚgetattr)ÚselfÚ	real_namer%   Útransr'   r(   r"   r"   r#   Ú__getattr__?   s   ÿÿ
zTrans.__getattr__N)r   r    r!   Ú__doc__r5   r"   r"   r"   r#   r$   2   s    r$   c                 C   ó
   t  | ¡S ©N)Ú_transr   ©Úmessager"   r"   r#   r   [   ó   
r   c                 C   r7   r8   )r9   r   r:   r"   r"   r#   r   _   r<   r   c                 C   s   t  | ||¡S r8   )r9   r   ©ÚsingularÚpluralÚnumberr"   r"   r#   r   c   s   r   c                 C   ó   t  | |¡S r8   )r9   r   )Úcontextr;   r"   r"   r#   r   g   ó   r   c                 C   s   t  | |||¡S r8   )r9   r   ©rB   r>   r?   r@   r"   r"   r#   r   k   ó   r   Nc                    s~   t ˆtƒrˆˆd< tˆˆƒdi ˆ¤Ž}|S ˆ ¡ ‰G ‡‡‡fdd„dˆƒ‰ t‡ fdd„ˆ ƒdi ˆ¤Ž}‡‡‡‡fdd„|_|S )Nr@   c                       sJ   e Zd Z‡fdd„Z‡fdd„Z‡ ‡fdd„Z‡fdd„Z‡fd	d
„ZdS )z&lazy_number.<locals>.NumberAwareStringc                    s   t ˆ d ƒS )Nr>   )Úbool©r2   ©Úkwargsr"   r#   Ú__bool__{   rC   z/lazy_number.<locals>.NumberAwareString.__bool__c                    s&   z|ˆ  W S  t y   t dˆ  ƒ‚w )Nz|Your dictionary lacks key '%s'. Please provide it, because it is required to determine whether string is singular or plural.)ÚKeyError)r2   Úvalues©r@   r"   r#   Ú_get_number_value~   s   
þÿÿz8lazy_number.<locals>.NumberAwareString._get_number_valuec                    s   |ˆd< ˆ di ˆ¤ŽS )Nr@   r"   r"   )r2   Únumber_value)ÚfuncrI   r"   r#   Ú
_translateˆ   s   z1lazy_number.<locals>.NumberAwareString._translatec                    s0   |r	ˆ r	|   |¡n|d }|  |¡j|i |¤ŽS )Nr   )rN   rQ   Úformat)r2   ÚargsrI   rO   rM   r"   r#   rR   Œ   s   ÿz-lazy_number.<locals>.NumberAwareString.formatc                    sL   t |tƒrˆ r|  |¡}n|}|  |¡}z||; }W |S  ty%   Y |S w r8   )Ú
isinstanceÚdictrN   rQ   Ú	TypeError)r2   ÚrhsrO   Ú
translatedrM   r"   r#   Ú__mod__’   s   

ýýz.lazy_number.<locals>.NumberAwareString.__mod__N)r   r    r!   rJ   rN   rQ   rR   rY   r"   )rP   rI   r@   r"   r#   ÚNumberAwareStringz   s    
rZ   c                     s   ˆ ƒ S r8   r"   rH   )rZ   r"   r#   Ú<lambda>Ÿ   s    zlazy_number.<locals>.<lambda>c                      s   t ˆ ˆˆˆffS r8   )Ú_lazy_number_unpickler"   )rP   r@   Úoriginal_kwargsÚresultclassr"   r#   r[       s   
þr"   )rT   Úintr   ÚcopyÚ
__reduce__)rP   r^   r@   rI   Úproxyr"   )rZ   rP   rI   r@   r]   r^   r#   Úlazy_numbers   s   
.Ô%rc   c                 C   s   t | |fd|i|¤ŽS )Nr@   )rc   )rP   r^   r@   rI   r"   r"   r#   r\   §   s   r\   c                 C   s   t tt| ||d�S )Nr=   )rc   r   Ústrr=   r"   r"   r#   r   «   s   r   c                 C   s   t tt| |||d�S )NrD   )rc   r   rd   rD   r"   r"   r#   r   ¯   s   ÿr   c                 C   r7   r8   )r9   r	   )Úlanguager"   r"   r#   r	   µ   r<   r	   c                   C   ó   t  ¡ S r8   )r9   r
   r"   r"   r"   r#   r
   ¹   ó   r
   c                   @   s&   e Zd Zd	dd„Zdd„ Zdd„ ZdS )
r   Fc                 C   s   || _ || _d S r8   )re   r
   )r2   re   r
   r"   r"   r#   Ú__init__¾   s   
zoverride.__init__c                 C   s*   t ƒ | _| jd urt| jƒ d S tƒ  d S r8   )r   Úold_languagere   r	   r   rG   r"   r"   r#   Ú	__enter__Â   s   

zoverride.__enter__c                 C   s2   | j d u r
tƒ  d S | jrtƒ  d S t| j ƒ d S r8   )ri   r   r
   r	   )r2   Úexc_typeÚ	exc_valueÚ	tracebackr"   r"   r#   Ú__exit__É   s
   


zoverride.__exit__N©F)r   r    r!   rh   rj   rn   r"   r"   r"   r#   r   ½   s    
r   c                   C   rf   r8   )r9   r   r"   r"   r"   r#   r   Ò   rg   r   c                   C   rf   r8   )r9   r   r"   r"   r"   r#   r   Ö   rg   r   c                 C   r7   r8   )r9   r   )Ú	lang_coder"   r"   r#   r   Ú   r<   r   c                 C   sB   |   d¡}|dkr| d|…  ¡ d | |d d…  ¡  S |  ¡ S )z8Turn a locale name (en_US) into a language name (en-us).Ú_r   Nú-é   )ÚfindÚlower)ÚlocaleÚpr"   r"   r#   r   Þ   s   
(r   c                 C   s|   |   ¡  d¡\}}}|s| dd…   ¡ | dd…  S | d¡\}}}t|ƒdkr,| ¡ n| ¡ }|r8|d| 7 }|d | S )z8Turn a language name (en-us) into a locale name (en_US).rr   Né   é   rq   )ru   Ú	partitionÚlenÚtitleÚupper)re   Úlangrq   ÚcountryÚtailr"   r"   r#   r   ç   s   r   Fc                 C   rA   r8   )r9   r   )ÚrequestÚ
check_pathr"   r"   r#   r   ÷   rC   r   c                 C   r7   r8   )r9   Úget_language_from_path)Úpathr"   r"   r#   rƒ   û   r<   rƒ   )Ústrictc                C   rA   r8   )r9   Úget_supported_language_variant)rp   r…   r"   r"   r#   r†   ÿ   rC   r†   c                 K   s   ddl m} || fi |¤ŽS )Nrs   )r   )Útemplater   )ÚsrcrI   r   r"   r"   r#   r     s   r   c                   C   rf   r8   )r9   r   r"   r"   r"   r#   r   	  rg   r   c                 C   s¸   ddl m} z||  }d|v rd|vrt|d d ƒ}n|}W n0 tyO   d| vr0td|  ƒ‚|  d¡d }z|| }W n tyL   td| |f ƒ‚w Y nw |rZt|d ƒ|d< |S )	Nr   )Ú	LANG_INFOÚfallbackÚnamerr   zUnknown language code %s.z Unknown language code %s and %s.Úname_translated)Údjango.conf.localer‰   r   rK   Úsplitr   )rp   r‰   Ú	lang_infoÚinfoÚgeneric_lang_coder"   r"   r#   r     s.   €
ÿÿÿûr   z\s*\n\s*c                 C   s   t  d|  ¡ ¡S )Nú )Útrim_whitespace_reÚsubÚstrip)Úsr"   r"   r#   Útrim_whitespace)  rE   r—   c                 C   s"   t t| d ƒjtdƒtd�ƒd S )Nrs   Ú0)Úrounding)r_   r   Úquantizer   )Úvaluer"   r"   r#   Úround_away_from_one-  s   "rœ   r8   ro   )/r6   Ú
contextlibr   Údecimalr   r   Údjango.utils.autoreloadr   r   Údjango.utils.functionalr   Údjango.utils.regex_helperr   Ú__all__ÚSyntaxWarningr   r$   r9   r   r   r   r   r   rd   r   r   rc   r\   r   r   r	   r
   r   r   r   r   r   r   r   rƒ   r†   r   r   r   r“   r—   rœ   r"   r"   r"   r#   Ú<module>   sN    #


4

	
