feat(app)!: no anonymous accounts on the device (ADR 0020, D4, D25)

Every account has a way in, so the apps make no anonymous account any
more. The start screen shows whenever nobody is signed in, a first
start included, and offers SimpleLogin, a password and GitHub for those
who have it, with no start without an account. An instance out of reach
is said so, with Try again, and one offering no way to create an account
too. An anonymous account's session left from before is deleted as the
app starts (D25), falling back to signing out on the device.

What only anonymous accounts needed goes: signing in anonymously, the
signed-out mark, adding GitHub to an account and switching to a GitHub
account from the Profile tab (with its Cancel, the only one), an
anonymous device's own keys, the warning that signing out deletes the
account, and the texts about keeping progress. Settings says on which
instance the account is signed in. Learn's publishing, reports and
suggestions and its learner count no longer ask whether the person has
an identity: everyone signed in has one.

The server still offers anonymous sign-in until the next commit, so
older apps keep working until v0.20.0 raises the minimum build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-24 14:50:55 +02:00
commit 5b9df73756
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64
5 changed files with 981 additions and 3339 deletions

View file

@ -469,29 +469,16 @@
"statisticsNothingYet": "Noch nichts gelernt. Deine Lernzeit und Bewertungen erscheinen hier, sobald du Karteikarten lernst.",
"profileSettingsTooltip": "Einstellungen",
"profileIdentified": "Dein Fortschritt wird in deinem Konto gespeichert.",
"profileAnonymous": "Dein Fortschritt wird auf diesem Gerät gespeichert. Melde dich an, um ihn zu behalten.",
"profileAnonymousSimpleLogin": "Dein Fortschritt wird auf diesem Gerät gespeichert. Füge SimpleLogin hinzu, um ihn zu behalten.",
"profileSignInWithGitHub": "Mit GitHub anmelden",
"profileSignInFailed": "Anmeldung mit GitHub fehlgeschlagen.",
"profileContinueInBrowser": "Fahre in deinem Browser fort.",
"profileSwitchTitle": "Zu deinem GitHub-Konto wechseln?",
"profileSwitchMessage": "Dieses GitHub-Konto hat bereits Fortschritt von einem anderen Gerät. Die Lernsets auf diesem Gerät lassen sich noch nicht damit zusammenführen: Wenn du wechselst, werden sie gelöscht.",
"profileSwitchStay": "Anonym bleiben",
"profileSwitchConfirm": "Wechseln",
"profileSignInWays": "Anmeldewege",
"profileWayGitHub": "GitHub",
"profileWayEmail": "E-Mail-Adresse",
"profileWayLinked": "Meldet dich an",
"profileAddGitHub": "GitHub hinzufügen",
"profileGitHubTaken": "Mit diesem GitHub-Konto meldet sich schon ein anderes Konto an.",
"emailSignInSwitchMessage": "Diese Adresse hat bereits Fortschritt von einem anderen Gerät. Die Lernsets auf diesem Gerät lassen sich noch nicht damit zusammenführen: Wenn du wechselst, werden sie gelöscht.",
"publicProfileTitle": "Öffentliches Profil",
"profileSheetTitle": "Profil",
"profileSheetNotFound": "Niemand auf dieser Instanz hat diesen Handle.",
"profileSheetLinkVerified": "Verlinkt zurück auf dieses Profil",
"profileSheetUnreachable": "Das Profil konnte nicht geladen werden. Prüfe deine Verbindung.",
"publicProfileIntro": "Wie andere dich sehen, sobald du veröffentlichst: das Handle, unter dem sie dich finden, dein Name, ein paar Worte und Links. Es speichert sich beim Schreiben, sobald du dein Handle gewählt hast.",
"publicProfileAnonymousHint": "Melde dich an, um ein öffentliches Profil zu haben und zu veröffentlichen.",
"publicProfileDisplayName": "Anzeigename",
"publicProfileDisplayNameHint": "Der Name neben deinem Handle",
"publicProfileHandle": "Handle",
@ -554,8 +541,6 @@
"instanceWelcome": "Willkommen bei Halkyon Learn",
"startSignedOut": "Abgemeldet",
"startOn": "Starte auf {instance}:",
"startWithoutAccount": "Ohne Konto starten",
"startThenAddGitHub": "Starte ohne Konto und füge GitHub dann im Profil hinzu.",
"startOtherInstance": "Andere Instanz verwenden",
"instanceFirstStartSubtitle": "Wähle die Instanz, auf der deine Lernsets liegen sollen. Jede betreibt jemand; weitere kannst du später hinzufügen.",
"instanceAddress": "Adresse der Instanz",
@ -573,7 +558,6 @@
"instanceAddressInvalid": "Das ist keine Adresse.",
"instanceUnreachable": "Unter {name} antwortet keine Instanz von Halkyon Learn.",
"instanceOpenFailed": "Die App auf {name} konnte nicht geöffnet werden.",
"accountAnonymous": "Anonym",
"accountSignedIn": "Angemeldet",
"accountsTitle": "Konten",
"accountAdd": "Konto hinzufügen",
@ -582,7 +566,6 @@
"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",
"settingsSignOutAnonymousMessage": "Bei diesem Konto kannst du dich nicht wieder anmelden, deshalb wird es beim Abmelden samt Fortschritt gelöscht.",
"settingsDeleteMessage": "Alles, was du hast, also deine Lernsets, Karten und Wiederholungen, wird auf dem Server und auf all deinen Geräten gelöscht. Dies kann nicht rückgängig gemacht werden.",
"settingsAbout": "Über Halkyon Learn",
"aboutLegalese": "Freie Software: Die App steht unter der GNU Affero General Public License, Version 3 oder jeder späteren Version, der Server unter der Server Side Public License, Version 1.",
@ -1606,7 +1589,6 @@
"publishPrivate": "Nicht veröffentlicht · nur du siehst es in Learn",
"publishPublished": "Veröffentlicht · v{version} · {date}",
"publishIntro": "Eine Veröffentlichung ist dieses Lernset mit allem darin, so wie es jetzt ist. Andere können es finden, damit lernen und es kopieren. Jede Veröffentlichung bleibt, wie sie war; spätere Änderungen kommen in die nächste.",
"publishAnonymous": "Melde dich an, um ein öffentliches Profil zu haben und zu veröffentlichen.",
"publishName": "Name",
"publishNameHint": "japanisch",
"publishLocation": "Zu finden unter {location}",
@ -1696,7 +1678,7 @@
"cardBrowserStatusWithdrawn": "Im Original zurückgezogen",
"settingsPrivacy": "Privatsphäre",
"settingsCountLearning": "Mein Lernen in Entdecken mitzählen",
"settingsCountLearningSubtitle": "Entdecken zeigt, wie viele auf dieser Instanz ein veröffentlichtes Lernset lernen: Personen mit einer Identität, die das gewählt und es in den letzten 30 Tagen an 3 oder mehr Tagen gelernt haben, gerundet, ab 5. Nichts über dich wird gezeigt, und nichts verlässt die Instanz.",
"settingsCountLearningSubtitle": "Entdecken zeigt, wie viele auf dieser Instanz ein veröffentlichtes Lernset lernen: Personen, die das gewählt und es in den letzten 30 Tagen an 3 oder mehr Tagen gelernt haben, gerundet, ab 5. Nichts über dich wird gezeigt, und nichts verlässt die Instanz.",
"exploreLearners": "{count}+ lernen das hier",
"publishLearnersFew": "Weniger als 5 lernen es hier, von denen, die mitgezählt werden möchten.",
"publishForkForbidden": "Sein Original verbietet, Bearbeitungen weiterzugeben: nur wer es verfasst hat, veröffentlicht es.",
@ -1816,7 +1798,6 @@
"suggestIntro": "Im Original sieht man es so, wie du es jetzt hast, neben der eigenen Fassung. Öffentlich: alle, die es lernen, lesen es, mit deinem öffentlichen Profil.",
"suggestSent": "Vorschlag gesendet.",
"suggestNoDerivatives": "Seine Lizenz verbietet Bearbeitungen: keine Vorschläge.",
"feedbackNeedsIdentity": "Melde dich an, um im Original zu melden und vorzuschlagen.",
"kanjiExampleWords": "Wörter damit",
"settingsAssistant": "Websuche",

