From 3411af610e81f3d5a90292700333781f3fba9ab3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Lohrer?= Date: Tue, 21 Apr 2026 14:08:42 +0200 Subject: [PATCH] feat(app): archiv-seite lokalisiert + nach locale gefiltert --- app/src/routes/archiv/+page.svelte | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/app/src/routes/archiv/+page.svelte b/app/src/routes/archiv/+page.svelte index ccfcbb0..4420d8c 100644 --- a/app/src/routes/archiv/+page.svelte +++ b/app/src/routes/archiv/+page.svelte @@ -4,6 +4,8 @@ import { loadPostList } from '$lib/nostr/loaders'; import PostCard from '$lib/components/PostCard.svelte'; import LoadingOrError from '$lib/components/LoadingOrError.svelte'; + import { t, activeLocale } from '$lib/i18n'; + import { get } from 'svelte/store'; let posts: NostrEvent[] = $state([]); let loading = $state(true); @@ -14,19 +16,29 @@ posts = await loadPostList(); loading = false; if (posts.length === 0) { - error = 'Keine Posts gefunden auf den abgefragten Relays.'; + error = get(t)('home.empty'); } } catch (e) { loading = false; - error = e instanceof Error ? e.message : 'Unbekannter Fehler'; + error = e instanceof Error ? e.message : get(t)('post.unknown_error'); } }); + let currentLocale = $state('de'); + activeLocale.subscribe((v) => (currentLocale = v)); + + const filtered = $derived.by(() => + posts.filter((p) => { + const l = p.tags.find((tag) => tag[0] === 'l')?.[1]; + return (l ?? 'de') === currentLocale; + }) + ); + // Posts nach Jahr gruppieren (neueste zuerst) type YearGroup = { year: number; posts: NostrEvent[] }; const groupsByYear = $derived.by(() => { const byYear = new Map(); - for (const p of posts) { + for (const p of filtered) { const ts = Number(p.tags.find((t) => t[0] === 'published_at')?.[1] ?? p.created_at); const year = new Date(ts * 1000).getUTCFullYear(); if (!byYear.has(year)) byYear.set(year, []); @@ -39,11 +51,11 @@ - Archiv – Jörg Lohrer + {$t('archive.doc_title')} -

Archiv

-

Alle Beiträge, nach Jahr gruppiert.

+

{$t('archive.title')}

+

{$t('archive.subtitle')}