Index: src/services/i18n.js
===================================================================
--- src/services/i18n.js	(revision bbf9d1a5d21d0049f96961fccd5666511634974a)
+++ src/services/i18n.js	(revision 4885eabc577791921a46ec8cb5d38e2b4ae1c649)
@@ -660,4 +660,308 @@
     'ahelp.s_updates_h': 'Updates',
     'ahelp.s_updates_b': 'Beheer → <strong>Updates</strong> (alleen god) toont de huidige versie en of er een nieuwere is. Met "Nu bijwerken" haal je de laatste versie binnen.',
+    // === Publieke + overige pagina's ===
+    'pedit.title_new': 'Nieuwe post',
+    'pedit.title_edit': 'Post bewerken',
+    'pedit.f_title': 'Titel',
+    'pedit.f_slug': 'Slug (URL)',
+    'pedit.slug_placeholder': 'auto van titel als leeg',
+    'pedit.f_tags': 'Tags',
+    'pedit.tags_hint': '(komma-gescheiden)',
+    'pedit.f_excerpt': 'Samenvatting & Cirkel Preview',
+    'pedit.excerpt_hint': 'Wordt ook gebruikt als samenvatting in <strong>Cirkels</strong> (andere sites die je post tonen). Leeg laten = begin van de post.',
+    'pedit.s_cover': 'Cover',
+    'pedit.f_cover_url': 'Cover URL',
+    'pedit.cover_url_placeholder': '/media/…  of https://…  (of upload met de knop)',
+    'pedit.cover_upload_btn': 'Upload nieuwe cover',
+    'pedit.s_content': 'Content',
+    'pedit.content_hint': 'Sleep een afbeelding om in te voegen · selecteer tekst om op te maken',
+    'pedit.tb_done': 'Klaar',
+    'pedit.tb_done_title': 'Klaar met bewerken',
+    'pedit.tb_bold': 'Vet',
+    'pedit.tb_bold_title': 'Vet (Ctrl+B)',
+    'pedit.tb_italic': 'Cursief',
+    'pedit.tb_italic_title': 'Cursief (Ctrl+I)',
+    'pedit.tb_underline': 'Onderstreept',
+    'pedit.tb_h2': 'Kop',
+    'pedit.tb_h3': 'Subkop',
+    'pedit.tb_p': 'Paragraaf',
+    'pedit.tb_ul': 'Lijst',
+    'pedit.tb_ol': 'Genummerde lijst',
+    'pedit.tb_quote': 'Quote',
+    'pedit.tb_link': 'Link',
+    'pedit.tb_link_title': 'Link (Ctrl+K)',
+    'pedit.tb_code': 'Code',
+    'pedit.tb_code_title': 'Code (inline)',
+    'pedit.tb_image': 'Afbeelding',
+    'pedit.tb_image_title': 'Afbeelding invoegen',
+    'pedit.tb_track': 'Track',
+    'pedit.tb_track_title': 'Track invoegen',
+    'pedit.tb_playlist': 'Playlist',
+    'pedit.tb_playlist_title': 'Playlist invoegen',
+    'pedit.tb_embed': 'Media embedden',
+    'pedit.tb_embed_title': 'Embed (YouTube, Spotify, SoundCloud, Vimeo…)',
+    'pedit.tb_clear': 'Wis opmaak',
+    'pedit.tb_fullscreen': 'Volledig scherm',
+    'pedit.editor_aria': 'Content',
+    'pedit.editor_placeholder': 'Begin met schrijven…',
+    'pedit.tap_to_edit': 'Tik om te bewerken',
+    'pedit.tap_to_write': 'Tik om te schrijven…',
+    'pedit.chars': 'tekens',
+    'pedit.s_publication': 'Publicatie',
+    'pedit.f_status': 'Status',
+    'pedit.status_published': 'Gepubliceerd',
+    'pedit.status_draft': 'Concept',
+    'pedit.status_archived': 'Gearchiveerd',
+    'pedit.f_type': 'Type',
+    'pedit.type_post': 'Post',
+    'pedit.type_foto': 'Foto',
+    'pedit.type_video': 'Video',
+    'pedit.type_audio': 'Audio',
+    'pedit.pin_label': 'Vastpinnen bovenaan',
+    'pedit.pin_up': 'Hoger zetten',
+    'pedit.pin_down': 'Lager zetten',
+    'pedit.pin_top': 'bovenaan',
+    'pedit.pin_nth_suffix': 'e van boven',
+    'pedit.noindex_label': 'noindex (verberg voor zoekmachines)',
+    'pedit.fan_only_label': 'Alleen voor ingelogde fans',
+    'pedit.publish_at_label': 'Publiceren op (laat leeg = direct)',
+    'pedit.scheduled_for': 'Ingepland voor {d}',
+    'pedit.cancel': 'Annuleren',
+    'pedit.publish': 'Publish',
+    'pedit.save': 'Opslaan',
+    'pedit.js_link_prompt': 'Link URL (https://… of /pad)',
+    'pedit.js_uploading': 'Uploaden…',
+    'pedit.js_uploaded': 'Geüpload',
+    'pedit.js_inserted': 'Ingevoegd',
+    'pedit.js_failed': 'Mislukt',
+    'pedit.js_embed_prompt': 'Plak een media-URL om in te sluiten (YouTube, Spotify, SoundCloud, Vimeo, Apple Music, Bandcamp):',
+    'pedit.js_embed_invalid': 'Geef een volledige URL (https://…).',
+    'pedit.js_no_tracks_found': 'Geen tracks gevonden voor',
+    'pedit.js_no_tracks_yet': 'Nog geen tracks. Upload via Beheer naar Audio.',
+    'pedit.js_tracks_loading': 'Tracks laden…',
+    'pedit.js_tracks_load_fail': 'Kon tracks niet laden',
+    'pedit.js_playlist_editor_missing': 'Playlist editor niet geladen',
+    'pedit.js_playlist_existing': 'Bestaande playlists:',
+    'pedit.js_playlist_choose': 'Kies een nummer om in te voegen, leeg = nieuwe maken:',
+    'pedit.chip_track': 'Track',
+    'pedit.chip_album': 'Album:',
+    'pedit.chip_playlist': 'Playlist:',
+    'pedit.tp_title': 'Track invoegen',
+    'pedit.tp_close': 'Sluiten',
+    'pedit.tp_search_placeholder': 'Zoek op titel of artiest…',
+    'pedit.tp_list_aria': 'Tracks',
+    'acct.back_home': 'Terug naar home',
+    'acct.title': 'Account',
+    'acct.subtitle': 'Profiel en avatar.',
+    'acct.viewer_mode': 'Kijker-modus',
+    'acct.viewer_note': 'Dit is een demo-account. Je kunt alles bekijken, maar niets wijzigen — ook geen foto of bio.',
+    'acct.profile': 'Profiel',
+    'acct.avatar_change': 'Klik om je foto te wijzigen',
+    'acct.member_since': 'Lid sinds',
+    'acct.avatar_remove': 'Foto verwijderen',
+    'acct.email': 'E-mailadres',
+    'acct.email_ph': 'jij@email.nl',
+    'acct.bio': 'Bio',
+    'acct.bio_ph': 'Een korte regel over jezelf',
+    'acct.bio_empty': 'Geen bio',
+    'acct.save': 'Opslaan',
+    'acct.site': 'Site',
+    'acct.site_name': 'Site-naam',
+    'acct.site_name_hint': '— getoond in de kop van je site',
+    'acct.tagline': 'Tagline',
+    'acct.tagline_hint': '— korte oneliner (optioneel)',
+    'acct.site_save': 'Site opslaan',
+    'acct.password_change': 'Wachtwoord wijzigen',
+    'acct.password_current': 'Huidig wachtwoord',
+    'acct.password_new': 'Nieuw wachtwoord',
+    'acct.password_min': '(min 8 tekens)',
+    'acct.password_confirm': 'Bevestig nieuw wachtwoord',
+    'acct.google_login': 'Inloggen met Google',
+    'acct.google_linked': '✓ Je Google-account is gekoppeld — je kunt ook met Google inloggen.',
+    'acct.google_unlink': 'Google ontkoppelen',
+    'acct.google_link_hint': 'Koppel je Google-account zodat je voortaan ook met één klik via Google kunt inloggen (naast je wachtwoord).',
+    'acct.google_link': 'Koppel Google-account',
+    'acct.login': 'Inloggen',
+    'acct.login_google_only': 'Je bent ingelogd via Google ({email}). Er is geen apart wachtwoord.',
+    'news.this_artist': 'deze artiest',
+    'news.form_title': 'Blijf op de hoogte',
+    'news.form_sub_before': 'Schrijf je in voor de nieuwsbrief van ',
+    'news.form_sub_after': ' — nieuwe muziek, shows en updates, rechtstreeks in je inbox. Uitschrijven kan altijd met één klik.',
+    'news.email_ph': 'jouw@email.nl',
+    'news.subscribe': 'Inschrijven',
+    'news.check_title': 'Bijna klaar ✉',
+    'news.check_sub_before': 'We hebben een bevestigingsmail gestuurd naar ',
+    'news.check_sub_after': '. Klik op de link in die mail om je inschrijving te bevestigen.',
+    'news.your_address': 'je adres',
+    'news.done_title': 'Je bent ingeschreven ✓',
+    'news.done_sub_before': 'Bedankt — je staat op de lijst van ',
+    'news.done_sub_after': '.',
+    'news.confirmed_title': 'Inschrijving bevestigd ✓',
+    'news.confirmed_sub_before': 'Top! Je ontvangt voortaan de nieuwsbrief van ',
+    'news.confirmed_sub_after': '.',
+    'news.unsubbed_title': 'Uitgeschreven',
+    'news.unsubbed_sub': 'Je bent afgemeld. Je ontvangt geen nieuwsbrieven meer. Van gedachten veranderd? Je kunt je altijd opnieuw inschrijven.',
+    'news.invalid_title': 'Ongeldig e-mailadres',
+    'news.invalid_sub': 'Controleer je adres en probeer \'t opnieuw.',
+    'news.back': '← Terug',
+    'news.smtperror_title': 'Even niet gelukt',
+    'news.smtperror_sub': 'De bevestigingsmail kon niet verstuurd worden. Probeer \'t later nog eens.',
+    'news.badtoken_title': 'Link ongeldig of verlopen',
+    'news.badtoken_sub': 'Deze link werkt niet meer. Schrijf je eventueel opnieuw in.',
+    'news.to_subscribe': 'Naar inschrijven',
+    'news.error_title': 'Er ging iets mis',
+    'news.error_sub': 'Probeer \'t later nog eens.',
+    'dl.ready_title': 'Bedankt! ⬇',
+    'dl.ready_sub': 'Je download zou nu moeten starten. Gebeurt er niets?',
+    'dl.manual': 'Download handmatig starten',
+    'dl.download_btn': 'Download',
+    'dl.capture_sub': 'Laat je e-mailadres achter en je krijgt het bestand. Je komt dan ook op de nieuwsbrieflijst — uitschrijven kan altijd.',
+    'dl.email_ph': 'jouw@email.nl',
+    'epk.kicker': 'Perskit',
+    'epk.edit': 'Bewerken',
+    'epk.contact_booking': 'Contact / boeking',
+    'epk.view_site': 'Bekijk de site →',
+    'epk.press_photo': 'Persfoto',
+    'epk.most_played': 'Meest beluisterd',
+    'epk.recent': 'Recent',
+    'fgate.title': 'Alleen voor fans',
+    'fgate.sub': 'Dit is exclusief voor ingelogde fans. Log in om het te bekijken.',
+    'fgate.login': 'Inloggen / aanmelden',
+    'lbio.empty': 'Nog geen links ingesteld.',
+    'lbio.back_to_site': 'naar de site',
+    'myst.overview': 'Overzicht',
+    'myst.title': 'Mijn Klonkt Hub',
+    'myst.quick_links_aria': 'Beheer-snelkoppelingen',
+    'myst.new_post': 'Nieuwe post',
+    'myst.appearance': 'Uiterlijk',
+    'myst.comments': 'Reacties',
+    'myst.view_site': 'Bekijk mijn site',
+    'myst.account': 'Account',
+    'myst.posts': 'Posts',
+    'myst.published': 'Gepubliceerd',
+    'myst.draft_count_one': '{n} concept',
+    'myst.draft_count_many': '{n} concepten',
+    'myst.draft_badge': 'Concept',
+    'myst.untitled': '(zonder titel)',
+    'myst.edit': 'Bewerken',
+    'myst.view': 'Bekijk',
+    'arst.title': 'Wachtwoord resetten',
+    'arst.request_new': 'Vraag een nieuwe reset-link aan',
+    'arst.back_login': 'Terug naar inloggen',
+    'arst.set_for': 'Stel een nieuw wachtwoord in voor {username}.',
+    'arst.new_pw': 'Nieuw wachtwoord (min 8 tekens)',
+    'arst.confirm_pw': 'Bevestig nieuw wachtwoord',
+    'arst.submit': 'Wachtwoord instellen',
+    'arrq.title': 'Wachtwoord resetten',
+    'arrq.sent': 'Als er een account bestaat voor dat e-mailadres, is er een reset-link verstuurd.',
+    'arrq.no_mailserver': '<strong>Geen e-mailserver ingesteld</strong> — reset-link hieronder.',
+    'arrq.no_mail_cli': 'Geen e-mail ingesteld? De beheerder kan ook <code>npm run reset-admin</code> draaien op de server.',
+    'arrq.back_login': '← Terug naar inloggen',
+    'arrq.tagline': 'Vul je e-mail in; we sturen een reset-link.',
+    'arrq.email': 'E-mail',
+    'arrq.submit': 'Stuur reset-link',
+    'adir.home': 'Home',
+    'adir.logout': 'Uitloggen',
+    'adir.login': 'Inloggen',
+    'adir.title': 'Leden',
+    'adir.count_one': '{n} Klonkt',
+    'adir.count_many': "{n} Klonkt's",
+    'adir.search_ph': 'Zoek op naam…',
+    'adir.search_aria': 'Zoek leden',
+    'adir.search_btn': 'Zoeken',
+    'adir.clear': 'Wissen',
+    'adir.empty_q': 'Geen leden gevonden voor "{q}".',
+    'adir.empty': 'Nog geen leden.',
+    'adir.posts_one': '{n} post',
+    'adir.posts_many': '{n} posts',
+    'adir.pager_aria': 'Paginering',
+    'adir.prev': '← Vorige',
+    'adir.page_info': 'Pagina {page} van {pages}',
+    'adir.next': 'Volgende →',
+    'glog.admin_title': 'Dit is een beheerders-account',
+    'glog.admin_body': 'Je logde in met Google, maar dit e-mailadres hoort bij de beheerder van deze site. Inloggen met Google is alleen voor luisteraars/fans — beheerders gebruiken altijd hun wachtwoord (zo kan een Google-login nooit per ongeluk beheerrechten geven).',
+    'glog.admin_li1': '<strong>Ben je de beheerder?</strong> <a href="/auth/admin">Log in met je gebruikersnaam + wachtwoord</a>.',
+    'glog.admin_li2': '<strong>Wil je voortaan met Google inloggen?</strong> Log eerst in met wachtwoord en <strong>koppel je Google-account</strong> onder Account → daarna werkt Google-login ook voor jou.',
+    'glog.admin_li3': '<strong>Wil je als fan inloggen?</strong> Gebruik een <strong>ander Google-account</strong> (niet je beheerdersadres).',
+    'glog.session_title': 'Login afgebroken',
+    'glog.session_body': 'De Google-login is afgebroken of de sessie was verlopen. Probeer het gewoon opnieuw.',
+    'glog.email_title': 'Geen geverifieerd e-mailadres',
+    'glog.email_body': 'Je Google-account heeft geen geverifieerd e-mailadres. Verifieer je adres bij Google.',
+    'glog.linked_title': 'Adres al gekoppeld',
+    'glog.linked_body': 'Dit e-mailadres is al aan een ander Google-account gekoppeld. Gebruik dat account, of neem contact op met de beheerder.',
+    'glog.unavailable_title': 'Google-login niet beschikbaar',
+    'glog.unavailable_body': 'Inloggen met Google is op deze site (nog) niet ingesteld.',
+    'glog.failed_title': 'Google-login mislukt',
+    'glog.failed_body': 'Er ging iets mis bij het inloggen met Google. Probeer het opnieuw.',
+    'pusr.post_one': 'post',
+    'pusr.post_many': 'posts',
+    'pusr.on_this_site': 'op deze site',
+    'pusr.total': '{n} totaal',
+    'pusr.joined': 'lid sinds {date}',
+    'pusr.send_dm': 'Stuur DM',
+    'pusr.empty': 'Nog geen posts op deze site.',
+    'pusr.posts_heading': 'Posts',
+    'pusr.untitled': '(zonder titel)',
+    'phub.main_badge': 'Hoofdpagina',
+    'phub.view_page': 'Bekijk de pagina',
+    'phub.members': 'Leden',
+    'phub.post_one': 'post',
+    'phub.post_many': 'posts',
+    'phub.all_members': 'Alle {n} leden',
+    'phub.latest_posts': 'Laatste posts van onze leden.',
+    'cfeed.title': 'Cirkel',
+    'cfeed.sub': 'Wat er speelt bij de andere sites in mijn cirkel.',
+    'cfeed.count': '{n} sites in mijn cirkel',
+    'cfeed.empty': 'Nog niets in mijn cirkel.',
+    'cfeed.grid_view': 'Grid-weergave',
+    'cpost.back': 'Cirkel',
+    'cpost.via': 'via',
+    'cpost.read_more': 'Lees verder bij {source}',
+    'vblk.title': 'Kijker-modus',
+    'vblk.text_before': 'Dit is een alleen-lezen account. Je kunt alles bekijken, maar',
+    'vblk.text_strong': 'niets wijzigen',
+    'vblk.text_after': '— opslaan, uploaden, verwijderen en reageren zijn uitgeschakeld.',
+    'vblk.back': 'Terug',
+    'vblk.to_home': 'Naar de hoofdpagina',
+    'phome.empty_title': 'Hier is het nog stil.',
+    'phome.empty_sub': 'Nog geen posts. Spannend.',
+    'phome.write_first': 'Schrijf je eerste post',
+    'phome.grid_view': 'Grid-weergave',
+    'fav.title': 'Favorieten',
+    'fav.sub': "Posts die je hebt geliket. Tik op het ♥ bij een post om 'm hier te bewaren.",
+    'fav.empty': 'Je hebt nog geen favorieten. Open een post en tik op het hartje ♡.',
+    'chlog.back': 'Terug',
+    'chlog.title': 'Wijzigingen',
+    'chlog.app_version': 'App-versie',
+    'chlog.fed_proto': 'Federatie-proto',
+    'chlog.manage_updates': 'Updates beheren',
+    'e404.title': 'Pagina niet gevonden',
+    'e404.sub': 'Deze pagina bestaat niet (meer). Misschien is de link verouderd of verkeerd getypt.',
+    'e404.home': 'Naar de homepagina',
+    'e404.archive': 'Archief',
+    'ptype.eyebrow': 'Type',
+    'ptype.count_one': '{n} post',
+    'ptype.count_many': '{n} posts',
+    'ptype.empty': 'Nog geen posts van dit type.',
+    'ptype.untitled': '(zonder titel)',
+    'ptag.eyebrow': 'Tag',
+    'ptag.count_one': '{n} post',
+    'ptag.count_many': '{n} posts',
+    'ptag.empty': 'Nog geen posts met deze tag.',
+    'ptag.untitled': '(zonder titel)',
+    'parch.back': 'Terug',
+    'parch.title': 'Archief',
+    'parch.count_one': '{n} bericht',
+    'parch.count_many': '{n} berichten',
+    'parch.empty': 'Nog geen berichten.',
+    'prin.tagline': 'Je directe berichten op deze site.',
+    'prin.empty': 'Nog geen gesprekken. Open iemands profiel en klik op "DM sturen" om er een te beginnen.',
+    'prin.empty_conv': 'Leeg gesprek',
+    'prcv.back_aria': 'Terug naar inbox',
+    'prcv.inbox': 'Inbox',
+    'prcv.unknown': 'Onbekend',
+    'prcv.view_profile': 'Bekijk profiel',
+    'prcv.placeholder': 'Bericht…',
+    'prcv.send': 'Stuur',
   },
   en: {
@@ -1303,4 +1607,307 @@
     'ahelp.s_updates_h': 'Updates',
     'ahelp.s_updates_b': 'Admin → <strong>Updates</strong> (god only) shows the current version and whether a newer one is available. With "Update now" you fetch the latest version.',
+    'pedit.title_new': 'New post',
+    'pedit.title_edit': 'Edit post',
+    'pedit.f_title': 'Title',
+    'pedit.f_slug': 'Slug (URL)',
+    'pedit.slug_placeholder': 'auto from title if empty',
+    'pedit.f_tags': 'Tags',
+    'pedit.tags_hint': '(comma-separated)',
+    'pedit.f_excerpt': 'Summary & Circle Preview',
+    'pedit.excerpt_hint': 'Also used as the summary in <strong>Circles</strong> (other sites that show your post). Leave empty = start of the post.',
+    'pedit.s_cover': 'Cover',
+    'pedit.f_cover_url': 'Cover URL',
+    'pedit.cover_url_placeholder': '/media/…  or https://…  (or upload with the button)',
+    'pedit.cover_upload_btn': 'Upload new cover',
+    'pedit.s_content': 'Content',
+    'pedit.content_hint': 'Drag an image to insert · select text to format',
+    'pedit.tb_done': 'Done',
+    'pedit.tb_done_title': 'Done editing',
+    'pedit.tb_bold': 'Bold',
+    'pedit.tb_bold_title': 'Bold (Ctrl+B)',
+    'pedit.tb_italic': 'Italic',
+    'pedit.tb_italic_title': 'Italic (Ctrl+I)',
+    'pedit.tb_underline': 'Underline',
+    'pedit.tb_h2': 'Heading',
+    'pedit.tb_h3': 'Subheading',
+    'pedit.tb_p': 'Paragraph',
+    'pedit.tb_ul': 'List',
+    'pedit.tb_ol': 'Numbered list',
+    'pedit.tb_quote': 'Quote',
+    'pedit.tb_link': 'Link',
+    'pedit.tb_link_title': 'Link (Ctrl+K)',
+    'pedit.tb_code': 'Code',
+    'pedit.tb_code_title': 'Code (inline)',
+    'pedit.tb_image': 'Image',
+    'pedit.tb_image_title': 'Insert image',
+    'pedit.tb_track': 'Track',
+    'pedit.tb_track_title': 'Insert track',
+    'pedit.tb_playlist': 'Playlist',
+    'pedit.tb_playlist_title': 'Insert playlist',
+    'pedit.tb_embed': 'Embed media',
+    'pedit.tb_embed_title': 'Embed (YouTube, Spotify, SoundCloud, Vimeo…)',
+    'pedit.tb_clear': 'Clear formatting',
+    'pedit.tb_fullscreen': 'Full screen',
+    'pedit.editor_aria': 'Content',
+    'pedit.editor_placeholder': 'Start writing…',
+    'pedit.tap_to_edit': 'Tap to edit',
+    'pedit.tap_to_write': 'Tap to write…',
+    'pedit.chars': 'characters',
+    'pedit.s_publication': 'Publication',
+    'pedit.f_status': 'Status',
+    'pedit.status_published': 'Published',
+    'pedit.status_draft': 'Draft',
+    'pedit.status_archived': 'Archived',
+    'pedit.f_type': 'Type',
+    'pedit.type_post': 'Post',
+    'pedit.type_foto': 'Photo',
+    'pedit.type_video': 'Video',
+    'pedit.type_audio': 'Audio',
+    'pedit.pin_label': 'Pin to top',
+    'pedit.pin_up': 'Move up',
+    'pedit.pin_down': 'Move down',
+    'pedit.pin_top': 'at the top',
+    'pedit.pin_nth_suffix': 'th from top',
+    'pedit.noindex_label': 'noindex (hide from search engines)',
+    'pedit.fan_only_label': 'Logged-in fans only',
+    'pedit.publish_at_label': 'Publish at (leave empty = immediately)',
+    'pedit.scheduled_for': 'Scheduled for {d}',
+    'pedit.cancel': 'Cancel',
+    'pedit.publish': 'Publish',
+    'pedit.save': 'Save',
+    'pedit.js_link_prompt': 'Link URL (https://… or /path)',
+    'pedit.js_uploading': 'Uploading…',
+    'pedit.js_uploaded': 'Uploaded',
+    'pedit.js_inserted': 'Inserted',
+    'pedit.js_failed': 'Failed',
+    'pedit.js_embed_prompt': 'Paste a media URL to embed (YouTube, Spotify, SoundCloud, Vimeo, Apple Music, Bandcamp):',
+    'pedit.js_embed_invalid': 'Enter a full URL (https://…).',
+    'pedit.js_no_tracks_found': 'No tracks found for',
+    'pedit.js_no_tracks_yet': 'No tracks yet. Upload via Admin then Audio.',
+    'pedit.js_tracks_loading': 'Loading tracks…',
+    'pedit.js_tracks_load_fail': 'Could not load tracks',
+    'pedit.js_playlist_editor_missing': 'Playlist editor not loaded',
+    'pedit.js_playlist_existing': 'Existing playlists:',
+    'pedit.js_playlist_choose': 'Choose a number to insert, empty = create new:',
+    'pedit.chip_track': 'Track',
+    'pedit.chip_album': 'Album:',
+    'pedit.chip_playlist': 'Playlist:',
+    'pedit.tp_title': 'Insert track',
+    'pedit.tp_close': 'Close',
+    'pedit.tp_search_placeholder': 'Search by title or artist…',
+    'pedit.tp_list_aria': 'Tracks',
+    'acct.back_home': 'Back to home',
+    'acct.title': 'Account',
+    'acct.subtitle': 'Profile and avatar.',
+    'acct.viewer_mode': 'Viewer mode',
+    'acct.viewer_note': 'This is a demo account. You can view everything, but change nothing — not even your photo or bio.',
+    'acct.profile': 'Profile',
+    'acct.avatar_change': 'Click to change your photo',
+    'acct.member_since': 'Member since',
+    'acct.avatar_remove': 'Remove photo',
+    'acct.email': 'Email address',
+    'acct.email_ph': 'you@email.com',
+    'acct.bio': 'Bio',
+    'acct.bio_ph': 'A short line about yourself',
+    'acct.bio_empty': 'No bio',
+    'acct.save': 'Save',
+    'acct.site': 'Site',
+    'acct.site_name': 'Site name',
+    'acct.site_name_hint': '— shown in your site\'s header',
+    'acct.tagline': 'Tagline',
+    'acct.tagline_hint': '— short one-liner (optional)',
+    'acct.site_save': 'Save site',
+    'acct.password_change': 'Change password',
+    'acct.password_current': 'Current password',
+    'acct.password_new': 'New password',
+    'acct.password_min': '(min 8 characters)',
+    'acct.password_confirm': 'Confirm new password',
+    'acct.google_login': 'Sign in with Google',
+    'acct.google_linked': '✓ Your Google account is linked — you can also sign in with Google.',
+    'acct.google_unlink': 'Unlink Google',
+    'acct.google_link_hint': 'Link your Google account so you can also sign in with one click via Google (alongside your password).',
+    'acct.google_link': 'Link Google account',
+    'acct.login': 'Sign in',
+    'acct.login_google_only': 'You are signed in via Google ({email}). There is no separate password.',
+    'news.this_artist': 'this artist',
+    'news.form_title': 'Stay in the loop',
+    'news.form_sub_before': 'Subscribe to the newsletter from ',
+    'news.form_sub_after': ' — new music, shows and updates, straight to your inbox. You can unsubscribe anytime with one click.',
+    'news.email_ph': 'you@email.com',
+    'news.subscribe': 'Subscribe',
+    'news.check_title': 'Almost done ✉',
+    'news.check_sub_before': 'We\'ve sent a confirmation email to ',
+    'news.check_sub_after': '. Click the link in that email to confirm your subscription.',
+    'news.your_address': 'your address',
+    'news.done_title': 'You\'re subscribed ✓',
+    'news.done_sub_before': 'Thanks — you\'re on the list of ',
+    'news.done_sub_after': '.',
+    'news.confirmed_title': 'Subscription confirmed ✓',
+    'news.confirmed_sub_before': 'Great! You\'ll now receive the newsletter from ',
+    'news.confirmed_sub_after': '.',
+    'news.unsubbed_title': 'Unsubscribed',
+    'news.unsubbed_sub': 'You\'ve been unsubscribed. You won\'t receive any more newsletters. Changed your mind? You can always subscribe again.',
+    'news.invalid_title': 'Invalid email address',
+    'news.invalid_sub': 'Please check your address and try again.',
+    'news.back': '← Back',
+    'news.smtperror_title': 'That didn\'t work',
+    'news.smtperror_sub': 'The confirmation email couldn\'t be sent. Please try again later.',
+    'news.badtoken_title': 'Link invalid or expired',
+    'news.badtoken_sub': 'This link no longer works. Feel free to subscribe again.',
+    'news.to_subscribe': 'To subscribe',
+    'news.error_title': 'Something went wrong',
+    'news.error_sub': 'Please try again later.',
+    'dl.ready_title': 'Thanks! ⬇',
+    'dl.ready_sub': 'Your download should start now. Nothing happening?',
+    'dl.manual': 'Start download manually',
+    'dl.download_btn': 'Download',
+    'dl.capture_sub': 'Leave your email address and you\'ll get the file. You\'ll also be added to the newsletter list — you can unsubscribe anytime.',
+    'dl.email_ph': 'you@email.com',
+    'epk.kicker': 'Press kit',
+    'epk.edit': 'Edit',
+    'epk.contact_booking': 'Contact / booking',
+    'epk.view_site': 'View the site →',
+    'epk.press_photo': 'Press photo',
+    'epk.most_played': 'Most played',
+    'epk.recent': 'Recent',
+    'fgate.title': 'Fans only',
+    'fgate.sub': 'This is exclusive to logged-in fans. Log in to view it.',
+    'fgate.login': 'Log in / sign up',
+    'lbio.empty': 'No links set up yet.',
+    'lbio.back_to_site': 'back to the site',
+    'myst.overview': 'Overview',
+    'myst.title': 'My Klonkt Hub',
+    'myst.quick_links_aria': 'Admin shortcuts',
+    'myst.new_post': 'New post',
+    'myst.appearance': 'Appearance',
+    'myst.comments': 'Comments',
+    'myst.view_site': 'View my site',
+    'myst.account': 'Account',
+    'myst.posts': 'Posts',
+    'myst.published': 'Published',
+    'myst.draft_count_one': '{n} draft',
+    'myst.draft_count_many': '{n} drafts',
+    'myst.draft_badge': 'Draft',
+    'myst.untitled': '(untitled)',
+    'myst.edit': 'Edit',
+    'myst.view': 'View',
+    'arst.title': 'Reset password',
+    'arst.request_new': 'Request a new reset link',
+    'arst.back_login': 'Back to login',
+    'arst.set_for': 'Set a new password for {username}.',
+    'arst.new_pw': 'New password (min 8 characters)',
+    'arst.confirm_pw': 'Confirm new password',
+    'arst.submit': 'Set password',
+    'arrq.title': 'Reset password',
+    'arrq.sent': 'If an account exists for that email address, a reset link has been sent.',
+    'arrq.no_mailserver': '<strong>No mail server configured</strong> — reset link below.',
+    'arrq.no_mail_cli': 'No email set up? The administrator can also run <code>npm run reset-admin</code> on the server.',
+    'arrq.back_login': '← Back to login',
+    'arrq.tagline': 'Enter your email and we\'ll send you a reset link.',
+    'arrq.email': 'Email',
+    'arrq.submit': 'Send reset link',
+    'adir.home': 'Home',
+    'adir.logout': 'Log out',
+    'adir.login': 'Log in',
+    'adir.title': 'Members',
+    'adir.count_one': '{n} Klonkt',
+    'adir.count_many': "{n} Klonkt's",
+    'adir.search_ph': 'Search by name…',
+    'adir.search_aria': 'Search members',
+    'adir.search_btn': 'Search',
+    'adir.clear': 'Clear',
+    'adir.empty_q': 'No members found for "{q}".',
+    'adir.empty': 'No members yet.',
+    'adir.posts_one': '{n} post',
+    'adir.posts_many': '{n} posts',
+    'adir.pager_aria': 'Pagination',
+    'adir.prev': '← Previous',
+    'adir.page_info': 'Page {page} of {pages}',
+    'adir.next': 'Next →',
+    'glog.admin_title': 'This is an administrator account',
+    'glog.admin_body': 'You signed in with Google, but this email address belongs to the administrator of this site. Google sign-in is only for listeners/fans — administrators always use their password (so a Google login can never accidentally grant admin rights).',
+    'glog.admin_li1': '<strong>Are you the administrator?</strong> <a href="/auth/admin">Log in with your username + password</a>.',
+    'glog.admin_li2': '<strong>Want to sign in with Google from now on?</strong> Log in with your password first and <strong>link your Google account</strong> under Account → after that Google sign-in works for you too.',
+    'glog.admin_li3': '<strong>Want to sign in as a fan?</strong> Use a <strong>different Google account</strong> (not your administrator address).',
+    'glog.session_title': 'Login interrupted',
+    'glog.session_body': 'The Google login was interrupted or the session had expired. Just try again.',
+    'glog.email_title': 'No verified email address',
+    'glog.email_body': 'Your Google account has no verified email address. Verify your address with Google.',
+    'glog.linked_title': 'Address already linked',
+    'glog.linked_body': 'This email address is already linked to another Google account. Use that account, or contact the administrator.',
+    'glog.unavailable_title': 'Google sign-in unavailable',
+    'glog.unavailable_body': 'Google sign-in has not (yet) been set up on this site.',
+    'glog.failed_title': 'Google sign-in failed',
+    'glog.failed_body': 'Something went wrong signing in with Google. Please try again.',
+    'pusr.post_one': 'post',
+    'pusr.post_many': 'posts',
+    'pusr.on_this_site': 'on this site',
+    'pusr.total': '{n} total',
+    'pusr.joined': 'joined {date}',
+    'pusr.send_dm': 'Send DM',
+    'pusr.empty': 'No posts on this site yet.',
+    'pusr.posts_heading': 'Posts',
+    'pusr.untitled': '(untitled)',
+    'phub.main_badge': 'Main page',
+    'phub.view_page': 'View the page',
+    'phub.members': 'Members',
+    'phub.post_one': 'post',
+    'phub.post_many': 'posts',
+    'phub.all_members': 'All {n} members',
+    'phub.latest_posts': 'Latest posts from our members.',
+    'cfeed.title': 'Circle',
+    'cfeed.sub': "What's happening at the other sites in my circle.",
+    'cfeed.count': '{n} sites in my circle',
+    'cfeed.empty': 'Nothing in my circle yet.',
+    'cfeed.grid_view': 'Grid view',
+    'cpost.back': 'Circle',
+    'cpost.via': 'via',
+    'cpost.read_more': 'Read more at {source}',
+    'vblk.title': 'Viewer mode',
+    'vblk.text_before': 'This is a read-only account. You can view everything, but',
+    'vblk.text_strong': 'cannot change anything',
+    'vblk.text_after': '— saving, uploading, deleting and commenting are disabled.',
+    'vblk.back': 'Back',
+    'vblk.to_home': 'Go to the main page',
+    'phome.empty_title': "It's quiet here for now.",
+    'phome.empty_sub': 'No posts yet. Exciting.',
+    'phome.write_first': 'Write your first post',
+    'phome.grid_view': 'Grid view',
+    'fav.title': 'Favorites',
+    'fav.sub': 'Posts you have liked. Tap the ♥ on a post to save it here.',
+    'fav.empty': 'You have no favorites yet. Open a post and tap the heart ♡.',
+    'chlog.back': 'Back',
+    'chlog.title': 'Changes',
+    'chlog.app_version': 'App version',
+    'chlog.fed_proto': 'Federation proto',
+    'chlog.manage_updates': 'Manage updates',
+    'e404.title': 'Page not found',
+    'e404.sub': 'This page no longer exists. The link may be outdated or mistyped.',
+    'e404.home': 'Go to the homepage',
+    'e404.archive': 'Archive',
+    'ptype.eyebrow': 'Type',
+    'ptype.count_one': '{n} post',
+    'ptype.count_many': '{n} posts',
+    'ptype.empty': 'No posts of this type yet.',
+    'ptype.untitled': '(untitled)',
+    'ptag.eyebrow': 'Tag',
+    'ptag.count_one': '{n} post',
+    'ptag.count_many': '{n} posts',
+    'ptag.empty': 'No posts with this tag yet.',
+    'ptag.untitled': '(untitled)',
+    'parch.back': 'Back',
+    'parch.title': 'Archive',
+    'parch.count_one': '{n} post',
+    'parch.count_many': '{n} posts',
+    'parch.empty': 'No posts yet.',
+    'prin.tagline': 'Your direct messages on this site.',
+    'prin.empty': 'No conversations yet. Open someone\'s profile and click "Send DM" to start one.',
+    'prin.empty_conv': 'Empty conversation',
+    'prcv.back_aria': 'Back to inbox',
+    'prcv.inbox': 'Inbox',
+    'prcv.unknown': 'Unknown',
+    'prcv.view_profile': 'View profile',
+    'prcv.placeholder': 'Message…',
+    'prcv.send': 'Send',
   },
   de: {
@@ -1946,4 +2553,307 @@
     'ahelp.s_updates_h': 'Updates',
     'ahelp.s_updates_b': 'Verwaltung → <strong>Updates</strong> (nur God) zeigt die aktuelle Version und ob eine neuere verfügbar ist. Mit „Jetzt aktualisieren“ holst du dir die neueste Version.',
+    'pedit.title_new': 'Neuer Beitrag',
+    'pedit.title_edit': 'Beitrag bearbeiten',
+    'pedit.f_title': 'Titel',
+    'pedit.f_slug': 'Slug (URL)',
+    'pedit.slug_placeholder': 'automatisch aus Titel, wenn leer',
+    'pedit.f_tags': 'Tags',
+    'pedit.tags_hint': '(kommagetrennt)',
+    'pedit.f_excerpt': 'Zusammenfassung & Zirkel-Vorschau',
+    'pedit.excerpt_hint': 'Wird auch als Zusammenfassung in <strong>Zirkeln</strong> verwendet (andere Seiten, die deinen Beitrag zeigen). Leer lassen = Anfang des Beitrags.',
+    'pedit.s_cover': 'Titelbild',
+    'pedit.f_cover_url': 'Titelbild-URL',
+    'pedit.cover_url_placeholder': '/media/…  oder https://…  (oder per Schaltfläche hochladen)',
+    'pedit.cover_upload_btn': 'Neues Titelbild hochladen',
+    'pedit.s_content': 'Inhalt',
+    'pedit.content_hint': 'Bild ziehen zum Einfügen · Text markieren zum Formatieren',
+    'pedit.tb_done': 'Fertig',
+    'pedit.tb_done_title': 'Bearbeitung beenden',
+    'pedit.tb_bold': 'Fett',
+    'pedit.tb_bold_title': 'Fett (Strg+B)',
+    'pedit.tb_italic': 'Kursiv',
+    'pedit.tb_italic_title': 'Kursiv (Strg+I)',
+    'pedit.tb_underline': 'Unterstrichen',
+    'pedit.tb_h2': 'Überschrift',
+    'pedit.tb_h3': 'Zwischenüberschrift',
+    'pedit.tb_p': 'Absatz',
+    'pedit.tb_ul': 'Liste',
+    'pedit.tb_ol': 'Nummerierte Liste',
+    'pedit.tb_quote': 'Zitat',
+    'pedit.tb_link': 'Link',
+    'pedit.tb_link_title': 'Link (Strg+K)',
+    'pedit.tb_code': 'Code',
+    'pedit.tb_code_title': 'Code (inline)',
+    'pedit.tb_image': 'Bild',
+    'pedit.tb_image_title': 'Bild einfügen',
+    'pedit.tb_track': 'Track',
+    'pedit.tb_track_title': 'Track einfügen',
+    'pedit.tb_playlist': 'Playlist',
+    'pedit.tb_playlist_title': 'Playlist einfügen',
+    'pedit.tb_embed': 'Medien einbetten',
+    'pedit.tb_embed_title': 'Einbetten (YouTube, Spotify, SoundCloud, Vimeo…)',
+    'pedit.tb_clear': 'Formatierung entfernen',
+    'pedit.tb_fullscreen': 'Vollbild',
+    'pedit.editor_aria': 'Inhalt',
+    'pedit.editor_placeholder': 'Schreib los…',
+    'pedit.tap_to_edit': 'Zum Bearbeiten tippen',
+    'pedit.tap_to_write': 'Zum Schreiben tippen…',
+    'pedit.chars': 'Zeichen',
+    'pedit.s_publication': 'Veröffentlichung',
+    'pedit.f_status': 'Status',
+    'pedit.status_published': 'Veröffentlicht',
+    'pedit.status_draft': 'Entwurf',
+    'pedit.status_archived': 'Archiviert',
+    'pedit.f_type': 'Typ',
+    'pedit.type_post': 'Beitrag',
+    'pedit.type_foto': 'Foto',
+    'pedit.type_video': 'Video',
+    'pedit.type_audio': 'Audio',
+    'pedit.pin_label': 'Oben anheften',
+    'pedit.pin_up': 'Nach oben',
+    'pedit.pin_down': 'Nach unten',
+    'pedit.pin_top': 'ganz oben',
+    'pedit.pin_nth_suffix': '. von oben',
+    'pedit.noindex_label': 'noindex (vor Suchmaschinen verbergen)',
+    'pedit.fan_only_label': 'Nur für angemeldete Fans',
+    'pedit.publish_at_label': 'Veröffentlichen am (leer lassen = sofort)',
+    'pedit.scheduled_for': 'Geplant für {d}',
+    'pedit.cancel': 'Abbrechen',
+    'pedit.publish': 'Veröffentlichen',
+    'pedit.save': 'Speichern',
+    'pedit.js_link_prompt': 'Link-URL (https://… oder /pfad)',
+    'pedit.js_uploading': 'Wird hochgeladen…',
+    'pedit.js_uploaded': 'Hochgeladen',
+    'pedit.js_inserted': 'Eingefügt',
+    'pedit.js_failed': 'Fehlgeschlagen',
+    'pedit.js_embed_prompt': 'Füge eine Medien-URL zum Einbetten ein (YouTube, Spotify, SoundCloud, Vimeo, Apple Music, Bandcamp):',
+    'pedit.js_embed_invalid': 'Gib eine vollständige URL ein (https://…).',
+    'pedit.js_no_tracks_found': 'Keine Tracks gefunden für',
+    'pedit.js_no_tracks_yet': 'Noch keine Tracks. Lade welche über Verwaltung dann Audio hoch.',
+    'pedit.js_tracks_loading': 'Tracks werden geladen…',
+    'pedit.js_tracks_load_fail': 'Tracks konnten nicht geladen werden',
+    'pedit.js_playlist_editor_missing': 'Playlist-Editor nicht geladen',
+    'pedit.js_playlist_existing': 'Vorhandene Playlists:',
+    'pedit.js_playlist_choose': 'Wähle eine Nummer zum Einfügen, leer = neue erstellen:',
+    'pedit.chip_track': 'Track',
+    'pedit.chip_album': 'Album:',
+    'pedit.chip_playlist': 'Playlist:',
+    'pedit.tp_title': 'Track einfügen',
+    'pedit.tp_close': 'Schließen',
+    'pedit.tp_search_placeholder': 'Nach Titel oder Künstler suchen…',
+    'pedit.tp_list_aria': 'Tracks',
+    'acct.back_home': 'Zurück zur Startseite',
+    'acct.title': 'Konto',
+    'acct.subtitle': 'Profil und Avatar.',
+    'acct.viewer_mode': 'Betrachter-Modus',
+    'acct.viewer_note': 'Dies ist ein Demo-Konto. Du kannst alles ansehen, aber nichts ändern — auch kein Foto oder keine Bio.',
+    'acct.profile': 'Profil',
+    'acct.avatar_change': 'Zum Ändern deines Fotos klicken',
+    'acct.member_since': 'Mitglied seit',
+    'acct.avatar_remove': 'Foto entfernen',
+    'acct.email': 'E-Mail-Adresse',
+    'acct.email_ph': 'du@email.de',
+    'acct.bio': 'Bio',
+    'acct.bio_ph': 'Eine kurze Zeile über dich',
+    'acct.bio_empty': 'Keine Bio',
+    'acct.save': 'Speichern',
+    'acct.site': 'Seite',
+    'acct.site_name': 'Seitenname',
+    'acct.site_name_hint': '— wird in der Kopfzeile deiner Seite angezeigt',
+    'acct.tagline': 'Slogan',
+    'acct.tagline_hint': '— kurzer Einzeiler (optional)',
+    'acct.site_save': 'Seite speichern',
+    'acct.password_change': 'Passwort ändern',
+    'acct.password_current': 'Aktuelles Passwort',
+    'acct.password_new': 'Neues Passwort',
+    'acct.password_min': '(mind. 8 Zeichen)',
+    'acct.password_confirm': 'Neues Passwort bestätigen',
+    'acct.google_login': 'Mit Google anmelden',
+    'acct.google_linked': '✓ Dein Google-Konto ist verknüpft — du kannst dich auch mit Google anmelden.',
+    'acct.google_unlink': 'Google trennen',
+    'acct.google_link_hint': 'Verknüpfe dein Google-Konto, damit du dich künftig auch mit einem Klick über Google anmelden kannst (zusätzlich zu deinem Passwort).',
+    'acct.google_link': 'Google-Konto verknüpfen',
+    'acct.login': 'Anmelden',
+    'acct.login_google_only': 'Du bist über Google angemeldet ({email}). Es gibt kein separates Passwort.',
+    'news.this_artist': 'diese:r Künstler:in',
+    'news.form_title': 'Bleib auf dem Laufenden',
+    'news.form_sub_before': 'Abonniere den Newsletter von ',
+    'news.form_sub_after': ' — neue Musik, Konzerte und Updates, direkt in dein Postfach. Abmelden ist jederzeit mit einem Klick möglich.',
+    'news.email_ph': 'du@email.de',
+    'news.subscribe': 'Abonnieren',
+    'news.check_title': 'Fast geschafft ✉',
+    'news.check_sub_before': 'Wir haben eine Bestätigungs-E-Mail gesendet an ',
+    'news.check_sub_after': '. Klicke auf den Link in dieser E-Mail, um dein Abo zu bestätigen.',
+    'news.your_address': 'deine Adresse',
+    'news.done_title': 'Du bist angemeldet ✓',
+    'news.done_sub_before': 'Danke — du stehst auf der Liste von ',
+    'news.done_sub_after': '.',
+    'news.confirmed_title': 'Abo bestätigt ✓',
+    'news.confirmed_sub_before': 'Super! Du erhältst ab jetzt den Newsletter von ',
+    'news.confirmed_sub_after': '.',
+    'news.unsubbed_title': 'Abgemeldet',
+    'news.unsubbed_sub': 'Du wurdest abgemeldet. Du erhältst keine Newsletter mehr. Anders überlegt? Du kannst dich jederzeit wieder anmelden.',
+    'news.invalid_title': 'Ungültige E-Mail-Adresse',
+    'news.invalid_sub': 'Bitte überprüfe deine Adresse und versuche es erneut.',
+    'news.back': '← Zurück',
+    'news.smtperror_title': 'Hat gerade nicht geklappt',
+    'news.smtperror_sub': 'Die Bestätigungs-E-Mail konnte nicht gesendet werden. Bitte versuche es später noch einmal.',
+    'news.badtoken_title': 'Link ungültig oder abgelaufen',
+    'news.badtoken_sub': 'Dieser Link funktioniert nicht mehr. Melde dich bei Bedarf erneut an.',
+    'news.to_subscribe': 'Zur Anmeldung',
+    'news.error_title': 'Etwas ist schiefgelaufen',
+    'news.error_sub': 'Bitte versuche es später noch einmal.',
+    'dl.ready_title': 'Danke! ⬇',
+    'dl.ready_sub': 'Dein Download sollte jetzt starten. Passiert nichts?',
+    'dl.manual': 'Download manuell starten',
+    'dl.download_btn': 'Download',
+    'dl.capture_sub': 'Hinterlasse deine E-Mail-Adresse und du erhältst die Datei. Du kommst damit auch auf die Newsletter-Liste — abmelden ist jederzeit möglich.',
+    'dl.email_ph': 'du@email.de',
+    'epk.kicker': 'Pressekit',
+    'epk.edit': 'Bearbeiten',
+    'epk.contact_booking': 'Kontakt / Buchung',
+    'epk.view_site': 'Zur Seite →',
+    'epk.press_photo': 'Pressefoto',
+    'epk.most_played': 'Meistgehört',
+    'epk.recent': 'Aktuell',
+    'fgate.title': 'Nur für Fans',
+    'fgate.sub': 'Dies ist exklusiv für eingeloggte Fans. Melde dich an, um es anzusehen.',
+    'fgate.login': 'Anmelden / Registrieren',
+    'lbio.empty': 'Noch keine Links eingerichtet.',
+    'lbio.back_to_site': 'zurück zur Seite',
+    'myst.overview': 'Übersicht',
+    'myst.title': 'Mein Klonkt Hub',
+    'myst.quick_links_aria': 'Verwaltungs-Schnellzugriffe',
+    'myst.new_post': 'Neuer Beitrag',
+    'myst.appearance': 'Erscheinungsbild',
+    'myst.comments': 'Kommentare',
+    'myst.view_site': 'Meine Seite ansehen',
+    'myst.account': 'Konto',
+    'myst.posts': 'Beiträge',
+    'myst.published': 'Veröffentlicht',
+    'myst.draft_count_one': '{n} Entwurf',
+    'myst.draft_count_many': '{n} Entwürfe',
+    'myst.draft_badge': 'Entwurf',
+    'myst.untitled': '(ohne Titel)',
+    'myst.edit': 'Bearbeiten',
+    'myst.view': 'Ansehen',
+    'arst.title': 'Passwort zurücksetzen',
+    'arst.request_new': 'Neuen Reset-Link anfordern',
+    'arst.back_login': 'Zurück zur Anmeldung',
+    'arst.set_for': 'Lege ein neues Passwort für {username} fest.',
+    'arst.new_pw': 'Neues Passwort (mind. 8 Zeichen)',
+    'arst.confirm_pw': 'Neues Passwort bestätigen',
+    'arst.submit': 'Passwort festlegen',
+    'arrq.title': 'Passwort zurücksetzen',
+    'arrq.sent': 'Falls für diese E-Mail-Adresse ein Konto besteht, wurde ein Reset-Link gesendet.',
+    'arrq.no_mailserver': '<strong>Kein Mailserver eingerichtet</strong> — Reset-Link unten.',
+    'arrq.no_mail_cli': 'Keine E-Mail eingerichtet? Der Administrator kann auch <code>npm run reset-admin</code> auf dem Server ausführen.',
+    'arrq.back_login': '← Zurück zur Anmeldung',
+    'arrq.tagline': 'Gib deine E-Mail-Adresse ein; wir senden dir einen Reset-Link.',
+    'arrq.email': 'E-Mail',
+    'arrq.submit': 'Reset-Link senden',
+    'adir.home': 'Startseite',
+    'adir.logout': 'Abmelden',
+    'adir.login': 'Anmelden',
+    'adir.title': 'Mitglieder',
+    'adir.count_one': '{n} Klonkt',
+    'adir.count_many': "{n} Klonkt's",
+    'adir.search_ph': 'Nach Namen suchen…',
+    'adir.search_aria': 'Mitglieder suchen',
+    'adir.search_btn': 'Suchen',
+    'adir.clear': 'Löschen',
+    'adir.empty_q': 'Keine Mitglieder gefunden für „{q}".',
+    'adir.empty': 'Noch keine Mitglieder.',
+    'adir.posts_one': '{n} Beitrag',
+    'adir.posts_many': '{n} Beiträge',
+    'adir.pager_aria': 'Seitennummerierung',
+    'adir.prev': '← Zurück',
+    'adir.page_info': 'Seite {page} von {pages}',
+    'adir.next': 'Weiter →',
+    'glog.admin_title': 'Dies ist ein Administrator-Konto',
+    'glog.admin_body': 'Du hast dich mit Google angemeldet, aber diese E-Mail-Adresse gehört dem Administrator dieser Seite. Die Google-Anmeldung ist nur für Hörer/Fans — Administratoren verwenden immer ihr Passwort (so kann eine Google-Anmeldung niemals versehentlich Administratorrechte erteilen).',
+    'glog.admin_li1': '<strong>Bist du der Administrator?</strong> <a href="/auth/admin">Melde dich mit Benutzername + Passwort an</a>.',
+    'glog.admin_li2': '<strong>Möchtest du dich künftig mit Google anmelden?</strong> Melde dich zuerst mit Passwort an und <strong>verknüpfe dein Google-Konto</strong> unter Konto → danach funktioniert die Google-Anmeldung auch für dich.',
+    'glog.admin_li3': '<strong>Möchtest du dich als Fan anmelden?</strong> Verwende ein <strong>anderes Google-Konto</strong> (nicht deine Administrator-Adresse).',
+    'glog.session_title': 'Anmeldung abgebrochen',
+    'glog.session_body': 'Die Google-Anmeldung wurde abgebrochen oder die Sitzung war abgelaufen. Versuche es einfach erneut.',
+    'glog.email_title': 'Keine verifizierte E-Mail-Adresse',
+    'glog.email_body': 'Dein Google-Konto hat keine verifizierte E-Mail-Adresse. Verifiziere deine Adresse bei Google.',
+    'glog.linked_title': 'Adresse bereits verknüpft',
+    'glog.linked_body': 'Diese E-Mail-Adresse ist bereits mit einem anderen Google-Konto verknüpft. Verwende dieses Konto oder wende dich an den Administrator.',
+    'glog.unavailable_title': 'Google-Anmeldung nicht verfügbar',
+    'glog.unavailable_body': 'Die Google-Anmeldung wurde auf dieser Seite (noch) nicht eingerichtet.',
+    'glog.failed_title': 'Google-Anmeldung fehlgeschlagen',
+    'glog.failed_body': 'Beim Anmelden mit Google ist etwas schiefgelaufen. Bitte versuche es erneut.',
+    'pusr.post_one': 'Beitrag',
+    'pusr.post_many': 'Beiträge',
+    'pusr.on_this_site': 'auf dieser Seite',
+    'pusr.total': '{n} insgesamt',
+    'pusr.joined': 'dabei seit {date}',
+    'pusr.send_dm': 'DM senden',
+    'pusr.empty': 'Noch keine Beiträge auf dieser Seite.',
+    'pusr.posts_heading': 'Beiträge',
+    'pusr.untitled': '(ohne Titel)',
+    'phub.main_badge': 'Hauptseite',
+    'phub.view_page': 'Seite ansehen',
+    'phub.members': 'Mitglieder',
+    'phub.post_one': 'Beitrag',
+    'phub.post_many': 'Beiträge',
+    'phub.all_members': 'Alle {n} Mitglieder',
+    'phub.latest_posts': 'Neueste Beiträge unserer Mitglieder.',
+    'cfeed.title': 'Zirkel',
+    'cfeed.sub': 'Was bei den anderen Seiten in meinem Zirkel passiert.',
+    'cfeed.count': '{n} Seiten in meinem Zirkel',
+    'cfeed.empty': 'Noch nichts in meinem Zirkel.',
+    'cfeed.grid_view': 'Rasteransicht',
+    'cpost.back': 'Zirkel',
+    'cpost.via': 'via',
+    'cpost.read_more': 'Weiterlesen bei {source}',
+    'vblk.title': 'Betrachter-Modus',
+    'vblk.text_before': 'Dies ist ein schreibgeschütztes Konto. Du kannst alles ansehen, aber',
+    'vblk.text_strong': 'nichts ändern',
+    'vblk.text_after': '— Speichern, Hochladen, Löschen und Kommentieren sind deaktiviert.',
+    'vblk.back': 'Zurück',
+    'vblk.to_home': 'Zur Hauptseite',
+    'phome.empty_title': 'Hier ist es noch still.',
+    'phome.empty_sub': 'Noch keine Beiträge. Spannend.',
+    'phome.write_first': 'Schreibe deinen ersten Beitrag',
+    'phome.grid_view': 'Rasteransicht',
+    'fav.title': 'Favoriten',
+    'fav.sub': 'Beiträge, die dir gefallen haben. Tippe auf das ♥ eines Beitrags, um ihn hier zu speichern.',
+    'fav.empty': 'Du hast noch keine Favoriten. Öffne einen Beitrag und tippe auf das Herz ♡.',
+    'chlog.back': 'Zurück',
+    'chlog.title': 'Änderungen',
+    'chlog.app_version': 'App-Version',
+    'chlog.fed_proto': 'Föderations-Proto',
+    'chlog.manage_updates': 'Updates verwalten',
+    'e404.title': 'Seite nicht gefunden',
+    'e404.sub': 'Diese Seite existiert nicht (mehr). Vielleicht ist der Link veraltet oder falsch eingegeben.',
+    'e404.home': 'Zur Startseite',
+    'e404.archive': 'Archiv',
+    'ptype.eyebrow': 'Typ',
+    'ptype.count_one': '{n} Beitrag',
+    'ptype.count_many': '{n} Beiträge',
+    'ptype.empty': 'Noch keine Beiträge dieses Typs.',
+    'ptype.untitled': '(ohne Titel)',
+    'ptag.eyebrow': 'Tag',
+    'ptag.count_one': '{n} Beitrag',
+    'ptag.count_many': '{n} Beiträge',
+    'ptag.empty': 'Noch keine Beiträge mit diesem Tag.',
+    'ptag.untitled': '(ohne Titel)',
+    'parch.back': 'Zurück',
+    'parch.title': 'Archiv',
+    'parch.count_one': '{n} Beitrag',
+    'parch.count_many': '{n} Beiträge',
+    'parch.empty': 'Noch keine Beiträge.',
+    'prin.tagline': 'Deine Direktnachrichten auf dieser Seite.',
+    'prin.empty': 'Noch keine Unterhaltungen. Öffne das Profil einer Person und klicke auf „DM senden“, um eine zu beginnen.',
+    'prin.empty_conv': 'Leere Unterhaltung',
+    'prcv.back_aria': 'Zurück zum Posteingang',
+    'prcv.inbox': 'Posteingang',
+    'prcv.unknown': 'Unbekannt',
+    'prcv.view_profile': 'Profil ansehen',
+    'prcv.placeholder': 'Nachricht…',
+    'prcv.send': 'Senden',
   },
 };
