Calendarr liefert Termine über den Gruppencontainer. Streng lesend: keine eigene Anmeldung, kein Netz, kein Schreiben zurück. Die Abdeckung ist der Kern und kein Detail. Der Schnappschuss reicht 49 Tage nach vorne, und das steht nirgends in der Datei — es ist zugesagtes Verhalten des Schreibers. Außerhalb liegt keine Information vor, nicht keine Termine; das Monatsraster graut solche Tage aus, statt „frei" zu behaupten. Verlockend wäre, die Abdeckung aus dem frühesten Termin abzuleiten. Das ist falsch, und ein Test hält es fest: mehrtägige Termine ragen ins Fenster hinein und werden mitgeschrieben, obwohl ihr Anfang nicht abgedeckt ist. Bei „beide Quellen" ist die Abdeckung der Schnitt, nicht die Vereinigung. Ein Tag gilt nur als bekannt, wenn ihn jede Quelle abdeckt. Umgekehrt darf ein Ausfall einer Quelle die andere nicht mitreißen: Calendarr nie geöffnet zu haben knipst den Apple-Kalender nicht aus. Die Ablage kopiert, statt zu verweisen. Anhänge aus Mail oder WhatsApp liegen in temporären Verzeichnissen — ein Verweis wäre in Stunden tot, und die Ablage wäre leer, wenn man sie braucht. Aus demselben Grund nimmt die Fläche UTType.item statt public.file-url an: solche Anhänge kommen als Dateiversprechen, und loadFileRepresentation löst beides ein. Die übergebene Datei existiert nur innerhalb des Rückrufs, also wird sie dort sofort gesichert statt später auf dem MainActor. Gelöscht wird in den Papierkorb. Automatisches Aufräumen ist standardmäßig aus — eine Ablage, die ungefragt löscht, ist ein Papierkorb mit Zeitschaltuhr. Nebenbei: „mixer.on" und „network.vpn.active" standen als rohe Schlüssel in der Oberfläche. Label(_:systemImage:) kennt kein Bundle und sucht immer im Hauptbundle. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
334 lines
8.0 KiB
Plaintext
334 lines
8.0 KiB
Plaintext
{
|
|
"sourceLanguage": "en",
|
|
"strings": {
|
|
"": {},
|
|
"%lld": {
|
|
"comment": "A day of the month. The argument is the day of the month.",
|
|
"isCommentAutoGenerated": true
|
|
},
|
|
"calendar.source.apple": {
|
|
"localizations": {
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Apple Kalender"
|
|
}
|
|
},
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Apple Calendar"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"calendar.source.both": {
|
|
"localizations": {
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Beide"
|
|
}
|
|
},
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Both"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"calendar.source.calendarr": {
|
|
"localizations": {
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Calendarr"
|
|
}
|
|
},
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Calendarr"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"calendar.source.readOnly": {
|
|
"localizations": {
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Onyx liest nur. Es meldet sich nie selbst an und schreibt nie nach Calendarr."
|
|
}
|
|
},
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Onyx only reads. It never signs in and never writes to Calendarr."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"calendar.source.status.coverage": {
|
|
"localizations": {
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Bekannt bis %@"
|
|
}
|
|
},
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Known through %@"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"calendar.source.status.incompatible": {
|
|
"localizations": {
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Calendarr schreibt ein neueres Format. Bitte Onyx aktualisieren."
|
|
}
|
|
},
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Calendarr writes a newer format. Please update Onyx."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"calendar.source.status.loggedOut": {
|
|
"localizations": {
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "In Calendarr nicht angemeldet. Alte Termine werden nicht gezeigt."
|
|
}
|
|
},
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Not signed in to Calendarr. Old events are not shown."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"calendar.source.status.neverWritten": {
|
|
"localizations": {
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Calendarr einmal öffnen, damit ein Schnappschuss geschrieben wird."
|
|
}
|
|
},
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Open Calendarr once so it can write a snapshot."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"calendar.source.status.ready": {
|
|
"localizations": {
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "%@ Termine, Stand %@"
|
|
}
|
|
},
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "%@ events, as of %@"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"calendar.source.status.unreadable": {
|
|
"localizations": {
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Schnappschuss unlesbar: %@"
|
|
}
|
|
},
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Snapshot unreadable: %@"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"calendar.source.title": {
|
|
"localizations": {
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Terminquelle"
|
|
}
|
|
},
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Calendar source"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"widget.calendar.allDay": {
|
|
"localizations": {
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Ganztägig"
|
|
}
|
|
},
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "All day"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"widget.calendar.day.unknown": {
|
|
"comment": "Erklärt einen ausgegrauten Tag: keine Information, nicht keine Termine",
|
|
"localizations": {
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Für diesen Tag liegen keine Daten vor"
|
|
}
|
|
},
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "No data available for this day"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"widget.calendar.denied": {
|
|
"localizations": {
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Kein Kalenderzugriff.\nIn den Systemeinstellungen erlauben."
|
|
}
|
|
},
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "No calendar access.\nAllow it in System Settings."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"widget.calendar.incompatible": {
|
|
"localizations": {
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Onyx ist zu alt für diese\nCalendarr-Version. Bitte aktualisieren."
|
|
}
|
|
},
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Onyx is too old for this\nCalendarr version. Please update."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"widget.calendar.loggedOut": {
|
|
"localizations": {
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "In Calendarr anmelden"
|
|
}
|
|
},
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Sign in to Calendarr"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"widget.calendar.name": {
|
|
"localizations": {
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Kalender"
|
|
}
|
|
},
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Calendar"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"widget.calendar.neverWritten": {
|
|
"localizations": {
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Calendarr einmal öffnen,\ndamit Termine bereitstehen."
|
|
}
|
|
},
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Open Calendarr once\nso events become available."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"widget.calendar.noUpcoming": {
|
|
"comment": "Nur zeigen, wenn der Zeitraum wirklich abgedeckt ist",
|
|
"localizations": {
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Nichts mehr für heute"
|
|
}
|
|
},
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Nothing left today"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"widget.calendar.unreadable": {
|
|
"localizations": {
|
|
"de": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Termine nicht lesbar.\nKonfigurationsfehler."
|
|
}
|
|
},
|
|
"en": {
|
|
"stringUnit": {
|
|
"state": "translated",
|
|
"value": "Events unreadable.\nConfiguration error."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"version": "1.1"
|
|
}
|