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 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}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue