Merge branch 'ui' into develop

This commit is contained in:
Sakamoto Shiina
2025-03-18 21:12:38 +09:00
13 changed files with 330 additions and 115 deletions

View File

@@ -14,7 +14,7 @@ common_error:
failed_download_weight_whisper: "Whisper weight download error." failed_download_weight_whisper: "Whisper weight download error."
translation_limit: "Translation engine limit error." translation_limit: "Translation engine limit error."
deepl_auth_key_invalid_length: "DeepL auth key length is not correct." deepl_auth_key_invalid_length: "DeepL auth key length is not correct."
deepl_auth_key_failed_authentication: "Authentication failure of deepL auth key." deepl_auth_key_failed_authentication: "Auth Key is incorrect or Usage limit reached."
invalid_value_mic_record_timeout: "It cannot be greater than '{{mic_phrase_timeout_label}}' with a value of 0 or more." invalid_value_mic_record_timeout: "It cannot be greater than '{{mic_phrase_timeout_label}}' with a value of 0 or more."
invalid_value_mic_phrase_timeout: "It cannot be set lower than '{{mic_record_timeout_label}}' with a value of 0 or more." invalid_value_mic_phrase_timeout: "It cannot be set lower than '{{mic_record_timeout_label}}' with a value of 0 or more."
@@ -29,13 +29,14 @@ main_page:
transcription_send: "Voice2Chatbox" transcription_send: "Voice2Chatbox"
transcription_receive: "Speaker2Log" transcription_receive: "Speaker2Log"
foreground: "Foreground" foreground: "Foreground"
language_settings: "Language Settings" language_settings: "Language Settings"
your_language: "Your Language" your_language: "Your Language"
translate_each_other_label: "Translate Each Other" translate_each_other_label: "Translate Each Other"
swap_button_label: "Swap Languages" swap_button_label: "Swap Languages"
target_language: "Target Language" target_language: "Target Language"
translator: "Translator" translator: "Translator"
# translator_label_default: "Default" translator_label_default: "Default"
translator_selector: translator_selector:
is_selected_same_language: "Since the same language is selected for both '{{your_language}}' and '{{target_language}}', only '{{ctranslate2}}' is available." is_selected_same_language: "Since the same language is selected for both '{{your_language}}' and '{{target_language}}', only '{{ctranslate2}}' is available."
@@ -83,11 +84,11 @@ config_page:
device: device:
check_volume: "Check Volume" check_volume: "Check Volume"
mic_host_device:
label: "Mic Device"
label_auto_select: "Auto Select" label_auto_select: "Auto Select"
label_host: "Host/Driver" label_host: "Host/Driver"
label_device: "Device" label_device: "Device"
mic_host_device:
label: "Mic Device"
mic_dynamic_energy_threshold: mic_dynamic_energy_threshold:
label_for_automatic: "Mic Energy Threshold (Current Setting: Automatic)" label_for_automatic: "Mic Energy Threshold (Current Setting: Automatic)"
desc_for_automatic: "Automatically determine microphone input sensitivity." desc_for_automatic: "Automatically determine microphone input sensitivity."
@@ -95,8 +96,6 @@ config_page:
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." 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."
speaker_device: speaker_device:
label: "Speaker Device" label: "Speaker Device"
label_auto_select: "Auto Select"
label_device: "Device"
speaker_dynamic_energy_threshold: speaker_dynamic_energy_threshold:
label_for_automatic: "Speaker Energy Threshold (Current Setting: Automatic)" label_for_automatic: "Speaker Energy Threshold (Current Setting: Automatic)"
desc_for_automatic: "Automatically determine speaker input sensitivity." desc_for_automatic: "Automatically determine speaker input sensitivity."
@@ -133,11 +132,10 @@ config_page:
deepl_auth_key: deepl_auth_key:
label: "DeepL Auth Key" label: "DeepL Auth Key"
desc: "Please select {{translator}} on the main screen with DeepL_API when using. ※Some languages may not be supported." desc: "Please select {{translator}} on the main screen with DeepL_API when using. ※Some languages may not be supported."
open_auth_key_webpage: "Open DeepL Account Webpage"
save: "Save" save: "Save"
edit: "Edit" edit: "Edit"
open_auth_key_webpage: "Open DeepL Account Webpage"
auth_key_success: "Auth key update completed." auth_key_success: "Auth key update completed."
auth_key_error: "Auth Key is incorrect or Usage limit reached."
transcription: transcription:
section_label_mic: "Mic" section_label_mic: "Mic"
@@ -197,11 +195,11 @@ config_page:
ui_scaling: "UI Scaling" ui_scaling: "UI Scaling"
display_duration: "Display duration" display_duration: "Display duration"
fadeout_duration: "Fadeout duration" fadeout_duration: "Fadeout duration"
common_settings: "Common Settings"
tracker: "Tracker" tracker: "Tracker"
hmd: "HMD" hmd: "HMD"
left_hand: "Left hand" left_hand: "Left hand"
right_hand: "Right hand" right_hand: "Right hand"
common_settings: "Common Settings"
overlay_show_only_translated_messages: overlay_show_only_translated_messages:
label: "Show Only Translated Messages" label: "Show Only Translated Messages"

View File

