Add settings to hide translate button for certain languages

pull/86/head
Lim Chee Aun 2023-03-28 19:04:52 +08:00
rodzic 1d1bb1de61
commit f160a576d6
4 zmienionych plików z 77 dodań i 1 usunięć

Wyświetl plik

@ -222,6 +222,8 @@ function Status({
const [forceTranslate, setForceTranslate] = useState(false);
const targetLanguage = getTranslateTargetLanguage(true);
const contentTranslationHideLanguages =
snapStates.settings.contentTranslationHideLanguages || [];
if (!snapStates.settings.contentTranslation) enableTranslate = false;
const [showEdited, setShowEdited] = useState(false);
@ -907,7 +909,10 @@ function Status({
!!content.trim() &&
language &&
language !== targetLanguage &&
!match([language], [targetLanguage])) ||
!match([language], [targetLanguage]) &&
!contentTranslationHideLanguages.find(
(l) => language === l || match([language], [l]),
)) ||
forceTranslate) && (
<TranslationBlock
forceTranslate={forceTranslate}

Wyświetl plik

@ -123,3 +123,22 @@
#settings-container .range-group input[type='range'] {
flex-grow: 1;
}
#settings-container .checkbox-fields {
border: 1px solid var(--outline-color);
background-color: var(--bg-faded-color);
border-radius: 8px;
margin: 8px 0;
max-height: 6.5em;
overflow: auto;
display: flex;
flex-wrap: wrap;
font-size: 90%;
}
#settings-container .checkbox-fieldset label {
flex: 1 0 10em;
padding: 4px;
display: flex;
gap: 4px;
align-items: flex-start;
}

Wyświetl plik

@ -194,6 +194,50 @@ function Settings({ onClose }) {
))}
</select>
</label>
<p class="checkbox-fieldset">
<small>
Hide "Translate" button for
{snapStates.settings.contentTranslationHideLanguages
.length > 0 && (
<>
{' '}
(
{
snapStates.settings.contentTranslationHideLanguages
.length
}
)
</>
)}
:
</small>
<div class="checkbox-fields">
{targetLanguages.map((lang) => (
<label>
<input
type="checkbox"
checked={snapStates.settings.contentTranslationHideLanguages.includes(
lang.code,
)}
onChange={(e) => {
const { checked } = e.target;
if (checked) {
states.settings.contentTranslationHideLanguages.push(
lang.code,
);
} else {
states.settings.contentTranslationHideLanguages =
snapStates.settings.contentTranslationHideLanguages.filter(
(code) => code !== lang.code,
);
}
}}
/>{' '}
{lang.name}
</label>
))}
</div>
</p>
<p>
<small>
Note: This feature uses an external API to translate,

Wyświetl plik

@ -48,6 +48,8 @@ const states = proxy({
store.account.get('settings-contentTranslation') ?? true,
contentTranslationTargetLanguage:
store.account.get('settings-contentTranslationTargetLanguage') || null,
contentTranslationHideLanguages:
store.account.get('settings-contentTranslationHideLanguages') || [],
},
});
@ -76,6 +78,12 @@ subscribe(states, (changes) => {
console.log('SET', value);
store.account.set('settings-contentTranslationTargetLanguage', value);
}
if (/^settings\.contentTranslationHideLanguages/i.test(path.join('.'))) {
store.account.set(
'settings-contentTranslationHideLanguages',
states.settings.contentTranslationHideLanguages,
);
}
if (path?.[0] === 'shortcuts') {
store.account.set('shortcuts', states.shortcuts);
}