[Update] Main Page: TranslatorSelector: Add the label 'default'.

This commit is contained in:
Sakamoto Shiina
2025-03-18 15:26:22 +09:00
parent c9e40fc682
commit 8ea37eb39a
7 changed files with 37 additions and 13 deletions

View File

@@ -36,7 +36,7 @@ main_page:
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."

View File

@@ -36,7 +36,7 @@ main_page:
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}}」のみが使用できます。"

View File

@@ -36,7 +36,7 @@ main_page:
swap_button_label: "언어 교체" swap_button_label: "언어 교체"
target_language: "상대방의 언어" target_language: "상대방의 언어"
translator: "번역 엔진" translator: "번역 엔진"
# translator_label_default: "기본값" translator_label_default: "기본값"
translator_selector: translator_selector:
is_selected_same_language: is_selected_same_language:

View File

@@ -36,7 +36,7 @@ main_page:
swap_button_label: "互换" swap_button_label: "互换"
target_language: "目标语言" target_language: "目标语言"
translator: "翻译器" translator: "翻译器"
# translator_label_default: "默认" translator_label_default: "默认"
translator_selector: translator_selector:
is_selected_same_language: is_selected_same_language:

View File

@@ -36,7 +36,7 @@ main_page:
swap_button_label: "交換語言" swap_button_label: "交換語言"
target_language: "目標語言" target_language: "目標語言"
translator: "翻譯器" translator: "翻譯器"
# translator_label_default: "預設" translator_label_default: "預設"
translator_selector: translator_selector:
is_selected_same_language: is_selected_same_language:

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;