HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //lib/python3/dist-packages/LanguageSelector/__pycache__/LocaleInfo.cpython-38.pyc
U

ڀR]A2�@s�ddlmZddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddlmZ
ddlmZGdd�de�Zed	kr�d
Zede�Zede���ed
e���eej�eej�eej�ee���dS)�)�print_function)�absolute_importN)�macros)�gettext)�ElementTreec@speZdZdZdgZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
ddd�Zdd�Zdd�Z
dd�Zdd�ZdS)�
LocaleInfoz< class with handy functions to parse the locale information z/etc/default/localec	Cs�||_tj�|d|�}i|_i|_i|_tdd�}|�d�}|D]N}d|j	krZ|j	d}n
|j	d}d|j	krz|j	d}n
|j	d}||j|<q@t
d	�|jd
<t
d�|jd<td
d�}|�d�}|D]N}d|j	kr�|j	d}	n
|j	d}	d|j	kr�|j	d}n
|j	d}|	|j|<q�t|��b}
|
D]V}|��}|�
d��s"|dk�rH�q"|�d�}
|
d�d�}d|
d|j|d<�q"W5QRXdS)N�dataz&/usr/share/xml/iso-codes/iso_639_3.xml)�fileZiso_639_3_entryZcommon_name�nameZ
part1_code�idzChinese (simplified)zzh-hanszChinese (traditional)zzh-hantz%/usr/share/xml/iso-codes/iso_3166.xmlZiso_3166_entryZalpha_2_codeZalpha_3_code�#��;��:z%sr)�_datadir�os�path�join�_lang�_country�
_languagelistr�iterZattrib�_�open�strip�
startswith�split)�selfZlanguagelist_file�datadirZLANGUAGELISTZet�itZelm�lang�codeZdescr�f�line�tmp�wZ	localeenv�r'�=/usr/lib/python3/dist-packages/LanguageSelector/LocaleInfo.py�__init__sF













zLocaleInfo.__init__cCs||jkr|j|SdS)z$ map language code to language name r
)r�rr"r'r'r(r![s

zLocaleInfo.langcCs||jkr|j|SdS)z! map country code to country namer
)rr*r'r'r(�countryas

zLocaleInfo.countrycCsvg}tjddgtjdd�}|��d�d�D]D}|��}|�d�dkrHq,t�|j	|�}|d}||kr,|�
|�q,|S)	zR return a list of locales available on the system
            (running locale -a) �localez-aT)�stdoutZuniversal_newlinesr�
z.utf8�LOCALE)�
subprocess�Popen�PIPEZcommunicaterr�findr�LangpackMacrosr�append)rZlocales�pr$r%�macrr,r'r'r(�generated_localesgs�zLocaleInfo.generated_localescCsH||jkr@t�d|j|�}||j|kr<t�d|j|�}|S|SdS)zreturn translated languageZiso_639Z	iso_639_3N)rr�dgettext)rr!�	lang_namer'r'r(�translate_languageys
zLocaleInfo.translate_languagecCs(||jkr t�d|j|�}|S|SdS)z�
        return translated language and country of the given
        locale into the given locale, e.g. 
        (Deutsch, Deutschland) for de_DE
        Ziso_3166N)rrr9)rr+�country_namer'r'r(�translate_country�s
zLocaleInfo.translate_countryFc
sd}t�|j|��|dkr@d}dtjkr2tjd}�dtjd<|��d�}|}t�d�dkr�|��d�}�fd	d
�|��D�}|dkr�t|�dks�|dkr�|�	�d�}	|	r�d
||f}t�d�dkr�d|�df}|dk�r|r�|tjd<ntjd=|S)z4 get a locale code and output a human readable name r
TN�LANGUAGEr/�LCODEZCCODErcsg|]}|��d�r|�qS)r?)r)�.0�k�r7r'r(�
<listcomp>�sz(LocaleInfo.translate.<locals>.<listcomp>F�z%s (%s)ZVARIANTz%s - %s)
rr4rr�environr;�lenr=r8r+)
rr,ZnativeZallCountriesZ	returnValZcurrent_languager:r<�lZ	mycountryr'rBr(�	translate�s.


