👍️[Update] Model : 多言語対応の処理をtabごとに持つように変更

This commit is contained in:
misyaguziya
2024-12-10 17:11:11 +09:00
parent 3cadad4a71
commit bd38d220c8
4 changed files with 36 additions and 52 deletions

View File

@@ -264,7 +264,10 @@ class Config:
for k1, v1 in v0.items(): for k1, v1 in v0.items():
language = v1["language"] language = v1["language"]
country = v1["country"] country = v1["country"]
if language not in list(transcription_lang.keys()) or country not in list(transcription_lang[language].keys()): enable = v1["enable"]
if (language not in list(transcription_lang.keys()) or
country not in list(transcription_lang[language].keys()) or
not isinstance(enable, bool)):
value[k0][k1] = value_old[k0][k1] value[k0][k1] = value_old[k0][k1]
self._SELECTED_YOUR_LANGUAGES = value self._SELECTED_YOUR_LANGUAGES = value
self.saveConfig(inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@@ -282,7 +285,10 @@ class Config:
for k1, v1 in v0.items(): for k1, v1 in v0.items():
language = v1["language"] language = v1["language"]
country = v1["country"] country = v1["country"]
if language not in list(transcription_lang.keys()) or country not in list(transcription_lang[language].keys()): enable = v1["enable"]
if (language not in list(transcription_lang.keys()) or
country not in list(transcription_lang[language].keys()) or
not isinstance(enable, bool)):
value[k0][k1] = value_old[k0][k1] value[k0][k1] = value_old[k0][k1]
self._SELECTED_TARGET_LANGUAGES = value self._SELECTED_TARGET_LANGUAGES = value
self.saveConfig(inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@@ -299,17 +305,6 @@ class Config:
self._SELECTED_TRANSCRIPTION_ENGINE = value self._SELECTED_TRANSCRIPTION_ENGINE = value
self.saveConfig(inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property
@json_serializable('MULTI_LANGUAGE_TRANSLATION')
def MULTI_LANGUAGE_TRANSLATION(self):
return self._MULTI_LANGUAGE_TRANSLATION
@MULTI_LANGUAGE_TRANSLATION.setter
def MULTI_LANGUAGE_TRANSLATION(self, value):
if isinstance(value, bool):
self._MULTI_LANGUAGE_TRANSLATION = value
self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('CONVERT_MESSAGE_TO_ROMAJI') @json_serializable('CONVERT_MESSAGE_TO_ROMAJI')
def CONVERT_MESSAGE_TO_ROMAJI(self): def CONVERT_MESSAGE_TO_ROMAJI(self):
@@ -964,6 +959,7 @@ class Config:
"primary": { "primary": {
"language": "Japanese", "language": "Japanese",
"country": "Japan", "country": "Japan",
"enable": True,
}, },
} }
self._SELECTED_TARGET_LANGUAGES = {} self._SELECTED_TARGET_LANGUAGES = {}
@@ -972,18 +968,20 @@ class Config:
"primary": { "primary": {
"language": "English", "language": "English",
"country": "United States", "country": "United States",
"enable": True,
}, },
"secondary": { "secondary": {
"language": "English", "language": "English",
"country": "United States", "country": "United States",
"enable": False,
}, },
"tertiary": { "tertiary": {
"language": "English", "language": "English",
"country": "United States", "country": "United States",
"enable": False,
}, },
} }
self._SELECTED_TRANSCRIPTION_ENGINE = "Google" self._SELECTED_TRANSCRIPTION_ENGINE = "Google"
self._MULTI_LANGUAGE_TRANSLATION = False
self._CONVERT_MESSAGE_TO_ROMAJI = False self._CONVERT_MESSAGE_TO_ROMAJI = False
self._CONVERT_MESSAGE_TO_HIRAGANA = False self._CONVERT_MESSAGE_TO_HIRAGANA = False
self._MAIN_WINDOW_SIDEBAR_COMPACT_MODE = False self._MAIN_WINDOW_SIDEBAR_COMPACT_MODE = False

View File

