diff --git a/common/subtitle-reader/subtitle-reader.ts b/common/subtitle-reader/subtitle-reader.ts index 6d28a86ea..beabcb0bc 100755 --- a/common/subtitle-reader/subtitle-reader.ts +++ b/common/subtitle-reader/subtitle-reader.ts @@ -3,6 +3,7 @@ import SrtParser from '@qgustavor/srt-parser'; import { WebVTT } from 'vtt.js'; import { XMLParser } from 'fast-xml-parser'; import { SubtitleHtml, SubtitleTextImage, Token, Tokenization } from '@project/common'; +import * as OpenCC from 'opencc-js'; const vttClassRegex = /<(\/)?c(\.[^>]*)?>/g; const assNewLineRegex = RegExp(/\\[nN]/, 'ig'); @@ -113,6 +114,11 @@ export default class SubtitleReader { } } + const converter = OpenCC.Converter({ from: "tw", to: "cn" }) + for (const node of allNodes) { + node.text = converter(node.text); + } + return allNodes; } diff --git a/extension/package.json b/extension/package.json index 1039f6051..618538df3 100755 --- a/extension/package.json +++ b/extension/package.json @@ -35,6 +35,7 @@ "i18next": "^25.3.2", "m3u8-parser": "^7.2.0", "mpd-parser": "^1.3.1", + "opencc-js": "^1.0.5", "react": "^19.1.0", "react-dom": "^19.1.0", "react-i18next": "^15.6.1", @@ -45,6 +46,7 @@ }, "devDependencies": { "@types/jest": "^30.0.0", + "@types/opencc-js": "^1.0.3", "@wxt-dev/module-react": "^1.1.5", "jest": "^30.0.5", "ts-jest": "^29.4.0", diff --git a/yarn.lock b/yarn.lock index 357248ed4..33cde70e3 100755 --- a/yarn.lock +++ b/yarn.lock @@ -3846,6 +3846,7 @@ __metadata: "@types/chrome": ^0.1.37 "@types/dom-mediacapture-record": ^1.0.22 "@types/jest": ^30.0.0 + "@types/opencc-js": ^1.0.3 "@types/react": ^19.1.8 "@types/react-dom": ^19.1.6 "@types/semver": ^7.7.0 @@ -3855,6 +3856,7 @@ __metadata: jest: ^30.0.5 m3u8-parser: ^7.2.0 mpd-parser: ^1.3.1 + opencc-js: ^1.0.5 react: ^19.1.0 react-dom: ^19.1.0 react-i18next: ^15.6.1 @@ -4590,6 +4592,13 @@ __metadata: languageName: node linkType: hard +"@types/opencc-js@npm:^1.0.3": + version: 1.0.3 + resolution: "@types/opencc-js@npm:1.0.3" + checksum: 3cc08b83e933d79783c3a50f5d99c6256b86db45a024aad9fe2a9cc78720dcad680a6a6e7562ec4260ed5de7c7c475a3cafef2f688356317fdc3be988a172209 + languageName: node + linkType: hard + "@types/parse-json@npm:^4.0.0": version: 4.0.2 resolution: "@types/parse-json@npm:4.0.2" @@ -12482,6 +12491,13 @@ __metadata: languageName: node linkType: hard +"opencc-js@npm:^1.0.5": + version: 1.0.5 + resolution: "opencc-js@npm:1.0.5" + checksum: 584066299dbaced2a22ecfe5b15095613f03692a6f6180ae41209ae838a0574a3b30b30f984fa902a5d8b6644ddddc31cb3d5afee2a2d8031a13a58a12fa0d37 + languageName: node + linkType: hard + "optionator@npm:^0.9.3": version: 0.9.3 resolution: "optionator@npm:0.9.3"