From d7c03297b956db3f8fc2901e8a419585856cfd9e Mon Sep 17 00:00:00 2001 From: Till JS Date: Mon, 27 Apr 2026 14:20:01 +0200 Subject: [PATCH] =?UTF-8?q?i18n(articles):=20translate=20DetailView=20via?= =?UTF-8?q?=20$=5F()=20=E2=80=94=20page=20title,=20meta-row,=20tag=20picke?= =?UTF-8?q?r,=20floating=20reader=20toolbar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - with {title} interpolation, untitled fallback - Loading + not-found states, "Zurück zur Liste" button - Meta-row: "{n} min" reading-time + "{n} Wörter" word-count via interpolation - TagField: addLabel + placeholder - Floating toolbar: aria-label - Nav group: back button (aria + tip) - Type group: A−/A+ font-size buttons (aria + tip), Serif/Sans toggles, 3 theme swatches (Heller/Sepia/Dunkler Modus) — aria + tip mirror - Action group: read/unread toggle, favorite toggle, archive, open-original link, delete — all with $_() conditional aria + tip pairs - "Artikel wirklich löschen?" confirm Baselines: hardcoded 1119 → 1112 (7 cleared, of 9 — 2 strings carry through identifiers in helpers); missing-keys baseline unchanged. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --- .../modules/articles/views/DetailView.svelte | 93 +++++++++++-------- 1 file changed, 55 insertions(+), 38 deletions(-) diff --git a/apps/mana/apps/web/src/lib/modules/articles/views/DetailView.svelte b/apps/mana/apps/web/src/lib/modules/articles/views/DetailView.svelte index 220334951..4b54d9786 100644 --- a/apps/mana/apps/web/src/lib/modules/articles/views/DetailView.svelte +++ b/apps/mana/apps/web/src/lib/modules/articles/views/DetailView.svelte @@ -17,6 +17,7 @@ import { articleTagOps, useAllTags } from '../stores/tags.svelte'; import ReaderView from '../components/ReaderView.svelte'; import HighlightLayer from '../components/HighlightLayer.svelte'; + import { _ } from 'svelte-i18n'; interface Props { id: string; @@ -80,7 +81,7 @@ async function deleteArticle() { if (!article) return; - if (!confirm('Artikel wirklich löschen?')) return; + if (!confirm($_('articles.detail_view.confirm_delete'))) return; await articlesStore.deleteArticle(article.id); goto('/articles'); } @@ -102,17 +103,21 @@ </script> <svelte:head> - <title>{article?.title ?? 'Artikel'} — Mana + {$_('articles.detail_view.page_title_html', { + values: { title: article?.title ?? $_('articles.detail_view.untitled_fallback') }, + })}
{#if article$.loading} -

Lädt…

+

{$_('articles.detail_view.loading')}

{:else if !article}
-

Artikel nicht gefunden.

+

{$_('articles.detail_view.not_found')}

{:else} @@ -121,16 +126,24 @@
{#if article.siteName}{article.siteName}{/if} {#if article.author}· {article.author}{/if} - {#if article.readingTimeMinutes}· {article.readingTimeMinutes} min{/if} - {#if article.wordCount}· {article.wordCount} Wörter{/if} + {#if article.readingTimeMinutes}· + {$_('articles.detail_view.meta_reading_minutes', { + values: { n: article.readingTimeMinutes }, + })}{/if} + {#if article.wordCount}· + {$_('articles.detail_view.meta_word_count', { values: { n: article.wordCount } })}{/if}
@@ -153,14 +166,14 @@ htmlVersion={article.htmlContent} /> -