Merge branch 'model' into UI_2.0

This commit is contained in:
misyaguziya
2023-10-20 14:36:16 +09:00
4 changed files with 94 additions and 103 deletions

View File

@@ -22,13 +22,12 @@ def sendMicMessage(message):
return
elif config.ENABLE_TRANSLATION is False:
pass
elif model.getTranslatorStatus() is False:
view.printToTextbox_AuthenticationError()
else:
translation = model.getInputTranslate(message)
if translation == None:
translation = ""
if translation == False:
config.ENABLE_TRANSLATION = False
translation = ""
view.translationEngineLimitErrorProcess()
if config.ENABLE_TRANSCRIPTION_SEND is True:
if config.ENABLE_SEND_MESSAGE_TO_VRC is True:
@@ -87,13 +86,12 @@ def receiveSpeakerMessage(message):
translation = ""
if config.ENABLE_TRANSLATION is False:
pass
elif model.getTranslatorStatus() is False:
view.printToTextbox_AuthenticationError()
else:
translation = model.getOutputTranslate(message)
if translation == None:
translation = ""
if translation == False:
config.ENABLE_TRANSLATION = False
translation = ""
view.translationEngineLimitErrorProcess()
if config.ENABLE_TRANSCRIPTION_RECEIVE is True:
if config.ENABLE_NOTICE_XSOVERLAY is True:
@@ -154,13 +152,12 @@ def sendChatMessage(message):
translation = ""
if config.ENABLE_TRANSLATION is False:
pass
elif model.getTranslatorStatus() is False:
view.printToTextbox_AuthenticationError()
else:
translation = model.getInputTranslate(message)
if translation == None:
translation = ""
if translation == False:
config.ENABLE_TRANSLATION = False
translation = ""
view.translationEngineLimitErrorProcess()
# send OSC message
if config.ENABLE_SEND_MESSAGE_TO_VRC is True:
@@ -212,7 +209,6 @@ def initSetLanguageAndCountry():
config.TARGET_LANGUAGE = language
config.TARGET_COUNTRY = country
config.CHOICE_TRANSLATOR = model.findTranslationEngine(config.SOURCE_LANGUAGE, config.TARGET_LANGUAGE)
model.authenticationTranslator()
def setYourLanguageAndCountry(select):
languages = config.SELECTED_TAB_YOUR_LANGUAGES
@@ -222,7 +218,6 @@ def setYourLanguageAndCountry(select):
config.SOURCE_LANGUAGE = language
config.SOURCE_COUNTRY = country
config.CHOICE_TRANSLATOR = model.findTranslationEngine(config.SOURCE_LANGUAGE, config.TARGET_LANGUAGE)
model.authenticationTranslator()
view.printToTextbox_selectedYourLanguages(select)
def setTargetLanguageAndCountry(select):
@@ -233,7 +228,6 @@ def setTargetLanguageAndCountry(select):
config.TARGET_LANGUAGE = language
config.TARGET_COUNTRY = country
config.CHOICE_TRANSLATOR = model.findTranslationEngine(config.SOURCE_LANGUAGE, config.TARGET_LANGUAGE)
model.authenticationTranslator()
view.printToTextbox_selectedTargetLanguages(select)
def callbackSelectedLanguagePresetTab(selected_tab_no):
@@ -250,7 +244,6 @@ def callbackSelectedLanguagePresetTab(selected_tab_no):
config.TARGET_LANGUAGE = language
config.TARGET_COUNTRY = country
config.CHOICE_TRANSLATOR = model.findTranslationEngine(config.SOURCE_LANGUAGE, config.TARGET_LANGUAGE)
model.authenticationTranslator()
view.printToTextbox_changedLanguagePresetTab(config.SELECTED_TAB_NO)
# command func
@@ -374,22 +367,23 @@ def callbackSetUiLanguage(value):
# Translation Tab
def callbackSetDeeplAuthkey(value):
print("callbackSetDeeplAuthkey", str(value))
if len(value) > 0:
if len(value) == 39:
result = model.authenticationTranslator(choice_translator="DeepL_API", auth_key=value)
if result is True:
auth_keys = config.AUTH_KEYS
auth_keys["DeepL_API"] = value
config.AUTH_KEYS = auth_keys
key = value
view.printToTextbox_AuthenticationSuccess()
else:
key = None
view.printToTextbox_AuthenticationError()
auth_keys = config.AUTH_KEYS
auth_keys["DeepL_API"] = key
config.AUTH_KEYS = auth_keys
config.CHOICE_TRANSLATOR = model.findTranslationEngine(config.SOURCE_LANGUAGE, config.TARGET_LANGUAGE)
elif len(value) == 0:
auth_keys = config.AUTH_KEYS
auth_keys["DeepL_API"] = None
config.AUTH_KEYS = auth_keys
config.CHOICE_TRANSLATOR = model.findTranslationEngine(config.SOURCE_LANGUAGE, config.TARGET_LANGUAGE)
else:
view.printToTextbox_AuthenticationError()
print(config.AUTH_KEYS, config.CHOICE_TRANSLATOR)
# Transcription Tab (Mic)
def callbackSetMicHost(value):
@@ -636,11 +630,13 @@ def createMainWindow():
# init config
initSetLanguageAndCountry()
if model.authenticationTranslator() is False:
if model.authenticationTranslator(config.CHOICE_TRANSLATOR, config.AUTH_KEYS[config.CHOICE_TRANSLATOR]) is False:
# error update Auth key
auth_keys = config.AUTH_KEYS
auth_keys[config.CHOICE_TRANSLATOR] = None
config.AUTH_KEYS = auth_keys
view.printToTextbox_AuthenticationError()
config.CHOICE_TRANSLATOR = model.findTranslationEngine(config.SOURCE_LANGUAGE, config.TARGET_LANGUAGE)
model.authenticationTranslator()
# set word filter
model.addKeywords()

