Skip to content

feat: 增强歌词语言识别逻辑以支持中日混合歌词 - #121

Merged
imsyy merged 1 commit into
SPlayer-Dev:devfrom
MoYingJi:pr/feat/lyric-lang-cjk
Jul 29, 2026
Merged

imsyy merged 1 commit into
SPlayer-Dev:devfrom
MoYingJi:pr/feat/lyric-lang-cjk

Conversation

@MoYingJi

Copy link
Copy Markdown
Collaborator

改动类型

  • 新功能(feat)
  • 缺陷修复(fix)
  • 重构 / 优化(不改变对外行为)
  • 文档(docs)
  • 其他(请在「改动说明」中注明)

是否包含破坏性变更

  • 是(请在「改动说明」中详细描述)
  • 否

改动说明

优化 applyLyricLanguages,增加判断,若所有有假名的行都有翻译,那么可以认定全为汉字且无翻译的行是中文

代码由 AI 生成,已由人工审核

测试情况

已补充测试,测试通过

自查清单

  • 本 PR 只包含一个主要功能 / 修复,没有夹带无关改动
  • 已在本地完整测试通过;AI 生成的代码同样自行测试并审阅过,未做未经验证的提交
  • 已运行 pnpm format,并确认 pnpm typecheck、pnpm lint 通过
  • 改动涉及原生模块时已 pnpm build:native 验证;未手写 native/*/index.d.ts
  • 已向 dev 分支提交

Copilot AI review requested due to automatic review settings July 29, 2026 00:01

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

增强歌词语言识别,通过翻译信息区分中日/中韩混合歌词中的纯汉字行。

Changes:

  • 新增翻译存在性检查及混合语言推断。
  • 补充中日混合歌词测试。

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
src/utils/lyric/language.ts 扩展 CJK 歌词语言推断逻辑。
src/utils/lyric/language.test.ts 新增翻译推断测试。
Comments suppressed due to low confidence (1)

src/utils/lyric/language.ts:68

  • 这里同时新增了“所有谚文行均有翻译时,将无翻译纯汉字行判为中文”的分支,但新增测试只覆盖了假名路径;目前即使韩语分支条件或结果写错也不会被发现。请补一个包含已翻译谚文行和无翻译汉字行的对称用例。
      } else if (hasHangul) {
        line.language = allHangulTranslated && !isTranslated ? "zh-CN" : "ko";

Comment on lines +60 to +68
if (KANA_RE.test(content)) {
line.language = "ja";
} else if (HANGUL_RE.test(content)) {
line.language = "ko";
} else if (HAN_RE.test(content)) {
if (hasKana) {
line.language = allKanaTranslated && !isTranslated ? "zh-CN" : "ja";
} else if (hasHangul) {
line.language = allHangulTranslated && !isTranslated ? "zh-CN" : "ko";

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

原有行为,在 if (HAN_RE.test(content)) { 分支,就已经指定为全局判断的 hanLanguage 了。我这里也是同一条分支,我只是将这个 hanLanguage 优化了而已

Comment on lines +29 to +30
it("通过翻译推断双语混合歌曲的纯汉字行", () => {
const lines = [createLine("爱"), createLine("君が好き", { translatedLyric: "我喜欢你" })];

@MoYingJi MoYingJi Jul 29, 2026 •

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

图片

emm... 我的 IDE 自带(

@imsyy
imsyy merged commit a190acc into SPlayer-Dev:dev Jul 29, 2026
1 check passed
@MoYingJi
MoYingJi deleted the pr/feat/lyric-lang-cjk branch July 29, 2026 06:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants