o
    uvXj""  ã                   @   sr  d Z ddlZddlmZ ddlmZmZ ddlmZ g d¢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d?dd„Zdd„ Zd?dd„ZeZd?d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'd@d/d0„Z(d1d2„ Z)d.d3œd4d5„Z*d6d7„ Z+d8d9„ Z,d:d;„ Z-e .d<¡Z/d=d>„ Z0dS )Az
Internationalization support.
é    N)ÚContextDecorator)Úautoreload_startedÚfile_changed)Úlazy)Ú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ÚugettextÚugettext_lazyÚugettext_noopÚngettextÚngettext_lazyÚ	ungettextÚungettext_lazyÚpgettextÚpgettext_lazyÚ	npgettextÚnpgettext_lazyÚLANGUAGE_SESSION_KEYÚ	_languagec                   @   s   e Zd ZdS )ÚTranslatorCommentWarningN)Ú__name__Ú
__module__Ú__qualname__© r&   r&   ú^/var/www/html/myproject/venv/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)Úwatch_for_translation_changesÚtranslation_file_changedr,   )Ú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__4   s   
zTrans.__getattr__N)r#   r$   r%   Ú__doc__r9   r&   r&   r&   r'   r(   '   s    r(   c                 C   ó
   t  | ¡S ©N)Ú_transr   ©Úmessager&   r&   r'   r   G   ó   
r   c                 C   r;   r<   )r=   r   r>   r&   r&   r'   r   N   r@   r   c                 C   s   t  | ||¡S r<   )r=   r   ©ÚsingularÚpluralÚnumberr&   r&   r'   r   V   s   r   c                 C   ó   t  | |¡S r<   )r=   r   )Úcontextr?   r&   r&   r'   r   ^   ó   r   c                 C   s   t  | |||¡S r<   )r=   r   ©rF   rB   rC   rD   r&   r&   r'   r   b   ó   r   c                    s~   t ˆtƒrˆˆd< tˆˆƒdi ˆ¤Ž}|S ˆ ¡ ‰G ‡‡‡fdd„dˆƒ‰ t‡ fdd„ˆ ƒdi ˆ¤Ž}‡‡‡‡fdd„|_|S )NrD   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 )NrB   )Úbool©r6   ©Úkwargsr&   r'   Ú__bool__r   rG   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)r6   Úvalues©rD   r&   r'   Ú_get_number_valueu   s   
þÿÿz8lazy_number.<locals>.NumberAwareString._get_number_valuec                    s   |ˆd< ˆ di ˆ¤ŽS )NrD   r&   r&   )r6   Únumber_value)ÚfuncrM   r&   r'   Ú
_translate   s   z1lazy_number.<locals>.NumberAwareString._translatec                    s0   |r	ˆ r	|   |¡n|d }|  |¡j|i |¤ŽS )Nr   )rR   rU   Úformat)r6   ÚargsrM   rS   rQ   r&   r'   rV   ƒ   s   z-lazy_number.<locals>.NumberAwareString.formatc                    sL   t |tƒrˆ r|  |¡}n|}|  |¡}z|| }W |S  ty%   Y |S w r<   )Ú
isinstanceÚdictrR   rU   Ú	TypeError)r6   ÚrhsrS   Ú
translatedrQ   r&   r'   Ú__mod__‡   s   

ýýz.lazy_number.<locals>.NumberAwareString.__mod__N)r#   r$   r%   rN   rR   rU   rV   r]   r&   )rT   rM   rD   r&   r'   ÚNumberAwareStringq   s    
r^   c                     s   ˆ ƒ S r<   r&   rL   )r^   r&   r'   Ú<lambda>”   s    zlazy_number.<locals>.<lambda>c                      s   t ˆ ˆˆˆffS r<   )Ú_lazy_number_unpickler&   )rT   rD   Úoriginal_kwargsÚresultclassr&   r'   r_   •   s    r&   )rX   Úintr   ÚcopyÚ
__reduce__)rT   rb   rD   rM   Úproxyr&   )r^   rT   rM   rD   ra   rb   r'   Úlazy_numberj   s   
)Ù#rg   c                 C   s   t | |fd|i|¤ŽS )NrD   )rg   )rT   rb   rD   rM   r&   r&   r'   r`   ™   s   r`   c                 C   s   t tt| ||d�S )NrA   )rg   r   ÚstrrA   r&   r&   r'   r   �   s   r   c                 C   s   t tt| |||d�S )NrH   )rg   r   rh   rH   r&   r&   r'   r   ¥   s   r   c                 C   r;   r<   )r=   r   )Úlanguager&   r&   r'   r   ©   r@   r   c                   C   ó   t  ¡ S r<   )r=   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 r<   )ri   r   )r6   ri   r   r&   r&   r'   Ú__init__²   s   
zoverride.__init__c                 C   s*   t ƒ | _| jd urt| jƒ d S tƒ  d S r<   )r
   Úold_languageri   r   r	   rK   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 r<   )rm   r	   r   r   )r6   Úexc_typeÚ	exc_valueÚ	tracebackr&   r&   r'   Ú__exit__½   s
   


zoverride.__exit__N©F)r#   r$   r%   rl   rn   rr   r&   r&   r&   r'   r   ±   s    
r   c                   C   rj   r<   )r=   r
   r&   r&   r&   r'   r
   Æ   rk   r
   c                   C   rj   r<   )r=   r   r&   r&   r&   r'   r   Ê   rk   r   c                 C   r;   r<   )r=   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   sd   |   ¡  d¡\} }}|s| S | d¡\}}}t|ƒdkr | ¡ n| ¡ }|r,|d| 7 }| d | S )z8Turn a language name (en-us) into a locale name (en_US).rv   é   ru   )ry   Ú	partitionÚlenÚtitleÚupper)ri   ru   ÚcountryÚtailr&   r&   r'   r   Û   s   r   Fc                 C   rE   r<   )r=   r   )ÚrequestÚ
check_pathr&   r&   r'   r   ë   rG   r   c                 C   r;   r<   )r=   Úget_language_from_path)Úpathr&   r&   r'   r…   ï   r@   r…   )Ústrictc                C   rE   r<   )r=   Úget_supported_language_variant)rt   r‡   r&   r&   r'   rˆ   ó   rG   rˆ   c                 K   s   ddl m} || fi |¤ŽS )Nrw   )r   )Útemplater   )ÚsrcrM   r   r&   r&   r'   r   ÷   s   r   c                   C   rj   r<   )r=   r	   r&   r&   r&   r'   r	   ü   rk   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Únamerv   zUnknown language code %s.z Unknown language code %s and %s.Úname_translated)Údjango.conf.localer‹   r   rO   Úsplitr   )rt   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  rI   r™   r<   rs   )1r:   ÚreÚ
contextlibr   Údjango.utils.autoreloadr   r   Údjango.utils.functionalr   Ú__all__r    ÚSyntaxWarningr"   r(   r=   r   r   r   r   r   r   r   r   rh   r   r   r   rg   r`   r   r   r   r   r   r   r
   r   r   r   r   r   r…   rˆ   r   r	   r   Úcompiler•   r™   r&   r&   r&   r'   Ú<module>   sT    

/

	

