dorfteich/packages/shared/i18n/de/common.json
Claude Fable 5 c858f12592 #134 Statuszeile zwischen Navigation und Artikel
Neue schlanke Statuszeile (letzte Aktualisierung · Wortzahl · geschätzte
Lesezeit) zwischen Seitenkopf und Artikel — im authentifizierten
Lesemodus und in der öffentlichen Ansicht.

- Geteilte Komponente `PageStatusBar` (Datum via Intl in der aktiven
  Sprache, Lesezeit = ceil(Wörter/200), Singular/Plural, Lesezeit
  ausgeblendet bei 0 Wörtern).
- `countWords`/`htmlToText`-Helfer in lib/word-count.ts.
- Authentifiziert (`PageEditorPage`, nur Lesemodus): Wortzahl aus dem
  vorhandenen Markdown-Export (geteilter Query-Key ['page-markdown']),
  `updatedAt` direkt von `page.data`.
- Öffentlich (`PublicPageView`): Wortzahl aus dem server-gerenderten HTML
  per DOMParser — kein Editor-Bundle nötig; kein Backend-Change.
- i18n common.statusbar (de+en), CSS `.page-statusbar` (middot-getrennt,
  gedämpft). Gates grün (typecheck/lint/i18n:check); visuell verifiziert.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155v2aT8AG1kZDQEZiCLBWC
2026-07-19 01:04:11 +02:00

97 lines
3.3 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"statusbar": {
"label": "Seiteninformationen",
"updated": "Aktualisiert {{date}}",
"words_one": "{{count}} Wort",
"words_other": "{{count}} Wörter",
"readingTime": "ca. {{minutes}} Min. Lesezeit"
},
"layout": {
"sidebar": {
"expand": "Seitenleiste einblenden",
"collapse": "Seitenleiste ausblenden",
"resize": "Breite der Seitenleiste anpassen",
"label": "Seiten",
"placeholder": "Deine Teiche und Seiten erscheinen hier.",
"empty": "Noch keine Seiten.",
"sortLabel": "Seiten sortieren",
"sortMode": {
"alpha": "AZ",
"created": "Erstellungsdatum",
"manual": "Manuelle Reihenfolge"
},
"reorder": {
"up": "Nach oben",
"down": "Nach unten",
"dragHint": "Zum Umsortieren ziehen",
"moved": "{{title}} an Position {{position}} von {{count}} verschoben.",
"reparented": "{{title}} unter {{parent}} eingeordnet."
},
"newPage": "+ Neue Seite",
"newPageHint": "Neue Seite",
"newPageTitle": "Titel",
"newPageUnder": "Wird unter „{{title}}“ angelegt.",
"create": "Erstellen",
"cancel": "Abbrechen",
"view": {
"toggleLabel": "Ansicht der Seitenleiste",
"folders": "Ordner",
"labels": "Labels",
"unlabeled": "Ohne Label",
"expand": "Unterseiten ausklappen",
"collapseNode": "Unterseiten einklappen",
"defaultTitle": "Seitenleisten-Ansicht",
"defaultLabel": "Standard-Ansicht",
"defaultHint": "Der Standard für alle Mitglieder; jeder kann seine eigene Seitenleiste lokal umschalten.",
"saved": "Gespeichert."
},
"favorites": {
"filter": "Favoriten",
"empty": "Noch keine Favoriten in diesem Teich."
}
},
"pondSwitcher": {
"label": "Teich wechseln",
"trigger": "Teich auswählen"
},
"user": {
"anonymous": "Nicht angemeldet"
}
},
"pondHome": {
"empty": "Dieser Teich hat noch keine Seiten lege eine über die Seitenleiste an."
},
"home": {
"title": "Willkommen im Dorfteich",
"intro": "Dorfteich ist ein Open-Source-Wiki mit Echtzeit-Zusammenarbeit. Diese Instanz wird gerade eingerichtet.",
"api": {
"checking": "Prüfe API …",
"ok": "API erreichbar",
"error": "API nicht erreichbar"
}
},
"notFound": {
"title": "Seite nicht gefunden",
"body": "Die aufgerufene Adresse existiert nicht.",
"home": "Zurück zur Startseite"
},
"pond": {
"create": {
"menuItem": "+ Neuer Teich",
"title": "Gemeinsamen Teich anlegen",
"nameLabel": "Name",
"descriptionLabel": "Beschreibung (optional)",
"submit": "Teich anlegen",
"cancel": "Abbrechen",
"quotaHint": "Gemeinsame Teiche zählen gegen dein Kontingent — frag eine Site-Adminin/einen Site-Admin, falls das Anlegen abgelehnt wird."
},
"delete": {
"title": "Teich löschen",
"hint": "Verschiebt diesen Teich mit allen Seiten in den Instanz-Papierkorb. Ein Site-Admin kann ihn wiederherstellen. Dein persönlicher Teich kann nicht gelöscht werden.",
"confirmLabel": "Zur Bestätigung den Teichnamen eintippen: {{name}}",
"submit": "Teich löschen",
"deleted": "Teich gelöscht."
}
}
}