U
    ânldó  ã                   @   s¢   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l	m
Z
mZ edd�dd	d
„ƒZedd�ddd„ƒZedd�dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ ZdS )é    N)Ú	lru_cache)Úgettext)Úlazy_gettext)ÚescapeÚMarkup)ÚmaxsizeTFc           	         s,  t j t j t¡d¡‰ ‡ fdd„t  ˆ ¡D ƒ}ddddœg}|D ]Ð}|dkrNq@t j |d¡}t j t j |d	¡¡r@t j |¡r@z&t|ƒ�}t	 
| ¡ ¡}W 5 Q R X W n2 tk
rÖ } zt|ƒ W Y ¢q@W 5 d }~X Y nX | d
¡sæ| s@| t j |¡| dd¡| d
d¡dœ¡ q@|�r(|jdd„ d� |S )NÚlocalesc                    s   g | ]}t j ˆ |¡‘qS © )ÚosÚpathÚjoin)Ú.0Úd©Zlocales_dirr	   ú6/var/www/html/LibreTranslate/libretranslate/locales.pyÚ
<listcomp>   s     z)get_available_locales.<locals>.<listcomp>ÚenÚEnglishT)ÚcodeÚnameÚreviewedz	meta.jsonÚLC_MESSAGESr   r   Ú Fc                 S   s   | d S )Nr   r	   )Úsr	   r	   r   Ú<lambda>!   ó    z'get_available_locales.<locals>.<lambda>)Úkey)r
   r   r   ÚdirnameÚ__file__ÚlistdirÚisdirÚisfileÚopenÚjsonÚloadsÚreadÚ	ExceptionÚprintÚgetÚappendÚbasenameÚsort)	Úonly_reviewedZsort_by_nameÚdirsÚresr   Z	meta_fileÚfÚjÚer	   r   r   Úget_available_locales	   s&    "
,r2   c                 C   s   dd„ t | d�D ƒS )Nc                 S   s   g | ]}|d  ‘qS )r   r	   )r   Úlr	   r	   r   r   '   s     z.get_available_locale_codes.<locals>.<listcomp>©r,   )r2   r4   r	   r	   r   Úget_available_locale_codes%   s    r5   c                  C   s`   t j d¡} | d krg S tƒ }g }|D ]4}|  d|¡}|dkrJ| dd¡}| ||dœ¡ q&|S )NZLT_LOCALE_LINK_TEMPLATEz{LANG}r   zen.r   )ÚlinkÚlang)r
   Úenvironr(   r5   Úreplacer)   )Útmplr   Úresultr3   r6   r	   r	   r   Úget_alternate_locale_links)   s    r<   c                 K   s   t  t| f|Ž¡S ©N)r#   ÚdumpsÚ_)ÚtextÚ	variablesr	   r	   r   Úgettext_escaped9   s    rB   c                 K   sf   t tt| ƒƒƒ}i }|rR|D ]4}t|| dƒr@||  ¡ ||< qt|| ƒ||< qt|s\|n|| ƒS )NÚunescape)Ústrr   r?   ÚhasattrrC   r   )r@   rA   r   ÚvÚkr	   r	   r   Úgettext_html=   s    rH   c                    sÞ   | D ]Ô}|dkr<t | | tƒr<| | dkr<ˆ | | ƒ| |< q|dkrnt | | tƒrn‡ fdd„| | D ƒ| |< qt | | tƒrŒt| | ˆ ƒ qt | | tƒr|dkr| | D ],}t |tƒrÂˆ |ƒ qªt |tƒrªt|ˆ ƒ qªq| S )N)ÚsummaryÚdescriptionr   Útagsc                    s   g | ]}ˆ |ƒ‘qS r	   r	   )r   rF   ©Úfuncr	   r   r   S   s     zswag_eval.<locals>.<listcomp>Úconsumes)Ú
isinstancerD   ÚlistÚdictÚ	swag_eval)ÚswagrM   rG   Úir	   rL   r   rR   L   s    "


rR   c                 C   s
   t | tƒS r=   )rR   Ú_lazy)rS   r	   r	   r   Ú	lazy_swag_   s    rV   )TF)T)r
   r#   Ú	functoolsr   Úflask_babelr   r?   r   rU   Ú
markupsafer   r   r2   r5   r<   rB   rH   rR   rV   r	   r	   r	   r   Ú<module>   s   
