33 from PyQt5.QtCore import QLocale, QLibraryInfo, QTranslator, QCoreApplication
35 from classes.logger
import log
36 from classes
import info
37 from classes
import settings
41 from language
import openshot_lang
42 language_path=
":/locale/"
43 log.debug(
"Using compiled translation resources")
45 language_path=os.path.join(info.PATH,
'language')
46 log.debug(
"Loading translations from: {}".format(language_path))
53 app = QCoreApplication.instance()
59 "path": QLibraryInfo.location(QLibraryInfo.TranslationsPath)},
62 "path": QLibraryInfo.location(QLibraryInfo.TranslationsPath)},
65 "path": os.path.join(info.PATH,
'language')},
68 "path": os.path.join(info.PATH,
'language')},
70 "prefix":
'OpenShot.',
71 "path": language_path},
75 locale_names = [os.environ.get(
'LANG', QLocale().system().
name()),
76 os.environ.get(
'LOCALE', QLocale().system().
name())
83 log.info(
"Qt Detected Languages: {}".format(QLocale().system().uiLanguages()))
84 log.info(
"LANG Environment Variable: {}".format(os.environ.get(
'LANG',
"")))
85 log.info(
"LOCALE Environment Variable: {}".format(os.environ.get(
'LOCALE',
"")))
86 log.info(
"OpenShot Preference Language: {}".format(preference_lang))
89 if preference_lang ==
"en_US":
91 locale_names = [
"en_US" ]
92 elif preference_lang !=
"Default":
94 locale_names.insert(0, preference_lang)
98 if info.CMDLINE_LANGUAGE:
99 locale_names = [ info.CMDLINE_LANGUAGE ]
100 log.info(
"Language overridden on command line, using: {}".format(info.CMDLINE_LANGUAGE))
103 locale.setlocale(locale.LC_ALL,
'C')
106 found_language =
False
107 for locale_name
in locale_names:
110 for type
in translator_types:
111 trans = QTranslator(app)
114 app.installTranslator(trans)
115 found_language =
True
119 log.debug(
"Exiting translation system (since we successfully loaded: {})".format(locale_name))
120 info.CURRENT_LANGUAGE = locale_name
133 filename = prefix + locale_name
134 log.debug(
'Attempting to load {} in \'{}\''.format(filename,path))
135 success = translator.load(filename, path)
137 log.debug(
'Successfully loaded {} in \'{}\''.format(filename, path))
146 for locale_name
in info.SUPPORTED_LANGUAGES:
148 native_lang_name = QLocale(locale_name).nativeLanguageName().title()
149 country_name = QLocale(locale_name).nativeCountryName().title()
150 all_languages.append((locale_name, native_lang_name, country_name))
159 return info.CURRENT_LANGUAGE
def find_language_match
Match all combinations of locale, language, and country.
def init_language
Find the current locale, and install the correct translators.
def get_all_languages
Get all language names and countries packaged with OpenShot.
def get_settings
Get the current QApplication's settings instance.