@@ -12,30 +12,31 @@ common_error:
threshold_invalid_value: "{{min}} から {{max}} までの数値で設定できます。" threshold_invalid_value: "{{min}} から {{max}} までの数値で設定できます。"
failed_download_weight_ctranslate2: "CTranslate2 モデルのダウンロードに失敗しました。" failed_download_weight_ctranslate2: "CTranslate2 モデルのダウンロードに失敗しました。"
failed_download_weight_whisper: "Whisper モデルのダウンロードに失敗しました。" failed_download_weight_whisper: "Whisper モデルのダウンロードに失敗しました。"
translation_limit: "翻訳エンジンの使用制限に達したか、一時的に制限がかけられています。" translation_limit: "翻訳エンジンの使用制限に達したか、一時的に利用制限がかけられています。"
deepl_auth_key_invalid_length: "認証キーの文字数が間違っています。" deepl_auth_key_invalid_length: "認証キーの文字数が間違っています。"
deepl_auth_key_failed_authentication: "認証キーが間違っているか、API使用制限が上限に達しています。" deepl_auth_key_failed_authentication: "認証キーが間違っているか、API使用制限が上限に達しています。"
invalid_value_mic_record_timeout: "0 以上で 「{{mic_phrase_timeout_label}}」 より大きくすることはできません。" invalid_value_mic_record_timeout: "0 以上で 「{{mic_phrase_timeout_label}}」 より大きくすることはできません。"
invalid_value_mic_phrase_timeout: "0 以上で 「{{mic_record_timeout_label}}」 より小さくすることはできません。" invalid_value_mic_phrase_timeout: "0 以上で 「{{mic_record_timeout_label}}」 より小さくすることはできません。"
invalid_value_mic_max_phrase: "0以上の数値を設定できます。" invalid_value_mic_max_phrase: "0 以上の数値を設定できます。"
invalid_value_speaker_record_timeout: "0 以上で 「{{speaker_phrase_timeout_label}}」 より大きくすることはできません。" invalid_value_speaker_record_timeout: "0 以上で 「{{speaker_phrase_timeout_label}}」 より大きくすることはできません。"
invalid_value_speaker_phrase_timeout: "0 以上で 「{{speaker_record_timeout_label}}」 より小さくすることはできません。" invalid_value_speaker_phrase_timeout: "0 以上で 「{{speaker_record_timeout_label}}」 より小さくすることはできません。"
invalid_value_speaker_max_phrase: "0以上の数値を設定できます。" invalid_value_speaker_max_phrase: "0 以上の数値を設定できます。"
main_page: main_page:
translation: "翻訳" translation: "翻訳"
transcription_send: "音声認識マイク" transcription_send: "音声認識 マイク"
transcription_receive: "音声認識スピーカー" transcription_receive: "音声認識 スピーカー"
foreground: "最前面固定" foreground: "最前面固定"
language_settings: "言語設定" language_settings: "言語設定"
your_language: "あなたの言語" your_language: "あなたの言語"
translate_each_other_label: "双方向に翻訳" translate_each_other_label: "双方向に翻訳"
swap_button_label: "言語を入れ替え" swap_button_label: "言語を入れ替え"
target_language: "相手の言語" target_language: "相手の言語"
translator: "翻訳エンジン" translator: "翻訳エンジン"
# translator_label_default: "Default" translator_label_default: "デフォルト"
translator_selector: translator_selector:
is_selected_same_language: "「{{your_language}}」と「{{target_language}}」に同じ言語が選択がされているため、「{{ctranslate2}}」のみが使用できます。" is_selected_same_language: "「{{your_language}}」と「{{target_language}}」に同じ言語が選択がされているため、「{{ctranslate2}}」のみが使用できます。"
@@ -83,23 +84,22 @@ config_page:
device: device:
check_volume: "音量チェック" check_volume: "音量チェック"
mic_host_device:
label: "マイク (デバイス)"
label_auto_select: "自動選択" label_auto_select: "自動選択"
label_host: "ホスト/ドライバー" label_host: "ホスト/ドライバー"
label_device: "デバイス" label_device: "デバイス"
mic_host_device:
label: "マイク (デバイス)"
mic_dynamic_energy_threshold: mic_dynamic_energy_threshold:
label_for_automatic: "マイク入力感度の調整 (現在の設定: 自動)" label_for_automatic: "マイク入力感度の調整 現在の設定: 自動"
desc_for_automatic: "マイクの入力感度を自動的に調節する。" desc_for_automatic: "マイクの入力感度を自動的に調節する。"
label_for_manual: "マイク入力感度の調整 (現在の設定: 手動)" label_for_manual: "マイク入力感度の調整 現在の設定: 手動"
desc_for_manual: "スライダーを調整して入力感度を手動で決められます。マイクのアイコンを押すと、実際に声を入力し、音量を確認しながら調節できます。" desc_for_manual: "スライダーを調整して入力感度を手動で決められます。マイクのアイコンを押すと、実際に声を入力し、音量を確認しながら調節できます。"
speaker_device: speaker_device:
label: "スピーカー (デバイス)" label: "スピーカー (デバイス)"
label_auto_select: "自動選択"
speaker_dynamic_energy_threshold: speaker_dynamic_energy_threshold:
label_for_automatic: "スピーカー入力感度の調整 (現在の設定: 自動)" label_for_automatic: "スピーカー入力感度の調整 現在の設定: 自動"
desc_for_automatic: "スピーカーの入力感度を自動的に調節する。" desc_for_automatic: "スピーカーの入力感度を自動的に調節する。"
label_for_manual: "スピーカー入力感度の調整 (現在の設定: 手動)" label_for_manual: "スピーカー入力感度の調整 現在の設定: 手動"
desc_for_manual: "スライダーを調整して入力感度を手動で決められます。ヘッドフォンのアイコンを押すと、実際に音声を聞き取り、音量を確認しながら調節できます。" desc_for_manual: "スライダーを調整して入力感度を手動で決められます。ヘッドフォンのアイコンを押すと、実際に音声を聞き取り、音量を確認しながら調節できます。"
appearance: appearance:
@@ -125,8 +125,8 @@ config_page:
ctranslate2_weight_type: ctranslate2_weight_type:
label: "AI翻訳 {{ctranslate2}} のモデルタイプ" label: "AI翻訳 {{ctranslate2}} のモデルタイプ"
desc: "翻訳エンジン「{{ctranslate2}}」で翻訳する際に、使用する翻訳モデルを選択できます。" desc: "翻訳エンジン「{{ctranslate2}}」で翻訳する際に、使用する翻訳モデルを選択できます。"
small: "通常モデル ({{capacity}})" small: "通常モデル {{capacity}}"
large: "高精度モデル ({{capacity}})" large: "高精度モデル {{capacity}}"
ctranslate2_compute_device: ctranslate2_compute_device:
label: "AI翻訳 {{ctranslate2}} の処理デバイス" label: "AI翻訳 {{ctranslate2}} の処理デバイス"
deepl_auth_key: deepl_auth_key:
@@ -169,8 +169,8 @@ config_page:
whisper_weight_type: whisper_weight_type:
label: "Whisperモデルのタイプ" label: "Whisperモデルのタイプ"
desc: "容量が大きいモデルほど精度は高いですが、その分CPUやGPUを占有します。\n※特にmediumより容量の大きいモデルは、CPU/GPUの性能によっては使用すらも困難です。" desc: "容量が大きいモデルほど精度は高いですが、その分CPUやGPUを占有します。\n※特にmediumより容量の大きいモデルは、CPU/GPUの性能によっては使用すらも困難です。"
model_template: "{{model_name}} モデル ({{capacity}})" model_template: "{{model_name}} モデル {{capacity}}"
recommended_model_template: "{{model_name}} モデル ({{capacity}}) (推奨)" recommended_model_template: "{{model_name}} モデル {{capacity}} [推奨]"
whisper_compute_device: whisper_compute_device:
label: "Whisperで使用する処理デバイス" label: "Whisperで使用する処理デバイス"
@@ -196,17 +196,17 @@ config_page:
display_duration: "表示時間" display_duration: "表示時間"
fadeout_duration: "フェードアウト時間" fadeout_duration: "フェードアウト時間"
common_settings: "共通設定" common_settings: "共通設定"
tracker: "表示するトラッカーの位置"
hmd: "HMD" hmd: "HMD"
left_hand: "左手" left_hand: "左手"
right_hand: "右手" right_hand: "右手"
tracker: "表示するトラッカーの位置"
overlay_show_only_translated_messages: overlay_show_only_translated_messages:
label: "翻訳後のメッセージのみ表示する" label: "翻訳後のメッセージのみ表示する"
others: others:
section_label_sounds: "サウンド" section_label_sounds: "サウンド"
auto_clear_the_message_box: auto_clear_the_message_box:
label: "送信後はチャットボックスを空にする" label: "送信後はメッセージ入力欄を空にする"
send_only_translated_messages: send_only_translated_messages:
label: "翻訳後のメッセージのみ送信する" label: "翻訳後のメッセージのみ送信する"
auto_export_message_logs: auto_export_message_logs:
@@ -229,11 +229,11 @@ config_page:
toggle_vrct_visibility: toggle_vrct_visibility:
label: "VRCTの最小化/アクティブ化の切り替え" label: "VRCTの最小化/アクティブ化の切り替え"
toggle_translation: toggle_translation:
label: "{{translation}}機能切り替え" label: "{{translation}}」 オン/オフの切り替え"
toggle_transcription_send: toggle_transcription_send:
label: "{{transcription_send}}機能切り替え" label: "{{transcription_send}}」 オン/オフの切り替え"
toggle_transcription_receive: toggle_transcription_receive:
label: "{{transcription_receive}}機能切り替え" label: "{{transcription_receive}}」 オン/オフの切り替え"
advanced_settings: advanced_settings:
osc_ip_address: osc_ip_address:

