fix(character-dictionary): add surname honorifics for Japanese localized aliases (#87)

This commit is contained in:
2026-05-25 20:12:27 -07:00
committed by GitHub
parent 78be72e32f
commit 639e331f24
5 changed files with 68 additions and 2 deletions
@@ -3,6 +3,7 @@ import {
addRomanizedKanaAliases,
buildReading,
buildReadingFromRomanized,
containsKanji,
hasKanaOnly,
isRomanizedName,
splitJapaneseName,
@@ -39,6 +40,25 @@ function expandRawNameVariants(rawName: string): string[] {
return [...variants];
}
function isJapaneseNameSplitCandidate(name: string): boolean {
const compact = name.replace(/[\s\u3000・・·•]/g, '');
return (
containsKanji(compact) && /^[\u3040-\u30ff\u3400-\u4dbf\u4e00-\u9fff々〆ヵヶー]+$/.test(compact)
);
}
function addJapaneseNameParts(character: CharacterRecord, name: string, terms: Set<string>): void {
if (!isJapaneseNameSplitCandidate(name)) return;
const nameParts = splitJapaneseName(name, character.firstNameHint, character.lastNameHint);
if (nameParts.family) {
terms.add(nameParts.family);
}
if (nameParts.given) {
terms.add(nameParts.given);
}
}
export function buildNameTerms(character: CharacterRecord): string[] {
const base = new Set<string>();
const romanizedBase = new Set<string>();
@@ -73,6 +93,10 @@ export function buildNameTerms(character: CharacterRecord): string[] {
target.add(part);
}
}
if (target === base) {
addJapaneseNameParts(character, name, base);
}
}
}