o
    ëË·e\	  ã                   @   s,   d dl Z d dlmZmZ dd„ Zdd„ ZdS )é    N)Úget_languageÚ	to_localec                 C   sª   ddl m} || ƒ}| d¡}tdd„ |ƒ}i }|D ]}| d¡\}}}	| |g |	dœ¡}
|
d  |	¡ qd	|d
 d< d|d d< d|d d< d|d d< d|d d< |S )zê
    Parses the FacebookLocales.xml file and builds a dict relating every
    available language ('en, 'es, 'zh', ...) with a list of available regions
    for that language ('en' -> 'US', 'EN') and an (arbitrary) default region.
    r   )ÚparseÚrepresentationc                 S   s   | j d jS )Nr   )Ú
childNodesÚdata)Úr© r	   úf/var/www/ideatree/venv/lib/python3.10/site-packages/allauth/socialaccount/providers/facebook/locale.pyÚ<lambda>   s    z%_build_locale_table.<locals>.<lambda>Ú_)ÚregsÚdefaultr   ÚUSÚenr   ÚLAÚesÚCNÚzhÚFRÚfrÚPTÚpt)Úxml.dom.minidomr   ÚgetElementsByTagNameÚmapÚ	partitionÚ
setdefaultÚappend)Úfilename_or_filer   ÚdomÚrepsÚlocsÚ
locale_mapÚlocÚlangr   ÚregÚlang_mapr	   r	   r
   Ú_build_locale_table	   s   
r(   c                     s<   t j t j t¡¡} t j | dd¡}t|ƒ‰ ‡ fdd„}|S )zP
    Wrapper function so that the default mapping is only built when needed
    r   zFacebookLocales.xmlc                    sh   d}t ƒ }|r2t|ƒ}| d¡\}}}ˆ  |¡}|dur2||d v r*|d | }|S |d |d  }|S )a  
        Guess an appropriate FB locale based on the active Django locale.
        If the active locale is available, it is returned. Otherwise,
        it tries to return another locale with the same language. If there
        isn't one avaible, 'en_US' is returned.
        Úen_USr   Nr   r   )r   r   r   Úget)ÚrequestÚchosenÚlanguageÚlocaler%   r   r&   r'   ©Ú
fb_localesr	   r
   Údefault_locale1   s   
ÿz3get_default_locale_callable.<locals>.default_locale)ÚosÚpathÚdirnameÚrealpathÚ__file__Újoinr(   )Úexec_dirÚxml_pathr1   r	   r/   r
   Úget_default_locale_callable(   s
   r:   )r2   Údjango.utils.translationr   r   r(   r:   r	   r	   r	   r
   Ú<module>   s   