1# coding:utf8 2from syncplay import constants 3 4from . import messages_en 5from . import messages_ru 6from . import messages_de 7from . import messages_it 8from . import messages_es 9 10messages = { 11 "en": messages_en.en, 12 "ru": messages_ru.ru, 13 "de": messages_de.de, 14 "it": messages_it.it, 15 "es": messages_es.es, 16 "CURRENT": None 17} 18 19 20def getLanguages(): 21 langList = {} 22 for lang in messages: 23 if lang != "CURRENT": 24 langList[lang] = getMessage("LANGUAGE", lang) 25 return langList 26 27 28def setLanguage(lang): 29 messages["CURRENT"] = lang 30 31 32def getMissingStrings(): 33 missingStrings = "" 34 for lang in messages: 35 if lang != "en" and lang != "CURRENT": 36 for message in messages["en"]: 37 if message not in messages[lang]: 38 missingStrings = missingStrings + "({}) Missing: {}\n".format(lang, message) 39 for message in messages[lang]: 40 if message not in messages["en"]: 41 missingStrings = missingStrings + "({}) Unused: {}\n".format(lang, message) 42 43 return missingStrings 44 45 46def getInitialLanguage(): 47 import locale 48 try: 49 initialLanguage = locale.getdefaultlocale()[0].split("_")[0] 50 if initialLanguage not in messages: 51 initialLanguage = constants.FALLBACK_INITIAL_LANGUAGE 52 except: 53 initialLanguage = constants.FALLBACK_INITIAL_LANGUAGE 54 return initialLanguage 55 56 57def isValidLanguage(language): 58 return language in messages 59 60 61def getMessage(type_, locale=None): 62 if constants.SHOW_TOOLTIPS == False: 63 if "-tooltip" in type_: 64 return "" 65 66 if not isValidLanguage(messages["CURRENT"]): 67 setLanguage(getInitialLanguage()) 68 69 lang = messages["CURRENT"] 70 if locale and locale in messages: 71 if type_ in messages[locale]: 72 return str(messages[locale][type_]) 73 if lang and lang in messages: 74 if type_ in messages[lang]: 75 return str(messages[lang][type_]) 76 if type_ in messages["en"]: 77 return str(messages["en"][type_]) 78 else: 79 print("WARNING: Cannot find message '{}'!".format(type_)) 80 #return "!{}".format(type_) # TODO: Remove 81 raise KeyError(type_) 82