View file

@ -534,29 +534,16 @@
"statisticsNothingYet": "Nothing studied yet. Your study time and ratings show here once you study flashcards.",
"profileSettingsTooltip": "Settings",
"profileIdentified": "Your progress is kept with your account.",
"profileAnonymous": "Progress is saved on this device. Sign in to keep it.",
"profileAnonymousSimpleLogin": "Progress is saved on this device. Add SimpleLogin to keep it.",
"profileSignInWithGitHub": "Sign in with GitHub",
"profileSignInFailed": "Couldn't sign in with GitHub.",
"profileContinueInBrowser": "Continue in your browser.",
"profileSwitchTitle": "Switch to your GitHub account?",
"profileSwitchMessage": "This GitHub account already has progress from another device. The studysets on this device can't be combined with it yet: if you switch, they are deleted.",
"profileSwitchStay": "Stay anonymous",
"profileSwitchConfirm": "Switch",
"profileSignInWays": "Ways to sign in",
"profileWayGitHub": "GitHub",
"profileWayEmail": "Email address",
"profileWayLinked": "Signs you in",
"profileAddGitHub": "Add GitHub",
"profileGitHubTaken": "This GitHub account already signs in to another account.",
"emailSignInSwitchMessage": "This address already has progress from another device. The studysets on this device can't be combined with it yet: if you switch, they are deleted.",
"publicProfileTitle": "Public profile",
"profileSheetTitle": "Profile",
"profileSheetNotFound": "Nobody on this instance has this handle.",
"profileSheetLinkVerified": "Links back to this profile",
"profileSheetUnreachable": "The profile couldn’t be loaded. Check your connection.",
"publicProfileIntro": "How others see you once you publish: the handle they find you by, your name, a few words and links. It saves as you write, once you have chosen your handle.",
"publicProfileAnonymousHint": "Sign in to have a public profile and publish.",
"publicProfileDisplayName": "Display name",
"publicProfileDisplayNameHint": "The name shown beside your handle",
"publicProfileHandle": "Handle",
@ -626,8 +613,6 @@
"startSignedOut": "Signed out",
"startOn": "Start on {instance}:",
"@startOn": {"placeholders": {"instance": {"type": "String"}}},
"startWithoutAccount": "Start without an account",
"startThenAddGitHub": "Start without an account, then add GitHub in Profile.",
"startOtherInstance": "Use another instance",
"instanceFirstStartSubtitle": "Choose the instance to keep your studysets on. Someone runs each one; you can add others later.",
"instanceAddress": "Instance address",
@ -651,7 +636,6 @@
"@instanceUnreachable": {"placeholders": {"name": {"type": "String"}}},
"instanceOpenFailed": "Couldn't open the app on {name}.",
"@instanceOpenFailed": {"placeholders": {"name": {"type": "String"}}},
"accountAnonymous": "Anonymous",
"accountSignedIn": "Signed in",
"accountsTitle": "Accounts",
"accountAdd": "Add account",
@ -661,7 +645,6 @@
"accountRemoveMessage": "Removes the account on {name} from this device, with all the device holds of it. What it synced stays on {name}: sign in there again to have it. An anonymous account can't be signed into again.",
"@accountRemoveMessage": {"placeholders": {"name": {"type": "String"}}},
"accountRemoveConfirm": "Remove",
"settingsSignOutAnonymousMessage": "This account can't be signed into again, so signing out deletes it with its progress.",
"settingsDeleteMessage": "Everything you have, your studysets, cards and reviews, is deleted on the server and on all your devices. This can't be undone.",
"settingsAbout": "About Halkyon Learn",
"aboutLegalese": "Free software: the app is under the GNU Affero General Public License, version 3 or any later version, the server under the Server Side Public License, version 1.",
@ -1890,7 +1873,6 @@
"publishPublished": "Published · v{version} · {date}",
"@publishPublished": {"placeholders": {"version": {"type": "int"}, "date": {"type": "String"}}},
"publishIntro": "A release is this studyset with everything inside it, as it is now. Others can find it, learn from it and copy it. Each release stays as it was; later changes go into the next one.",
"publishAnonymous": "Sign in to have a public profile and publish.",
"publishName": "Name",
"publishNameHint": "japanese",
"publishLocation": "Found at {location}",
@ -1998,7 +1980,7 @@
"cardBrowserStatusWithdrawn": "Withdrawn by the author",
"settingsPrivacy": "Privacy",
"settingsCountLearning": "Count my learning in Explore",
"settingsCountLearningSubtitle": "Explore shows how many people on this instance learn a published studyset: those with an identity who chose this and studied it on 3 or more days in the last 30, rounded, from 5 on. Nothing about you is shown, and nothing leaves the instance.",
"settingsCountLearningSubtitle": "Explore shows how many people on this instance learn a published studyset: those who chose this and studied it on 3 or more days in the last 30, rounded, from 5 on. Nothing about you is shown, and nothing leaves the instance.",
"exploreLearners": "{count}+ learn this here",
"@exploreLearners": {"placeholders": {"count": {"type": "int"}}},
"publishLearnersFew": "Fewer than 5 learn it here, of those who chose to be counted.",
@ -2124,7 +2106,6 @@
"suggestIntro": "The author sees it as you have it now, beside theirs. Public: everyone learning it reads it, with your public profile.",
"suggestSent": "Suggestion sent.",
"suggestNoDerivatives": "Its licence forbids adaptations: no suggestions.",
"feedbackNeedsIdentity": "Sign in to report to the author and suggest.",
"kanjiExampleWords": "Words with it",
"settingsAssistant": "Web search",

