133 lines
3.7 KiB
Python
Executable File
133 lines
3.7 KiB
Python
Executable File
# coding:utf8
|
|
from syncplay import constants
|
|
|
|
from . import messages_de
|
|
from . import messages_en
|
|
from . import messages_es
|
|
from . import messages_eo
|
|
from . import messages_fi
|
|
from . import messages_fr
|
|
from . import messages_it
|
|
from . import messages_pt_PT
|
|
from . import messages_pt_BR
|
|
from . import messages_tr
|
|
from . import messages_ru
|
|
from . import messages_zh_CN
|
|
from . import messages_ko
|
|
import re
|
|
|
|
# In alphabetical order
|
|
messages = {
|
|
"de": messages_de.de,
|
|
"en": messages_en.en,
|
|
"es": messages_es.es,
|
|
"eo": messages_eo.eo,
|
|
"fi": messages_fi.fi,
|
|
"fr": messages_fr.fr,
|
|
"it": messages_it.it,
|
|
"pt_PT": messages_pt_PT.pt_PT,
|
|
"pt_BR": messages_pt_BR.pt_BR,
|
|
"tr": messages_tr.tr,
|
|
"ru": messages_ru.ru,
|
|
"zh_CN": messages_zh_CN.zh_CN,
|
|
"ko": messages_ko.ko,
|
|
"CURRENT": None
|
|
}
|
|
|
|
no_osd_message_list = [
|
|
"slowdown-notification",
|
|
"revert-notification",
|
|
]
|
|
|
|
def getLanguages():
|
|
langList = {}
|
|
for lang in messages:
|
|
if lang != "CURRENT":
|
|
langList[lang] = getMessage("LANGUAGE", lang)
|
|
return langList
|
|
|
|
def getLanguageTags():
|
|
langList = {}
|
|
for lang in messages:
|
|
if lang != "CURRENT":
|
|
langList[lang] = getMessage("LANGUAGE-TAG", lang)
|
|
return langList
|
|
|
|
def isNoOSDMessage(message):
|
|
for no_osd_message in no_osd_message_list:
|
|
regex = "^" + getMessage(no_osd_message).replace("{}", ".+") + "$"
|
|
regex_test = bool(re.match(regex, message))
|
|
if regex_test:
|
|
return True
|
|
return False
|
|
|
|
def setLanguage(lang):
|
|
messages["CURRENT"] = lang
|
|
|
|
def getMissingStrings():
|
|
missingStrings = ""
|
|
for lang in messages:
|
|
if lang != "en" and lang != "CURRENT":
|
|
for message in messages["en"]:
|
|
if message not in messages[lang]:
|
|
missingStrings = missingStrings + "({}) Missing: {}\n".format(lang, message)
|
|
for message in messages[lang]:
|
|
if message not in messages["en"]:
|
|
missingStrings = missingStrings + "({}) Unused: {}\n".format(lang, message)
|
|
|
|
return missingStrings
|
|
|
|
|
|
def getInitialLanguage():
|
|
try:
|
|
import sys
|
|
frozen = getattr(sys, 'frozen', '')
|
|
if frozen and frozen in 'macosx_app':
|
|
from PySide2.QtCore import QLocale
|
|
initialLanguage = QLocale.system().uiLanguages()[0].split('-')[0]
|
|
else:
|
|
import locale
|
|
initialLanguage = locale.getdefaultlocale()[0].split("_")[0]
|
|
if initialLanguage not in messages:
|
|
initialLanguage = constants.FALLBACK_INITIAL_LANGUAGE
|
|
except:
|
|
initialLanguage = constants.FALLBACK_INITIAL_LANGUAGE
|
|
return initialLanguage
|
|
|
|
|
|
def isValidLanguage(language):
|
|
return language in messages
|
|
|
|
|
|
def getMessage(type_, locale=None):
|
|
if constants.SHOW_TOOLTIPS == False:
|
|
if "-tooltip" in type_:
|
|
return ""
|
|
|
|
if not isValidLanguage(messages["CURRENT"]):
|
|
setLanguage(getInitialLanguage())
|
|
|
|
lang = messages["CURRENT"]
|
|
if locale and locale in messages:
|
|
if type_ in messages[locale]:
|
|
return str(messages[locale][type_])
|
|
if lang and lang in messages:
|
|
if type_ in messages[lang]:
|
|
return str(messages[lang][type_])
|
|
if type_ in messages["en"]:
|
|
return str(messages["en"][type_])
|
|
else:
|
|
print("WARNING: Cannot find message '{}'!".format(type_))
|
|
#return "!{}".format(type_) # TODO: Remove
|
|
raise KeyError(type_)
|
|
|
|
def populateLanguageArgument():
|
|
languageTags = "/".join(getLanguageTags())
|
|
langList = {}
|
|
for lang in messages:
|
|
if lang != "CURRENT":
|
|
messages[lang]["language-argument"] = messages[lang]["language-argument"].format(languageTags)
|
|
return langList
|
|
|
|
populateLanguageArgument()
|