View File

@@ -29,13 +29,17 @@ main_page:
transcription_send: "음성인식 (마이크)" transcription_send: "음성인식 (마이크)"
transcription_receive: "음성인식 (스피커)" transcription_receive: "음성인식 (스피커)"
foreground: "항상 위로" foreground: "항상 위로"
language_settings: "언어 설정" language_settings: "언어 설정"
your_language: "당신의 언어" your_language: "당신의 언어"
translate_each_other_label: "양방향으로 번역" translate_each_other_label: "양방향으로 번역"
swap_button_label: "언어 교체" swap_button_label: "언어 교체"
target_language: "상대방의 언어" target_language: "상대방의 언어"
translator: "번역 엔진" translator: "번역 엔진"
# translator_label_default: "기본값" translator_label_default: "기본값"
translator_selector:
is_selected_same_language:
message_log: message_log:
all: "전체" all: "전체"
@@ -43,6 +47,9 @@ main_page:
received: "수신" received: "수신"
system: "시스템" system: "시스템"
show_resend_button:
resend_button_on_hover_desc:
state_text_enabled: "Enabled" state_text_enabled: "Enabled"
state_text_disabled: "Disabled" state_text_disabled: "Disabled"
@@ -54,24 +61,33 @@ main_page:
updating: "업데이트 중..." updating: "업데이트 중..."
update_modal: update_modal:
update_software: "새 버전을 다운로드하고 재시작합니다.\n조금 시간이 걸립니다. 지금 시작할까요?" cpu_desc:
deny_update_software: "나중에 하기" cuda_desc:
accept_update_software: "업데이트 및 재시작" cuda_compare_cpu_desc:
cuda_disk_space_desc:
close_modal:
download_latest_and_restart:
is_latest_version_already:
is_current_compute_device:
config_page: config_page:
version: "버전 {{version}}" version: "버전 {{version}}"
model_download_button_label:
side_menu_labels: side_menu_labels:
device:
appearance: "모양" appearance: "모양"
translation: "번역" translation: "번역"
transcription: "음성인식" transcription: "음성인식"
others: "기타" others: "기타"
hotkeys:
advanced_settings: "고급 설정" advanced_settings: "고급 설정"
device: device:
mic_host: check_volume:
label: "마이크 호스트/드라이버" label_auto_select:
mic_device: label_host: "호스트/드라이버"
label_device:
mic_host_device:
label: "마이크 장치" label: "마이크 장치"
mic_dynamic_energy_threshold: mic_dynamic_energy_threshold:
label_for_automatic: "음성 입력 최소 볼륨 (현재 설정: 자동)" label_for_automatic: "음성 입력 최소 볼륨 (현재 설정: 자동)"
@@ -111,15 +127,20 @@ config_page:
desc: "오프라인 번역 시의 번역 모델을 변경합니다." desc: "오프라인 번역 시의 번역 모델을 변경합니다."
small: "일반 모델 ({{capacity}})" small: "일반 모델 ({{capacity}})"
large: "정밀 모델 ({{capacity}})" large: "정밀 모델 ({{capacity}})"
ctranslate2_compute_device:
label:
deepl_auth_key: deepl_auth_key:
label: "DeepL 인증키" label: "DeepL 인증키"
desc: "사용시 메인화면에 있는 {{translator}}를 DeepL_API로 변경해 주세요.\n지원하지 않는 언어도 있습니다." desc: "사용시 메인화면에 있는 {{translator}}를 DeepL_API로 변경해 주세요.\n지원하지 않는 언어도 있습니다."
open_auth_key_webpage: "DeepL 계정 페이지 열기" open_auth_key_webpage: "DeepL 계정 페이지 열기"
save:
edit:
auth_key_success: "인증키 갱신이 완료되었습니다." auth_key_success: "인증키 갱신이 완료되었습니다."
transcription: transcription:
section_label_mic: "마이크" section_label_mic: "마이크"
section_label_speaker: "스피커" section_label_speaker: "스피커"
section_label_transcription_engines:
mic_record_timeout: mic_record_timeout:
label: "최대 무음 시간" label: "최대 무음 시간"
desc: "무음을 감지하고 설정된 시간(초)만큼의 시간이 지나면 음성 입력이 종료된 것으로 판단합니다." desc: "무음을 감지하고 설정된 시간(초)만큼의 시간이 지나면 음성 입력이 종료된 것으로 판단합니다."
@@ -143,29 +164,76 @@ config_page:
speaker_max_phrase: speaker_max_phrase:
label: "최대 입력 절(phrases) 수" label: "최대 입력 절(phrases) 수"
desc: "식된 단어 수의 하한값으로, 이 수치를 초과하는 경우에만 결과를 로그에 표시합니다." desc: "식된 단어 수의 하한값으로, 이 수치를 초과하는 경우에만 결과를 로그에 표시합니다."
use_whisper_feature: select_transcription_engine:
label: "음성 인식에 Whisper 모델을 사용" label:
desc: "일부 언어에서는 음성 인식의 정확도가 향상될 수 있어요. 음성 인식 중 CPU 사용률이 올라가기 때문에 사용하시는 PC의 사양을 고려하여 이 기능을 사용해주세요."
whisper_weight_type: whisper_weight_type:
label: "Whisper 모델 타입" label: "Whisper 모델 타입"
# desc: "기본적으로 용량이 많은 모델일수록 정밀도는 높지만, 음성 인식의 시간이 늘어나며 CPU 사용률도 늘어나요.각 모델의 설명은 문서를 참조해주세요.\n※특히 medium보다 용량이 큰 모델은 CPU의 성능에 따라서는 사용조차 어려울 수 있어요. " desc:
model_template: "{{model_name}} 모델 ({{capacity}})" model_template: "{{model_name}} 모델 ({{capacity}})"
recommended_model_template: "{{model_name}} 모델 ({{capacity}}) (권장)" recommended_model_template: "{{model_name}} 모델 ({{capacity}}) (권장)"
whisper_compute_device:
label:
vr:
single_line:
multi_lines:
overlay_enable:
restore_default_settings:
position:
rotation:
x_position:
y_position:
z_position:
x_rotation:
y_rotation:
z_rotation:
sample_text_button:
start:
stop:
sample_text:
opacity:
ui_scaling:
display_duration:
fadeout_duration:
common_settings:
tracker:
hmd:
left_hand:
right_hand:
overlay_show_only_translated_messages:
label:
others: others:
section_label_sounds:
auto_clear_the_message_box: auto_clear_the_message_box:
label: "챗박스 자동 삭제" label: "챗박스 자동 삭제"
send_only_translated_messages: send_only_translated_messages:
label: "번역된 메시지만 전송" label: "번역된 메시지만 전송"
notice_xsoverlay:
label: "XSOverlay에서 알림 수신 기능 활성화"
desc: "수신된 메시지를 XSOverlay의 기능을 통해 알림으로 받아볼 수 있습니다."
auto_export_message_logs: auto_export_message_logs:
label: "대화 로그 자동 저장" label: "대화 로그 자동 저장"
desc: "logs 폴더에 텍스트 파일로 로그가 저장됩니다." desc: "logs 폴더에 텍스트 파일로 로그가 저장됩니다."
vrc_mic_mute_sync:
label:
desc:
send_message_to_vrc: send_message_to_vrc:
label: "VRChat에 메시지 전송" label: "VRChat에 메시지 전송"
desc: "VRChat에 메시지를 보내지 않고 사용할 수 있는 방법이 있지만 지원되지 않습니다. VRChat에 메시지를 보내려면 이 기능을 활성화하세요." desc: "VRChat에 메시지를 보내지 않고 사용할 수 있는 방법이 있지만 지원되지 않습니다. VRChat에 메시지를 보내려면 이 기능을 활성화하세요."
notification_vrc_sfx:
label:
desc:
send_received_message_to_vrc:
label:
desc:
hotkeys:
toggle_vrct_visibility:
label:
toggle_translation:
label:
toggle_transcription_send:
label:
toggle_transcription_receive:
label:
advanced_settings: advanced_settings:
osc_ip_address: osc_ip_address:
@@ -174,3 +242,5 @@ config_page:
label: "OSC 포트" label: "OSC 포트"
open_config_filepath: open_config_filepath:
label: "설정 파일 열기" label: "설정 파일 열기"
switch_compute_device:
label:

