
    Fer                       U d Z ddlmZ ddlZddlmZmZ ddlmZ ddl	m
Z
 e
rddlmZ ddl	mZmZ  G d	 d
      Zi Zded<   	 	 d	 	 	 	 	 	 	 	 	 d dZ ej&                   ej(                  e            Z	 	 d!	 	 	 	 	 d"dZdd#dZdd$dZd%d&dZ ed      Z edd      Z ed       ed       ed       ed       ed       ed       ed       ed       ed       ed      d
Zy)'zLocale utilities.    )annotationsN)NullTranslationstranslation)path)TYPE_CHECKING)Iterable)AnyCallablec                      e Zd ZdZdZddZddZddZddZddZ	ddZ
dd	Zdd
ZddZddZddZddZd dZd dZd Zd Zd Zd Zd Zd Zy)!_TranslationProxyz
    The proxy implementation attempts to be as complete as possible, so that
    the lazy objects should mostly work as expected, for example for sorting.
    
_catalogue
_namespace_messagec                .    || _         || _        || _        y Nr   )self	catalogue	namespacemessages       8/usr/lib/python3/dist-packages/sphinx/locale/__init__.py__init__z_TranslationProxy.__init__   s    ##    c                    	 t         | j                  | j                  f   j                  | j                        S # t
        $ r | j                  cY S w xY wr   )translatorsr   r   gettextr   KeyErrorr   s    r   __str__z_TranslationProxy.__str__   sG    	!t?@HHWW 	!== 	!s   7: AAc                     t        t              S r   )dirstrr   s    r   __dir__z_TranslationProxy.__dir__"   s    3xr   c                6    t        | j                         |      S r   )getattrr   )r   names     r   __getattr__z_TranslationProxy.__getattr__%   s    t||~t,,r   c                H    | j                   | j                  | j                  fS r   r   r   s    r   __getstate__z_TranslationProxy.__getstate__(   s    >>r   c                .    |\  | _         | _        | _        y r   r   )r   tups     r   __setstate__z_TranslationProxy.__setstate__+   s    :=7$-r   c                X    t        | j                  | j                  | j                        S r   )r   r   r   r   r   s    r   __copy__z_TranslationProxy.__copy__.   s     $//4==QQr   c           	         	 d| j                         S # t        $ rD | j                  j                  d| j                   d| j
                   d| j                   dz   cY S w xY w)Ni(z, ))r   	Exception	__class____name__r   r   r   r   s    r   __repr__z_TranslationProxy.__repr__1   sl    	Rt||~()) 	RNN++$//*"T__,=RaPQ R	Rs    A
