diff --git a/src/ui/hour-view.ts b/src/ui/hour-view.ts index 5e6df00..e15c3b1 100644 --- a/src/ui/hour-view.ts +++ b/src/ui/hour-view.ts @@ -26,12 +26,18 @@ function renderColumns(resolved: ResolvedText | ResolvedVerse, languages: readon } // Scripture quotations always carry a full citation (book, chapter, verse) — -// shown once, deduplicated across languages when they happen to match. -function renderCitation(text: ResolvedText): string { +// shown once per currently-displayed language, deduplicated when they +// happen to match (e.g. a plain "Psalm 118" citation reused verbatim in +// both columns) — restricted to `languages` so a language-specific +// abbreviation (Latin "Jac 1:12" vs. English "Jas 1:12") never leaks into +// a single-language view. +function renderCitation(text: ResolvedText, languages: readonly string[]): string { if (!text.citation) { return ''; } - const values = [...new Set(Object.values(text.citation).filter((v): v is string => Boolean(v)))]; + const values = [ + ...new Set(languages.map((lang) => text.citation![lang]).filter((v): v is string => Boolean(v))), + ]; return values.length ? `
${escapeHtml(values.join(' / '))}
` : ''; } @@ -64,7 +70,7 @@ function renderPart(part: ResolvedPart, languages: readonly string[]): string { return `${escapeHtml(part.source)}
` : ''} ${part.responsory ? `