{ "LoginPage": { "title": "Anmelden", "apiKeyLabel": "API-Schlüssel", "apiKeyPlaceholder": "API-Schlüssel eingeben", "submit": "Anmelden", "hint": "Gleicher Schlüssel wie RUSTYCMS_API_KEY auf dem Server. Ohne Schlüssel nur Lesen, mit Schlüssel Bearbeiten." }, "Sidebar": { "dashboard": "Dashboard", "types": "Typen", "assets": "Assets", "settings": "Einstellungen", "login": "Anmelden", "logout": "Abmelden", "searchPlaceholder": "Sammlungen suchen…", "searchAriaLabel": "Sammlungen suchen", "closeMenu": "Menü schließen", "loading": "Laden…", "errorLoading": "Fehler beim Laden der Sammlungen", "noResults": "Keine Ergebnisse für \"{query}\"" }, "ContentForm": { "copyCode": "Code kopieren", "slugRequired": "Slug ist erforderlich.", "slugInUse": "Slug bereits vergeben.", "slugMustStartWith": "Der Slug muss mit \"{prefix}\" beginnen.", "slugPrefix": "Präfix", "slugSuffixPlaceholder": "z. B. meine-kampagne", "slugSuffixAriaLabel": "Slug-Suffix (Präfix ist fest)", "slugPlaceholder": "z. B. mein-beitrag", "slugHint": "Kleinbuchstaben (a-z), Ziffern (0-9), Bindestriche. Leerzeichen werden zu Bindestrichen.", "savedSuccessfully": "Erfolgreich gespeichert.", "errorSaving": "Fehler beim Speichern", "saving": "Speichern…", "save": "Speichern", "backToList": "Zurück zur Liste", "pleaseSelect": "— Bitte auswählen —", "removeEntry": "Entfernen", "addEntry": "+ Eintrag hinzufügen", "arrayAddItem": "Eintrag hinzufügen", "arrayRemoveItem": "Eintrag entfernen", "arrayItemPlaceholder": "Wert", "arrayItemPlaceholderNumber": "Zahl", "arrayHint": "Liste von Werten. Einträge unten hinzufügen oder entfernen.", "keyPlaceholder": "Schlüssel", "valuePlaceholder": "Wert", "pickAsset": "Bild wählen", "pickFromAssets": "Aus Assets wählen", "loadingAssets": "Assets werden geladen…", "noAssets": "Noch keine Assets. Lade Bilder im Bereich Assets hoch.", "status": "Status", "statusDraft": "Entwurf", "statusPublished": "Ver\u00f6ffentlicht", "statusHint": "Entw\u00fcrfe sind \u00fcber die \u00f6ffentliche API nicht sichtbar." }, "SearchableSelect": { "placeholder": "\u2014 Bitte ausw\u00e4hlen \u2014", "clearLabel": "\u2014 Auswahl aufheben \u2014", "filterPlaceholder": "Filtern\u2026", "emptyLabel": "Keine Treffer" }, "ReferenceField": { "typeLabel": "Typ: {collection}", "typesLabel": "Typen: {collections}", "selectType": "\u2014 Typ w\u00e4hlen \u2014", "newEntry": "Neuer Eintrag", "openEntry": "Eintrag \u00f6ffnen", "noCollection": "Keine Referenz-Collection im Schema. Setze {collectionCode} oder {collectionsCode} im Typ, oder starte die API und lade die Seite neu." }, "ReferenceArrayField": { "typeLabel": "Typ: {collection}", "typesLabel": "Typen: {collections}", "componentType": "Komponententyp", "selectType": "\u2014 Typ w\u00e4hlen \u2014", "selectFromExisting": "\u2014 Aus vorhandenen w\u00e4hlen \u2014", "filterPlaceholder": "Filtern\u2026", "emptyLabel": "Keine Treffer", "selectExistingAriaLabel": "Vorhandenen Eintrag zum Hinzuf\u00fcgen ausw\u00e4hlen", "moveUp": "Nach oben", "moveDown": "Nach unten", "remove": "Entfernen", "newComponent": "Neue {collection}-Komponente", "createNewComponent": "+ Neue Komponente erstellen\u2026", "openInNewTab": "In neuem Tab \u00f6ffnen; dann Seite neu laden.", "openEntry": "Eintrag \u00f6ffnen", "noCollection": "Keine Referenz-Collection im Schema. Setze {collectionCode} oder {collectionsCode} im Typ, oder starte die API und lade die Seite neu." }, "MarkdownEditor": { "bold": "Fett", "italic": "Kursiv", "code": "Code", "link": "Link", "bulletList": "Aufz\u00e4hlungsliste", "bulletListButton": "\u2022 Liste", "placeholder": "Markdown eingeben\u2026 **fett**, *kursiv*, [Link](url), - Liste", "preview": "Vorschau", "emptyPreview": "Leer \u2014 Vorschau erscheint beim Tippen." }, "PaginationLinks": { "back": "Zur\u00fcck", "next": "Weiter", "pageInfo": "Seite {page} von {totalPages} ({total} Eintr\u00e4ge)" }, "DataPreviewPanel": { "hide": "Daten-Vorschau ausblenden", "show": "Daten-Vorschau", "loading": "Laden\u2026", "errorLoading": "Fehler beim Laden" }, "SchemaPanel": { "hide": "Schema ausblenden", "show": "Schema anzeigen" }, "SchemaAndEditBar": { "editSchema": "Schema bearbeiten" }, "SchemaAndPreviewBar": { "hideSchema": "Schema ausblenden", "showSchema": "Schema anzeigen", "editSchema": "Schema bearbeiten", "hidePreview": "Daten-Vorschau ausblenden", "showPreview": "Daten-Vorschau", "sectionSchema": "Schema", "sectionDataPreview": "Aktuelle Daten", "copyCode": "Code kopieren", "loading": "Laden\u2026", "errorLoading": "Fehler beim Laden" }, "ReferenceOrInlineField": { "reference": "Referenz", "inline": "Eingebettet", "inlineObject": "Eingebettetes Objekt (keine Referenz)", "noInlineSchema": "Kein Inline-Schema. Seite neu laden oder API pr\u00fcfen (useFields / collection)." }, "LocaleSwitcher": { "label": "Sprache" }, "ContentLocaleSwitcher": { "label": "Inhaltssprache" }, "Settings": { "title": "Einstellungen", "connection": "Verbindung", "apiUrl": "API-URL", "backendStatus": "Backend-Status", "checking": "Prüfe…", "apiReachable": "API erreichbar", "apiUnreachable": "API nicht erreichbar", "contentLocales": "Inhalts-Sprachen", "default": "Standard", "thisDevice": "Dieses Gerät", "uiLanguage": "Oberflächen-Sprache", "itemsPerPage": "Einträge pro Seite", "itemsPerPageHint": "Gilt für Inhaltslisten.", "refreshData": "Daten aktualisieren", "refreshDataSuccess": "Daten aktualisiert.", "clearSession": "Session bereinigen", "clearSessionHint": "Entfernt API-Schlüssel und alle Admin-Voreinstellungen (z. B. auf geteilten Rechnern).", "clearSessionConfirmTitle": "Session bereinigen?", "clearSessionConfirmDescription": "Du wirst abgemeldet und alle gespeicherten Einstellungen (z. B. Einträge pro Seite) werden gelöscht. Anschließend kannst du dich wieder anmelden.", "clearSessionConfirmAction": "Bereinigen", "cancel": "Abbrechen", "apiKeyStatus": "API-Schlüssel", "apiKeyFromEnv": "Aus Umgebung (nur Lesen).", "apiKeyManual": "Manuell gesetzt (diese Sitzung).", "logout": "Abmelden", "login": "Anmelden" }, "Dashboard": { "title": "Dashboard", "subtitle": "W\u00e4hle eine Sammlung zur Inhaltsverwaltung.", "newContentType": "Neuer Inhaltstyp", "searchPlaceholder": "Inhaltstypen suchen…", "filterByTag": "Tag:", "tagAll": "Alle", "noResults": "Kein Inhaltstyp entspricht Suche oder Filter.", "noCollections": "Keine Sammlungen geladen. Pr\u00fcfe ob die RustyCMS-API unter {url} erreichbar ist." }, "TypesPage": { "title": "Typen", "newType": "Neuer Typ", "description": "Inhaltstypen (Sammlungen). Schema bearbeiten oder Typ l\u00f6schen. Beim L\u00f6schen wird nur die Typdefinitionsdatei entfernt; vorhandene Inhaltseintr\u00e4ge bleiben erhalten.", "searchPlaceholder": "Inhaltstypen suchen…", "filterByTag": "Tag:", "tagAll": "Alle", "noResults": "Keine Typen entsprechen Ihrer Suche oder dem Filter.", "loading": "Laden\u2026", "errorLoading": "Fehler beim Laden der Typen: {error}", "noTypes": "Noch keine Typen vorhanden. Erstelle einen mit \"Neuer Typ\".", "colName": "Name", "colDescription": "Beschreibung", "colCategory": "Kategorie", "colActions": "Aktionen", "confirmDelete": "\"{name}\" l\u00f6schen?", "confirmDeleteFinal": "\"{name}\" wirklich l\u00f6schen? Dies kann nicht r\u00fcckg\u00e4ngig gemacht werden.", "delete": "L\u00f6schen", "yesDelete": "Ja, l\u00f6schen", "deleting": "\u2026", "cancel": "Abbrechen", "edit": "Bearbeiten" }, "NewTypePage": { "title": "Neuen Typ anlegen", "description": "Erstellt einen neuen Inhaltstyp (Sammlung). Die Schemadatei wird auf dem Server unter {path} gespeichert und per Hot-Reload geladen.", "nameRequired": "Name ist erforderlich.", "nameInvalid": "Name: nur Kleinbuchstaben, Ziffern und Unterstriche.", "fieldRequired": "Mindestens ein Feld erforderlich.", "fieldNamesUnique": "Feldnamen m\u00fcssen eindeutig sein.", "errorCreating": "Fehler beim Erstellen des Typs.", "nameLabel": "Name", "namePlaceholder": "z.\u00a0B. produkt, blogbeitrag", "nameHint": "Nur Kleinbuchstaben, Ziffern und Unterstriche.", "descriptionLabel": "Beschreibung", "categoryLabel": "Kategorie", "categoryPlaceholder": "z.\u00a0B. inhalt", "tagsLabel": "Tags (kommagetrennt)", "tagsPlaceholder": "z.\u00a0B. inhalt, blog", "strictLabel": "Strikt (unbekannte Felder ablehnen)", "fieldsLabel": "Felder", "addField": "Feld hinzuf\u00fcgen", "fieldNamePlaceholder": "Feldname", "fieldTypeLabel": "Feldtyp", "required": "Pflichtfeld", "removeField": "Feld entfernen", "collectionPlaceholder": "Sammlung (z.\u00a0B. seite)", "allowedSlugsPlaceholder": "Erlaubte Slugs (kommagetrennt, optional)", "allowedCollectionsPlaceholder": "Erlaubte Inhaltstypen (kommagetrennt, optional)", "arrayItemType": "Array-Elementtyp", "itemTypePlaceholder": "z.\u00a0B. string, reference", "arrayExplain": "Dieses Feld ist in JSON eine Liste [ ]. Jeder Eintrag hat denselben Typ—w\u00e4hle unten, was ein Element ist.", "arrayEachEntry": "Ein Listeneintrag ist", "itemKindString": "Einfacher Text (string)", "itemKindNumber": "Zahl (number)", "itemKindObject": "Objekt (feste Unterfelder pro Eintrag)", "itemKindReference": "Referenz (Slug auf einen Eintrag einer Sammlung)", "objectItemFieldsLabel": "Felder pro Listeneintrag", "addObjectField": "Unterfeld hinzuf\u00fcgen", "objectFieldNamePlaceholder": "Unterfeldname", "arrayReferenceHelp": "Alle Slugs in der Liste m\u00fcssen in dieser Sammlung existieren (oder in der Whitelist stehen).", "multiSelectOptions": "Optionen", "multiSelectOptionsPlaceholder": "z.\u00a0B. option1, option2, option3", "multiSelectOptionsHelp": "Komma- oder zeilengetrennte Liste erlaubter Werte. Es k\u00f6nnen mehrere ausgew\u00e4hlt werden.", "stringWidgetLabel": "Eingabeart", "stringWidgetSingleline": "Einzeilig", "stringWidgetTextarea": "Mehrzeilig (Textbereich)", "stringWidgetCode": "Code (Syntax-Hervorhebung)", "codeLanguageLabel": "Code-Sprache", "codeLanguageCss": "CSS", "codeLanguageJavascript": "JavaScript", "codeLanguageJson": "JSON", "codeLanguageHtml": "HTML", "defaultValueLabel": "Standardwert", "defaultValuePlaceholder": "z.\u00a0B. \"text\", 0, true, [\"a\",\"b\"]", "defaultValueHelp": "JSON-Wert; leer lassen = keiner. Wird bei neuen Eintr\u00e4gen verwendet.", "defaultValueInvalid": "Ung\u00fcltiges JSON f\u00fcr Standardwert im Feld \"{field}\"", "defaultValueBoolean": "Standard: angehakt", "defaultValueEmpty": "Leer lassen = keiner", "defaultValueMultiSelectSetOptions": "Zuerst Optionen oben eintragen, dann Standard ausw\u00e4hlen.", "defaultValueArrayPlaceholder": "Kommagetrennte Werte", "fieldDescriptionPlaceholder": "Feldbeschreibung (optional)", "creating": "Erstellen\u2026", "createType": "Typ erstellen", "cancel": "Abbrechen" }, "EditTypePage": { "fieldRequired": "Mindestens ein Feld erforderlich.", "fieldNamesUnique": "Feldnamen m\u00fcssen eindeutig sein.", "errorSaving": "Fehler beim Speichern des Typs.", "missingName": "Typname fehlt.", "backToTypes": "Zur\u00fcck zu Typen", "loading": "Laden\u2026", "errorLoading": "Fehler beim Laden des Typs: {error}", "title": "Typ bearbeiten: {name}", "description": "Beschreibung, Kategorie, Tags und Felder \u00e4ndern. Die Schemadatei wird auf dem Server aktualisiert.", "nameLabel": "Name", "descriptionLabel": "Beschreibung", "categoryLabel": "Kategorie", "categoryPlaceholder": "z.\u00a0B. inhalt", "tagsLabel": "Tags (kommagetrennt)", "tagsPlaceholder": "z.\u00a0B. inhalt, blog", "strictLabel": "Strikt (unbekannte Felder ablehnen)", "fieldsLabel": "Felder", "addField": "Feld hinzuf\u00fcgen", "fieldNamePlaceholder": "Feldname", "fieldTypeLabel": "Feldtyp", "required": "Pflichtfeld", "removeField": "Feld entfernen", "collectionPlaceholder": "Sammlung (z.\u00a0B. seite)", "allowedSlugsPlaceholder": "Erlaubte Slugs (kommagetrennt, optional)", "allowedCollectionsPlaceholder": "Erlaubte Inhaltstypen (kommagetrennt, optional)", "arrayItemType": "Array-Elementtyp", "itemTypePlaceholder": "z.\u00a0B. string, reference", "arrayExplain": "Dieses Feld ist in JSON eine Liste [ ]. Jeder Eintrag hat denselben Typ—w\u00e4hle unten, was ein Element ist.", "arrayEachEntry": "Ein Listeneintrag ist", "itemKindString": "Einfacher Text (string)", "itemKindNumber": "Zahl (number)", "itemKindObject": "Objekt (feste Unterfelder pro Eintrag)", "itemKindReference": "Referenz (Slug auf einen Eintrag einer Sammlung)", "objectItemFieldsLabel": "Felder pro Listeneintrag", "addObjectField": "Unterfeld hinzuf\u00fcgen", "objectFieldNamePlaceholder": "Unterfeldname", "arrayReferenceHelp": "Alle Slugs in der Liste m\u00fcssen in dieser Sammlung existieren (oder in der Whitelist stehen).", "multiSelectOptions": "Optionen", "multiSelectOptionsPlaceholder": "z.\u00a0B. option1, option2, option3", "multiSelectOptionsHelp": "Komma- oder zeilengetrennte Liste erlaubter Werte. Es k\u00f6nnen mehrere ausgew\u00e4hlt werden.", "stringWidgetLabel": "Eingabeart", "stringWidgetSingleline": "Einzeilig", "stringWidgetTextarea": "Mehrzeilig (Textbereich)", "stringWidgetCode": "Code (Syntax-Hervorhebung)", "codeLanguageLabel": "Code-Sprache", "codeLanguageCss": "CSS", "codeLanguageJavascript": "JavaScript", "codeLanguageJson": "JSON", "codeLanguageHtml": "HTML", "defaultValueLabel": "Standardwert", "defaultValuePlaceholder": "z.\u00a0B. \"text\", 0, true, [\"a\",\"b\"]", "defaultValueHelp": "JSON-Wert; leer lassen = keiner. Wird bei neuen Eintr\u00e4gen verwendet.", "defaultValueInvalid": "Ung\u00fcltiges JSON f\u00fcr Standardwert im Feld \"{field}\"", "defaultValueBoolean": "Standard: angehakt", "defaultValueEmpty": "Leer lassen = keiner", "defaultValueMultiSelectSetOptions": "Zuerst Optionen oben eintragen, dann Standard ausw\u00e4hlen.", "defaultValueArrayPlaceholder": "Kommagetrennte Werte", "fieldDescriptionPlaceholder": "Feldbeschreibung (optional)", "saving": "Speichern\u2026", "save": "Speichern", "cancel": "Abbrechen" }, "ErrorBoundary": { "title": "Etwas ist schiefgelaufen", "reload": "Seite neu laden" }, "Breadcrumbs": { "ariaLabel": "Breadcrumb", "content": "Inhalte" }, "ContentListPage": { "title": "Einträge", "newEntry": "Neuer Eintrag", "colActions": "Aktionen", "noEntries": "Keine Einträge.", "noEntriesCreate": "Noch keine Einträge. Erstellen Sie den ersten.", "edit": "Bearbeiten", "delete": "Löschen", "draft": "Entwurf", "searchPlaceholder": "Suchen…", "loading": "Laden…", "sortBy": "Sortieren nach {field}", "sortAsc": "Aufsteigend", "sortDesc": "Absteigend", "typeDependencies": "Typ-Abhängigkeiten", "confirmDelete": "\"{slug}\" löschen?", "confirmDeleteDescription": "Dies kann nicht rückgängig gemacht werden.", "cancel": "Abbrechen", "deleting": "Löschen…", "yesDelete": "Ja, löschen", "deleted": "Eintrag gelöscht.", "errorDeleting": "Fehler beim Löschen." }, "ContentNewPage": { "breadcrumbNew": "Neu", "title": "Neuen Eintrag anlegen", "sectionSchema": "Schema" }, "ContentEditPage": { "title": "Eintrag bearbeiten", "apiLink": "API-Link (Daten-Vorschau):", "referrersSection": "Referenziert von", "noReferrers": "Kein anderer Eintrag verweist auf diesen.", "openReferrer": "Eintrag öffnen" }, "AssetsPage": { "titleAll": "Alle Assets", "titleRoot": "Root", "assetCount": "{count} Bild(er)", "assetCountFiltered": "{count} von {total} Bild(ern)", "searchPlaceholder": "Nach Dateiname suchen…", "dateFrom": "Von Datum", "dateTo": "Bis Datum", "upload": "Hochladen", "uploading": "Wird hochgeladen…", "uploadedCount": "{count} Datei(en) hochgeladen.", "dropZoneHintRoot": "Klicken oder hierher ziehen (Root)", "dropZoneHintFolder": "Klicken oder hierher ziehen → \"{folder}\"", "loading": "Laden…", "errorLoading": "Fehler beim Laden der Assets", "noAssets": "Noch keine Assets hier.", "urlCopied": "URL kopiert.", "copyUrl": "URL kopieren", "confirmDelete": "\"{filename}\" löschen?", "confirmDeleteDesc": "Dies kann nicht rückgängig gemacht werden.", "yesDelete": "Ja, löschen", "deleting": "…", "cancel": "Abbrechen", "deleted": "\"{filename}\" gelöscht.", "folders": "Ordner", "all": "Alle", "root": "Root", "newFolder": "Neuer Ordner", "folderNamePlaceholder": "z. B. blog", "folderCreated": "Ordner \"{name}\" erstellt.", "folderDeleted": "Ordner \"{name}\" gelöscht.", "confirmDeleteFolder": "Ordner \"{name}\" löschen?", "confirmDeleteFolderDesc": "Nur leere Ordner können gelöscht werden.", "renameTitle": "Bild umbenennen", "renameFilenameLabel": "Dateiname", "rename": "Umbenennen", "renaming": "Wird umbenannt…", "renamed": "\"{filename}\" umbenannt.", "copyWithTransformTitle": "Kopie mit Transformation", "copyWithTransformDesc": "Neues Asset aus diesem Bild mit Größe/Beschnitt/Format. Gleicher Ordner.", "copyWithTransformNewName": "Neuer Dateiname", "copyWithTransformCreate": "Kopie erstellen", "copyWithTransformDone": "Transformierte Kopie erstellt.", "transformPresetThumb": "Thumb 300px", "transformPresetSquare": "Quadrat 1:1", "transformPresetMedium": "Mittel 800px", "transformPresetJpeg": "JPEG 1200px", "transformWidth": "Breite", "transformHeight": "H\u00f6he", "transformAspect": "Seitenverh\u00e4ltnis", "transformFit": "Fit", "transformFormat": "Format", "transformQuality": "Qualit\u00e4t (1–100)", "creating": "Wird erstellt…" } }