View File

@@ -29,13 +29,17 @@ main_page:
transcription_send: "你的语音转文字" transcription_send: "你的语音转文字"
transcription_receive: "他人语音转文字" transcription_receive: "他人语音转文字"
foreground: "顶层显示" foreground: "顶层显示"
language_settings: "语言设定" language_settings: "语言设定"
your_language: "你的语言" your_language: "你的语言"
translate_each_other_label: "双向翻译" translate_each_other_label: "双向翻译"
swap_button_label: "互换" swap_button_label: "互换"
target_language: "目标语言" target_language: "目标语言"
translator: "翻译器" translator: "翻译器"
# translator_label_default: "默认" translator_label_default: "默认"
translator_selector:
is_selected_same_language:
message_log: message_log:
all: "全部" all: "全部"
@@ -43,6 +47,9 @@ main_page:
received: "接受" received: "接受"
system: "系统" system: "系统"
show_resend_button:
resend_button_on_hover_desc:
state_text_enabled: "启用" state_text_enabled: "启用"
state_text_disabled: "停用" state_text_disabled: "停用"
@@ -54,24 +61,33 @@ main_page:
updating: "更新中..." updating: "更新中..."
update_modal: update_modal:
update_software_desc: "下载新版本并自动启动\n会花少许时间,现在更新吗?" cpu_desc:
deny_update_software: "稍后再说" cuda_desc:
accept_update_software: "更新后自动启动" cuda_compare_cpu_desc:
cuda_disk_space_desc:
close_modal:
download_latest_and_restart:
is_latest_version_already:
is_current_compute_device:
config_page: config_page:
version: "版本 {{version}}" version: "版本 {{version}}"
model_download_button_label:
side_menu_labels: side_menu_labels:
device:
appearance: "外观" appearance: "外观"
translation: "翻译" translation: "翻译"
transcription: "转录" transcription: "转录"
others: "其他" others: "其他"
hotkeys:
advanced_settings: "高级设置" advanced_settings: "高级设置"
device: device:
mic_host: check_volume: "Check Volume"
label: "麦克风(host/driver)" label_auto_select: "Auto Select"
mic_device: label_host: "Host/Driver"
label_device: "Device"
mic_host_device:
label: "麦克风 (设备)" label: "麦克风 (设备)"
mic_dynamic_energy_threshold: mic_dynamic_energy_threshold:
label_for_automatic: "麦克风输入阈值(当前设置:自动)" label_for_automatic: "麦克风输入阈值(当前设置:自动)"
@@ -111,15 +127,20 @@ config_page:
desc: "可以选择用于离线翻译的翻译模型" desc: "可以选择用于离线翻译的翻译模型"
small: "普通模型 ({{capacity}})" small: "普通模型 ({{capacity}})"
large: "高精度模型 ({{capacity}})" large: "高精度模型 ({{capacity}})"
ctranslate2_compute_device:
label:
deepl_auth_key: deepl_auth_key:
label: "DeepL 授权密匙" label: "DeepL 授权密匙"
desc: "在使用的时候,使用时请在主屏幕上通过 DeepL_API 选择 {{translator}}\n※某些语言可能不支持" desc: "在使用的时候,使用时请在主屏幕上通过 DeepL_API 选择 {{translator}}\n※某些语言可能不支持"
open_auth_key_webpage: "打开DeepL账号页面" open_auth_key_webpage: "打开DeepL账号页面"
save:
edit:
auth_key_success: "授权密匙认证完成。" auth_key_success: "授权密匙认证完成。"
transcription: transcription:
section_label_mic: "你的麦克风" section_label_mic: "你的麦克风"
section_label_speaker: "他人声音" section_label_speaker: "他人声音"
section_label_transcription_engines:
mic_record_timeout: mic_record_timeout:
label: "语音输入结束后的静音时间" label: "语音输入结束后的静音时间"
desc: "当检测到静音并经过设定的秒数后,语音输入即被视为完成。" desc: "当检测到静音并经过设定的秒数后,语音输入即被视为完成。"
@@ -143,31 +164,47 @@ config_page:
speaker_max_phrase: speaker_max_phrase:
label: "语音接收时的最小单词数" label: "语音接收时的最小单词数"
desc: "转录字数的下限,只有超过这个数字,才会记录转录结果" desc: "转录字数的下限,只有超过这个数字,才会记录转录结果"
use_whisper_feature: select_transcription_engine:
label: "使用Whisper模型翻译" label:
desc: "在某些语言中,语音识别的准确性可能会提高.语音识别的过程中,CPU占有率可能会提高,请根据你的pc性能来决定是否使用它."
whisper_weight_type: whisper_weight_type:
label: "选择某个Whisper模型" label: "选择某个Whisper模型"
# desc: |- desc:
# 通常来说,容量越大的模型精度也会越高,但也会增加文字显示所需要的时间和CPU的使用率。请浏览各个模型的文档
# ※特别是大于medium容量的模型、因CPU性能原因甚至无法使用。
model_template: "{{model_name}} 模型 ({{capacity}})" model_template: "{{model_name}} 模型 ({{capacity}})"
recommended_model_template: "{{model_name}} 模型 ({{capacity}}) (推荐)" recommended_model_template: "{{model_name}} 模型 ({{capacity}}) (推荐)"
whisper_compute_device:
label:
vr: vr:
single_line:
multi_lines:
overlay_enable:
restore_default_settings: "恢复默认设置" restore_default_settings: "恢复默认设置"
opacity: "透明度" position:
ui_scaling: "大小" rotation:
x_position: "X轴(左右)" x_position: "X轴(左右)"
y_position: "Y轴(上下)" y_position: "Y轴(上下)"
z_position: "Z轴(前后)" z_position: "Z轴(前后)"
x_rotation: "X轴旋转" x_rotation: "X轴旋转"
y_rotation: "Y轴旋转" y_rotation: "Y轴旋转"
z_rotation: "Z轴旋转" z_rotation: "Z轴旋转"
sample_text_button:
start:
stop:
sample_text:
opacity: "透明度"
ui_scaling: "大小"
display_duration: "显示持续时间" display_duration: "显示持续时间"
fadeout_duration: "渐隐持续时间" fadeout_duration: "渐隐持续时间"
common_settings:
tracker:
hmd:
left_hand:
right_hand:
overlay_show_only_translated_messages:
label:
others: others:
section_label_sounds:
auto_clear_the_message_box: auto_clear_the_message_box:
label: "发言后自动清空chatbox" label: "发言后自动清空chatbox"
send_only_translated_messages: send_only_translated_messages:
@@ -181,6 +218,22 @@ config_page:
send_message_to_vrc: send_message_to_vrc:
label: "发送信息至VRChat" label: "发送信息至VRChat"
desc: "不发送信息至VRChat的情况下也能使用它,但该功能现在并未完成.在想要发送信息时,请不要忘记打开这个功能." desc: "不发送信息至VRChat的情况下也能使用它,但该功能现在并未完成.在想要发送信息时,请不要忘记打开这个功能."
notification_vrc_sfx:
label:
desc:
send_received_message_to_vrc:
label:
desc:
hotkeys:
toggle_vrct_visibility:
label:
toggle_translation:
label:
toggle_transcription_send:
label:
toggle_transcription_receive:
label:
advanced_settings: advanced_settings:
osc_ip_address: osc_ip_address:
@@ -189,3 +242,5 @@ config_page:
label: "OSC 端口" label: "OSC 端口"
open_config_filepath: open_config_filepath:
label: "打开设置文件" label: "打开设置文件"
switch_compute_device:
label:

