diff --git a/src/ifcbimtester/bimtester/lang.py b/src/ifcbimtester/bimtester/lang.py index 60caf519cc..3a8ca0d393 100644 --- a/src/ifcbimtester/bimtester/lang.py +++ b/src/ifcbimtester/bimtester/lang.py @@ -8,8 +8,21 @@ def _(message): return message -def switch_locale(locale_dir, locale_id="en"): +def switch_locale(locale_dir, locale_id): global translation - newlang = gettext.translation("messages", localedir=locale_dir, languages=[locale_id]) - newlang.install() - translation = newlang.gettext + domain = "messages" + # https://docs.python.org/3/library/gettext.html + mo_file = gettext.find(domain, localedir=locale_dir, languages=[locale_id]) + if mo_file is not None: + print( + "Locale will be switched to language '{}'. Translation file found {}" + .format(locale_id, mo_file) + ) + newlang = gettext.translation(domain, localedir=locale_dir, languages=[locale_id]) + newlang.install() + translation = newlang.gettext + else: + print( + "Locale can not be switched to '{}'. Translation file (*.mo) not found in {}" + .format(locale_id, locale_dir) + )