From 8e55a5426c29497360af08a9ee336d1963ae71d7 Mon Sep 17 00:00:00 2001 From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com> Date: Thu, 19 Oct 2023 08:53:44 +0900 Subject: [PATCH] =?UTF-8?q?[Update]=20Config=20Window:=20=E5=90=84?= =?UTF-8?q?=E9=A0=85=E7=9B=AE=E3=81=AE=E3=82=A8=E3=83=A9=E3=83=BC=E3=83=A1?= =?UTF-8?q?=E3=83=83=E3=82=BB=E3=83=BC=E3=82=B8=E3=82=92=E8=BF=BD=E5=8A=A0?= =?UTF-8?q?=EF=BC=88=E4=BB=AE=E7=BD=AE=E3=81=8D=E3=81=98=E3=82=83=E3=81=AA?= =?UTF-8?q?=E3=81=8F=E3=81=AA=E3=82=8A=E3=81=BE=E3=81=97=E3=81=9F=E3=80=82?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- locales/en.yml | 32 +++++++++++ locales/ja.yml | 31 +++++++++++ view.py | 69 ++++++++++++++++++++---- vrct_gui/ui_managers/UiScalingManager.py | 2 +- 4 files changed, 124 insertions(+), 10 deletions(-) diff --git a/locales/en.yml b/locales/en.yml index e1616fd8..3c1dc124 100644 --- a/locales/en.yml +++ b/locales/en.yml @@ -66,6 +66,9 @@ config_window: compact_mode: Compact Mode version: version %{version} restart_message: Apply changes with a restart. + common_error_message: + invalid_value: Invalid value. + side_menu_labels: appearance: Appearance # translation: Translation @@ -75,16 +78,21 @@ config_window: others: Others advanced_settings: Advanced Settings + transparency: label: Transparency desc: Change the main window's transparency. + appearance_theme: label: Theme [Under development] desc: Change the color theme. Currently, only the Dark theme is supported. The Light theme is under development. + ui_size: label: UI Size + font_family: label: Font Family + ui_language: label: UI Language @@ -93,22 +101,32 @@ config_window: mic_host: label: Mic Host/Driver + mic_device: label: Mic Device + mic_dynamic_energy_threshold: label_for_automatic: "Mic Energy Threshold (Current Setting: Automatic)" desc_for_automatic: "Automatically determine microphone input sensitivity." label_for_manual: "Mic Energy Threshold (Current Setting: Manual)" desc_for_manual: "Manually determine the microphone input sensitivity using the slider. Press the microphone icon to input your voice and adjust the sensitivity while monitoring the volume." + error_message: You can set it with a value between 0 to %{max}. + mic_record_timeout: label: Mic Record Timeout desc: Detects silence and, when the specified number of seconds has passed, considers the mic input to have ended. (Second(s)) + error_message: It cannot be greater than '%{mic_phrase_timeout_label}' with a value of 0 or more. + mic_phrase_timeout: label: Mic Phrase Timeout desc: Transcription processing is performed at intervals of the specified number of seconds. + error_message: It cannot be set lower than '%{mic_record_timeout_label}' with a value of 0 or more. + mic_max_phrase: label: Mic Max Phrases desc: It is the lower limit for the number of transcribed words, and only when this number is exceeded will the transcription results be displayed logs and send to VRChat. + error_message: You can set a number equal to or greater than 0. + mic_word_filter: label: Mic Word Filter desc: "It will not send the sentence if the word(s) included in the set list of words.\nHow to set: e.g. AAA,BBB,CCC" @@ -119,32 +137,46 @@ config_window: desc_for_automatic: "Automatically determine speaker input sensitivity." label_for_manual: "Speaker Energy Threshold (Current Setting: Manual)" desc_for_manual: "Manually determine the speaker input sensitivity using the slider. Press the headphones icon to listen to the audio and adjust the sensitivity while monitoring the volume." + error_message: You can set it with a value between 0 to %{max}. + no_device_error_message: No speaker device detected. + speaker_record_timeout: label: Speaker Record Timeout desc: Detects silence and, when the specified number of seconds has passed, considers the speaker input to have ended. (Second(s)) + error_message: It cannot be greater than '%{speaker_phrase_timeout_label}' with a value of 0 or more. + speaker_phrase_timeout: label: Speaker Phrase Timeout desc: Transcription processing is performed at intervals of the specified number of seconds. + error_message: It cannot be set lower than '%{speaker_record_timeout_label}' with a value of 0 or more. + speaker_max_phrase: label: Speaker Max Phrases desc: It is the lower limit for the number of transcribed words, and only when this number is exceeded will the transcription results be displayed logs. + error_message: You can set a number equal to or greater than 0. + auto_clear_the_message_box: label: Auto Clear The Message Box + notice_xsoverlay: label: Notification XSOverlay (VR Only) desc: Notify received messages by using XSOverlay's notification feature. + auto_export_message_logs: label: Auto Export Message Logs desc: Automatically export the conversation messages as a text file. + message_format: label: Message Format desc: "You can change the decoration of the message you want to send.\n[message] will be replaced with the message, and [translation] will be replaced with the translated message.\nIt will be used in Notification XSOverlay too." + send_message_to_vrc: label: Send Message To VRChat desc: There is a way to use it without sending messages to VRChat, but it is not supported. Enable this feature when you intend to send a message to VRChat. osc_ip_address: label: OSC IP Address + osc_port: label: OSC Port \ No newline at end of file diff --git a/locales/ja.yml b/locales/ja.yml index 6f807f52..dac3a0b2 100644 --- a/locales/ja.yml +++ b/locales/ja.yml @@ -67,6 +67,9 @@ config_window: compact_mode: コンパクトモード version: バージョン %{version} restart_message: 再起動して変更を適用する。 + common_error_message: + invalid_value: 無効な値です。 + side_menu_labels: appearance: デザイン # translation: 翻訳 @@ -76,16 +79,21 @@ config_window: others: その他 advanced_settings: 高度な設定 + transparency: label: 透明度 desc: メイン画面の透明度を変更できます。 + appearance_theme: label: 外観テーマ [開発中] desc: カラーテーマを変更できます。現在はDarkテーマのみ対応。Lightテーマは制作中です。 + ui_size: label: UIサイズ + font_family: label: 使用フォント + ui_language: label: UIの言語 / UI Language @@ -94,22 +102,32 @@ config_window: mic_host: label: マイク(ホスト/ドライバー) + mic_device: label: マイク (デバイス) + mic_dynamic_energy_threshold: label_for_automatic: "マイク入力感度の調整 (現在の設定: 自動)" desc_for_automatic: マイクの入力感度を自動的に調節する。 label_for_manual: "マイク入力感度の調整 (現在の設定: 手動)" desc_for_manual: スライダーを調整して入力感度を手動で決められます。マイクのアイコンを押すと、実際に声を入力し、音量を確認しながら調節できます。 + error_message: 0 から %{max} までの数値で設定できます。 + mic_record_timeout: label: 入力が終了したとみなす無音時間 desc: 無音を検出し、設定された秒数経過すると、音声入力が終了したとみなします。 + error_message: 0 以上で 「%{mic_phrase_timeout_label}」より大きくすることはできません。 + mic_phrase_timeout: label: 一度に文字起こしする時間の長さ desc: 設定された秒数ごとに文字起こし処理が行われます。 + error_message: 0 以上で 「%{mic_record_timeout_label}」より小さくすることはできません。 + mic_max_phrase: label: 送信するまでに保持する単語数 desc: 文字起こしされた単語数の下限値で、この数値を超えた場合のみ結果をVRChatへ送信し、ログに表示します。 + error_message: 0以上の数値を設定できます。 + mic_word_filter: label: ワードフィルター desc: "設定された単語を検出すると、その文章は送信されません。\n設定の例: AAA,BBB,CCC" @@ -120,32 +138,45 @@ config_window: desc_for_automatic: スピーカーの入力感度を自動的に調節する。 label_for_manual: "スピーカー入力感度の調整 (現在の設定: 手動)" desc_for_manual: スライダーを調整して入力感度を手動で決められます。ヘッドフォンのアイコンを押すと、実際に音声を聞き取り、音量を確認しながら調節できます。 + error_message: 0 から %{max} までの数値で設定できます。 + no_device_error_message: スピーカーデバイスが検出されませんでした。 + speaker_record_timeout: label: 入力が終了したとみなす無音時間 desc: 無音を検出し、設定された秒数経過すると、音声入力が終了したとみなします。 + error_message: 0 以上で 「%{speaker_phrase_timeout_label}」より大きくすることはできません。 + speaker_phrase_timeout: label: 一度に文字起こしする時間の長さ desc: 設定された秒数ごとに文字起こし処理が行われます。 + error_message: 0 以上で 「%{speaker_record_timeout_label}」より小さくすることはできません。 + speaker_max_phrase: label: ログとして表示するまでに保持する単語数 desc: 文字起こしされた単語数の下限値で、この数値を超えた場合のみ結果をログに表示します。 + error_message: 0以上の数値を設定できます。 auto_clear_the_message_box: label: 送信後はチャットボックスを空にする + notice_xsoverlay: label: XSOverlayでの通知受け取り機能を有効 (VR限定) desc: 文字起こし(受信)されたメッセージをXSOverlayの機能を使って通知として受け取れます。 + auto_export_message_logs: label: 会話ログを自動的に保存する desc: テキストファイルとしてログがlogsフォルダ内に保存されます。 + message_format: label: 送信するメッセージのフォーマット desc: "VRChatで相手に実際に見えるフォーマットを変更できます。\n[message]がメッセージに置換され、\n[translation]が翻訳されたメッセージに置換されます。\n※XSOverlayでの通知受け取り機能でも使われます。" + send_message_to_vrc: label: VRChatにメッセージを送信する desc: "サポート対象外ですが、VRChatにメッセージを送信せずに使う方法があります。送信したい場合、この機能を有効にする事を忘れないでください。" osc_ip_address: label: OSC IP Address + osc_port: label: OSC Port \ No newline at end of file diff --git a/view.py b/view.py index e6c0ed51..f16c5ee7 100644 --- a/view.py +++ b/view.py @@ -1040,38 +1040,89 @@ class View(): def showErrorMessage_MicEnergyThreshold(self): - self._showErrorMessage(vrct_gui.config_window.sb__progressbar_x_slider__entry_mic_energy_threshold, "Mic Energy Threshold Error Message") + self._showErrorMessage( + vrct_gui.config_window.sb__progressbar_x_slider__entry_mic_energy_threshold, + self._makeInvalidValueErrorMessage(i18n.t("config_window.mic_dynamic_energy_threshold.error_message", max=config.MAX_MIC_ENERGY_THRESHOLD)) + ) def showErrorMessage_MicRecordTimeout(self): - self._showErrorMessage(vrct_gui.config_window.sb__entry_mic_record_timeout, "Mic Record Timeout Error Message") + self._showErrorMessage( + vrct_gui.config_window.sb__entry_mic_record_timeout, + self._makeInvalidValueErrorMessage( + i18n.t( + "config_window.mic_record_timeout.error_message", + mic_phrase_timeout_label=i18n.t("config_window.mic_phrase_timeout.label") + ) + ) + ) def showErrorMessage_MicPhraseTimeout(self): - self._showErrorMessage(vrct_gui.config_window.sb__entry_mic_phrase_timeout, "Mic Phrase Timeout Error Message") + self._showErrorMessage( + vrct_gui.config_window.sb__entry_mic_phrase_timeout, + self._makeInvalidValueErrorMessage( + i18n.t( + "config_window.mic_phrase_timeout.error_message", + mic_record_timeout_label=i18n.t("config_window.mic_record_timeout.label") + ) + ) + ) def showErrorMessage_MicMaxPhrases(self): - self._showErrorMessage(vrct_gui.config_window.sb__entry_mic_max_phrases, "Mic Max Phrases Error Message") + self._showErrorMessage( + vrct_gui.config_window.sb__entry_mic_max_phrases, + self._makeInvalidValueErrorMessage(i18n.t("config_window.mic_max_phrase.error_message")) + ) def showErrorMessage_SpeakerEnergyThreshold(self): - self._showErrorMessage(vrct_gui.config_window.sb__progressbar_x_slider__entry_speaker_energy_threshold, "Speaker Energy Threshold Error Message") + self._showErrorMessage( + vrct_gui.config_window.sb__progressbar_x_slider__entry_speaker_energy_threshold, + self._makeInvalidValueErrorMessage(i18n.t("config_window.speaker_dynamic_energy_threshold.error_message", max=config.MAX_SPEAKER_ENERGY_THRESHOLD)) + ) def showErrorMessage_SpeakerRecordTimeout(self): - self._showErrorMessage(vrct_gui.config_window.sb__entry_speaker_record_timeout, "Speaker Record Timeout Error Message") + self._showErrorMessage( + vrct_gui.config_window.sb__entry_speaker_record_timeout, + self._makeInvalidValueErrorMessage( + i18n.t( + "config_window.speaker_record_timeout.error_message", + speaker_phrase_timeout_label=i18n.t("config_window.speaker_phrase_timeout.label") + ) + ) + ) def showErrorMessage_SpeakerPhraseTimeout(self): - self._showErrorMessage(vrct_gui.config_window.sb__entry_speaker_phrase_timeout, "Speaker Phrase Timeout Error Message") + self._showErrorMessage( + vrct_gui.config_window.sb__entry_speaker_phrase_timeout, + self._makeInvalidValueErrorMessage( + i18n.t( + "config_window.speaker_phrase_timeout.error_message", + speaker_record_timeout_label=i18n.t("config_window.speaker_record_timeout.label") + ) + ) + ) def showErrorMessage_SpeakerMaxPhrases(self): - self._showErrorMessage(vrct_gui.config_window.sb__entry_speaker_max_phrases, "Speaker Max Phrases Error Message") + self._showErrorMessage( + vrct_gui.config_window.sb__entry_speaker_max_phrases, + self._makeInvalidValueErrorMessage(i18n.t("config_window.speaker_max_phrase.error_message")) + ) def showErrorMessage_CheckSpeakerThreshold_NoDevice(self): - self._showErrorMessage(vrct_gui.config_window.sb__progressbar_x_slider__active_button_speaker_energy_threshold, "No speaker device detected") + self._showErrorMessage( + vrct_gui.config_window.sb__progressbar_x_slider__active_button_speaker_energy_threshold, + self._makeInvalidValueErrorMessage(i18n.t("config_window.speaker_dynamic_energy_threshold.no_device_error_message")) + ) def _showErrorMessage(self, target_widget, message): self.view_variable.VAR_ERROR_MESSAGE.set(message) vrct_gui._showErrorMessage(target_widget=target_widget) + @staticmethod + def _makeInvalidValueErrorMessage(error_message): + return i18n.t("config_window.common_error_message.invalid_value") + "\n" + error_message + def clearErrorMessage(self): vrct_gui._clearErrorMessage() diff --git a/vrct_gui/ui_managers/UiScalingManager.py b/vrct_gui/ui_managers/UiScalingManager.py index 488b91ed..79961dd6 100644 --- a/vrct_gui/ui_managers/UiScalingManager.py +++ b/vrct_gui/ui_managers/UiScalingManager.py @@ -217,7 +217,7 @@ class UiScalingManager(): self.config_window.SB__ERROR_MESSAGE_IPADX = (self._calculateUiSize(10), self._calculateUiSize(10)) self.config_window.SB__ERROR_MESSAGE_IPADY = (self._calculateUiSize(6), self._calculateUiSize(6)) - self.config_window.SB__ERROR_MESSAGE_FONT_SIZE = self._calculateUiSize(12) + self.config_window.SB__ERROR_MESSAGE_FONT_SIZE = self._calculateUiSize(14) self.config_window.SB__SELECTOR_FONT_SIZE = self._calculateUiSize(14)