diff --git a/src-python/model.py b/src-python/model.py index b6a97f3a..04bd85bc 100644 --- a/src-python/model.py +++ b/src-python/model.py @@ -271,12 +271,10 @@ class Model: self.previous_receive_message = message return repeat_flag - def convertMessageToRomajiAndHiragana(self, message: str, hiragana:bool, romaji:bool) -> str: + def convertMessageToTransliteration(self, message: str) -> str: data_list = self.kks.convert(message) - if keys_to_keep = {"orig", "hira", "hepburn"} filtered_list = [] - for item in data_list: filtered_item = {key: value for key, value in item.items() if key in keys_to_keep} filtered_list.append(filtered_item) diff --git a/src-python/webui_controller.py b/src-python/webui_controller.py index 9aaf4e89..41411cb0 100644 --- a/src-python/webui_controller.py +++ b/src-python/webui_controller.py @@ -98,6 +98,7 @@ class MicMessage: elif isinstance(message, str) and len(message) > 0: # addSentMessageLog(message) translation = [] + transliteration = [] if model.checkKeywords(message): self.action("word_filter", { "status":200, @@ -121,6 +122,10 @@ class MicMessage: } }) + if config.ENABLE_CONVERT_MESSAGE_TO_ROMAJI is True or config.ENABLE_CONVERT_MESSAGE_TO_HIRAGANA is True: + if config.SELECTED_TAB_TARGET_LANGUAGES[config.SELECTED_TAB_NO]["primary"]["language"] == "Japanese": + transliteration = model.convertMessageToTransliteration(translation[0]) + if config.ENABLE_TRANSCRIPTION_SEND is True: if config.ENABLE_SEND_MESSAGE_TO_VRC is True: if config.ENABLE_SEND_ONLY_TRANSLATED_MESSAGES is True: @@ -136,7 +141,8 @@ class MicMessage: "status":200, "result": { "message":message, - "translation":translation + "translation":translation, + "transliteration":transliteration } }) if config.ENABLE_LOGGER is True: @@ -200,6 +206,7 @@ class SpeakerMessage: }) elif isinstance(message, str) and len(message) > 0: translation = [] + transliteration = [] if model.detectRepeatReceiveMessage(message): return elif config.ENABLE_TRANSLATION is False: @@ -215,6 +222,10 @@ class SpeakerMessage: } }) + if config.ENABLE_CONVERT_MESSAGE_TO_ROMAJI is True or config.ENABLE_CONVERT_MESSAGE_TO_HIRAGANA is True: + if config.SELECTED_TAB_TARGET_LANGUAGES[config.SELECTED_TAB_NO]["primary"]["language"] == "Japanese": + transliteration = model.convertMessageToTransliteration(message) + if config.ENABLE_TRANSCRIPTION_RECEIVE is True: if config.ENABLE_OVERLAY_SMALL_LOG is True: if model.overlay.initialized is True: @@ -236,7 +247,8 @@ class SpeakerMessage: "status":200, "result": { "message":message, - "translation":translation + "translation":translation, + "transliteration":transliteration, } }) if config.ENABLE_LOGGER is True: @@ -290,6 +302,7 @@ class ChatMessage: if len(message) > 0: # addSentMessageLog(message) translation = [] + transliteration = [] if config.ENABLE_TRANSLATION is False: pass else: @@ -303,9 +316,9 @@ class ChatMessage: } }) - message_romaji = [] - if config.ENABLE_CONVERT_MESSAGE_TO_ROMAJI is True or config.ENABLE_CONVERT_MESSAGE_TO_HIRAGANA is True: - message_romaji = model.convertMessageToRomajiAndHiragana(message) + if config.ENABLE_CONVERT_MESSAGE_TO_ROMAJI is True or config.ENABLE_CONVERT_MESSAGE_TO_HIRAGANA is True: + if config.SELECTED_TAB_TARGET_LANGUAGES[config.SELECTED_TAB_NO]["primary"]["language"] == "Japanese": + transliteration = model.convertMessageToTransliteration(translation[0]) # send OSC message if config.ENABLE_SEND_MESSAGE_TO_VRC is True: @@ -335,7 +348,7 @@ class ChatMessage: "id":id, "message":message, "translation":translation, - "romaji":message_romaji, + "transliteration":transliteration, }, } @@ -505,6 +518,26 @@ def callbackDisableMultiLanguageTranslation(*args, **kwargs) -> dict: config.ENABLE_MULTI_LANGUAGE_TRANSLATION = False return {"status":200, "result":config.ENABLE_MULTI_LANGUAGE_TRANSLATION} +def callbackEnableConvertMessageToRomaji(*args, **kwargs) -> dict: + printLog("Enable Convert Message To Romaji") + config.ENABLE_CONVERT_MESSAGE_TO_ROMAJI = True + return {"status":200, "result":config.ENABLE_CONVERT_MESSAGE_TO_ROMAJI} + +def callbackDisableConvertMessageToRomaji(*args, **kwargs) -> dict: + printLog("Disable Convert Message To Romaji") + config.ENABLE_CONVERT_MESSAGE_TO_ROMAJI = False + return {"status":200, "result":config.ENABLE_CONVERT_MESSAGE_TO_ROMAJI} + +def callbackEnableConvertMessageToHiragana(*args, **kwargs) -> dict: + printLog("Enable Convert Message To Hiragana") + config.ENABLE_CONVERT_MESSAGE_TO_HIRAGANA = True + return {"status":200, "result":config.ENABLE_CONVERT_MESSAGE_TO_HIRAGANA} + +def callbackDisableConvertMessageToHiragana(*args, **kwargs) -> dict: + printLog("Disable Convert Message To Hiragana") + config.ENABLE_CONVERT_MESSAGE_TO_HIRAGANA = False + return {"status":200, "result":config.ENABLE_CONVERT_MESSAGE_TO_HIRAGANA} + def callbackEnableMainWindowSidebarCompactMode(*args, **kwargs) -> dict: printLog("Enable MainWindow Sidebar Compact Mode") config.IS_MAIN_WINDOW_SIDEBAR_COMPACT_MODE = True diff --git a/src-python/webui_mainloop.py b/src-python/webui_mainloop.py index 7425b956..deb3d63b 100644 --- a/src-python/webui_mainloop.py +++ b/src-python/webui_mainloop.py @@ -30,6 +30,8 @@ config_mapping = { "/config/selected_tab_target_languages": "SELECTED_TAB_TARGET_LANGUAGES", "/config/selected_transcription_engine": "SELECTED_TRANSCRIPTION_ENGINE", "/config/enable_multi_translation": "ENABLE_MULTI_LANGUAGE_TRANSLATION", + "/config/enable_convert_message_to_romaji": "ENABLE_CONVERT_MESSAGE_TO_ROMAJI", + "/config/enable_convert_message_to_hiragana": "ENABLE_CONVERT_MESSAGE_TO_HIRAGANA", "/config/is_main_window_sidebar_compact_mode": "IS_MAIN_WINDOW_SIDEBAR_COMPACT_MODE", "/config/transparency": "TRANSPARENCY", "/config/appearance_theme": "APPEARANCE_THEME", @@ -98,6 +100,10 @@ controller_mapping = { "/controller/callback_close_config_window": controller.callbackCloseConfigWindow, "/controller/callback_enable_multi_language_translation": controller.callbackEnableMultiLanguageTranslation, "/controller/callback_disable_multi_language_translation": controller.callbackDisableMultiLanguageTranslation, + "/controller/callback_enable_convert_message_to_romaji": controller.callbackEnableConvertMessageToRomaji, + "/controller/callback_disable_convert_message_to_romaji": controller.callbackDisableConvertMessageToRomaji, + "/controller/callback_enable_convert_message_to_hiragana": controller.callbackEnableConvertMessageToHiragana, + "/controller/callback_disable_convert_message_to_hiragana": controller.callbackDisableConvertMessageToHiragana, "/controller/callback_enable_main_window_sidebar_compact_mode": controller.callbackEnableMainWindowSidebarCompactMode, "/controller/callback_disable_main_window_sidebar_compact_mode": controller.callbackDisableMainWindowSidebarCompactMode, "/controller/callback_enable_translation": controller.callbackEnableTranslation, @@ -331,6 +337,7 @@ if __name__ == "__main__": match endpoint: case "/controller/callback_messagebox_send": # handleControllerRequest("/controller/callback_enable_translation") + # handleControllerRequest("/controller/callback_enable_convert_message_to_romaji") data = {"id":"123456", "message":"ใƒ†ใ‚นใƒˆ"} case "/controller/callback_selected_translation_engine": data = "DeepL"