106 lines
3.5 KiB
Python
106 lines
3.5 KiB
Python
from os import path as os_path
|
|
import yaml
|
|
from datetime import datetime
|
|
|
|
def print_textbox(textbox, message, tags=None):
|
|
now = datetime.now()
|
|
now = now.strftime('%H:%M:%S')
|
|
|
|
textbox.tag_config("ERROR", foreground="#FF0000")
|
|
textbox.tag_config("INFO", foreground="#1BFF00")
|
|
textbox.tag_config("SEND", foreground="#0378e2")
|
|
textbox.tag_config("RECEIVE", foreground="#ffa500")
|
|
|
|
textbox.configure(state='normal')
|
|
textbox.insert("end", f"[{now}][")
|
|
textbox.insert("end", f"{tags}", tags)
|
|
textbox.insert("end", f"]{message}\n")
|
|
textbox.configure(state='disabled')
|
|
textbox.see("end")
|
|
|
|
def get_localized_text(language):
|
|
file_path = os_path.join(os_path.dirname(__file__), "locales.yml")
|
|
|
|
with open(file_path, encoding="utf-8") as file:
|
|
languages_yaml_data = yaml.safe_load(file)
|
|
default_language = "en"
|
|
if language in languages_yaml_data:
|
|
localized_text = languages_yaml_data[language]
|
|
if default_language in languages_yaml_data:
|
|
default_text = languages_yaml_data[default_language]
|
|
merged_text = {**default_text, **localized_text}
|
|
return merged_text
|
|
else:
|
|
return localized_text
|
|
else:
|
|
return None
|
|
|
|
def get_key_by_value(dictionary, value):
|
|
for key, val in dictionary.items():
|
|
if val == value:
|
|
return key
|
|
return None
|
|
|
|
def widget_config_window_label_setter(self, language_yaml_data):
|
|
widget_names = [
|
|
# tab UI
|
|
"label_transparency",
|
|
"label_appearance_theme",
|
|
"label_ui_scaling",
|
|
"label_font_family",
|
|
"label_ui_language",
|
|
|
|
# tab Translation
|
|
"label_translation_translator",
|
|
"label_translation_input_language",
|
|
"label_translation_output_language",
|
|
|
|
# tab Transcription
|
|
"label_input_mic_host",
|
|
"label_input_mic_device",
|
|
"label_input_mic_voice_language",
|
|
"label_input_mic_energy_threshold",
|
|
"checkbox_input_mic_threshold_check",
|
|
"label_input_mic_dynamic_energy_threshold",
|
|
"label_input_mic_record_timeout",
|
|
"label_input_mic_phrase_timeout",
|
|
"label_input_mic_max_phrases",
|
|
"label_input_mic_word_filter",
|
|
|
|
"label_input_speaker_device",
|
|
"label_input_speaker_voice_language",
|
|
"label_input_speaker_energy_threshold",
|
|
"checkbox_input_speaker_threshold_check",
|
|
"label_input_speaker_dynamic_energy_threshold",
|
|
"label_input_speaker_record_timeout",
|
|
"label_input_speaker_phrase_timeout",
|
|
"label_input_speaker_max_phrases",
|
|
|
|
# tab Parameter
|
|
"label_ip_address",
|
|
"label_port",
|
|
"label_authkey",
|
|
"label_message_format",
|
|
|
|
# tab Others
|
|
"label_checkbox_auto_clear_chatbox",
|
|
"label_checkbox_notice_xsoverlay",
|
|
]
|
|
for name in widget_names:
|
|
widget = getattr(self, name)
|
|
text_value = language_yaml_data.get(name)
|
|
if widget is not None and text_value is not None:
|
|
widget.configure(text=text_value + ":")
|
|
|
|
def widget_main_window_label_setter(self, language_yaml_data):
|
|
widget_names = [
|
|
"checkbox_translation",
|
|
"checkbox_transcription_send",
|
|
"checkbox_transcription_receive",
|
|
"checkbox_foreground",
|
|
]
|
|
for name in widget_names:
|
|
widget = getattr(self, name)
|
|
text_value = language_yaml_data.get(name)
|
|
if widget is not None and text_value is not None:
|
|
widget.configure(text=text_value) |