View File

@@ -29,13 +29,17 @@ main_page:
transcription_send: "麥克風轉文字" transcription_send: "麥克風轉文字"
transcription_receive: "喇叭轉文字" transcription_receive: "喇叭轉文字"
foreground: "最上層顯示" foreground: "最上層顯示"
language_settings: "語言設定" language_settings: "語言設定"
your_language: "你的語言" your_language: "你的語言"
translate_each_other_label: "互相翻譯" translate_each_other_label: "互相翻譯"
swap_button_label: "交換語言" swap_button_label: "交換語言"
target_language: "目標語言" target_language: "目標語言"
translator: "翻譯器" translator: "翻譯器"
# translator_label_default: "預設" translator_label_default: "預設"
translator_selector:
is_selected_same_language:
message_log: message_log:
all: "全部" all: "全部"
@@ -43,6 +47,9 @@ main_page:
received: "已接收" received: "已接收"
system: "系統" system: "系統"
show_resend_button:
resend_button_on_hover_desc:
state_text_enabled: "啟用" state_text_enabled: "啟用"
state_text_disabled: "停用" state_text_disabled: "停用"
@@ -54,25 +61,33 @@ main_page:
updating: "正在更新..." updating: "正在更新..."
update_modal: update_modal:
update_software_desc: "下載新版本並自動更新 VRCT。\n會花一些時間現在更新嗎" cpu_desc:
deny_update_software: "稍後再說" cuda_desc:
accept_update_software: "更新" cuda_compare_cpu_desc:
cuda_disk_space_desc:
close_modal:
download_latest_and_restart:
is_latest_version_already:
is_current_compute_device:
config_page: config_page:
version: "版本 {{version}}" version: "版本 {{version}}"
model_download_button_label:
side_menu_labels: side_menu_labels:
device:
appearance: "外觀" appearance: "外觀"
translation: "翻譯" translation: "翻譯"
transcription: "轉錄" transcription: "轉錄"
vr: "VR"
others: "其他" others: "其他"
hotkeys:
advanced_settings: "進階設定" advanced_settings: "進階設定"
device: device:
mic_host: check_volume: "Check Volume"
label: "麥克風 Host/Driver" label_auto_select: "Auto Select"
mic_device: label_host: "Host/Driver"
label_device: "Device"
mic_host_device:
label: "麥克風裝置" label: "麥克風裝置"
mic_dynamic_energy_threshold: mic_dynamic_energy_threshold:
label_for_automatic: "麥克風能量閾值(當前設置:自動)" label_for_automatic: "麥克風能量閾值(當前設置:自動)"
@@ -112,15 +127,20 @@ config_page:
desc: "你可以選擇用於離線翻譯引擎的翻譯模型。" desc: "你可以選擇用於離線翻譯引擎的翻譯模型。"
small: "基本模型({{capacity}}" small: "基本模型({{capacity}}"
large: "高準確率模型({{capacity}}" large: "高準確率模型({{capacity}}"
ctranslate2_compute_device:
label:
deepl_auth_key: deepl_auth_key:
label: "DeepL 授權金鑰" label: "DeepL 授權金鑰"
desc: "使用 DeepL API 時請在主螢幕選擇 {{translator}}。※可能不支援某些語言。" desc: "使用 DeepL API 時請在主螢幕選擇 {{translator}}。※可能不支援某些語言。"
open_auth_key_webpage: "打開 DeepL 帳號頁面" open_auth_key_webpage: "打開 DeepL 帳號頁面"
save:
edit:
auth_key_success: "授權金鑰更新完成。" auth_key_success: "授權金鑰更新完成。"
transcription: transcription:
section_label_mic: "麥克風" section_label_mic: "麥克風"
section_label_speaker: "喇叭" section_label_speaker: "喇叭"
section_label_transcription_engines:
mic_record_timeout: mic_record_timeout:
label: "麥克風音訊 - 判定結束時間" label: "麥克風音訊 - 判定結束時間"
desc: "麥克風未收到音訊後,結束一段話的判定時間(秒)。" desc: "麥克風未收到音訊後,結束一段話的判定時間(秒)。"
@@ -144,38 +164,51 @@ config_page:
speaker_max_phrase: speaker_max_phrase:
label: "喇叭音訊 - 最大單詞數量" label: "喇叭音訊 - 最大單詞數量"
desc: "只有在單詞超過此數量時,才會記錄結果並發送到 VRChat。" desc: "只有在單詞超過此數量時,才會記錄結果並發送到 VRChat。"
use_whisper_feature: select_transcription_engine:
label: "使用 Whisper 模型進行轉錄" label:
desc: "在某些語言中語音識別的準確性可能會提高。使用語音識別時CPU使用率會增加請根據你的PC規格考慮是否使用此功能。"
whisper_weight_type: whisper_weight_type:
label: "選擇 Whisper 模型" label: "選擇 Whisper 模型"
# desc: |- desc:
# 一般來說容量較大的模型往往具有更高的準確性但這也導致轉錄時間較長和CPU使用率增加。請參考文檔了解各模型的說明。
# ※特別是超過中等大小的模型根據CPU性能可能難以運行。
model_template: "{{model_name}}模型({{capacity}}" model_template: "{{model_name}}模型({{capacity}}"
recommended_model_template: "{{model_name}}模型({{capacity}})(推薦)" recommended_model_template: "{{model_name}}模型({{capacity}})(推薦)"
whisper_compute_device:
label:
vr: vr:
single_line:
multi_lines:
overlay_enable:
restore_default_settings: "恢復預設設定" restore_default_settings: "恢復預設設定"
opacity: "透明度" position:
ui_scaling: "介面縮放" rotation:
x_position: "X軸左右" x_position: "X軸左右"
y_position: "Y軸上下" y_position: "Y軸上下"
z_position: "Z軸前後" z_position: "Z軸前後"
x_rotation: "X軸旋轉" x_rotation: "X軸旋轉"
y_rotation: "Y軸旋轉" y_rotation: "Y軸旋轉"
z_rotation: "Z軸旋轉" z_rotation: "Z軸旋轉"
sample_text_button:
start:
stop:
sample_text:
opacity: "透明度"
ui_scaling: "介面縮放"
display_duration: "顯示持續時間" display_duration: "顯示持續時間"
fadeout_duration: "淡出持續時間" fadeout_duration: "淡出持續時間"
common_settings:
tracker:
hmd:
left_hand:
right_hand:
overlay_show_only_translated_messages:
label:
others: others:
section_label_sounds:
auto_clear_the_message_box: auto_clear_the_message_box:
label: "自動清除 Chatbox" label: "自動清除 Chatbox"
send_only_translated_messages: send_only_translated_messages:
label: "僅發送翻譯訊息" label: "僅發送翻譯訊息"
notice_xsoverlay:
label: "XSOverlay 通知"
desc: "從 XSOverlay 的通知功能接收訊息。"
auto_export_message_logs: auto_export_message_logs:
label: "自動匯出訊息記錄" label: "自動匯出訊息記錄"
desc: "自動將對話訊息匯出為文字文件。" desc: "自動將對話訊息匯出為文字文件。"
@@ -185,6 +218,22 @@ config_page:
send_message_to_vrc: send_message_to_vrc:
label: "發送訊息到 VRChat" label: "發送訊息到 VRChat"
desc: "當你打算向 VRChat 發送訊息時啟用此功能。" desc: "當你打算向 VRChat 發送訊息時啟用此功能。"
notification_vrc_sfx:
label:
desc:
send_received_message_to_vrc:
label:
desc:
hotkeys:
toggle_vrct_visibility:
label:
toggle_translation:
label:
toggle_transcription_send:
label:
toggle_transcription_receive:
label:
advanced_settings: advanced_settings:
osc_ip_address: osc_ip_address:
@@ -193,3 +242,5 @@ config_page:
label: "OSC 端口" label: "OSC 端口"
open_config_filepath: open_config_filepath:
label: "打開設定文件" label: "打開設定文件"
switch_compute_device:
label:

