
    ce                     n   d Z ddlZddlZddlZddlZddlmZ ddlmZ ddgZd Z	i Z
i 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"d#d$d%d&d'd(d)i d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQZdR Zej                  Zi ZdTdSZee_        y)UzFgettextutils provides a wrapper around gettext for OpenStack projects
    N)_factory)_localeinstallget_available_languagesc                 h    ddl }t        j                  |       }|j                  |j                  d<   y)a  Install a _() function using the given translation domain.

    Given a translation domain, install a _() function using gettext's
    install() function.

    The main difference from gettext.install() is that we allow
    overriding the default localedir (e.g. /usr/share/locale) using
    a translation-domain-specific environment variable (e.g.
    NOVA_LOCALEDIR).

    :param domain: the translation domain
    r   N_)builtinsr   TranslatorFactoryprimary__dict__)domainr	   tfs      9/usr/lib/python3/dist-packages/oslo_i18n/_gettextutils.pyr   r   "   s+     		#	#F	+BZZHc    arar_SYbgbg_BGbsbs_BAcaca_EScscs_CZdada_DKdede_DEelel_GRenen_USeses_ESetet_EEfafa_IRfifi_FIfrfr_FRglgl_EShehe_ILhuhu_HUidid_IDisis_ISitit_ITjaja_JPkmkm_KHkoko_KRltlt_LTlvlv_LVmkmk_MKnlnl_NLnnnn_NOnonb_NOplpl_PLptpt_PTroro_ROruru_RUsksk_SKsl_SIsv_SEth_THtr_TRuk_UA)slsvthtrukc                      t         v rt        j                  t                   S t        j                  j	                  t        j                                fddg}t        t        j                  j                               }|j                  fd|D               |j                  fdt        j                         D               |t          <   t        j                  |      S )zxLists the available languages for the given translation domain.

    :param domain: the domain to get languages for
    c                 6    t        j                  | g      S )N)	localedir	languages)gettextfind)xr   ra   s    r   rd   z%get_available_languages.<locals>.findN   s    ||FiA3GGr   r"   c              3   4   K   | ]  } |      s|  y wN ).0languagerd   s     r   	<genexpr>z*get_available_languages.<locals>.<genexpr>U   s      tH~s   c              3   :   K   | ]  \  }} |      s|  y wrg   rh   )ri   aliasr   rd   s      r   rk   z*get_available_languages.<locals>.<genexpr>X   s       %Us   )_AVAILABLE_LANGUAGEScopyosenvirongetr   get_locale_dir_variable_namesetlocalewindows_localevaluesextend_BABEL_ALIASESitems)r   language_listlocale_identifiersrd   ra   s   `  @@r   r   r   D   s    
 %%yy-f566

wCCFKLIH
 IMV2299;< !3   ,224  $1 99]##r   c                 |    | ||t        |      nd|f}|t        v r	t        |   S t        | |||      }|t        |<   |S )a@  A version of gettext.find using a cache.

    gettext.find looks for mo files on the disk using os.path.exists. Those
    don't tend to change over time, but the system calls pile up with a
    long-running service. This caches the result so that we return the same mo
    files, and only call find once per domain.
    N)tuple_FIND_CACHE_original_find)r   ra   rb   allkeyresults         r   cached_findr   d   sW     (45$C k3FIy#>FKMr   )NNr   )__doc__ro   rc   ru   rp   	oslo_i18nr   r   __all__r   rn   ry   r   rd   r   r   r   rh   r   r   <module>r      s  "    	   ($  	'		"&	15w	@Dg	'		"&	15w	@Dg	 	'	 	 #'	 26w	 AEg	 	'		 		 #'		 26w		 AEg		
 	'	
 	
 #'	
 26w	
 AEg	 	'	 	 #'	 26w	 AEg	 	'	 	 #'	 26w	 GN
w	$8 & r   