A"!A"c                (    | j                         |z   S r   r   r   others     r   __add__z_TranslationProxy.__add__8       ||~%%r   c                (    || j                         z   S r   r8   r9   s     r   __radd__z_TranslationProxy.__radd__;       t||~%%r   c                (    | j                         |z  S r   r8   r9   s     r   __mod__z_TranslationProxy.__mod__>   r<   r   c                (    || j                         z  S r   r8   r9   s     r   __rmod__z_TranslationProxy.__rmod__A   r?   r   c                (    | j                         |z  S r   r8   r9   s     r   __mul__z_TranslationProxy.__mul__D   r<   r   c                (    || j                         z  S r   r8   r9   s     r   __rmul__z_TranslationProxy.__rmul__G   r?   r   c                4    t        | j                               S r   )hashr   r   s    r   __hash__z_TranslationProxy.__hash__J   s    DLLN##r   c                (    | j                         |k(  S r   r8   r9   s     r   __eq__z_TranslationProxy.__eq__M   s    ||~&&r   c                (    | j                         |k  S r   r8   )r   strings     r   __lt__z_TranslationProxy.__lt__P   s    ||~&&r   c                &    || j                         v S r   r8   )r   chars     r   __contains__z_TranslationProxy.__contains__S   s    t||~%%r   c                4    t        | j                               S r   )lenr   r   s    r   __len__z_TranslationProxy.__len__V   s    4<<>""r   c                (    | j                         |   S r   r8   )r   indexs     r   __getitem__z_TranslationProxy.__getitem__Y   s    ||~e$$r   N)r   r"   r   r"   r   r"   returnNone)rY   r"   )rY   z	list[str])r&   r"   rY   r	   )rY   tuple[str, str, str])r+   r[   rY   rZ   )rY   r   )r:   r"   rY   r"   )r:   r	   rY   r"   )r5   
__module____qualname____doc__	__slots__r   r   r#   r'   r)   r,   r.   r6   r;   r>   rA   rC   rE   rG   rJ   rL   rO   rR   rU   rX    r   r   r   r      st     7I 
!-?>RR&&&&&&$''&#%r   r   z'dict[tuple[str, str], NullTranslations]r   sphinxc                T   t         j                  ||f      }|j                  t        u rd}|rd|v r||j	                  d      d   g}n|g}nd}| D ]'  }	 t        |||      }||}n|j                  |       ) |d}nt               }d}|t         ||f<   ||fS # t        $ r Y Uw xY w)a  Look for message catalogs in `locale_dirs` and *ensure* that there is at
    least a NullTranslations catalog set in `translators`. If called multiple
    times or if several ``.mo`` files are found, their contents are merged
    together (thus making ``init`` reentrant).
    N_r   )	localedir	languagesTF)r   getr4   r   splitr   add_fallbackr3   )	locale_dirslanguagecatalogr   
translatorre   dir_transhas_translations	            r   initrp   `   s     )W!56J//
(?+3X^^C5H5K*LI!
I	  		49ME!"
''.	 %'
&0K	7"#&&  		s   $B	B'&B'c                    | t         } 	 t        j                  t        j                        \  }}t        | g||d      S # t        $ r d}Y w xY w)z>Initialize locale for console.

    .. versionadded:: 1.8
    Nconsole)_LOCALE_DIRlocale	getlocaleLC_MESSAGESAttributeErrorrp   )
locale_dirrk   rj   rc   s       r   init_consolery      s[      
&&v'9'9:!
 h;;	   s   &? AAc                B    t         j                  || ft                     S r   )r   rf   r   rk   r   s     r   get_translatorr|      s    ??Iw/1A1CDDr   c                    || ft         v S r   )r   r{   s     r   is_translator_registeredr~      s    w;..r   c                     d fd}|S )aA  Get a translation function based on the *catalog* and *namespace*.

    The extension can use this API to translate the messages on the
    extension::

        import os
        from sphinx.locale import get_translation

        MESSAGE_CATALOG_NAME = 'myextension'  # name of *.pot, *.po and *.mo files
        _ = get_translation(MESSAGE_CATALOG_NAME)
        text = _('Hello Sphinx!')


        def setup(app):
            package_dir = os.path.abspath(os.path.dirname(__file__))
            locale_dir = os.path.join(package_dir, 'locales')
            app.add_message_catalog(MESSAGE_CATALOG_NAME, locale_dir)

    With this code, sphinx searches a message catalog from
    ``${package_dir}/locales/${language}/LC_MESSAGES/myextension.mo``.
    The :confval:`language` is used for the searching.

    .. versionadded:: 1.8
    c                p    t              st        |       S t              }|j                  |       S r   )r~   r   r|   r   )r   rl   rk   r   s     r   r   z get_translation.<locals>.gettext   s9    ';$WiAA';J%%g..r   )r   r"   rY   r"   r`   )rk   r   r   s   `` r   get_translationr      s    2/ Nr   rr   	AttentionCautionDangerErrorHint	ImportantNotezSee alsoTipWarning)
	attentioncautiondangererrorhint	importantnoteseealsotipwarning)ra   general)
ri   zIterable[str | None]rj   
str | Nonerk   r"   r   r"   rY   tuple[NullTranslations, bool])Nra   )rx   r   rk   r"   rY   r   )rk   r"   r   r"   rY   r   )rk   r"   r   r"   rY   bool)r   )rk   r"   r   r"   rY   zCallable[[str], str])r^   
__future__r   rt   r   r   r   osr   typingr   collections.abcr   r	   r
   r   r   __annotations__rp   abspathdirname__file__rs   ry   r|   r~   r   rc   __admonitionlabelsr`   r   r   <module>r      s5    "  1   ($K% K%\ 8:4 9 	,'%,',' ,' 	,'
 #,'^ dll<4<<12 "<<< #<(E/!N H Xy)
 ;9876;6:59 r   