What every Halkyon app's shell needs, taken from Halkyon Learn's and set on halkyon_base's client: the instances a device keeps an account on, the first start's tiles and where an instance keeps people's data, the account switcher; signing in anonymously, with GitHub or an email code, switching person and the start screen; the gates that build an app's dependencies per instance and per person; and the sync service with its status, Settings card and banner. Texts of its own in English and German take the app's name; what only the app can say, it passes in. Fakes for apps' tests are in testing.dart. An instance's basics now name the app it serves (`app`, set by the host's configuration), and an app accepts only an instance of its own. SerialQueue and CoalescingRunner move into halkyon_core. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
78 lines
4.9 KiB
Text
78 lines
4.9 KiB
Text
{
|
|
"@@locale": "de",
|
|
"tryAgain": "Erneut versuchen",
|
|
"instanceWelcome": "Willkommen bei {app}",
|
|
"instanceBuiltInTagline": "In der App voreingestellt",
|
|
"instanceAnother": "Andere Instanz",
|
|
"instanceAnotherTagline": "Gib ihre Adresse ein",
|
|
"instanceAddress": "Adresse der Instanz",
|
|
"instanceAddressInvalid": "Das ist keine Adresse.",
|
|
"instanceAddressRequired": "Gib die Adresse einer Instanz ein.",
|
|
"instanceContinue": "Weiter",
|
|
"instanceUnreachable": "Unter {name} antwortet keine Instanz von {app}.",
|
|
"instanceUseBuiltIn": "{name} verwenden",
|
|
"instanceOpenFailed": "Die App auf {name} konnte nicht geöffnet werden.",
|
|
"instanceDataAndBackupsIn": "Daten und Sicherungen: {place}",
|
|
"instanceDataIn": "Daten: {place}",
|
|
"instanceBackupsIn": "Sicherungen: {place}",
|
|
"instanceNoBackups": "Keine Sicherungen",
|
|
"instanceEuropeanUnion": "Europäische Union",
|
|
"accountsTitle": "Konten",
|
|
"accountAdd": "Konto hinzufügen",
|
|
"accountAddSubtitle": "Wähle die Instanz für das Konto, das du hinzufügst.",
|
|
"accountSignedIn": "Angemeldet",
|
|
"accountAnonymous": "Anonym",
|
|
"accountRemoveTooltip": "Konto entfernen",
|
|
"accountRemoveTitle": "Konto entfernen?",
|
|
"accountRemoveMessage": "Entfernt das Konto auf {name} von diesem Gerät, mit allem, was das Gerät davon hat. Was es synchronisiert hat, bleibt auf {name}: Melde dich dort wieder an, um es wiederzuhaben. In ein anonymes Konto kann man sich nicht wieder anmelden.",
|
|
"accountRemoveConfirm": "Entfernen",
|
|
"sessionUnreachable": "Der Server war nicht erreichbar.",
|
|
"personDataFailed": "Die Daten dieses Geräts konnten nicht geöffnet werden.",
|
|
"startSignedOut": "Abgemeldet",
|
|
"startOn": "Starte auf {instance}:",
|
|
"startWithGitHub": "Mit GitHub anmelden",
|
|
"startWithEmail": "Mit E-Mail fortfahren",
|
|
"startWithoutAccount": "Ohne Konto starten",
|
|
"startAnonymous": "Dein Fortschritt wird auf diesem Gerät gespeichert. Melde dich an, um ihn zu behalten.",
|
|
"startGitHubFailed": "Anmeldung mit GitHub fehlgeschlagen.",
|
|
"startNoGitHubAccount": "Noch kein Konto hier meldet sich mit diesem GitHub-Konto an. Starte ohne Konto und füge GitHub dann im Profil hinzu.",
|
|
"startOtherInstance": "Andere Instanz verwenden",
|
|
"emailSignInTitle": "Mit E-Mail fortfahren",
|
|
"emailSignInIntro": "Wir schicken dir einen Code zum Anmelden. Diese Instanz behält nur einen Fingerabdruck deiner Adresse, nie die Adresse selbst, und schreibt ihr nur, wenn du einen Code anforderst.",
|
|
"emailSignInAddress": "E-Mail-Adresse",
|
|
"emailSignInSend": "Code senden",
|
|
"emailSignInCodeSent": "Wir haben einen Code an {address} geschickt. Er gilt 15 Minuten.",
|
|
"emailSignInResent": "Ein neuer Code ist unterwegs.",
|
|
"emailSignInCode": "Code",
|
|
"emailSignInContinue": "Weiter",
|
|
"emailSignInResend": "Neuen Code senden",
|
|
"emailSignInOtherAddress": "Andere Adresse verwenden",
|
|
"emailSignInSwitchTitle": "Zum Konto von {address} wechseln?",
|
|
"emailSignInSwitchConfirm": "Wechseln",
|
|
"emailSignInSwitchStay": "Anonym bleiben",
|
|
"emailSignInTaken": "Mit {address} meldet sich schon ein anderes Konto an. Um zu ihm zu wechseln, melde dich zuerst ab.",
|
|
"emailSignInUnavailable": "Diese Instanz bietet keine Anmeldung mit E-Mail an.",
|
|
"emailSignInNotAnAddress": "Das ist keine E-Mail-Adresse.",
|
|
"emailSignInTooManyCodes": "Zu viele Codes in der letzten Stunde. Versuche es später noch einmal.",
|
|
"emailSignInWrongCode": "Dieser Code stimmt nicht.",
|
|
"emailSignInTooManyTries": "Zu viele falsche Codes. Fordere einen neuen an.",
|
|
"emailSignInCodeExpired": "Dieser Code gilt nicht mehr. Fordere einen neuen an.",
|
|
"emailSignInOtherAddressLinked": "Du meldest dich schon mit einer anderen Adresse an.",
|
|
"emailSignInMailFailed": "Die Instanz konnte die Mail nicht senden. Versuche es später noch einmal.",
|
|
"emailSignInFailed": "Die Instanz war nicht erreichbar. Versuche es noch einmal.",
|
|
"syncTitle": "Synchronisierung",
|
|
"syncNow": "Jetzt synchronisieren",
|
|
"syncStateSyncing": "Wird synchronisiert…",
|
|
"syncStateSynced": "Alles synchronisiert",
|
|
"syncStateFailing": "Synchronisierung schlägt fehl",
|
|
"syncStateNotYet": "Noch nicht synchronisiert",
|
|
"syncStateMismatch": "Diese App kann nicht mit {server} synchronisieren",
|
|
"syncMismatchDetail": "Aktualisiere die App. Ist sie schon aktuell, muss der Server aktualisiert werden. Was du bis dahin tust, bleibt auf diesem Gerät und wird danach synchronisiert.",
|
|
"syncLastCompleted": "Zuletzt abgeschlossen um {time}",
|
|
"syncLastFailed": "Letzter Versuch fehlgeschlagen um {time}",
|
|
"syncNoRunYet": "Seit dem Start der App wurde noch keine Synchronisierung abgeschlossen",
|
|
"syncPending": "{count, plural, =1{1 Änderung wartet auf die Synchronisierung} other{{count} Änderungen warten auf die Synchronisierung}}",
|
|
"syncTroubleLabel": "Synchronisierung benötigt Aufmerksamkeit",
|
|
"syncMismatchBanner": "Diese App kann nicht mehr mit {server} synchronisieren. Aktualisiere sie, um weiter zu synchronisieren.",
|
|
"syncMismatchMore": "Mehr"
|
|
}
|