feat: display translated release notes in updater based on app language
Some checks failed
Release / build-windows (push) Has been cancelled
Release / build-linux (push) Has been cancelled

Use i18n translations for release notes when available, falling back to
the GitHub release body. Adds FR/EN notes for versions 0.3.8–0.3.11.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
le king fu 2026-02-22 14:14:28 -05:00
parent db337b3285
commit 0fbcbc0eca
3 changed files with 39 additions and 21 deletions

View file

@ -410,7 +410,13 @@
"installing": "Installing...",
"error": "Update failed",
"retryButton": "Retry",
"releaseNotes": "What's New"
"releaseNotes": "What's New",
"notes": {
"0.3.11": "### Added\n- Dynamic Report: support multiple column dimensions (composite column keys)\n\n### Fixed\n- Dynamic Report: no longer affected by global page date filters — uses only its own panel filters",
"0.3.10": "### Added\n- Dynamic Report: fields can now be used in multiple zones simultaneously (rows + filters, columns + filters)\n- Dynamic Report: right-click on a filter value to exclude it (shown with strikethrough in red)\n- \"This year\" period option in reports and dashboard (Jan 1 to today)",
"0.3.9": "### Added\n- Dynamic Report (pivot table): compose custom reports by assigning dimensions to rows, columns, filters and measures to values\n- Delete keywords from the \"All Keywords\" view",
"0.3.8": "### Added\n- Custom date range picker for reports and dashboard\n- Toggle to position subtotals above or below detail rows\n- Display release notes from CHANGELOG in GitHub releases and in-app updater"
}
},
"dataManagement": {
"title": "Data Management",

View file

@ -410,7 +410,13 @@
"installing": "Installation en cours...",
"error": "Erreur lors de la mise à jour",
"retryButton": "Réessayer",
"releaseNotes": "Nouveautés"
"releaseNotes": "Nouveautés",
"notes": {
"0.3.11": "### Ajouté\n- Rapport dynamique : support de plusieurs dimensions en colonnes (clés composites)\n\n### Corrigé\n- Rapport dynamique : n'est plus affecté par les filtres de date globaux — utilise uniquement ses propres filtres du panneau",
"0.3.10": "### Ajouté\n- Rapport dynamique : les champs peuvent maintenant être utilisés dans plusieurs zones simultanément (lignes + filtres, colonnes + filtres)\n- Rapport dynamique : clic-droit sur une valeur de filtre pour l'exclure (affiché barré en rouge)\n- Option de période « Cette année » dans les rapports et le tableau de bord (du 1er janvier à aujourd'hui)",
"0.3.9": "### Ajouté\n- Rapport dynamique (tableau croisé) : composez des rapports personnalisés en assignant des dimensions aux lignes, colonnes, filtres et mesures aux valeurs\n- Suppression de mots-clés depuis la vue « Tous les mots-clés »",
"0.3.8": "### Ajouté\n- Sélecteur de plage de dates personnalisée pour les rapports et le tableau de bord\n- Bascule pour positionner les sous-totaux au-dessus ou en dessous des lignes de détail\n- Affichage des notes de version du CHANGELOG dans les releases GitHub et le système de mise à jour"
}
},
"dataManagement": {
"title": "Gestion des données",

View file

@ -125,13 +125,18 @@ export default function SettingsPage() {
<p>
{t("settings.updates.available", { version: state.version })}
</p>
{state.body && (
{(() => {
const notesKey = `settings.updates.notes.${state.version}`;
const i18nNotes = t(notesKey, { defaultValue: "" });
const notes = i18nNotes || state.body;
if (!notes) return null;
return (
<div className="space-y-2">
<h3 className="text-sm font-semibold text-[var(--foreground)]">
{t("settings.updates.releaseNotes")}
</h3>
<div className="max-h-48 overflow-y-auto rounded-lg bg-[var(--background)] border border-[var(--border)] p-3 text-sm text-[var(--muted-foreground)] space-y-1">
{state.body.split("\n").map((line, i) => {
{notes.split("\n").map((line, i) => {
const trimmed = line.trim();
if (!trimmed) return <div key={i} className="h-2" />;
if (trimmed.startsWith("### "))
@ -144,7 +149,8 @@ export default function SettingsPage() {
})}
</div>
</div>
)}
);
})()}
<button
onClick={downloadAndInstall}
className="flex items-center gap-2 px-4 py-2 bg-[var(--primary)] text-white rounded-lg hover:opacity-90 transition-opacity"