diff --git a/web/app/[locale]/docs/backup-restore/glossary/page.tsx b/web/app/[locale]/docs/backup-restore/glossary/page.tsx index bfb61cd8..2c247907 100644 --- a/web/app/[locale]/docs/backup-restore/glossary/page.tsx +++ b/web/app/[locale]/docs/backup-restore/glossary/page.tsx @@ -1,6 +1,7 @@ import type { Metadata } from "next" import { getTranslations, getMessages, setRequestLocale } from "next-intl/server" import { Link } from "@/i18n/navigation" +import { icuQuotesToHtml } from "@/i18n/loadMessages" import { DocHeader } from "@/components/ui/doc-header" export async function generateMetadata({ @@ -114,7 +115,7 @@ export default async function GlossaryPage({
))} diff --git a/web/app/[locale]/docs/monitor/dashboard/system-logs/page.tsx b/web/app/[locale]/docs/monitor/dashboard/system-logs/page.tsx index 8fff6c70..8fc3479b 100644 --- a/web/app/[locale]/docs/monitor/dashboard/system-logs/page.tsx +++ b/web/app/[locale]/docs/monitor/dashboard/system-logs/page.tsx @@ -1,6 +1,7 @@ import type { Metadata } from "next" import { getTranslations, getMessages, setRequestLocale } from "next-intl/server" import { Link } from "@/i18n/navigation" +import { icuQuotesToHtml } from "@/i18n/loadMessages" import { DocHeader } from "@/components/ui/doc-header" import { Callout } from "@/components/ui/callout" import CopyableCode from "@/components/CopyableCode" @@ -135,7 +136,7 @@ export default async function SystemLogsTabPage({ className={idx < dataRows.length - 1 ? "border-b border-gray-100" : ""} > {row.subtab} - + {t.rich(`dataCollected.rows.${idx}.source`, { code })} diff --git a/web/i18n/loadMessages.ts b/web/i18n/loadMessages.ts index f6d520e7..7c0e067e 100644 --- a/web/i18n/loadMessages.ts +++ b/web/i18n/loadMessages.ts @@ -73,6 +73,11 @@ function decodeEntities(value: unknown): unknown { return value } +// Messages inserted as raw HTML skip ICU, so its quoting goes back to entities. +export function icuQuotesToHtml(html: string): string { + return html.replace(/'<'/g, "<").replace(/'>'/g, ">") +} + function toCamel(name: string): string { return name.replace(/-([a-z0-9])/g, (_, c) => c.toUpperCase()) }