View File

@@ -82,7 +82,7 @@ const Mic_Container = () => {
<div className={styles.device_contents}> <div className={styles.device_contents}>
<div className={styles.device_auto_select_wrapper}> <div className={styles.device_auto_select_wrapper}>
<p className={styles.device_secondary_label}>{t("config_page.device.mic_host_device.label_auto_select")}</p> <p className={styles.device_secondary_label}>{t("config_page.device.label_auto_select")}</p>
<SwitchBox <SwitchBox
variable={currentEnableAutoMicSelect} variable={currentEnableAutoMicSelect}
toggleFunction={toggleEnableAutoMicSelect} toggleFunction={toggleEnableAutoMicSelect}
@@ -91,7 +91,7 @@ const Mic_Container = () => {
<div className={styles.device_dropdown_wrapper}> <div className={styles.device_dropdown_wrapper}>
<div className={styles.device_dropdown}> <div className={styles.device_dropdown}>
<p className={styles.device_secondary_label}>{t("config_page.device.mic_host_device.label_host")}</p> <p className={styles.device_secondary_label}>{t("config_page.device.label_host")}</p>
<DropdownMenu <DropdownMenu
dropdown_id="mic_host" dropdown_id="mic_host"
selected_id={currentSelectedMicHost.data} selected_id={currentSelectedMicHost.data}
@@ -104,7 +104,7 @@ const Mic_Container = () => {
</div> </div>
<div className={styles.device_dropdown}> <div className={styles.device_dropdown}>
<p className={styles.device_secondary_label}>{t("config_page.device.mic_host_device.label_device")}</p> <p className={styles.device_secondary_label}>{t("config_page.device.label_device")}</p>
<DropdownMenu <DropdownMenu
dropdown_id="mic_device" dropdown_id="mic_device"
selected_id={currentSelectedMicDevice.data} selected_id={currentSelectedMicDevice.data}
@@ -178,7 +178,7 @@ const Speaker_Container = () => {
<div className={styles.device_contents}> <div className={styles.device_contents}>
<div className={styles.device_auto_select_wrapper}> <div className={styles.device_auto_select_wrapper}>
<p className={styles.device_secondary_label}>{t("config_page.device.speaker_device.label_auto_select")}</p> <p className={styles.device_secondary_label}>{t("config_page.device.label_auto_select")}</p>
<SwitchBox <SwitchBox
variable={currentEnableAutoSpeakerSelect} variable={currentEnableAutoSpeakerSelect}
toggleFunction={toggleEnableAutoSpeakerSelect} toggleFunction={toggleEnableAutoSpeakerSelect}
@@ -186,7 +186,7 @@ const Speaker_Container = () => {
</div> </div>
<div className={styles.device_dropdown}> <div className={styles.device_dropdown}>
<p className={styles.device_secondary_label}>{t("config_page.device.mic_host_device.label_device")}</p> <p className={styles.device_secondary_label}>{t("config_page.device.label_device")}</p>
<DropdownMenu <DropdownMenu
dropdown_id="speaker_device" dropdown_id="speaker_device"
label={t("config_page.device.speaker_device.label")} label={t("config_page.device.speaker_device.label")}

View File

@@ -15,12 +15,13 @@ export const TranslatorSelector = ({selected_id, translation_engines, is_selecte
<div className={styles.wrapper}> <div className={styles.wrapper}>
{columns.map((column, column_index) => ( {columns.map((column, column_index) => (
<div className={styles.column_wrapper} key={`column_${column_index}`}> <div className={styles.column_wrapper} key={`column_${column_index}`}>
{column.map(({ id, label, is_available }) => ( {column.map(({ id, label, is_available, is_default }) => (
<TranslatorBox <TranslatorBox
key={id} key={id}
id={id} id={id}
label={label} label={label}
is_available={is_available} is_available={is_available}
is_default={is_default}
is_selected={(id === selected_id)} is_selected={(id === selected_id)}
/> />
))} ))}
@@ -45,6 +46,7 @@ export const TranslatorSelector = ({selected_id, translation_engines, is_selecte
}; };
const TranslatorBox = (props) => { const TranslatorBox = (props) => {
const { t } = useTranslation();
const { setSelectedTranslationEngines} = useLanguageSettings(); const { setSelectedTranslationEngines} = useLanguageSettings();
const { updateIsOpenedTranslatorSelector} = useStore_IsOpenedTranslatorSelector(); const { updateIsOpenedTranslatorSelector} = useStore_IsOpenedTranslatorSelector();
@@ -53,6 +55,10 @@ const TranslatorBox = (props) => {
{ [styles.is_selected]: props.is_selected }, { [styles.is_selected]: props.is_selected },
{ [styles.is_available]: props.is_available } { [styles.is_available]: props.is_available }
); );
const label_default_class_name = clsx(
styles.label_default,
{ [styles.is_selected]: props.is_selected },
);
const selectTranslator = () => { const selectTranslator = () => {
if (props.is_selected === false) { if (props.is_selected === false) {
@@ -60,9 +66,11 @@ const TranslatorBox = (props) => {
} }
updateIsOpenedTranslatorSelector(false); updateIsOpenedTranslatorSelector(false);
}; };
return ( return (
<div className={box_class_name} onClick={selectTranslator}> <div className={box_class_name} onClick={selectTranslator}>
<p className={styles.translator_name}>{props.label}</p> <p className={styles.translator_name}>{props.label}</p>
{props.is_default && <p className={label_default_class_name}>{t("main_page.translator_label_default")}</p>}
</div> </div>
); );
}; };

View File

@@ -17,26 +17,26 @@
} }
.wrapper { .wrapper {
// padding: 1rem;
width: 100%; width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
gap: 1rem; gap: 1.4rem;
} }
.column_wrapper { .column_wrapper {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
gap: 1rem; gap: 1.2rem;
} }
$box_size: 6rem; $box_size: 6.2rem;
.box { .box {
width: 9.2rem; position: relative;
width: 9.4rem;
height: $box_size; height: $box_size;
background-color: var(--dark_875_color); background-color: var(--dark_875_color);
display: flex; display: flex;
@@ -51,10 +51,10 @@ $box_size: 6rem;
} }
&:active { &:active {
background-color: var(--dark_900_color); background-color: var(--dark_900_color);
border: 0.1rem solid var(--primary_300_color); outline: 0.1rem solid var(--primary_300_color);
} }
&.is_selected { &.is_selected {
border: 0.2rem solid var(--primary_300_color); outline: 0.2rem solid var(--primary_300_color);
} }
&:not(.is_available) { &:not(.is_available) {
pointer-events: none; pointer-events: none;
@@ -69,6 +69,22 @@ $box_size: 6rem;
font-size: 1.4rem; font-size: 1.4rem;
} }
.label_default {
background-color: var(--dark_875_color);
outline: 0.1rem solid var(--dark_1000_color);
padding: 0.2rem 0.4rem;
border-radius: 0.2rem;
font-size: 1.2rem;
position: absolute;
top: -0.8rem;
right: -0.8rem;
pointer-events: none;
&.is_selected {
outline: 0.1rem solid var(--primary_300_color);
}
}
.is_selected_same_language_wrapper { .is_selected_same_language_wrapper {
position: absolute; position: absolute;
bottom: 0; bottom: 0;

View File

@@ -78,7 +78,9 @@ $pending_label_color: var(--dark_500_color);
} }
.toggle_control { .toggle_control {
@include toggle_control_styles; // @include toggle_control_styles;
@include toggle_control_styles($toggle_width: 3.6rem, $toggle_height: 1.4rem);
display: flex; display: flex;
justify-content: end; justify-content: end;
align-items: center; align-items: center;

View File

@@ -48,35 +48,41 @@ $toggle_width: 4rem;
$toggle_height: 1.6rem; $toggle_height: 1.6rem;
$toggle_gutter: 0.1rem; $toggle_gutter: 0.1rem;
$toggle_radius: 50%; $toggle_radius: 50%;
$toggle_control_speed: .15s; $toggle_control_speed: 0.15s;
$toggle_control_ease: ease-out; $toggle_control_ease: ease-out;
$toggle_radius: calc($toggle_height / 2); @mixin toggle_control_styles(
$toggle_control_size: $toggle_height - calc($toggle_gutter * 2); $toggle_width: $toggle_width,
$toggle_height: $toggle_height,
$toggle_gutter: $toggle_gutter,
$toggle_background_color_on: $toggle_background_color_on,
$toggle_background_color_off: $toggle_background_color_off,
$toggle_control_color: $toggle_control_color,
$toggle_control_speed: $toggle_control_speed,
$toggle_control_ease: $toggle_control_ease
) {
$toggle_radius: calc($toggle_height / 2);
$toggle_control_size: calc($toggle_height - ($toggle_gutter * 2));
@mixin toggle_control_styles {
display: block;
position: relative;
height: 100%;
width: auto;
.control { .control {
position: relative; position: relative;
height: $toggle_height;
width: $toggle_width; width: $toggle_width;
height: $toggle_height;
border-radius: $toggle_radius; border-radius: $toggle_radius;
background-color: $toggle_background_color_off; background-color: $toggle_background_color_off;
transition: background-color $toggle_control_speed $toggle_control_ease;
&:after { &:after {
content: ""; content: "";
position: absolute; position: absolute;
left: $toggle_gutter;
top: $toggle_gutter; top: $toggle_gutter;
left: $toggle_gutter;
width: $toggle_control_size; width: $toggle_control_size;
height: $toggle_control_size; height: $toggle_control_size;
border-radius: $toggle_radius; border-radius: $toggle_radius;
background: $toggle_control_color; background: $toggle_control_color;
transition: left $toggle_control_speed $toggle_control_ease; transition: left $toggle_control_speed $toggle_control_ease;
} }
&.is_pending:after{ &.is_pending:after {
background-color: var(--dark_600_color); background-color: var(--dark_600_color);
} }
&.is_hovered { &.is_hovered {

View File

@@ -15,7 +15,7 @@ export const useNotificationStatus = () => {
}); });
}; };
const showNotification_Success = (message) => { const showNotification_Success = (message, options = {}) => {
updateNotificationStatus({ updateNotificationStatus({
status: "success", status: "success",
is_open: true, is_open: true,

View File

@@ -1,7 +1,11 @@
import { useStore_DeepLAuthKey } from "@store"; import { useStore_DeepLAuthKey } from "@store";
import { useStdoutToPython } from "@logics/useStdoutToPython"; import { useStdoutToPython } from "@logics/useStdoutToPython";
import { useTranslation } from "react-i18next";
import { useNotificationStatus } from "@logics_common";
export const useDeepLAuthKey = () => { export const useDeepLAuthKey = () => {
const { t } = useTranslation();
const { showNotification_Success, showNotification_Error } = useNotificationStatus();
const { asyncStdoutToPython } = useStdoutToPython(); const { asyncStdoutToPython } = useStdoutToPython();
const { currentDeepLAuthKey, updateDeepLAuthKey, pendingDeepLAuthKey } = useStore_DeepLAuthKey(); const { currentDeepLAuthKey, updateDeepLAuthKey, pendingDeepLAuthKey } = useStore_DeepLAuthKey();
@@ -14,6 +18,10 @@ export const useDeepLAuthKey = () => {
pendingDeepLAuthKey(); pendingDeepLAuthKey();
asyncStdoutToPython("/set/data/deepl_auth_key", selected_deepl_auth_key); asyncStdoutToPython("/set/data/deepl_auth_key", selected_deepl_auth_key);
}; };
const saveSuccessDeepLAuthKey = (saved_deepl_auth_key) => {
updateDeepLAuthKey(saved_deepl_auth_key);
showNotification_Success(t("config_page.translation.deepl_auth_key.auth_key_success"));
};
const deleteDeepLAuthKey = () => { const deleteDeepLAuthKey = () => {
pendingDeepLAuthKey(); pendingDeepLAuthKey();
@@ -25,6 +33,7 @@ export const useDeepLAuthKey = () => {
getDeepLAuthKey, getDeepLAuthKey,
updateDeepLAuthKey, updateDeepLAuthKey,
setDeepLAuthKey, setDeepLAuthKey,
saveSuccessDeepLAuthKey,
deleteDeepLAuthKey, deleteDeepLAuthKey,
}; };
}; };

View File

@@ -148,7 +148,7 @@ export const useReceiveRoutes = () => {
const { updateSpeakerPhraseTimeout } = useSpeakerPhraseTimeout(); const { updateSpeakerPhraseTimeout } = useSpeakerPhraseTimeout();
const { updateSpeakerMaxWords } = useSpeakerMaxWords(); const { updateSpeakerMaxWords } = useSpeakerMaxWords();
const { updateDeepLAuthKey } = useDeepLAuthKey(); const { updateDeepLAuthKey, saveSuccessDeepLAuthKey } = useDeepLAuthKey();
const { updateSelectedCTranslate2WeightType } = useSelectedCTranslate2WeightType(); const { updateSelectedCTranslate2WeightType } = useSelectedCTranslate2WeightType();
const { const {
updateDownloadedCTranslate2WeightTypeStatus, updateDownloadedCTranslate2WeightTypeStatus,
@@ -352,7 +352,7 @@ export const useReceiveRoutes = () => {
// Translation // Translation
"/get/data/deepl_auth_key": updateDeepLAuthKey, "/get/data/deepl_auth_key": updateDeepLAuthKey,
"/set/data/deepl_auth_key": updateDeepLAuthKey, "/set/data/deepl_auth_key": saveSuccessDeepLAuthKey,
"/delete/data/deepl_auth_key": () => updateDeepLAuthKey(""), "/delete/data/deepl_auth_key": () => updateDeepLAuthKey(""),
"/get/data/ctranslate2_weight_type": updateSelectedCTranslate2WeightType, "/get/data/ctranslate2_weight_type": updateSelectedCTranslate2WeightType,