@@ -164,21 +164,17 @@ class Model:
languages = sorted(languages, key=lambda x: x['language']) languages = sorted(languages, key=lambda x: x['language'])
return languages return languages
def findTranslationEngines(self, source_lang, target_lang, multi_language_translation=False): def findTranslationEngines(self, source_lang, target_lang):
compatible_engines = [] compatible_engines = []
for engine in list(translation_lang.keys()): for engine in list(translation_lang.keys()):
languages = translation_lang.get(engine, {}).get("source", {}) languages = translation_lang.get(engine, {}).get("source", {})
source_langs = [e["language"] for e in list(source_lang.values()) if e["enable"] is True]
if multi_language_translation is True: target_langs = [e["language"] for e in list(target_lang.values()) if e["enable"] is True]
source_langs = [e["language"] for e in list(source_lang.values())]
target_langs = [e["language"] for e in list(target_lang.values())]
else:
source_langs = [source_lang["primary"]["language"]]
target_langs = [target_lang["primary"]["language"]]
language_list = list(languages.keys()) language_list = list(languages.keys())
if all(e in language_list for e in source_langs) and all(e in language_list for e in target_langs): if all(e in language_list for e in source_langs) and all(e in language_list for e in target_langs):
compatible_engines.append(engine) compatible_engines.append(engine)
if "DeepL_API" in compatible_engines: if "DeepL_API" in compatible_engines:
if config.AUTH_KEYS["DeepL_API"] is None: if config.AUTH_KEYS["DeepL_API"] is None:
compatible_engines.remove('DeepL_API') compatible_engines.remove('DeepL_API')
@@ -218,10 +214,10 @@ class Model:
translations = [] translations = []
success_flags = [] success_flags = []
for key in target_languages.keys(): for value in target_languages.values():
if key == "primary" or config.MULTI_LANGUAGE_TRANSLATION is True: if value["enable"] is True:
target_language = target_languages[key]["language"] target_language = value["language"]
target_country = target_languages[key]["country"] target_country = value["country"]
if target_language is not None or target_country is not None: if target_language is not None or target_country is not None:
translation, success_flag = self.getTranslate( translation, success_flag = self.getTranslate(
translator_name, translator_name,

View File

@@ -484,7 +484,6 @@ class Controller:
engines = model.findTranslationEngines( engines = model.findTranslationEngines(
config.SELECTED_YOUR_LANGUAGES[config.SELECTED_TAB_NO], config.SELECTED_YOUR_LANGUAGES[config.SELECTED_TAB_NO],
config.SELECTED_TARGET_LANGUAGES[config.SELECTED_TAB_NO], config.SELECTED_TARGET_LANGUAGES[config.SELECTED_TAB_NO],
config.MULTI_LANGUAGE_TRANSLATION,
) )
return {"status":200, "result":engines} return {"status":200, "result":engines}
@@ -540,20 +539,6 @@ class Controller:
config.SELECTED_TRANSCRIPTION_ENGINE = str(data) config.SELECTED_TRANSCRIPTION_ENGINE = str(data)
return {"status":200, "result":config.SELECTED_TRANSCRIPTION_ENGINE} return {"status":200, "result":config.SELECTED_TRANSCRIPTION_ENGINE}
@staticmethod
def getMultiLanguageTranslation(*args, **kwargs) -> dict:
return {"status":200, "result":config.MULTI_LANGUAGE_TRANSLATION}
@staticmethod
def setEnableMultiLanguageTranslation(*args, **kwargs) -> dict:
config.MULTI_LANGUAGE_TRANSLATION = True
return {"status":200, "result":config.MULTI_LANGUAGE_TRANSLATION}
@staticmethod
def setDisableMultiLanguageTranslation(*args, **kwargs) -> dict:
config.MULTI_LANGUAGE_TRANSLATION = False
return {"status":200, "result":config.MULTI_LANGUAGE_TRANSLATION}
@staticmethod @staticmethod
def getConvertMessageToRomaji(*args, **kwargs) -> dict: def getConvertMessageToRomaji(*args, **kwargs) -> dict:
return {"status":200, "result":config.CONVERT_MESSAGE_TO_ROMAJI} return {"status":200, "result":config.CONVERT_MESSAGE_TO_ROMAJI}

View File

@@ -141,10 +141,6 @@ mapping = {
"/set/data/deepl_auth_key": {"status": False, "variable":controller.setDeeplAuthKey}, "/set/data/deepl_auth_key": {"status": False, "variable":controller.setDeeplAuthKey},
"/delete/data/deepl_auth_key": {"status": False, "variable":controller.delDeeplAuthKey}, "/delete/data/deepl_auth_key": {"status": False, "variable":controller.delDeeplAuthKey},
"/get/data/multi_language_translation": {"status": True, "variable":controller.getMultiLanguageTranslation},
"/set/enable/multi_language_translation": {"status": True, "variable":controller.setEnableMultiLanguageTranslation},
"/set/disable/multi_language_translation": {"status": True, "variable":controller.setDisableMultiLanguageTranslation},
"/get/data/convert_message_to_romaji": {"status": True, "variable":controller.getConvertMessageToRomaji}, "/get/data/convert_message_to_romaji": {"status": True, "variable":controller.getConvertMessageToRomaji},
"/set/enable/convert_message_to_romaji": {"status": True, "variable":controller.setEnableConvertMessageToRomaji}, "/set/enable/convert_message_to_romaji": {"status": True, "variable":controller.setEnableConvertMessageToRomaji},
"/set/disable/convert_message_to_romaji": {"status": True, "variable":controller.setDisableConvertMessageToRomaji}, "/set/disable/convert_message_to_romaji": {"status": True, "variable":controller.setDisableConvertMessageToRomaji},
@@ -440,43 +436,52 @@ if __name__ == "__main__":
"1":{ "1":{
"primary": { "primary": {
"language": "Japanese", "language": "Japanese",
"country": "Japan" "country": "Japan",
"enabled": True,
}, },
"secondary": { "secondary": {
"language": "English", "language": "English",
"country": "United States" "country": "United States",
"enabled": True,
}, },
"tertiary": { "tertiary": {
"language": "Chinese Simplified", "language": "Chinese Simplified",
"country": "China" "country": "China",
"enabled": True,
} }
}, },
"2":{ "2":{
"primary":{ "primary":{
"language":"English", "language":"English",
"country":"United States", "country":"United States",
"enabled": True,
}, },
"secondary":{ "secondary":{
"language":"English", "language":"English",
"country":"United States" "country":"United States",
"enabled": True,
}, },
"tertiary":{ "tertiary":{
"language":"English", "language":"English",
"country":"United States" "country":"United States",
"enabled": True,
}, },
}, },
"3":{ "3":{
"primary":{ "primary":{
"language":"English", "language":"English",
"country":"United States", "country":"United States",
"enabled": True,
}, },
"secondary":{ "secondary":{
"language":"English", "language":"English",
"country":"United States" "country":"United States",
"enabled": True,
}, },
"tertiary":{ "tertiary":{
"language":"English", "language":"English",
"country":"United States" "country":"United States",
"enabled": True,
}, },
}, },
} }