View file

@ -2824,60 +2824,6 @@ abstract class AppLocalizations {
/// **'Your progress is kept with your account.'**
String get profileIdentified;
/// No description provided for @profileAnonymous.
///
/// In en, this message translates to:
/// **'Progress is saved on this device. Sign in to keep it.'**
String get profileAnonymous;
/// No description provided for @profileAnonymousSimpleLogin.
///
/// In en, this message translates to:
/// **'Progress is saved on this device. Add SimpleLogin to keep it.'**
String get profileAnonymousSimpleLogin;
/// No description provided for @profileSignInWithGitHub.
///
/// In en, this message translates to:
/// **'Sign in with GitHub'**
String get profileSignInWithGitHub;
/// No description provided for @profileSignInFailed.
///
/// In en, this message translates to:
/// **'Couldn\'t sign in with GitHub.'**
String get profileSignInFailed;
/// No description provided for @profileContinueInBrowser.
///
/// In en, this message translates to:
/// **'Continue in your browser.'**
String get profileContinueInBrowser;
/// No description provided for @profileSwitchTitle.
///
/// In en, this message translates to:
/// **'Switch to your GitHub account?'**
String get profileSwitchTitle;
/// No description provided for @profileSwitchMessage.
///
/// In en, this message translates to:
/// **'This GitHub account already has progress from another device. The studysets on this device can\'t be combined with it yet: if you switch, they are deleted.'**
String get profileSwitchMessage;
/// No description provided for @profileSwitchStay.
///
/// In en, this message translates to:
/// **'Stay anonymous'**
String get profileSwitchStay;
/// No description provided for @profileSwitchConfirm.
///
/// In en, this message translates to:
/// **'Switch'**
String get profileSwitchConfirm;
/// No description provided for @profileSignInWays.
///
/// In en, this message translates to:
@ -2902,24 +2848,6 @@ abstract class AppLocalizations {
/// **'Signs you in'**
String get profileWayLinked;
/// No description provided for @profileAddGitHub.
///
/// In en, this message translates to:
/// **'Add GitHub'**
String get profileAddGitHub;
/// No description provided for @profileGitHubTaken.
///
/// In en, this message translates to:
/// **'This GitHub account already signs in to another account.'**
String get profileGitHubTaken;
/// No description provided for @emailSignInSwitchMessage.
///
/// In en, this message translates to:
/// **'This address already has progress from another device. The studysets on this device can\'t be combined with it yet: if you switch, they are deleted.'**
String get emailSignInSwitchMessage;
/// No description provided for @publicProfileTitle.
///
/// In en, this message translates to:
@ -2956,12 +2884,6 @@ abstract class AppLocalizations {
/// **'How others see you once you publish: the handle they find you by, your name, a few words and links. It saves as you write, once you have chosen your handle.'**
String get publicProfileIntro;
/// No description provided for @publicProfileAnonymousHint.
///
/// In en, this message translates to:
/// **'Sign in to have a public profile and publish.'**
String get publicProfileAnonymousHint;
/// No description provided for @publicProfileDisplayName.
///
/// In en, this message translates to:
@ -3316,18 +3238,6 @@ abstract class AppLocalizations {
/// **'Start on {instance}:'**
String startOn(String instance);
/// No description provided for @startWithoutAccount.
///
/// In en, this message translates to:
/// **'Start without an account'**
String get startWithoutAccount;
/// No description provided for @startThenAddGitHub.
///
/// In en, this message translates to:
/// **'Start without an account, then add GitHub in Profile.'**
String get startThenAddGitHub;
/// No description provided for @startOtherInstance.
///
/// In en, this message translates to:
@ -3430,12 +3340,6 @@ abstract class AppLocalizations {
/// **'Couldn\'t open the app on {name}.'**
String instanceOpenFailed(String name);
/// No description provided for @accountAnonymous.
///
/// In en, this message translates to:
/// **'Anonymous'**
String get accountAnonymous;
/// No description provided for @accountSignedIn.
///
/// In en, this message translates to:
@ -3484,12 +3388,6 @@ abstract class AppLocalizations {
/// **'Remove'**
String get accountRemoveConfirm;
/// No description provided for @settingsSignOutAnonymousMessage.
///
/// In en, this message translates to:
/// **'This account can\'t be signed into again, so signing out deletes it with its progress.'**
String get settingsSignOutAnonymousMessage;
/// No description provided for @settingsDeleteMessage.
///
/// In en, this message translates to:
@ -9501,12 +9399,6 @@ abstract class AppLocalizations {
/// **'A release is this studyset with everything inside it, as it is now. Others can find it, learn from it and copy it. Each release stays as it was; later changes go into the next one.'**
String get publishIntro;
/// No description provided for @publishAnonymous.
///
/// In en, this message translates to:
/// **'Sign in to have a public profile and publish.'**
String get publishAnonymous;
/// No description provided for @publishName.
///
/// In en, this message translates to:
@ -10044,7 +9936,7 @@ abstract class AppLocalizations {
/// No description provided for @settingsCountLearningSubtitle.
///
/// In en, this message translates to:
/// **'Explore shows how many people on this instance learn a published studyset: those with an identity who chose this and studied it on 3 or more days in the last 30, rounded, from 5 on. Nothing about you is shown, and nothing leaves the instance.'**
/// **'Explore shows how many people on this instance learn a published studyset: those who chose this and studied it on 3 or more days in the last 30, rounded, from 5 on. Nothing about you is shown, and nothing leaves the instance.'**
String get settingsCountLearningSubtitle;
/// No description provided for @exploreLearners.
@ -10737,12 +10629,6 @@ abstract class AppLocalizations {
/// **'Its licence forbids adaptations: no suggestions.'**
String get suggestNoDerivatives;
/// No description provided for @feedbackNeedsIdentity.
///
/// In en, this message translates to:
/// **'Sign in to report to the author and suggest.'**
String get feedbackNeedsIdentity;
/// No description provided for @kanjiExampleWords.
///
/// In en, this message translates to:

View file

@ -1715,36 +1715,6 @@ class AppLocalizationsDe extends AppLocalizations {
String get profileIdentified =>
'Dein Fortschritt wird in deinem Konto gespeichert.';
@override
String get profileAnonymous =>
'Dein Fortschritt wird auf diesem Gerät gespeichert. Melde dich an, um ihn zu behalten.';
@override
String get profileAnonymousSimpleLogin =>
'Dein Fortschritt wird auf diesem Gerät gespeichert. Füge SimpleLogin hinzu, um ihn zu behalten.';
@override
String get profileSignInWithGitHub => 'Mit GitHub anmelden';
@override
String get profileSignInFailed => 'Anmeldung mit GitHub fehlgeschlagen.';
@override
String get profileContinueInBrowser => 'Fahre in deinem Browser fort.';
@override
String get profileSwitchTitle => 'Zu deinem GitHub-Konto wechseln?';
@override
String get profileSwitchMessage =>
'Dieses GitHub-Konto hat bereits Fortschritt von einem anderen Gerät. Die Lernsets auf diesem Gerät lassen sich noch nicht damit zusammenführen: Wenn du wechselst, werden sie gelöscht.';
@override
String get profileSwitchStay => 'Anonym bleiben';
@override
String get profileSwitchConfirm => 'Wechseln';
@override
String get profileSignInWays => 'Anmeldewege';
@ -1757,17 +1727,6 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get profileWayLinked => 'Meldet dich an';
@override
String get profileAddGitHub => 'GitHub hinzufügen';
@override
String get profileGitHubTaken =>
'Mit diesem GitHub-Konto meldet sich schon ein anderes Konto an.';
@override
String get emailSignInSwitchMessage =>
'Diese Adresse hat bereits Fortschritt von einem anderen Gerät. Die Lernsets auf diesem Gerät lassen sich noch nicht damit zusammenführen: Wenn du wechselst, werden sie gelöscht.';
@override
String get publicProfileTitle => 'Öffentliches Profil';
@ -1789,10 +1748,6 @@ class AppLocalizationsDe extends AppLocalizations {
String get publicProfileIntro =>
'Wie andere dich sehen, sobald du veröffentlichst: das Handle, unter dem sie dich finden, dein Name, ein paar Worte und Links. Es speichert sich beim Schreiben, sobald du dein Handle gewählt hast.';
@override
String get publicProfileAnonymousHint =>
'Melde dich an, um ein öffentliches Profil zu haben und zu veröffentlichen.';
@override
String get publicProfileDisplayName => 'Anzeigename';
@ -2004,13 +1959,6 @@ class AppLocalizationsDe extends AppLocalizations {
return 'Starte auf $instance:';
}
@override
String get startWithoutAccount => 'Ohne Konto starten';
@override
String get startThenAddGitHub =>
'Starte ohne Konto und füge GitHub dann im Profil hinzu.';
@override
String get startOtherInstance => 'Andere Instanz verwenden';
@ -2075,9 +2023,6 @@ class AppLocalizationsDe extends AppLocalizations {
return 'Die App auf $name konnte nicht geöffnet werden.';
}
@override
String get accountAnonymous => 'Anonym';
@override
String get accountSignedIn => 'Angemeldet';
@ -2105,10 +2050,6 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get accountRemoveConfirm => 'Entfernen';
@override
String get settingsSignOutAnonymousMessage =>
'Bei diesem Konto kannst du dich nicht wieder anmelden, deshalb wird es beim Abmelden samt Fortschritt gelöscht.';
@override
String get settingsDeleteMessage =>
'Alles, was du hast, also deine Lernsets, Karten und Wiederholungen, wird auf dem Server und auf all deinen Geräten gelöscht. Dies kann nicht rückgängig gemacht werden.';
@ -5975,10 +5916,6 @@ class AppLocalizationsDe extends AppLocalizations {
String get publishIntro =>
'Eine Veröffentlichung ist dieses Lernset mit allem darin, so wie es jetzt ist. Andere können es finden, damit lernen und es kopieren. Jede Veröffentlichung bleibt, wie sie war; spätere Änderungen kommen in die nächste.';
@override
String get publishAnonymous =>
'Melde dich an, um ein öffentliches Profil zu haben und zu veröffentlichen.';
@override
String get publishName => 'Name';
@ -6319,7 +6256,7 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get settingsCountLearningSubtitle =>
'Entdecken zeigt, wie viele auf dieser Instanz ein veröffentlichtes Lernset lernen: Personen mit einer Identität, die das gewählt und es in den letzten 30 Tagen an 3 oder mehr Tagen gelernt haben, gerundet, ab 5. Nichts über dich wird gezeigt, und nichts verlässt die Instanz.';
'Entdecken zeigt, wie viele auf dieser Instanz ein veröffentlichtes Lernset lernen: Personen, die das gewählt und es in den letzten 30 Tagen an 3 oder mehr Tagen gelernt haben, gerundet, ab 5. Nichts über dich wird gezeigt, und nichts verlässt die Instanz.';
@override
String exploreLearners(int count) {
@ -6718,10 +6655,6 @@ class AppLocalizationsDe extends AppLocalizations {
String get suggestNoDerivatives =>
'Seine Lizenz verbietet Bearbeitungen: keine Vorschläge.';
@override
String get feedbackNeedsIdentity =>
'Melde dich an, um im Original zu melden und vorzuschlagen.';
@override
String get kanjiExampleWords => 'Wörter damit';

View file

@ -1699,36 +1699,6 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get profileIdentified => 'Your progress is kept with your account.';
@override
String get profileAnonymous =>
'Progress is saved on this device. Sign in to keep it.';
@override
String get profileAnonymousSimpleLogin =>
'Progress is saved on this device. Add SimpleLogin to keep it.';
@override
String get profileSignInWithGitHub => 'Sign in with GitHub';
@override
String get profileSignInFailed => 'Couldn\'t sign in with GitHub.';
@override
String get profileContinueInBrowser => 'Continue in your browser.';
@override
String get profileSwitchTitle => 'Switch to your GitHub account?';
@override
String get profileSwitchMessage =>
'This GitHub account already has progress from another device. The studysets on this device can\'t be combined with it yet: if you switch, they are deleted.';
@override
String get profileSwitchStay => 'Stay anonymous';
@override
String get profileSwitchConfirm => 'Switch';
@override
String get profileSignInWays => 'Ways to sign in';
@ -1741,17 +1711,6 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get profileWayLinked => 'Signs you in';
@override
String get profileAddGitHub => 'Add GitHub';
@override
String get profileGitHubTaken =>
'This GitHub account already signs in to another account.';
@override
String get emailSignInSwitchMessage =>
'This address already has progress from another device. The studysets on this device can\'t be combined with it yet: if you switch, they are deleted.';
@override
String get publicProfileTitle => 'Public profile';
@ -1772,10 +1731,6 @@ class AppLocalizationsEn extends AppLocalizations {
String get publicProfileIntro =>
'How others see you once you publish: the handle they find you by, your name, a few words and links. It saves as you write, once you have chosen your handle.';
@override
String get publicProfileAnonymousHint =>
'Sign in to have a public profile and publish.';
@override
String get publicProfileDisplayName => 'Display name';
@ -1985,13 +1940,6 @@ class AppLocalizationsEn extends AppLocalizations {
return 'Start on $instance:';
}
@override
String get startWithoutAccount => 'Start without an account';
@override
String get startThenAddGitHub =>
'Start without an account, then add GitHub in Profile.';
@override
String get startOtherInstance => 'Use another instance';
@ -2056,9 +2004,6 @@ class AppLocalizationsEn extends AppLocalizations {
return 'Couldn\'t open the app on $name.';
}
@override
String get accountAnonymous => 'Anonymous';
@override
String get accountSignedIn => 'Signed in';
@ -2086,10 +2031,6 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get accountRemoveConfirm => 'Remove';
@override
String get settingsSignOutAnonymousMessage =>
'This account can\'t be signed into again, so signing out deletes it with its progress.';
@override
String get settingsDeleteMessage =>
'Everything you have, your studysets, cards and reviews, is deleted on the server and on all your devices. This can\'t be undone.';
@ -5921,10 +5862,6 @@ class AppLocalizationsEn extends AppLocalizations {
String get publishIntro =>
'A release is this studyset with everything inside it, as it is now. Others can find it, learn from it and copy it. Each release stays as it was; later changes go into the next one.';
@override
String get publishAnonymous =>
'Sign in to have a public profile and publish.';
@override
String get publishName => 'Name';
@ -6258,7 +6195,7 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get settingsCountLearningSubtitle =>
'Explore shows how many people on this instance learn a published studyset: those with an identity who chose this and studied it on 3 or more days in the last 30, rounded, from 5 on. Nothing about you is shown, and nothing leaves the instance.';
'Explore shows how many people on this instance learn a published studyset: those who chose this and studied it on 3 or more days in the last 30, rounded, from 5 on. Nothing about you is shown, and nothing leaves the instance.';
@override
String exploreLearners(int count) {
@ -6655,10 +6592,6 @@ class AppLocalizationsEn extends AppLocalizations {
String get suggestNoDerivatives =>
'Its licence forbids adaptations: no suggestions.';
@override
String get feedbackNeedsIdentity =>
'Sign in to report to the author and suggest.';
@override
String get kanjiExampleWords => 'Words with it';