zLocaleInfo.translatecCst|sdSt�|j|�}|d}|d}||jkr<|j|}n||krJ|}nd||f}|�d�sp|dkspd|}|S)z� input is a language code, output a string that can be put in
            the LANGUAGE enviroment variable.
            E.g: en_DK -> en_DK:en
        r
r?r/z%s:%sz:enZenz%s:en)rr4rr�endswith)rr"r7Zlangcoder,Zlanglistr'r'r(�
makeEnvString�s
zLocaleInfo.makeEnvStringc
Cs�d}d}g}tj�d�}tj�|�rjt�|tj�rjt|��*}|D]}t�d|�}|r@|�	d�}q@W5QRXt
�t���j
}zxt��}	|	�dd�}
tj|
dd�}|�|�}|	�d|�}
tj|
dd�}|�d	d
�}t|�dkr�|�d	d�}
|�|
�}Wn4tk
�r&}zt�|jd�W5d}~XYnXt|�dk�rLd
tjk�rLtjd
}t|�dk�rpdtjk�rptjd}t|�dk�r�dtjk�r�tjd}t|�dk�r�t|�dk�r�|�|�}|�|�|�|�|S)Nr
z~/.pam_environmentzLANGUAGE(\s+DEFAULT)?=(.*)$�zorg.freedesktop.Accountsz/org/freedesktop/Accounts)Zdbus_interfacezorg.freedesktop.DBus.Propertieszorg.freedesktop.Accounts.UserZ
FormatsLocalerZLanguager>ZLC_NAME�LANG)rr�
expanduser�exists�access�R_OKr�re�match�group�pwd�getpwuid�geteuidZpw_name�dbusZ	SystemBusZ
get_objectZ	InterfaceZFindUserByNameZGetrFrJ�	Exception�warnings�warn�argsrEr5)r�formats�language�result�fnamer#r$�match_languageZ	user_nameZbus�objZifaceZ	user_pathZ
firstLanguage�msgr'r'r(�getUserDefaultLanguage�sL�







z!LocaleInfo.getUserDefaultLanguagec
Cs6d}d}d}g}|jD]�}tj�|�rt�|tj�rt|���}|D]�}|�d�r\|�dd�}t	�
d|�}|rv|�d�}|�d�r�|�dd�}t	�
d|�}	|	r�|	�d�}|�d�r�|�dd�}t	�
d	|�}
|
rB|
�d�}qBW5QRXqt|�d
kr�d}t|�d
k�r|�
|�}t|�d
k�r|}|�|�|�|�|S)Nr
rL�"z
LANG=(.*)$rD�LC_TIMEz
LC_TIME=(.*)$r>zLANGUAGE=(.*)$rzen_US.UTF-8)�environmentsrrrNrOrPrr�replacerQrRrSrFrJr5)rr!r\r]r^r_r#r$Z
match_langZ
match_formatsr`r'r'r(�getSystemDefaultLanguagesD
�








z#LocaleInfo.getSystemDefaultLanguagec	CsZt�|jdtj�sdSt|jd��*}|D]}|�d�r,W5QR�dSq,W5QRXdS)NrFzLC_TIME=T)rrOrfrPrr)rr#r$r'r'r(�isSetSystemFormats2s
zLocaleInfo.isSetSystemFormatsN)FF)�__name__�
__module__�__qualname__�__doc__rfr)r!r+r8r;r=rHrJrcrhrir'r'r'r(rsA

/)&r�__main__z/usr/share/language-selector/Zlanguagelistz)default system locale and languages: '%s'z'default user locale and languages: '%s')Z
__future__rrrQr0rrrT�sysrWrYZLanguageSelectorrrZxml.etree.ElementTreer�objectrrjrZli�printrhrcrrrr8r'r'r'r(�<module>s0(