feat: add de.json and en.json locale files
Extracts all German UI strings from public/pages/, public/components/, and public/router.js into 482 i18n keys organized by module prefix. English translations added for all keys. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,525 @@
|
||||
{
|
||||
"common": {
|
||||
"save": "Speichern",
|
||||
"cancel": "Abbrechen",
|
||||
"delete": "Löschen",
|
||||
"edit": "Bearbeiten",
|
||||
"close": "Schließen",
|
||||
"create": "Erstellen",
|
||||
"add": "Hinzufügen",
|
||||
"back": "Zurück",
|
||||
"next": "Weiter",
|
||||
"loading": "Lade…",
|
||||
"saving": "Wird gespeichert…",
|
||||
"required": "Dieses Feld ist erforderlich.",
|
||||
"error": "Fehler",
|
||||
"allFieldsRequired": "Bitte alle Felder ausfüllen.",
|
||||
"today": "Heute",
|
||||
"tomorrow": "Morgen",
|
||||
"skipToContent": "Zum Inhalt springen",
|
||||
"reload": "Neu laden",
|
||||
"errorOccurred": "Etwas ist schiefgelaufen.",
|
||||
"unexpectedError": "Ein unerwarteter Fehler ist aufgetreten.",
|
||||
"errorGeneric": "Ein Fehler ist aufgetreten.",
|
||||
"updateAvailable": "Update verfügbar — Seite neu laden für die neueste Version.",
|
||||
"titleRequired": "Titel ist erforderlich",
|
||||
"nameRequired": "Name ist erforderlich",
|
||||
"contentRequired": "Inhalt ist erforderlich",
|
||||
"all": "Alle"
|
||||
},
|
||||
|
||||
"nav": {
|
||||
"dashboard": "Übersicht",
|
||||
"tasks": "Aufgaben",
|
||||
"calendar": "Kalender",
|
||||
"meals": "Essen",
|
||||
"shopping": "Einkauf",
|
||||
"notes": "Pinnwand",
|
||||
"contacts": "Kontakte",
|
||||
"budget": "Budget",
|
||||
"settings": "Einstellungen",
|
||||
"main": "Hauptnavigation",
|
||||
"navigation": "Navigation",
|
||||
"quickActions": "Schnellaktionen"
|
||||
},
|
||||
|
||||
"dashboard": {
|
||||
"title": "Übersicht",
|
||||
"greetingMorning": "Guten Morgen, {{name}}",
|
||||
"greetingDay": "Guten Tag, {{name}}",
|
||||
"greetingEvening": "Guten Abend, {{name}}",
|
||||
"allDone": "Alles erledigt",
|
||||
"noEvents": "Keine Termine",
|
||||
"noPinnedNotes": "Keine angepinnten Notizen",
|
||||
"todayMeals": "Heute essen",
|
||||
"allLink": "Alle",
|
||||
"weekLink": "Woche",
|
||||
"urgentTasksChip": "{{count}} dring. Aufgabe",
|
||||
"urgentTasksChipPlural": "{{count}} dring. Aufgaben",
|
||||
"eventsChip": "{{count}} Termin heute",
|
||||
"eventsChipPlural": "{{count}} Termine heute",
|
||||
"todayMealChip": "Heute: {{title}}",
|
||||
"loadError": "Dashboard konnte nicht vollständig geladen werden.",
|
||||
"weatherRefresh": "Wetter aktualisieren",
|
||||
"weatherRefreshTitle": "Aktualisieren",
|
||||
"weatherFeelsLike": "Gefühlt {{temp}}° · {{humidity}}% · Wind {{wind}} km/h",
|
||||
"fabTaskLabel": "Aufgabe hinzufügen",
|
||||
"fabCalendarLabel": "Termin hinzufügen",
|
||||
"fabShoppingLabel": "Einkauf hinzufügen",
|
||||
"fabNoteLabel": "Notiz hinzufügen",
|
||||
"fabTask": "Aufgabe",
|
||||
"fabCalendar": "Termin",
|
||||
"fabShopping": "Einkauf",
|
||||
"fabNote": "Notiz",
|
||||
"overdue": "Überfällig",
|
||||
"dueSoon": "Heute fällig",
|
||||
"dueTomorrow": "Morgen fällig",
|
||||
"allDay": "Ganztägig"
|
||||
},
|
||||
|
||||
"tasks": {
|
||||
"title": "Aufgaben",
|
||||
"newTask": "Neue Aufgabe",
|
||||
"editTask": "Aufgabe bearbeiten",
|
||||
"emptyTitle": "Keine Aufgaben — alles erledigt?",
|
||||
"emptyDescription": "Neue Aufgaben über den + Button erstellen.",
|
||||
"titleLabel": "Titel *",
|
||||
"titlePlaceholder": "Was muss erledigt werden?",
|
||||
"descriptionLabel": "Notiz",
|
||||
"descriptionPlaceholder": "Optionale Details…",
|
||||
"priorityLabel": "Priorität",
|
||||
"categoryLabel": "Kategorie",
|
||||
"dueDateLabel": "Fälligkeit",
|
||||
"dueTimeLabel": "Uhrzeit",
|
||||
"assignedLabel": "Zugewiesen an",
|
||||
"assignedNobody": "— Niemand —",
|
||||
"statusLabel": "Status",
|
||||
"priorityUrgent": "Dringend",
|
||||
"priorityHigh": "Hoch",
|
||||
"priorityMedium": "Mittel",
|
||||
"priorityLow": "Niedrig",
|
||||
"statusOpen": "Offen",
|
||||
"statusInProgress": "In Bearbeitung",
|
||||
"statusDone": "Erledigt",
|
||||
"categoryHousehold": "Haushalt",
|
||||
"categorySchool": "Schule",
|
||||
"categoryShopping": "Einkauf",
|
||||
"categoryRepair": "Reparatur",
|
||||
"categoryHealth": "Gesundheit",
|
||||
"categoryFinance": "Finanzen",
|
||||
"categoryLeisure": "Freizeit",
|
||||
"categoryMisc": "Sonstiges",
|
||||
"overdue": "Überfällig",
|
||||
"overdueDay": "{{count}}d überfällig",
|
||||
"dueToday": "Heute fällig",
|
||||
"dueTomorrow": "Morgen fällig",
|
||||
"groupOverdue": "Überfällig",
|
||||
"groupToday": "Heute",
|
||||
"groupThisWeek": "Diese Woche",
|
||||
"groupNextWeek": "Nächste Woche",
|
||||
"groupLater": "Später",
|
||||
"groupNoDate": "Kein Datum",
|
||||
"markDone": "{{title}} als erledigt markieren",
|
||||
"editButton": "Aufgabe bearbeiten",
|
||||
"swipeOpen": "Öffnen",
|
||||
"swipeDone": "Erledigt",
|
||||
"swipeEdit": "Bearbeiten",
|
||||
"subtaskAdd": "+ Teilaufgabe hinzufügen",
|
||||
"subtaskToggle": "Teilaufgaben anzeigen",
|
||||
"subtaskMarkDone": "{{title}} als erledigt markieren",
|
||||
"deleteConfirm": "Aufgabe und alle Teilaufgaben löschen?",
|
||||
"savedToast": "Aufgabe gespeichert.",
|
||||
"createdToast": "Aufgabe erstellt.",
|
||||
"deletedToast": "Aufgabe gelöscht.",
|
||||
"loadError": "Aufgabe konnte nicht geladen werden.",
|
||||
"subtaskPrompt": "Teilaufgabe:",
|
||||
"kanbanOpen": "Offen",
|
||||
"kanbanInProgress": "In Bearbeitung",
|
||||
"kanbanDone": "Erledigt"
|
||||
},
|
||||
|
||||
"shopping": {
|
||||
"title": "Einkauf",
|
||||
"noLists": "Keine Listen",
|
||||
"noListsDescription": "Erstelle eine Liste mit dem + Button.",
|
||||
"emptyList": "Die Liste ist leer",
|
||||
"emptyListDescription": "Artikel über das Eingabefeld oben hinzufügen.",
|
||||
"newListPrompt": "Name der neuen Liste:",
|
||||
"newListButton": "Neue Liste erstellen",
|
||||
"renameListPrompt": "Neuer Listen-Name:",
|
||||
"deleteListConfirm": "Liste \"{{name}}\" und alle Artikel löschen?",
|
||||
"deletedListToast": "Liste gelöscht.",
|
||||
"itemsRemovedToast": "{{count}} Artikel entfernt.",
|
||||
"clearChecked": "Abgehakt löschen ({{count}})",
|
||||
"itemNamePlaceholder": "Artikel hinzufügen…",
|
||||
"itemQtyPlaceholder": "Menge",
|
||||
"itemNameLabel": "Artikelname",
|
||||
"itemQtyLabel": "Menge",
|
||||
"categoryLabel": "Kategorie",
|
||||
"addItemLabel": "Artikel hinzufügen",
|
||||
"renameListLabel": "Liste umbenennen",
|
||||
"deleteListLabel": "Liste löschen",
|
||||
"swipeBack": "Zurück",
|
||||
"swipeCheck": "Abhaken",
|
||||
"swipeDelete": "Löschen",
|
||||
"markDoneLabel": "{{name}} abhaken",
|
||||
"markUndoneLabel": "{{name}} als nicht erledigt markieren",
|
||||
"deleteItemLabel": "{{name}} löschen",
|
||||
"listsLoadError": "Listen konnten nicht geladen werden.",
|
||||
"itemsLoadError": "Artikel konnten nicht geladen werden.",
|
||||
"catFruitVeg": "Obst & Gemüse",
|
||||
"catBakery": "Backwaren",
|
||||
"catDairy": "Milchprodukte",
|
||||
"catMeatFish": "Fleisch & Fisch",
|
||||
"catFrozen": "Tiefkühl",
|
||||
"catDrinks": "Getränke",
|
||||
"catHousehold": "Haushalt",
|
||||
"catDrugstore": "Drogerie",
|
||||
"catMisc": "Sonstiges"
|
||||
},
|
||||
|
||||
"meals": {
|
||||
"title": "Essensplan",
|
||||
"noMealPlanned": "Kein Essen geplant",
|
||||
"addMeal": "{{type}} hinzufügen",
|
||||
"editMeal": "Mahlzeit bearbeiten",
|
||||
"addMealTitle": "Mahlzeit hinzufügen",
|
||||
"deleteMeal": "Mahlzeit löschen",
|
||||
"transferToShoppingList": "Zutaten auf Einkaufsliste",
|
||||
"today": "Heute",
|
||||
"prevWeek": "Vorherige Woche",
|
||||
"nextWeek": "Nächste Woche",
|
||||
"loadError": "Essensplan konnte nicht geladen werden.",
|
||||
"typeBreakfast": "Frühstück",
|
||||
"typeLunch": "Mittagessen",
|
||||
"typeDinner": "Abendessen",
|
||||
"typeSnack": "Snack",
|
||||
"dayMo": "Mo",
|
||||
"dayDi": "Di",
|
||||
"dayMi": "Mi",
|
||||
"dayDo": "Do",
|
||||
"dayFr": "Fr",
|
||||
"daySa": "Sa",
|
||||
"daySo": "So",
|
||||
"dateLabel": "Datum",
|
||||
"mealTypeLabel": "Mahlzeit",
|
||||
"titleLabel": "Titel *",
|
||||
"titlePlaceholder": "z.B. Spaghetti Bolognese",
|
||||
"notesLabel": "Notizen",
|
||||
"notesPlaceholder": "Optional…",
|
||||
"ingredientsLabel": "Zutaten",
|
||||
"addIngredient": "Zutat hinzufügen",
|
||||
"ingredientNamePlaceholder": "Zutat",
|
||||
"ingredientQtyPlaceholder": "Menge",
|
||||
"removeIngredient": "Zutat entfernen",
|
||||
"transferLabel": "Zutaten auf Einkaufsliste übertragen",
|
||||
"transferNow": "Jetzt übertragen",
|
||||
"noShoppingLists": "Keine Einkaufslisten vorhanden",
|
||||
"transferSuccess": "{{count}} Zutat übertragen",
|
||||
"transferSuccessPlural": "{{count}} Zutaten übertragen",
|
||||
"transferAlreadyDone": "Alle Zutaten bereits übertragen",
|
||||
"ingredientCount": "{{count}} Zutat",
|
||||
"ingredientCountPlural": "{{count}} Zutaten",
|
||||
"titleRequired": "Titel ist erforderlich",
|
||||
"loadingIndicator": "Lade…"
|
||||
},
|
||||
|
||||
"calendar": {
|
||||
"title": "Kalender",
|
||||
"newEvent": "Neuer Termin",
|
||||
"editEvent": "Termin bearbeiten",
|
||||
"addEvent": "Termin hinzufügen",
|
||||
"deleteEvent": "Termin löschen",
|
||||
"noEvents": "Keine Termine im gewählten Zeitraum.",
|
||||
"today": "Heute",
|
||||
"back": "Zurück",
|
||||
"forward": "Weiter",
|
||||
"viewMonth": "Monat",
|
||||
"viewWeek": "Woche",
|
||||
"viewDay": "Tag",
|
||||
"viewAgenda": "Agenda",
|
||||
"allDay": "Ganztägig",
|
||||
"allDayShort": "ganztg.",
|
||||
"moreEvents": "+{{count}} weitere",
|
||||
"weekNumberLabel": "KW {{week}} · {{month}} {{year}}",
|
||||
"agendaFrom": "Ab {{date}}",
|
||||
"titleLabel": "Titel *",
|
||||
"titlePlaceholder": "z.B. Zahnarzt",
|
||||
"allDayToggle": "Ganztägig",
|
||||
"startDateLabel": "Startdatum",
|
||||
"startTimeLabel": "Startzeit",
|
||||
"endDateLabel": "Enddatum",
|
||||
"endTimeLabel": "Endzeit",
|
||||
"fromLabel": "Von",
|
||||
"toLabel": "Bis",
|
||||
"locationLabel": "Ort",
|
||||
"locationPlaceholder": "Optional",
|
||||
"assignedLabel": "Zugewiesen an",
|
||||
"assignedNobody": "— Niemand —",
|
||||
"colorLabel": "Farbe",
|
||||
"descriptionLabel": "Beschreibung",
|
||||
"descriptionPlaceholder": "Optional…",
|
||||
"popupEdit": "Bearbeiten",
|
||||
"deleteConfirm": "\"{{title}}\" wirklich löschen?",
|
||||
"createdToast": "Termin erstellt",
|
||||
"savedToast": "Termin gespeichert",
|
||||
"deletedToast": "Termin gelöscht",
|
||||
"loadError": "Termine konnten nicht geladen werden.",
|
||||
"saveError": "Fehler beim Speichern",
|
||||
"deleteError": "Fehler beim Löschen",
|
||||
"titleRequired": "Titel ist erforderlich",
|
||||
"monthJanuary": "Januar",
|
||||
"monthFebruary": "Februar",
|
||||
"monthMarch": "März",
|
||||
"monthApril": "April",
|
||||
"monthMay": "Mai",
|
||||
"monthJune": "Juni",
|
||||
"monthJuly": "Juli",
|
||||
"monthAugust": "August",
|
||||
"monthSeptember": "September",
|
||||
"monthOctober": "Oktober",
|
||||
"monthNovember": "November",
|
||||
"monthDecember": "Dezember",
|
||||
"dayShortSunday": "So",
|
||||
"dayShortMonday": "Mo",
|
||||
"dayShortTuesday": "Di",
|
||||
"dayShortWednesday": "Mi",
|
||||
"dayShortThursday": "Do",
|
||||
"dayShortFriday": "Fr",
|
||||
"dayShortSaturday": "Sa",
|
||||
"dayLongSunday": "Sonntag",
|
||||
"dayLongMonday": "Montag",
|
||||
"dayLongTuesday": "Dienstag",
|
||||
"dayLongWednesday": "Mittwoch",
|
||||
"dayLongThursday": "Donnerstag",
|
||||
"dayLongFriday": "Freitag",
|
||||
"dayLongSaturday": "Samstag"
|
||||
},
|
||||
|
||||
"notes": {
|
||||
"title": "Pinnwand",
|
||||
"newNote": "Neue Notiz",
|
||||
"editNote": "Notiz bearbeiten",
|
||||
"addNoteLabel": "Neue Notiz",
|
||||
"searchPlaceholder": "Notizen durchsuchen…",
|
||||
"emptyTitle": "Noch keine Notizen",
|
||||
"emptyDescription": "Neue Notiz über den + Button erstellen.",
|
||||
"noResultsTitle": "Keine Treffer",
|
||||
"noResultsDescription": "Keine Notiz enthält \"{{query}}\".",
|
||||
"titleLabel": "Titel (optional)",
|
||||
"titlePlaceholder": "Kein Titel",
|
||||
"contentLabel": "Inhalt",
|
||||
"contentMarkdownHint": "(Markdown-Formatierung möglich)",
|
||||
"contentPlaceholder": "Notiz eingeben…",
|
||||
"colorLabel": "Farbe",
|
||||
"pinnedLabel": "Anpinnen (erscheint auf Dashboard)",
|
||||
"pinAction": "Anpinnen",
|
||||
"unpinAction": "Anpinnen aufheben",
|
||||
"deleteLabel": "Notiz löschen",
|
||||
"deleteConfirm": "Notiz wirklich löschen?",
|
||||
"createdToast": "Notiz erstellt",
|
||||
"savedToast": "Notiz gespeichert",
|
||||
"deletedToast": "Notiz gelöscht",
|
||||
"loadError": "Notizen konnten nicht geladen werden.",
|
||||
"formatBold": "Fett (Strg+B)",
|
||||
"formatItalic": "Kursiv (Strg+I)",
|
||||
"formatUnderline": "Unterstrichen (Strg+U)",
|
||||
"formatStrikethrough": "Durchgestrichen",
|
||||
"formatHeading": "Überschrift",
|
||||
"formatList": "Aufzählung",
|
||||
"formatOrderedList": "Nummerierte Liste",
|
||||
"formatChecklist": "Checkliste",
|
||||
"formatLink": "Link",
|
||||
"formatCode": "Code",
|
||||
"formatQuote": "Zitat",
|
||||
"formatDivider": "Trennlinie"
|
||||
},
|
||||
|
||||
"contacts": {
|
||||
"title": "Kontakte",
|
||||
"newContact": "Neuer Kontakt",
|
||||
"editContact": "Kontakt bearbeiten",
|
||||
"addButton": "Neu",
|
||||
"newContactLabel": "Neuer Kontakt",
|
||||
"searchPlaceholder": "Name, Telefon oder E-Mail suchen…",
|
||||
"importButton": "Import",
|
||||
"importLabel": "Kontakt aus vCard importieren",
|
||||
"importTooltip": "vCard importieren",
|
||||
"emptyTitle": "Noch keine Kontakte",
|
||||
"emptyDescription": "Neue Kontakte über den + Button hinzufügen.",
|
||||
"filterAll": "Alle",
|
||||
"nameLabel": "Name *",
|
||||
"namePlaceholder": "Vollständiger Name",
|
||||
"categoryLabel": "Kategorie",
|
||||
"phoneLabel": "Telefon",
|
||||
"phonePlaceholder": "+49 …",
|
||||
"emailLabel": "E-Mail",
|
||||
"emailPlaceholder": "name@beispiel.de",
|
||||
"addressLabel": "Adresse",
|
||||
"addressPlaceholder": "Straße, PLZ Ort",
|
||||
"notesLabel": "Notizen",
|
||||
"notesPlaceholder": "Optional…",
|
||||
"callLabel": "Anrufen",
|
||||
"emailActionLabel": "E-Mail",
|
||||
"mapsLabel": "In Maps öffnen",
|
||||
"exportLabel": "Als vCard exportieren",
|
||||
"exportTooltip": "vCard exportieren",
|
||||
"deleteLabel": "Kontakt löschen",
|
||||
"deleteConfirm": "Kontakt wirklich löschen?",
|
||||
"deletePersonConfirm": "\"{{name}}\" wirklich löschen?",
|
||||
"savedToast": "Kontakt gespeichert",
|
||||
"updatedToast": "Kontakt aktualisiert",
|
||||
"deletedToast": "Kontakt gelöscht",
|
||||
"importedToast": "{{name}} importiert.",
|
||||
"importError": "Import fehlgeschlagen: {{error}}",
|
||||
"vcardNoName": "vCard enthält keinen Namen.",
|
||||
"catDoctor": "Arzt",
|
||||
"catSchool": "Schule/Kita",
|
||||
"catAuthority": "Behörde",
|
||||
"catInsurance": "Versicherung",
|
||||
"catCraftsman": "Handwerker",
|
||||
"catEmergency": "Notfall",
|
||||
"catMisc": "Sonstiges"
|
||||
},
|
||||
|
||||
"budget": {
|
||||
"title": "Budget",
|
||||
"newEntry": "Neuer Eintrag",
|
||||
"editEntry": "Eintrag bearbeiten",
|
||||
"addEntryLabel": "Eintrag hinzufügen",
|
||||
"newEntryFabLabel": "Neuer Eintrag",
|
||||
"currentMonth": "Aktuell",
|
||||
"prevMonth": "Vorheriger Monat",
|
||||
"nextMonth": "Nächster Monat",
|
||||
"income": "Einnahmen",
|
||||
"expenses": "Ausgaben",
|
||||
"balance": "Saldo",
|
||||
"byCategory": "Nach Kategorie",
|
||||
"transactions": "Transaktionen",
|
||||
"emptyTitle": "Keine Einträge diesen Monat",
|
||||
"emptyDescription": "Budget-Einträge über den + Button hinzufügen.",
|
||||
"csvExport": "CSV",
|
||||
"typeExpense": "Ausgabe",
|
||||
"typeIncome": "Einnahme",
|
||||
"titleLabel": "Titel *",
|
||||
"titlePlaceholder": "z.B. REWE Einkauf",
|
||||
"amountLabel": "Betrag (€) *",
|
||||
"amountPlaceholder": "0,00",
|
||||
"categoryLabel": "Kategorie",
|
||||
"dateLabel": "Datum *",
|
||||
"recurringLabel": "Wiederkehrend",
|
||||
"deleteLabel": "Eintrag löschen",
|
||||
"deleteConfirm": "Eintrag wirklich löschen?",
|
||||
"deletePersonConfirm": "\"{{title}}\" wirklich löschen?",
|
||||
"addedToast": "Eintrag hinzugefügt",
|
||||
"savedToast": "Eintrag gespeichert",
|
||||
"deletedToast": "Eintrag gelöscht",
|
||||
"loadError": "Budget konnte nicht geladen werden.",
|
||||
"trendNeutral": "— wie {{month}}",
|
||||
"validAmountRequired": "Gültigen Betrag eingeben",
|
||||
"dateRequired": "Datum ist erforderlich",
|
||||
"catFood": "Lebensmittel",
|
||||
"catRent": "Miete",
|
||||
"catInsurance": "Versicherung",
|
||||
"catMobility": "Mobilität",
|
||||
"catLeisure": "Freizeit",
|
||||
"catClothing": "Kleidung",
|
||||
"catHealth": "Gesundheit",
|
||||
"catEducation": "Bildung",
|
||||
"catMisc": "Sonstiges",
|
||||
"loadingIndicator": "Lade…"
|
||||
},
|
||||
|
||||
"settings": {
|
||||
"title": "Einstellungen",
|
||||
"sectionDesign": "Design",
|
||||
"sectionAccount": "Mein Konto",
|
||||
"sectionCalendarSync": "Kalender-Synchronisation",
|
||||
"sectionFamily": "Familienmitglieder",
|
||||
"cardAppearance": "Darstellung",
|
||||
"themeSystem": "System",
|
||||
"themeSysLabel": "System-Einstellung verwenden",
|
||||
"themeLight": "Hell",
|
||||
"themeLightLabel": "Helles Design",
|
||||
"themeDark": "Dunkel",
|
||||
"themeDarkLabel": "Dunkles Design",
|
||||
"changePassword": "Passwort ändern",
|
||||
"currentPasswordLabel": "Aktuelles Passwort",
|
||||
"newPasswordLabel": "Neues Passwort",
|
||||
"confirmPasswordLabel": "Neues Passwort bestätigen",
|
||||
"savePassword": "Passwort speichern",
|
||||
"passwordMismatch": "Passwörter stimmen nicht überein.",
|
||||
"passwordSavedToast": "Passwort erfolgreich geändert.",
|
||||
"googleCalendar": "Google Calendar",
|
||||
"appleCalendar": "Apple Calendar (iCloud)",
|
||||
"syncNow": "Jetzt synchronisieren",
|
||||
"disconnect": "Verbindung trennen",
|
||||
"connectGoogle": "Mit Google verbinden",
|
||||
"connected": "Verbunden",
|
||||
"connectedLastSync": "Verbunden · Zuletzt: {{date}}",
|
||||
"notConnected": "Nicht verbunden",
|
||||
"notConfigured": "Nicht konfiguriert (fehlende .env-Variablen)",
|
||||
"configured": "Konfiguriert (via .env)",
|
||||
"configuredLastSync": "Konfiguriert (via .env) · Zuletzt: {{date}}",
|
||||
"syncSuccess": "{{provider}} synchronisiert.",
|
||||
"disconnectedToast": "{{provider}} getrennt.",
|
||||
"googleOnlyAdmin": "Nur Admin kann Google Calendar verbinden.",
|
||||
"appleOnlyAdmin": "Nur Admin kann Apple Calendar verbinden.",
|
||||
"caldavUrlLabel": "CalDAV-Server-URL",
|
||||
"caldavUrlPlaceholder": "https://caldav.icloud.com",
|
||||
"appleIdLabel": "Apple-ID (E-Mail)",
|
||||
"applePasswordLabel": "App-spezifisches Passwort",
|
||||
"applePasswordHint": "Passwort unter <strong>appleid.apple.com → Sicherheit</strong> erstellen.",
|
||||
"appleConnectBtn": "Verbinden & testen",
|
||||
"appleConnecting": "Verbinde…",
|
||||
"appleConnectedToast": "Apple Calendar verbunden.",
|
||||
"syncSuccessGoogle": "Kalender-Sync mit Google erfolgreich verbunden.",
|
||||
"syncSuccessApple": "Kalender-Sync mit Apple erfolgreich verbunden.",
|
||||
"syncErrorGoogle": "Verbindung mit Google fehlgeschlagen. Bitte erneut versuchen.",
|
||||
"syncErrorApple": "Verbindung mit Apple fehlgeschlagen. Bitte erneut versuchen.",
|
||||
"addMember": "+ Mitglied hinzufügen",
|
||||
"newMemberTitle": "Neues Familienmitglied",
|
||||
"usernameLabel": "Benutzername",
|
||||
"displayNameLabel": "Anzeigename",
|
||||
"memberPasswordLabel": "Passwort",
|
||||
"colorLabel": "Farbe",
|
||||
"roleLabel": "Rolle",
|
||||
"roleMember": "Mitglied",
|
||||
"roleAdmin": "Admin",
|
||||
"createMember": "Erstellen",
|
||||
"cancelAddMember": "Abbrechen",
|
||||
"memberAddedToast": "{{name}} hinzugefügt.",
|
||||
"deleteMemberConfirm": "{{name}} wirklich löschen?",
|
||||
"memberDeletedToast": "{{name}} gelöscht.",
|
||||
"deleteMemberLabel": "Löschen",
|
||||
"logout": "Abmelden",
|
||||
"synchronizing": "Synchronisiere…",
|
||||
"googleDisconnectConfirm": "Google Calendar-Verbindung trennen?",
|
||||
"appleDisconnectConfirm": "Apple Calendar-Verbindung trennen?"
|
||||
},
|
||||
|
||||
"login": {
|
||||
"tagline": "Familienplanung. Sicher. Datenschutzfreundlich. Open Source.",
|
||||
"usernameLabel": "Benutzername",
|
||||
"usernamePlaceholder": "benutzername",
|
||||
"passwordLabel": "Passwort",
|
||||
"passwordPlaceholder": "••••••••",
|
||||
"loginButton": "Anmelden",
|
||||
"loggingIn": "Wird angemeldet …",
|
||||
"tooManyAttempts": "Zu viele Versuche. Bitte warte kurz.",
|
||||
"invalidCredentials": "Ungültige Anmeldedaten."
|
||||
},
|
||||
|
||||
"install": {
|
||||
"title": "Oikos installieren",
|
||||
"subtitle": "Zur App hinzufügen",
|
||||
"iosTip1": "Tippe auf ",
|
||||
"iosTip2": " \u2192 \"Zum Home-Bildschirm\"",
|
||||
"installButton": "Installieren",
|
||||
"dismissLabel": "Schließen"
|
||||
},
|
||||
|
||||
"modal": {
|
||||
"closeLabel": "Schließen"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,525 @@
|
||||
{
|
||||
"common": {
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"delete": "Delete",
|
||||
"edit": "Edit",
|
||||
"close": "Close",
|
||||
"create": "Create",
|
||||
"add": "Add",
|
||||
"back": "Back",
|
||||
"next": "Next",
|
||||
"loading": "Loading…",
|
||||
"saving": "Saving…",
|
||||
"required": "This field is required.",
|
||||
"error": "Error",
|
||||
"allFieldsRequired": "Please fill in all fields.",
|
||||
"today": "Today",
|
||||
"tomorrow": "Tomorrow",
|
||||
"skipToContent": "Skip to content",
|
||||
"reload": "Reload",
|
||||
"errorOccurred": "Something went wrong.",
|
||||
"unexpectedError": "An unexpected error occurred.",
|
||||
"errorGeneric": "An error occurred.",
|
||||
"updateAvailable": "Update available — reload the page to get the latest version.",
|
||||
"titleRequired": "Title is required",
|
||||
"nameRequired": "Name is required",
|
||||
"contentRequired": "Content is required",
|
||||
"all": "All"
|
||||
},
|
||||
|
||||
"nav": {
|
||||
"dashboard": "Overview",
|
||||
"tasks": "Tasks",
|
||||
"calendar": "Calendar",
|
||||
"meals": "Meals",
|
||||
"shopping": "Shopping",
|
||||
"notes": "Board",
|
||||
"contacts": "Contacts",
|
||||
"budget": "Budget",
|
||||
"settings": "Settings",
|
||||
"main": "Main navigation",
|
||||
"navigation": "Navigation",
|
||||
"quickActions": "Quick actions"
|
||||
},
|
||||
|
||||
"dashboard": {
|
||||
"title": "Overview",
|
||||
"greetingMorning": "Good morning, {{name}}",
|
||||
"greetingDay": "Good afternoon, {{name}}",
|
||||
"greetingEvening": "Good evening, {{name}}",
|
||||
"allDone": "All done",
|
||||
"noEvents": "No events",
|
||||
"noPinnedNotes": "No pinned notes",
|
||||
"todayMeals": "Today's meals",
|
||||
"allLink": "All",
|
||||
"weekLink": "Week",
|
||||
"urgentTasksChip": "{{count}} urgent task",
|
||||
"urgentTasksChipPlural": "{{count}} urgent tasks",
|
||||
"eventsChip": "{{count}} event today",
|
||||
"eventsChipPlural": "{{count}} events today",
|
||||
"todayMealChip": "Today: {{title}}",
|
||||
"loadError": "Dashboard could not be fully loaded.",
|
||||
"weatherRefresh": "Refresh weather",
|
||||
"weatherRefreshTitle": "Refresh",
|
||||
"weatherFeelsLike": "Feels like {{temp}}° · {{humidity}}% · Wind {{wind}} km/h",
|
||||
"fabTaskLabel": "Add task",
|
||||
"fabCalendarLabel": "Add event",
|
||||
"fabShoppingLabel": "Add shopping",
|
||||
"fabNoteLabel": "Add note",
|
||||
"fabTask": "Task",
|
||||
"fabCalendar": "Event",
|
||||
"fabShopping": "Shopping",
|
||||
"fabNote": "Note",
|
||||
"overdue": "Overdue",
|
||||
"dueSoon": "Due today",
|
||||
"dueTomorrow": "Due tomorrow",
|
||||
"allDay": "All day"
|
||||
},
|
||||
|
||||
"tasks": {
|
||||
"title": "Tasks",
|
||||
"newTask": "New Task",
|
||||
"editTask": "Edit Task",
|
||||
"emptyTitle": "No tasks — all done?",
|
||||
"emptyDescription": "Create new tasks with the + button.",
|
||||
"titleLabel": "Title *",
|
||||
"titlePlaceholder": "What needs to be done?",
|
||||
"descriptionLabel": "Note",
|
||||
"descriptionPlaceholder": "Optional details…",
|
||||
"priorityLabel": "Priority",
|
||||
"categoryLabel": "Category",
|
||||
"dueDateLabel": "Due date",
|
||||
"dueTimeLabel": "Time",
|
||||
"assignedLabel": "Assigned to",
|
||||
"assignedNobody": "— Nobody —",
|
||||
"statusLabel": "Status",
|
||||
"priorityUrgent": "Urgent",
|
||||
"priorityHigh": "High",
|
||||
"priorityMedium": "Medium",
|
||||
"priorityLow": "Low",
|
||||
"statusOpen": "Open",
|
||||
"statusInProgress": "In Progress",
|
||||
"statusDone": "Done",
|
||||
"categoryHousehold": "Household",
|
||||
"categorySchool": "School",
|
||||
"categoryShopping": "Shopping",
|
||||
"categoryRepair": "Repair",
|
||||
"categoryHealth": "Health",
|
||||
"categoryFinance": "Finance",
|
||||
"categoryLeisure": "Leisure",
|
||||
"categoryMisc": "Miscellaneous",
|
||||
"overdue": "Overdue",
|
||||
"overdueDay": "{{count}}d overdue",
|
||||
"dueToday": "Due today",
|
||||
"dueTomorrow": "Due tomorrow",
|
||||
"groupOverdue": "Overdue",
|
||||
"groupToday": "Today",
|
||||
"groupThisWeek": "This week",
|
||||
"groupNextWeek": "Next week",
|
||||
"groupLater": "Later",
|
||||
"groupNoDate": "No date",
|
||||
"markDone": "Mark {{title}} as done",
|
||||
"editButton": "Edit task",
|
||||
"swipeOpen": "Reopen",
|
||||
"swipeDone": "Done",
|
||||
"swipeEdit": "Edit",
|
||||
"subtaskAdd": "+ Add subtask",
|
||||
"subtaskToggle": "Show subtasks",
|
||||
"subtaskMarkDone": "Mark {{title}} as done",
|
||||
"deleteConfirm": "Delete task and all subtasks?",
|
||||
"savedToast": "Task saved.",
|
||||
"createdToast": "Task created.",
|
||||
"deletedToast": "Task deleted.",
|
||||
"loadError": "Task could not be loaded.",
|
||||
"subtaskPrompt": "Subtask:",
|
||||
"kanbanOpen": "Open",
|
||||
"kanbanInProgress": "In Progress",
|
||||
"kanbanDone": "Done"
|
||||
},
|
||||
|
||||
"shopping": {
|
||||
"title": "Shopping",
|
||||
"noLists": "No lists",
|
||||
"noListsDescription": "Create a list with the + button.",
|
||||
"emptyList": "The list is empty",
|
||||
"emptyListDescription": "Add items using the input field above.",
|
||||
"newListPrompt": "Name for the new list:",
|
||||
"newListButton": "Create new list",
|
||||
"renameListPrompt": "New list name:",
|
||||
"deleteListConfirm": "Delete list \"{{name}}\" and all items?",
|
||||
"deletedListToast": "List deleted.",
|
||||
"itemsRemovedToast": "{{count}} items removed.",
|
||||
"clearChecked": "Remove checked ({{count}})",
|
||||
"itemNamePlaceholder": "Add item…",
|
||||
"itemQtyPlaceholder": "Quantity",
|
||||
"itemNameLabel": "Item name",
|
||||
"itemQtyLabel": "Quantity",
|
||||
"categoryLabel": "Category",
|
||||
"addItemLabel": "Add item",
|
||||
"renameListLabel": "Rename list",
|
||||
"deleteListLabel": "Delete list",
|
||||
"swipeBack": "Undo",
|
||||
"swipeCheck": "Check off",
|
||||
"swipeDelete": "Delete",
|
||||
"markDoneLabel": "Check off {{name}}",
|
||||
"markUndoneLabel": "Uncheck {{name}}",
|
||||
"deleteItemLabel": "Delete {{name}}",
|
||||
"listsLoadError": "Lists could not be loaded.",
|
||||
"itemsLoadError": "Items could not be loaded.",
|
||||
"catFruitVeg": "Fruit & Vegetables",
|
||||
"catBakery": "Bakery",
|
||||
"catDairy": "Dairy",
|
||||
"catMeatFish": "Meat & Fish",
|
||||
"catFrozen": "Frozen",
|
||||
"catDrinks": "Drinks",
|
||||
"catHousehold": "Household",
|
||||
"catDrugstore": "Drugstore",
|
||||
"catMisc": "Miscellaneous"
|
||||
},
|
||||
|
||||
"meals": {
|
||||
"title": "Meal Plan",
|
||||
"noMealPlanned": "No meal planned",
|
||||
"addMeal": "Add {{type}}",
|
||||
"editMeal": "Edit meal",
|
||||
"addMealTitle": "Add meal",
|
||||
"deleteMeal": "Delete meal",
|
||||
"transferToShoppingList": "Add ingredients to shopping list",
|
||||
"today": "Today",
|
||||
"prevWeek": "Previous week",
|
||||
"nextWeek": "Next week",
|
||||
"loadError": "Meal plan could not be loaded.",
|
||||
"typeBreakfast": "Breakfast",
|
||||
"typeLunch": "Lunch",
|
||||
"typeDinner": "Dinner",
|
||||
"typeSnack": "Snack",
|
||||
"dayMo": "Mon",
|
||||
"dayDi": "Tue",
|
||||
"dayMi": "Wed",
|
||||
"dayDo": "Thu",
|
||||
"dayFr": "Fri",
|
||||
"daySa": "Sat",
|
||||
"daySo": "Sun",
|
||||
"dateLabel": "Date",
|
||||
"mealTypeLabel": "Meal",
|
||||
"titleLabel": "Title *",
|
||||
"titlePlaceholder": "e.g. Spaghetti Bolognese",
|
||||
"notesLabel": "Notes",
|
||||
"notesPlaceholder": "Optional…",
|
||||
"ingredientsLabel": "Ingredients",
|
||||
"addIngredient": "Add ingredient",
|
||||
"ingredientNamePlaceholder": "Ingredient",
|
||||
"ingredientQtyPlaceholder": "Quantity",
|
||||
"removeIngredient": "Remove ingredient",
|
||||
"transferLabel": "Transfer ingredients to shopping list",
|
||||
"transferNow": "Transfer now",
|
||||
"noShoppingLists": "No shopping lists available",
|
||||
"transferSuccess": "{{count}} ingredient transferred",
|
||||
"transferSuccessPlural": "{{count}} ingredients transferred",
|
||||
"transferAlreadyDone": "All ingredients already transferred",
|
||||
"ingredientCount": "{{count}} ingredient",
|
||||
"ingredientCountPlural": "{{count}} ingredients",
|
||||
"titleRequired": "Title is required",
|
||||
"loadingIndicator": "Loading…"
|
||||
},
|
||||
|
||||
"calendar": {
|
||||
"title": "Calendar",
|
||||
"newEvent": "New Event",
|
||||
"editEvent": "Edit Event",
|
||||
"addEvent": "Add event",
|
||||
"deleteEvent": "Delete event",
|
||||
"noEvents": "No events in the selected period.",
|
||||
"today": "Today",
|
||||
"back": "Back",
|
||||
"forward": "Forward",
|
||||
"viewMonth": "Month",
|
||||
"viewWeek": "Week",
|
||||
"viewDay": "Day",
|
||||
"viewAgenda": "Agenda",
|
||||
"allDay": "All day",
|
||||
"allDayShort": "all day",
|
||||
"moreEvents": "+{{count}} more",
|
||||
"weekNumberLabel": "W{{week}} · {{month}} {{year}}",
|
||||
"agendaFrom": "From {{date}}",
|
||||
"titleLabel": "Title *",
|
||||
"titlePlaceholder": "e.g. Dentist",
|
||||
"allDayToggle": "All day",
|
||||
"startDateLabel": "Start date",
|
||||
"startTimeLabel": "Start time",
|
||||
"endDateLabel": "End date",
|
||||
"endTimeLabel": "End time",
|
||||
"fromLabel": "From",
|
||||
"toLabel": "To",
|
||||
"locationLabel": "Location",
|
||||
"locationPlaceholder": "Optional",
|
||||
"assignedLabel": "Assigned to",
|
||||
"assignedNobody": "— Nobody —",
|
||||
"colorLabel": "Color",
|
||||
"descriptionLabel": "Description",
|
||||
"descriptionPlaceholder": "Optional…",
|
||||
"popupEdit": "Edit",
|
||||
"deleteConfirm": "Really delete \"{{title}}\"?",
|
||||
"createdToast": "Event created",
|
||||
"savedToast": "Event saved",
|
||||
"deletedToast": "Event deleted",
|
||||
"loadError": "Events could not be loaded.",
|
||||
"saveError": "Error saving",
|
||||
"deleteError": "Error deleting",
|
||||
"titleRequired": "Title is required",
|
||||
"monthJanuary": "January",
|
||||
"monthFebruary": "February",
|
||||
"monthMarch": "March",
|
||||
"monthApril": "April",
|
||||
"monthMay": "May",
|
||||
"monthJune": "June",
|
||||
"monthJuly": "July",
|
||||
"monthAugust": "August",
|
||||
"monthSeptember": "September",
|
||||
"monthOctober": "October",
|
||||
"monthNovember": "November",
|
||||
"monthDecember": "December",
|
||||
"dayShortSunday": "Sun",
|
||||
"dayShortMonday": "Mon",
|
||||
"dayShortTuesday": "Tue",
|
||||
"dayShortWednesday": "Wed",
|
||||
"dayShortThursday": "Thu",
|
||||
"dayShortFriday": "Fri",
|
||||
"dayShortSaturday": "Sat",
|
||||
"dayLongSunday": "Sunday",
|
||||
"dayLongMonday": "Monday",
|
||||
"dayLongTuesday": "Tuesday",
|
||||
"dayLongWednesday": "Wednesday",
|
||||
"dayLongThursday": "Thursday",
|
||||
"dayLongFriday": "Friday",
|
||||
"dayLongSaturday": "Saturday"
|
||||
},
|
||||
|
||||
"notes": {
|
||||
"title": "Board",
|
||||
"newNote": "New Note",
|
||||
"editNote": "Edit Note",
|
||||
"addNoteLabel": "New Note",
|
||||
"searchPlaceholder": "Search notes…",
|
||||
"emptyTitle": "No notes yet",
|
||||
"emptyDescription": "Create a new note with the + button.",
|
||||
"noResultsTitle": "No results",
|
||||
"noResultsDescription": "No note contains \"{{query}}\".",
|
||||
"titleLabel": "Title (optional)",
|
||||
"titlePlaceholder": "No title",
|
||||
"contentLabel": "Content",
|
||||
"contentMarkdownHint": "(Markdown formatting supported)",
|
||||
"contentPlaceholder": "Enter note…",
|
||||
"colorLabel": "Color",
|
||||
"pinnedLabel": "Pin (appears on dashboard)",
|
||||
"pinAction": "Pin",
|
||||
"unpinAction": "Unpin",
|
||||
"deleteLabel": "Delete note",
|
||||
"deleteConfirm": "Really delete this note?",
|
||||
"createdToast": "Note created",
|
||||
"savedToast": "Note saved",
|
||||
"deletedToast": "Note deleted",
|
||||
"loadError": "Notes could not be loaded.",
|
||||
"formatBold": "Bold (Ctrl+B)",
|
||||
"formatItalic": "Italic (Ctrl+I)",
|
||||
"formatUnderline": "Underline (Ctrl+U)",
|
||||
"formatStrikethrough": "Strikethrough",
|
||||
"formatHeading": "Heading",
|
||||
"formatList": "Bullet list",
|
||||
"formatOrderedList": "Numbered list",
|
||||
"formatChecklist": "Checklist",
|
||||
"formatLink": "Link",
|
||||
"formatCode": "Code",
|
||||
"formatQuote": "Quote",
|
||||
"formatDivider": "Divider"
|
||||
},
|
||||
|
||||
"contacts": {
|
||||
"title": "Contacts",
|
||||
"newContact": "New Contact",
|
||||
"editContact": "Edit Contact",
|
||||
"addButton": "New",
|
||||
"newContactLabel": "New Contact",
|
||||
"searchPlaceholder": "Search by name, phone or email…",
|
||||
"importButton": "Import",
|
||||
"importLabel": "Import contact from vCard",
|
||||
"importTooltip": "Import vCard",
|
||||
"emptyTitle": "No contacts yet",
|
||||
"emptyDescription": "Add new contacts with the + button.",
|
||||
"filterAll": "All",
|
||||
"nameLabel": "Name *",
|
||||
"namePlaceholder": "Full name",
|
||||
"categoryLabel": "Category",
|
||||
"phoneLabel": "Phone",
|
||||
"phonePlaceholder": "+1 …",
|
||||
"emailLabel": "Email",
|
||||
"emailPlaceholder": "name@example.com",
|
||||
"addressLabel": "Address",
|
||||
"addressPlaceholder": "Street, ZIP City",
|
||||
"notesLabel": "Notes",
|
||||
"notesPlaceholder": "Optional…",
|
||||
"callLabel": "Call",
|
||||
"emailActionLabel": "Email",
|
||||
"mapsLabel": "Open in Maps",
|
||||
"exportLabel": "Export as vCard",
|
||||
"exportTooltip": "Export vCard",
|
||||
"deleteLabel": "Delete contact",
|
||||
"deleteConfirm": "Really delete this contact?",
|
||||
"deletePersonConfirm": "Really delete \"{{name}}\"?",
|
||||
"savedToast": "Contact saved",
|
||||
"updatedToast": "Contact updated",
|
||||
"deletedToast": "Contact deleted",
|
||||
"importedToast": "{{name}} imported.",
|
||||
"importError": "Import failed: {{error}}",
|
||||
"vcardNoName": "vCard does not contain a name.",
|
||||
"catDoctor": "Doctor",
|
||||
"catSchool": "School/Childcare",
|
||||
"catAuthority": "Authority",
|
||||
"catInsurance": "Insurance",
|
||||
"catCraftsman": "Tradesperson",
|
||||
"catEmergency": "Emergency",
|
||||
"catMisc": "Miscellaneous"
|
||||
},
|
||||
|
||||
"budget": {
|
||||
"title": "Budget",
|
||||
"newEntry": "New Entry",
|
||||
"editEntry": "Edit Entry",
|
||||
"addEntryLabel": "Add entry",
|
||||
"newEntryFabLabel": "New Entry",
|
||||
"currentMonth": "Current",
|
||||
"prevMonth": "Previous month",
|
||||
"nextMonth": "Next month",
|
||||
"income": "Income",
|
||||
"expenses": "Expenses",
|
||||
"balance": "Balance",
|
||||
"byCategory": "By category",
|
||||
"transactions": "Transactions",
|
||||
"emptyTitle": "No entries this month",
|
||||
"emptyDescription": "Add budget entries with the + button.",
|
||||
"csvExport": "CSV",
|
||||
"typeExpense": "Expense",
|
||||
"typeIncome": "Income",
|
||||
"titleLabel": "Title *",
|
||||
"titlePlaceholder": "e.g. Supermarket",
|
||||
"amountLabel": "Amount (€) *",
|
||||
"amountPlaceholder": "0.00",
|
||||
"categoryLabel": "Category",
|
||||
"dateLabel": "Date *",
|
||||
"recurringLabel": "Recurring",
|
||||
"deleteLabel": "Delete entry",
|
||||
"deleteConfirm": "Really delete this entry?",
|
||||
"deletePersonConfirm": "Really delete \"{{title}}\"?",
|
||||
"addedToast": "Entry added",
|
||||
"savedToast": "Entry saved",
|
||||
"deletedToast": "Entry deleted",
|
||||
"loadError": "Budget could not be loaded.",
|
||||
"trendNeutral": "— same as {{month}}",
|
||||
"validAmountRequired": "Please enter a valid amount",
|
||||
"dateRequired": "Date is required",
|
||||
"catFood": "Groceries",
|
||||
"catRent": "Rent",
|
||||
"catInsurance": "Insurance",
|
||||
"catMobility": "Transport",
|
||||
"catLeisure": "Leisure",
|
||||
"catClothing": "Clothing",
|
||||
"catHealth": "Health",
|
||||
"catEducation": "Education",
|
||||
"catMisc": "Miscellaneous",
|
||||
"loadingIndicator": "Loading…"
|
||||
},
|
||||
|
||||
"settings": {
|
||||
"title": "Settings",
|
||||
"sectionDesign": "Appearance",
|
||||
"sectionAccount": "My Account",
|
||||
"sectionCalendarSync": "Calendar Sync",
|
||||
"sectionFamily": "Family Members",
|
||||
"cardAppearance": "Display",
|
||||
"themeSystem": "System",
|
||||
"themeSysLabel": "Use system setting",
|
||||
"themeLight": "Light",
|
||||
"themeLightLabel": "Light mode",
|
||||
"themeDark": "Dark",
|
||||
"themeDarkLabel": "Dark mode",
|
||||
"changePassword": "Change password",
|
||||
"currentPasswordLabel": "Current password",
|
||||
"newPasswordLabel": "New password",
|
||||
"confirmPasswordLabel": "Confirm new password",
|
||||
"savePassword": "Save password",
|
||||
"passwordMismatch": "Passwords do not match.",
|
||||
"passwordSavedToast": "Password changed successfully.",
|
||||
"googleCalendar": "Google Calendar",
|
||||
"appleCalendar": "Apple Calendar (iCloud)",
|
||||
"syncNow": "Sync now",
|
||||
"disconnect": "Disconnect",
|
||||
"connectGoogle": "Connect with Google",
|
||||
"connected": "Connected",
|
||||
"connectedLastSync": "Connected · Last: {{date}}",
|
||||
"notConnected": "Not connected",
|
||||
"notConfigured": "Not configured (missing .env variables)",
|
||||
"configured": "Configured (via .env)",
|
||||
"configuredLastSync": "Configured (via .env) · Last: {{date}}",
|
||||
"syncSuccess": "{{provider}} synced.",
|
||||
"disconnectedToast": "{{provider}} disconnected.",
|
||||
"googleOnlyAdmin": "Only admin can connect Google Calendar.",
|
||||
"appleOnlyAdmin": "Only admin can connect Apple Calendar.",
|
||||
"caldavUrlLabel": "CalDAV Server URL",
|
||||
"caldavUrlPlaceholder": "https://caldav.icloud.com",
|
||||
"appleIdLabel": "Apple ID (email)",
|
||||
"applePasswordLabel": "App-specific password",
|
||||
"applePasswordHint": "Create password at <strong>appleid.apple.com → Security</strong>.",
|
||||
"appleConnectBtn": "Connect & test",
|
||||
"appleConnecting": "Connecting…",
|
||||
"appleConnectedToast": "Apple Calendar connected.",
|
||||
"syncSuccessGoogle": "Calendar sync with Google connected successfully.",
|
||||
"syncSuccessApple": "Calendar sync with Apple connected successfully.",
|
||||
"syncErrorGoogle": "Connection to Google failed. Please try again.",
|
||||
"syncErrorApple": "Connection to Apple failed. Please try again.",
|
||||
"addMember": "+ Add member",
|
||||
"newMemberTitle": "New Family Member",
|
||||
"usernameLabel": "Username",
|
||||
"displayNameLabel": "Display name",
|
||||
"memberPasswordLabel": "Password",
|
||||
"colorLabel": "Color",
|
||||
"roleLabel": "Role",
|
||||
"roleMember": "Member",
|
||||
"roleAdmin": "Admin",
|
||||
"createMember": "Create",
|
||||
"cancelAddMember": "Cancel",
|
||||
"memberAddedToast": "{{name}} added.",
|
||||
"deleteMemberConfirm": "Really delete {{name}}?",
|
||||
"memberDeletedToast": "{{name}} deleted.",
|
||||
"deleteMemberLabel": "Delete",
|
||||
"logout": "Log out",
|
||||
"synchronizing": "Syncing…",
|
||||
"googleDisconnectConfirm": "Disconnect Google Calendar?",
|
||||
"appleDisconnectConfirm": "Disconnect Apple Calendar?"
|
||||
},
|
||||
|
||||
"login": {
|
||||
"tagline": "Family planning. Secure. Privacy-friendly. Open source.",
|
||||
"usernameLabel": "Username",
|
||||
"usernamePlaceholder": "username",
|
||||
"passwordLabel": "Password",
|
||||
"passwordPlaceholder": "••••••••",
|
||||
"loginButton": "Log in",
|
||||
"loggingIn": "Logging in…",
|
||||
"tooManyAttempts": "Too many attempts. Please wait a moment.",
|
||||
"invalidCredentials": "Invalid credentials."
|
||||
},
|
||||
|
||||
"install": {
|
||||
"title": "Install Oikos",
|
||||
"subtitle": "Add to home screen",
|
||||
"iosTip1": "Tap ",
|
||||
"iosTip2": " → \"Add to Home Screen\"",
|
||||
"installButton": "Install",
|
||||
"dismissLabel": "Close"
|
||||
},
|
||||
|
||||
"modal": {
|
||||
"closeLabel": "Close"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user