diff --git a/controller.py b/controller.py index 7ef2f457..22d9eb2d 100644 --- a/controller.py +++ b/controller.py @@ -65,11 +65,11 @@ def sendMicMessage(message): elif config.ENABLE_TRANSLATION is False: pass else: - translation = model.getInputTranslate(message) - # if translation is False: - # config.ENABLE_TRANSLATION = False - # translation = "" - # view.translationEngineLimitErrorProcess() + translation, success = model.getInputTranslate(message) + if success is False: + config.CHOICE_INPUT_TRANSLATOR = "CTranslate2" + config.CHOICE_OUTPUT_TRANSLATOR = "CTranslate2" + updateTranslationEngineAndEngineList() if config.ENABLE_TRANSCRIPTION_SEND is True: if config.ENABLE_SEND_MESSAGE_TO_VRC is True: @@ -132,11 +132,11 @@ def receiveSpeakerMessage(message): if config.ENABLE_TRANSLATION is False: pass else: - translation = model.getOutputTranslate(message) - # if translation is False: - # config.ENABLE_TRANSLATION = False - # translation = "" - # view.translationEngineLimitErrorProcess() + translation, success = model.getOutputTranslate(message) + if success is False: + config.CHOICE_INPUT_TRANSLATOR = "CTranslate2" + config.CHOICE_OUTPUT_TRANSLATOR = "CTranslate2" + updateTranslationEngineAndEngineList() if config.ENABLE_TRANSCRIPTION_RECEIVE is True: if config.ENABLE_NOTICE_XSOVERLAY is True: @@ -202,12 +202,11 @@ def sendChatMessage(message): if config.ENABLE_TRANSLATION is False: pass else: - translation = model.getInputTranslate(message) - # if translation is False: - # config.ENABLE_TRANSLATION = False - # translation = "" - # view.translationEngineLimitErrorProcess() - + translation, success = model.getInputTranslate(message) + if success is False: + config.CHOICE_INPUT_TRANSLATOR = "CTranslate2" + config.CHOICE_OUTPUT_TRANSLATOR = "CTranslate2" + updateTranslationEngineAndEngineList() # send OSC message if config.ENABLE_SEND_MESSAGE_TO_VRC is True: if config.ENABLE_SEND_ONLY_TRANSLATED_MESSAGES is True: @@ -249,9 +248,15 @@ def messageBoxFocusOut(e): if config.ENABLE_SEND_MESSAGE_TO_VRC is True: model.oscStopSendTyping() -# func select languages -def getLatestSelectableTranslationEngines(): - return model.findTranslationEngines(config.SOURCE_LANGUAGE, config.TARGET_LANGUAGE) +def updateTranslationEngineAndEngineList(): + engine = config.CHOICE_INPUT_TRANSLATOR + engines = model.findTranslationEngines(config.SOURCE_LANGUAGE, config.TARGET_LANGUAGE) + if engine not in engines: + engine = engines[0] + config.CHOICE_INPUT_TRANSLATOR = engine + config.CHOICE_OUTPUT_TRANSLATOR = engine + view.updateSelectableTranslationEngineList(engines) + view.setGuiVariable_SelectedTranslationEngine(engine) def initSetTranslateEngine(): engine = config.SELECTED_TAB_YOUR_TRANSLATOR_ENGINES[config.SELECTED_TAB_NO] @@ -288,8 +293,7 @@ def setYourLanguageAndCountry(select): language, country = model.getLanguageAndCountry(select) config.SOURCE_LANGUAGE = language config.SOURCE_COUNTRY = country - view.updateSelectableTranslationEngineList(getLatestSelectableTranslationEngines()) - view.setGuiVariable_SelectedTranslationEngine(config.CHOICE_OUTPUT_TRANSLATOR) + updateTranslationEngineAndEngineList() view.printToTextbox_selectedYourLanguages(select) def setTargetLanguageAndCountry(select): @@ -299,8 +303,7 @@ def setTargetLanguageAndCountry(select): language, country = model.getLanguageAndCountry(select) config.TARGET_LANGUAGE = language config.TARGET_COUNTRY = country - view.updateSelectableTranslationEngineList(getLatestSelectableTranslationEngines()) - view.setGuiVariable_SelectedTranslationEngine(config.CHOICE_OUTPUT_TRANSLATOR) + updateTranslationEngineAndEngineList() view.printToTextbox_selectedTargetLanguages(select) def swapYourLanguageAndTargetLanguage(): @@ -336,8 +339,7 @@ def callbackSelectedLanguagePresetTab(selected_tab_no): config.TARGET_LANGUAGE = language config.TARGET_COUNTRY = country view.printToTextbox_changedLanguagePresetTab(config.SELECTED_TAB_NO) - view.updateSelectableTranslationEngineList(getLatestSelectableTranslationEngines()) - view.setGuiVariable_SelectedTranslationEngine(config.CHOICE_OUTPUT_TRANSLATOR) + updateTranslationEngineAndEngineList() def callbackSelectedTranslationEngine(selected_translation_engine): print("callbackSelectedTranslationEngine", selected_translation_engine) @@ -497,6 +499,7 @@ def callbackSetDeeplAuthkey(value): auth_keys = config.AUTH_KEYS auth_keys["DeepL_API"] = None config.AUTH_KEYS = auth_keys + updateTranslationEngineAndEngineList() # Transcription Tab # Transcription (Mic) @@ -840,16 +843,18 @@ def createMainWindow(): initSetConfigByExeArguments() initSetTranslateEngine() initSetLanguageAndCountry() - view.updateSelectableTranslationEngineList(getLatestSelectableTranslationEngines()) if config.AUTH_KEYS["DeepL_API"] is not None: - if model.authenticationTranslatorDeepLAuthKey("DeepL_API", config.AUTH_KEYS["DeepL_API"]) is False: + if model.authenticationTranslatorDeepLAuthKey(auth_key=config.AUTH_KEYS["DeepL_API"]) is False: # error update Auth key auth_keys = config.AUTH_KEYS auth_keys["DeepL_API"] = None config.AUTH_KEYS = auth_keys view.printToTextbox_AuthenticationError() + # set Translation Engine + updateTranslationEngineAndEngineList() + # set word filter model.addKeywords() diff --git a/model.py b/model.py index 185e6dcc..01277bb5 100644 --- a/model.py +++ b/model.py @@ -123,11 +123,12 @@ class Model: if source_lang in languages and target_lang in languages: compatible_engines.append(engine) if "DeepL_API" in compatible_engines: - if self.translator.deepl_client is None: + if config.AUTH_KEYS["DeepL_API"] is None: compatible_engines.remove('DeepL_API') return compatible_engines - def getInputTranslate(self, message, fnc=None): + def getInputTranslate(self, message): + translation_success_flag = True translator_name=config.CHOICE_INPUT_TRANSLATOR source_language=config.SOURCE_LANGUAGE target_language=config.TARGET_LANGUAGE @@ -143,6 +144,7 @@ class Model: # 翻訳失敗時のフェールセーフ処理 if translation is False: + translation_success_flag = False translation = self.translator.translate( translator_name="CTranslate2", source_language=source_language, @@ -150,13 +152,10 @@ class Model: target_country=target_country, message=message ) - try: - fnc() - except Exception: - pass - return translation + return translation, translation_success_flag - def getOutputTranslate(self, message, fnc=None): + def getOutputTranslate(self, message): + translation_success_flag = True translator_name=config.CHOICE_OUTPUT_TRANSLATOR source_language=config.TARGET_LANGUAGE target_language=config.SOURCE_LANGUAGE @@ -172,6 +171,7 @@ class Model: # 翻訳失敗時のフェールセーフ処理 if translation is False: + translation_success_flag = False translation = self.translator.translate( translator_name="CTranslate2", source_language=source_language, @@ -179,11 +179,7 @@ class Model: target_country=target_country, message=message ) - try: - fnc() - except Exception: - pass - return translation + return translation, translation_success_flag def addKeywords(self): for f in config.INPUT_MIC_WORD_FILTER: