Obtener idioma predeterminado del sistema o usuario



Versión: 2.x, 3.x.

Resulta sumamente útil contar con una solución rápida, simple y eficaz para obtener el idioma y región predeterminados en un determinado sistema y en las diversas plataformas. En base al estándar RFC 1766, el módulo estándar locale permite obtener dicha información haciendo uso de la función getdefaultlocale.

>>> from locale import getdefaultlocale
>>>
>>> getdefaultlocale()
('es_AR', 'cp1252')

Retorna una tupla en la que el primer elemento corresponde al idioma y región predeterminada, respectivamente. El segundo indica la codificación de caracteres del sistema.

>>> language, encoding = getdefaultlocale()
>>> language
'es_AR'
>>> encoding
'cp1252'

La función determina la información obteniendo las variables del sistemas indicadas en el parámetro opcional envvars, que por defecto incluye 'LC_ALL', 'LC_CTYPE', 'LANG', 'LANGUAGE'. Si ninguna de éstas se encuentra disponible (o bien vacía), el valor de retorno es 'C'.

En sistemas Microsoft Windows se utiliza la función de la API GetLocaleInfo.
Aquellos que experimenten problemas o valores erróneos, consideren usar GetUserDefaultUILanguage o GetSystemDefaultUILanguage.

>>> from ctypes import windll
>>> from locale import windows_locale
>>>
>>> sys_language = windows_locale[windll.kernel32.GetSystemDefaultUILanguage()]
>>> user_language = windows_locale[windll.kernel32.GetUserDefaultUILanguage()]
>>> sys_language
'es_ES'
>>> user_language
'es_ES'



Deja un comentario