29
main.py
View File

@@ -1,13 +1,18 @@
import ctypes
ctypes.windll.shcore.SetProcessDpiAwareness(0)
from vrct_gui.splash_window import SplashWindow
splash = SplashWindow()
splash.showSplash()
import controller
if __name__ == "__main__":
controller.createMainWindow()
splash.destroySplash()
controller.showMainWindow()
try:
import ctypes
ctypes.windll.shcore.SetProcessDpiAwareness(0)
from vrct_gui.splash_window import SplashWindow
splash = SplashWindow()
splash.showSplash()
import controller
controller.createMainWindow()
splash.destroySplash()
controller.showMainWindow()
except Exception as e:
import traceback
with open('error.log', 'a') as f:
traceback.print_exc(file=f)

View File

@@ -121,8 +121,7 @@ class Model:
country = parts[1][1:-1]
return language, country
@staticmethod
def findTranslationEngine(source_lang, target_lang):
def findTranslationEngine(self, source_lang, target_lang):
compatible_engines = []
for engine in translatorEngine:
source_languages = translation_lang.get(engine, {}).get("source", {})
@@ -132,61 +131,64 @@ class Model:
engine_name = compatible_engines[0]
if engine_name == "DeepL" and config.AUTH_KEYS["DeepL_API"] != None:
engine_name = "DeepL_API"
if self.authenticationTranslator(engine_name, config.AUTH_KEYS["DeepL_API"]) is True:
engine_name = "DeepL_API"
elif engine_name == "DeepL_API" and config.AUTH_KEYS["DeepL_API"] == None:
engine_name = "DeepL"
return engine_name
def getTranslatorStatus(self):
return self.translator.translator_status[config.CHOICE_TRANSLATOR]
def getInputTranslate(self, message):
try:
if config.CHOICE_TRANSLATOR == "DeepL_API":
if config.TARGET_LANGUAGE == "English":
if config.TARGET_COUNTRY in ["United States", "Canada", "Philippines"]:
config.TARGET_LANGUAGE = "English American"
else:
config.TARGET_LANGUAGE = "English British"
elif config.TARGET_LANGUAGE in ["Portuguese"]:
if config.TARGET_COUNTRY == "Portugal":
config.TARGET_LANGUAGE = "Portuguese European"
else:
config.TARGET_LANGUAGE = "Portuguese Brazilian"
print(config.CHOICE_TRANSLATOR, config.AUTH_KEYS)
if config.CHOICE_TRANSLATOR == "DeepL_API":
if config.TARGET_LANGUAGE == "English":
if config.TARGET_COUNTRY in ["United States", "Canada", "Philippines"]:
config.TARGET_LANGUAGE = "English American"
else:
config.TARGET_LANGUAGE = "English British"
elif config.TARGET_LANGUAGE in ["Portuguese"]:
if config.TARGET_COUNTRY == "Portugal":
config.TARGET_LANGUAGE = "Portuguese European"
else:
config.TARGET_LANGUAGE = "Portuguese Brazilian"
elif config.CHOICE_TRANSLATOR == "DeepL":
if config.TARGET_LANGUAGE in ["English American", "English British"]:
config.TARGET_LANGUAGE = "English"
elif config.TARGET_LANGUAGE in ["Portuguese European", "Portuguese Brazilian"]:
config.TARGET_COUNTRY = "Portugal"
translation = self.translator.translate(
translator_name=config.CHOICE_TRANSLATOR,
source_language=config.SOURCE_LANGUAGE,
target_language=config.TARGET_LANGUAGE,
message=message
)
except:
translation = None
translation = self.translator.translate(
translator_name=config.CHOICE_TRANSLATOR,
source_language=config.SOURCE_LANGUAGE,
target_language=config.TARGET_LANGUAGE,
message=message
)
return translation
def getOutputTranslate(self, message):
try:
if config.CHOICE_TRANSLATOR == "DeepL_API":
if config.SOURCE_LANGUAGE == "English":
if config.SOURCE_COUNTRY in ["United States", "Canada", "Philippines"]:
config.SOURCE_LANGUAGE = "English American"
else:
config.SOURCE_LANGUAGE = "English British"
elif config.SOURCE_LANGUAGE in ["Portuguese"]:
if config.SOURCE_COUNTRY == "Portugal":
config.SOURCE_LANGUAGE = "Portuguese European"
else:
config.SOURCE_LANGUAGE = "Portuguese Brazilian"
if config.CHOICE_TRANSLATOR == "DeepL_API":
if config.SOURCE_LANGUAGE == "English":
if config.SOURCE_COUNTRY in ["United States", "Canada", "Philippines"]:
config.SOURCE_LANGUAGE = "English American"
else:
config.SOURCE_LANGUAGE = "English British"
elif config.SOURCE_LANGUAGE in ["Portuguese"]:
if config.SOURCE_COUNTRY == "Portugal":
config.SOURCE_LANGUAGE = "Portuguese European"
else:
config.SOURCE_LANGUAGE = "Portuguese Brazilian"
elif config.CHOICE_TRANSLATOR == "DeepL":
if config.SOURCE_LANGUAGE in ["English American", "English British"]:
config.SOURCE_LANGUAGE = "English"
elif config.SOURCE_LANGUAGE in ["Portuguese European", "Portuguese Brazilian"]:
config.SOURCE_COUNTRY = "Portugal"
translation = self.translator.translate(
translator_name=config.CHOICE_TRANSLATOR,
source_language=config.TARGET_LANGUAGE,
target_language=config.SOURCE_LANGUAGE,
message=message
)
except:
translation = None
translation = self.translator.translate(
translator_name=config.CHOICE_TRANSLATOR,
source_language=config.TARGET_LANGUAGE,
target_language=config.SOURCE_LANGUAGE,
message=message
)
return translation
def addKeywords(self):

View File

@@ -6,34 +6,22 @@ from .translation_languages import translatorEngine, translation_lang
# Translator
class Translator():
def __init__(self):
pass
self.translator_status = {}
for translator in translatorEngine:
self.translator_status[translator] = False
self.deepl_client = None
def authentication(self, translator_name, authkey=None):
result = False
result = True
match translator_name:
case "DeepL":
self.translator_status[translator_name] = True
result = True
case "DeepL_API":
try:
self.deepl_client = deepl_Translator(authkey)
self.deepl_client.translate_text(" ", target_lang="EN-US")
self.translator_status[translator_name] = True
result = True
except:
self.translator_status[translator_name] = False
case "Google":
self.translator_status[translator_name] = True
result = True
case "Bing":
self.translator_status[translator_name] = True
result = True
result = False
return result
def translate(self, translator_name, source_language, target_language, message):
print(translator_name, source_language, target_language, message)
try:
result = ""
source_language=translation_lang[translator_name]["source"][source_language]
@@ -66,5 +54,5 @@ class Translator():
to_language=target_language,
)
except:
pass
result = False
return result