mirror of
https://github.com/cheeaun/phanpy.git
synced 2025-02-02 14:16:39 +01:00
Add settings to hide translate button for certain languages
This commit is contained in:
parent
1d1bb1de61
commit
f160a576d6
4 changed files with 77 additions and 1 deletions
|
@ -222,6 +222,8 @@ function Status({
|
||||||
|
|
||||||
const [forceTranslate, setForceTranslate] = useState(false);
|
const [forceTranslate, setForceTranslate] = useState(false);
|
||||||
const targetLanguage = getTranslateTargetLanguage(true);
|
const targetLanguage = getTranslateTargetLanguage(true);
|
||||||
|
const contentTranslationHideLanguages =
|
||||||
|
snapStates.settings.contentTranslationHideLanguages || [];
|
||||||
if (!snapStates.settings.contentTranslation) enableTranslate = false;
|
if (!snapStates.settings.contentTranslation) enableTranslate = false;
|
||||||
|
|
||||||
const [showEdited, setShowEdited] = useState(false);
|
const [showEdited, setShowEdited] = useState(false);
|
||||||
|
@ -907,7 +909,10 @@ function Status({
|
||||||
!!content.trim() &&
|
!!content.trim() &&
|
||||||
language &&
|
language &&
|
||||||
language !== targetLanguage &&
|
language !== targetLanguage &&
|
||||||
!match([language], [targetLanguage])) ||
|
!match([language], [targetLanguage]) &&
|
||||||
|
!contentTranslationHideLanguages.find(
|
||||||
|
(l) => language === l || match([language], [l]),
|
||||||
|
)) ||
|
||||||
forceTranslate) && (
|
forceTranslate) && (
|
||||||
<TranslationBlock
|
<TranslationBlock
|
||||||
forceTranslate={forceTranslate}
|
forceTranslate={forceTranslate}
|
||||||
|
|
|
@ -123,3 +123,22 @@
|
||||||
#settings-container .range-group input[type='range'] {
|
#settings-container .range-group input[type='range'] {
|
||||||
flex-grow: 1;
|
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;
|
||||||
|
}
|
||||||
|
|
|
@ -194,6 +194,50 @@ function Settings({ onClose }) {
|
||||||
))}
|
))}
|
||||||
</select>
|
</select>
|
||||||
</label>
|
</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>
|
<p>
|
||||||
<small>
|
<small>
|
||||||
Note: This feature uses an external API to translate,
|
Note: This feature uses an external API to translate,
|
||||||
|
|
|
@ -48,6 +48,8 @@ const states = proxy({
|
||||||
store.account.get('settings-contentTranslation') ?? true,
|
store.account.get('settings-contentTranslation') ?? true,
|
||||||
contentTranslationTargetLanguage:
|
contentTranslationTargetLanguage:
|
||||||
store.account.get('settings-contentTranslationTargetLanguage') || null,
|
store.account.get('settings-contentTranslationTargetLanguage') || null,
|
||||||
|
contentTranslationHideLanguages:
|
||||||
|
store.account.get('settings-contentTranslationHideLanguages') || [],
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -76,6 +78,12 @@ subscribe(states, (changes) => {
|
||||||
console.log('SET', value);
|
console.log('SET', value);
|
||||||
store.account.set('settings-contentTranslationTargetLanguage', 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') {
|
if (path?.[0] === 'shortcuts') {
|
||||||
store.account.set('shortcuts', states.shortcuts);
|
store.account.set('shortcuts', states.shortcuts);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue