tweak language detection

This commit is contained in:
fly_mc 2024-11-15 12:55:52 +08:00
parent 527883f50d
commit 423152468d
2 changed files with 15 additions and 11 deletions

View file

@ -627,13 +627,12 @@ async function clip(): Promise<void> {
function isUnexpectedNote(note: Misskey.entities.Note): boolean {
if (!note.text) return false;
const currentLang = (miLocalStorage.getItem('lang') ?? navigator.language).slice(0, 2);
const expectedLangs = new Set([
currentLang,
navigator.language
(miLocalStorage.getItem('lang') ?? navigator.language).slice(0, 2),
(navigator.language).slice(0, 2)
]);
const postLang = detectLanguage(note.text);
return postLang !== '' && !expectedLangs.has(postLang);
const noteLang = detectLanguage(note.text);
return noteLang !== '' && !expectedLangs.has(noteLang);
}
const isUnexpectedLanguage = computed(() => isUnexpectedNote(appearNote.value));

View file

@ -103,7 +103,7 @@ SPDX-License-Identifier: AGPL-3.0-only
:enableEmojiMenuReaction="true"
/>
<a v-if="appearNote.renote != null" :class="$style.rn">RN:</a>
<div v-if="defaultStore.state.autoTranslateButton && $i.policies.canUseTranslator && appearNote.text && isForeignLanguage" style="padding-top: 5px; color: var(--MI_THEME-accent);">
<div v-if="defaultStore.state.autoTranslateButton && $i.policies.canUseTranslator && appearNote.text && isUnexpectedLanguage" style="padding-top: 5px; color: var(--MI_THEME-accent);">
<button v-if="!(translating || translation)" ref="translateButton" class="_button" @click.stop="translate()"><i class="ti ti-language-hiragana"></i>{{ i18n.ts.translate }}</button>
<button v-else class="_button" @click.stop="translation= null">{{ i18n.ts.close }}</button>
</div>
@ -625,11 +625,16 @@ async function clip(): Promise<void> {
os.popupMenu(await getNoteClipMenu({ note: note.value, isDeleted }), clipButton.value).then(focus);
}
const isForeignLanguage: boolean = appearNote.value.text != null && (() => {
const targetLang = (miLocalStorage.getItem('lang') ?? navigator.language).slice(0, 2);
const postLang = detectLanguage(appearNote.value.text);
return postLang !== '' && postLang !== targetLang;
})();
function isUnexpectedNote(note: Misskey.entities.Note): boolean {
if (!note.text) return false;
const expectedLangs = new Set([
(miLocalStorage.getItem('lang') ?? navigator.language).slice(0, 2),
(navigator.language).slice(0, 2)
]);
const noteLang = detectLanguage(note.text);
return noteLang !== '' && !expectedLangs.has(noteLang);
}
const isUnexpectedLanguage = computed(() => isUnexpectedNote(appearNote.value));
async function translate(): Promise<void> {
if (translation.value != null) return;