From afdb9d69144f2ba389438460dd6a458ce0746b8e Mon Sep 17 00:00:00 2001 From: Sakamoto Shiina <68018796+ShiinaSakamoto@users.noreply.github.com> Date: Sat, 28 Dec 2024 05:24:52 +0900 Subject: [PATCH] [Update] Main Page: Translator: Add warning ui to translate selector when the same languages are selected. --- locales/en.yml | 4 ++ locales/ja.yml | 4 ++ .../TranslatorSelectorOpenButton.jsx | 37 +++++++++++++++ .../TranslatorSelectorOpenButton.module.scss | 8 ++++ .../TranslatorSelector.jsx | 45 ++++++++++++------- .../TranslatorSelector.module.scss | 30 ++++++++++++- src-ui/assets/warning.svg | 1 + 7 files changed, 113 insertions(+), 16 deletions(-) create mode 100644 src-ui/assets/warning.svg diff --git a/locales/en.yml b/locales/en.yml index 8726c0b3..85d51180 100644 --- a/locales/en.yml +++ b/locales/en.yml @@ -19,6 +19,10 @@ main_page: translator: Translator translator_ctranslate2: Internal (Default) + translator_selector: + is_selected_same_language: |- + Since the same language is selected for both '{{your_language}}' and '{{target_language}}', only '{{translator_ctranslate2}}' is available. + message_log: all: All sent: Sent diff --git a/locales/ja.yml b/locales/ja.yml index 9e9da6ef..c8fe0069 100644 --- a/locales/ja.yml +++ b/locales/ja.yml @@ -19,6 +19,10 @@ main_page: translator: 翻訳エンジン translator_ctranslate2: オフライン翻訳 (Default) + translator_selector: + is_selected_same_language: |- + 「{{your_language}}」と「{{target_language}}」に同じ言語が選択がされているため、「{{translator_ctranslate2}}」のみが使用できます。 + message_log: all: 全て sent: 送信 diff --git a/src-ui/app/main_page/sidebar_section/language_settings/translator_selector_open_button/TranslatorSelectorOpenButton.jsx b/src-ui/app/main_page/sidebar_section/language_settings/translator_selector_open_button/TranslatorSelectorOpenButton.jsx index 3c830f13..e6b68cd4 100644 --- a/src-ui/app/main_page/sidebar_section/language_settings/translator_selector_open_button/TranslatorSelectorOpenButton.jsx +++ b/src-ui/app/main_page/sidebar_section/language_settings/translator_selector_open_button/TranslatorSelectorOpenButton.jsx @@ -4,10 +4,13 @@ import styles from "./TranslatorSelectorOpenButton.module.scss"; import { TranslatorSelector } from "./translator_selector/TranslatorSelector"; import { useStore_IsOpenedTranslatorSelector } from "@store"; import { useLanguageSettings } from "@logics_main"; +import WarningSvg from "@images/warning.svg?react"; export const TranslatorSelectorOpenButton = () => { const { t } = useTranslation(); const { + currentSelectedYourLanguages, + currentSelectedTargetLanguages, currentSelectedPresetTabNumber, currentTranslationEngines, currentSelectedTranslationEngines, @@ -21,6 +24,35 @@ export const TranslatorSelectorOpenButton = () => { const selected_engine_id = currentSelectedTranslationEngines.data[currentSelectedPresetTabNumber.data]; + const checkIsSelectedSameLanguage = () => { + const your_language_data = currentSelectedYourLanguages.data[currentSelectedPresetTabNumber.data]; + const target_language_data = currentSelectedTargetLanguages.data[currentSelectedPresetTabNumber.data]; + + const yourLanguage = your_language_data["1"]; + const yourLanguageName = yourLanguage.language; + const yourCountry = yourLanguage.country; + + let is_selected_same_language = false; + + for (const key in target_language_data) { + const targetLanguage = target_language_data[key]; + + if (targetLanguage.enable) { + const targetLanguageName = targetLanguage.language; + const targetCountry = targetLanguage.country; + + if (yourLanguageName === targetLanguageName && yourCountry === targetCountry) { + is_selected_same_language = true; + break; + } + } + } + + return is_selected_same_language; + }; + + const is_selected_same_language = checkIsSelectedSameLanguage(); + const getSelectedLabel = () => { const selected_engine = translation_engines.find( @@ -44,11 +76,16 @@ export const TranslatorSelectorOpenButton = () => {
{t("main_page.translator")}:
{selected_label}
+ {is_selected_same_language + ?+ {t("main_page.translator_selector.is_selected_same_language", { + your_language: t("main_page.your_language"), + target_language: t("main_page.target_language"), + translator_ctranslate2: t("main_page.translator_ctranslate2"), + })} +