From 2ad179df77f290bad634654b8926e12da57347b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20H=C3=B6rist?= Date: Sat, 5 Jan 2019 15:17:45 +0100 Subject: [PATCH] Better determine language cross platform --- gajim/common/i18n.py | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/gajim/common/i18n.py b/gajim/common/i18n.py index b862151b5..51009c3d6 100644 --- a/gajim/common/i18n.py +++ b/gajim/common/i18n.py @@ -69,6 +69,22 @@ def iter_locale_dirs(): if locale_dir.is_dir(): yield str(locale_dir) +def get_default_lang(): + if os.name == "nt": + import ctypes + windll = ctypes.windll.kernel32 + lang = locale.windows_locale[windll.GetUserDefaultUILanguage()] + return lang[:2] + + if sys.platform == "darwin": + from AppKit import NSLocale + return NSLocale.currentLocale().languageCode() + + default = locale.getdefaultlocale()[0] + if default is not None: + return default[:2] + return 'en' + def initialize_direction_mark(): from gi.repository import Gtk @@ -137,15 +153,13 @@ try: except locale.Error as error: print(error) -if os.name == 'nt': - try: - # en_US, fr_FR, el_GR etc.. - default = locale.getdefaultlocale()[0] - if default is not None: - LANG = default[:2] - except (ValueError, locale.Error): - pass - os.environ['LANG'] = LANG +try: + LANG = get_default_lang() + print('Found default language: %s' % LANG) +except Exception as error: + print('Failed to determine default language') + import traceback + traceback.print_exc() # Search for the translation in all locale dirs for dir_ in iter_locale_dirs():