fix: from lang bug

This commit is contained in:
Gabe
2025-11-13 01:38:16 +08:00
parent 12b3768598
commit 1e59d57764
2 changed files with 30 additions and 5 deletions

View File

@@ -2577,6 +2577,13 @@ export const I18N = {
ja: `原字幕を表示`, ja: `原字幕を表示`,
ko: `원본 자막 표시`, ko: `원본 자막 표시`,
}, },
subtitle_same_lang: {
zh: `原语言与目标语言相同,字幕不予显示`,
en: `The source language is the same as the target language, the subtitles will not be displayed`,
zh_TW: `原语言与目标语言相同,字幕不予显示`,
ja: `原言語と目標言語が同じ場合、字幕は表示されません`,
ko: `원본 언어와 대상 언어가 동일한 경우, 자막은 표시되지 않습니다`,
},
}; };
export const newI18n = (lang) => (key) => I18N[key]?.[lang] || ""; export const newI18n = (lang) => (key) => I18N[key]?.[lang] || "";

View File

@@ -8,6 +8,7 @@ import {
OPT_TRANS_MICROSOFT, OPT_TRANS_MICROSOFT,
MSG_MENUS_PROGRESSED, MSG_MENUS_PROGRESSED,
MSG_MENUS_UPDATEFORM, MSG_MENUS_UPDATEFORM,
OPT_LANGS_SPEC_DEFAULT,
} from "../config"; } from "../config";
import { sleep, genEventName, downloadBlobFile } from "../libs/utils.js"; import { sleep, genEventName, downloadBlobFile } from "../libs/utils.js";
import { createLogoSVG } from "../libs/svg.js"; import { createLogoSVG } from "../libs/svg.js";
@@ -414,6 +415,20 @@ class YouTubeCaptionProvider {
return []; return [];
} }
#getFromLang(lang) {
if (lang === "zh") {
return "zh-CN";
}
return (
OPT_LANGS_SPEC_DEFAULT.get(lang) ||
OPT_LANGS_SPEC_DEFAULT.get(lang.slice(0, 2)) ||
OPT_LANGS_TO_CODE[OPT_TRANS_MICROSOFT].get(lang) ||
OPT_LANGS_TO_CODE[OPT_TRANS_MICROSOFT].get(lang.slice(0, 2)) ||
"auto"
);
}
async #handleInterceptedRequest(url, responseText) { async #handleInterceptedRequest(url, responseText) {
const videoId = this.#videoId; const videoId = this.#videoId;
if (!videoId) { if (!videoId) {
@@ -462,16 +477,14 @@ class YouTubeCaptionProvider {
} }
const lang = potUrl.searchParams.get("lang"); const lang = potUrl.searchParams.get("lang");
const fromLang = const fromLang = this.#getFromLang(lang);
OPT_LANGS_TO_CODE[OPT_TRANS_MICROSOFT].get(lang) ||
OPT_LANGS_TO_CODE[OPT_TRANS_MICROSOFT].get(lang.slice(0, 2)) ||
"auto";
logger.debug( logger.debug(
`Youtube Provider: fromLang: ${fromLang}, toLang: ${toLang}` `Youtube Provider: lang: ${lang}, fromLang: ${fromLang}, toLang: ${toLang}`
); );
if (this.#isSameLang(fromLang, toLang)) { if (this.#isSameLang(fromLang, toLang)) {
logger.debug("Youtube Provider: skip same lang", fromLang, toLang); logger.debug("Youtube Provider: skip same lang", fromLang, toLang);
this.#showNotification(this.#i18n("subtitle_same_lang"));
return; return;
} }
@@ -673,6 +686,11 @@ class YouTubeCaptionProvider {
if (noSpaceLanguages.some((l) => lang?.startsWith(l))) { if (noSpaceLanguages.some((l) => lang?.startsWith(l))) {
const subtitles = []; const subtitles = [];
if (this.#isQualityPoor(flatEvents, 5, 0.5)) {
return flatEvents;
}
let currentLine = null; let currentLine = null;
const MAX_LENGTH = 100; const MAX_LENGTH = 100;