halkyon/apps/learn/halkyon_learn_flutter/lib/l10n/app_de.arb

2204 lines
133 KiB
Text
Raw Normal View History

feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
{
"@@locale": "de",
"appTitle": "Halkyon Learn",
"launchProduct": "Learn",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"shellTabHome": "Startseite",
"shellTabLibrary": "Bibliothek",
"shellTabExplore": "Entdecken",
"shellTabProfile": "Profil",
"homeTitle": "Startseite",
"libraryTitle": "Bibliothek",
"libraryCreateStudyset": "Lernset erstellen",
"libraryEmpty": "Noch keine Lernsets",
"libraryOnItsWay": "Deine Bibliothek wird von {instance} geladen …",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"libraryUnreadable": "Deine Lernsets konnten nicht gelesen werden.",
"libraryArchivedSection": "Archiviert",
"librarySearchTooltip": "Suchen",
"librarySearchHint": "Lernsets durchsuchen",
"librarySearchClearTooltip": "Suche löschen",
"librarySearchCloseTooltip": "Suche schließen",
"librarySearchNoMatches": "Keine Lernsets für deine Suche gefunden",
"libraryStudysetArchived": "Lernset archiviert",
"libraryStudysetUnarchived": "Lernset aus dem Archiv geholt",
"libraryStudysetDeleted": "In „Zuletzt gelöscht“ verschoben",
"libraryDeletedSection": "Zuletzt gelöscht",
"libraryDeletedNote": "Gelöschte Lernsets werden samt allem, was darin ist, 14 Tage aufbewahrt. Danach werden sie endgültig gelöscht.",
"libraryDeletedDaysLeft": "{days, plural, =0{Bald endgültig gelöscht} =1{Noch 1 Tag} other{Noch {days} Tage}}",
"@libraryDeletedDaysLeft": {"placeholders": {"days": {"type": "int"}}},
"libraryRestore": "Wiederherstellen",
"libraryDeleteNow": "Jetzt löschen",
"libraryStudysetRestored": "Lernset wiederhergestellt",
"libraryDeleteForGoodTitle": "Endgültig löschen?",
"libraryDeleteForGoodMessage": "„{title}“ wird samt allem, was darin ist, und allen zugehörigen Karten auf all deinen Geräten gelöscht. Das lässt sich nicht rückgängig machen.",
"@libraryDeleteForGoodMessage": {"placeholders": {"title": {"type": "String"}}},
"libraryDeleteForGoodConfirm": "Endgültig löschen",
"libraryDeleteForGoodFailed": "„{title}“ ließ sich nicht löschen. Es ist wieder unter „Zuletzt gelöscht“.",
"@libraryDeleteForGoodFailed": {"placeholders": {"title": {"type": "String"}}},
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studysetSheetCreateTitle": "Lernset erstellen",
"studysetSheetEditTitle": "Lernset bearbeiten",
"studysetSheetCreate": "Erstellen",
"studysetSheetSave": "Speichern",
"studysetSheetTitleLabel": "Titel",
"studysetSheetSecondaryLabel": "Zweittitel",
feat(app): Home, the Library and the studyset sheets laid out as before Home: plain cards on the surface, 16 dp apart, the goal first and the Pomodoro timer after it in a new dashboard. The streak chip sits centred in the app bar, and its sheet shows the days inside a big flame and the week as marks over the weekdays' initials, with a word on today in a box. The week names its day as "Thursday, Oct 8" and its days carry no tooltip. The heatmap scrolls its weekdays with the weeks, outlines the days to come, and names a day's activities with its date. The goal card has a ring of 5 dp, a check once met and a pencil, and its sheet saves across its width with Remove goal below. Arranging puts an eye on each widget's corner and lifts the one picked up, with a tap the hand feels; with every widget hidden, Customise brings arranging back. The stepper moves to core, where the goal's sheet takes it too. Library: the counts line includes files (PDFs); Refresh in the app bar and pulling the list down sync now; a list that can't be read offers Retry, which reads it again; the star keeps its square corners. Studyset sheet: "Title *", the secondary title explained behind a question mark, Inherit as a box beside the colour, and the description in up to three lines with a chevron. Move sheet: round marks, the studyset itself marked as current, the top level only while it is inside another, archived studysets last under their heading, the destination named in the footer, and a new studyset to move into, made only once the move is. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-08 11:12:23 +02:00
"studysetSheetSecondaryHelper": "Wird als kleines Label über dem Titel auf Karten und im Kopf des Lernsets angezeigt. Pfade nutzen es, um Stufen zu kennzeichnen (Challenge, Meilenstein, Lektion).",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studysetSheetColor": "Farbe",
"studysetSheetDiscardTitle": "Änderungen verwerfen?",
"studysetSheetDiscardMessage": "Du hast ungespeicherte Änderungen an diesem Lernset. Verwerfen und das Formular schließen?",
"studysetSheetDiscardConfirm": "Verwerfen",
"studysetCountFlashcards": "{count, plural, =1{1 Karteikarte} other{{count} Karteikarten}}",
"studysetCountNotes": "{count, plural, =1{1 Notiz} other{{count} Notizen}}",
feat(app): Home, the Library and the studyset sheets laid out as before Home: plain cards on the surface, 16 dp apart, the goal first and the Pomodoro timer after it in a new dashboard. The streak chip sits centred in the app bar, and its sheet shows the days inside a big flame and the week as marks over the weekdays' initials, with a word on today in a box. The week names its day as "Thursday, Oct 8" and its days carry no tooltip. The heatmap scrolls its weekdays with the weeks, outlines the days to come, and names a day's activities with its date. The goal card has a ring of 5 dp, a check once met and a pencil, and its sheet saves across its width with Remove goal below. Arranging puts an eye on each widget's corner and lifts the one picked up, with a tap the hand feels; with every widget hidden, Customise brings arranging back. The stepper moves to core, where the goal's sheet takes it too. Library: the counts line includes files (PDFs); Refresh in the app bar and pulling the list down sync now; a list that can't be read offers Retry, which reads it again; the star keeps its square corners. Studyset sheet: "Title *", the secondary title explained behind a question mark, Inherit as a box beside the colour, and the description in up to three lines with a chevron. Move sheet: round marks, the studyset itself marked as current, the top level only while it is inside another, archived studysets last under their heading, the destination named in the footer, and a new studyset to move into, made only once the move is. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-08 11:12:23 +02:00
"studysetCountFiles": "{count, plural, =1{1 Datei} other{{count} Dateien}}",
"libraryRefresh": "Aktualisieren",
"libraryOptions": "Optionen der Bibliothek",
"libraryImport": "Importieren",
"libraryImportAnkiHint": "Wird ein eigenes Lernset, aus einer .apkg- oder .colpkg-Datei",
feat(archive): import a studyset with everything in it and its progress Your call (2026-10-11): an archive, imported from the Library's Import, to bring a library from elsewhere as one's own, and later to restore backups and move studysets between instances before federation. An archive is a .zip: archive.json says its format; the studyset is laid out as a release (ADR 0005, rule 3), so the release copier writes it, now also unlinked from any publication (ReleaseCopier.write), its cards marked "archive" as imported ones are, handing back each item's new id. A card may name a dictionary entry instead of its payload: the import makes it from the instance's dictionary as adding from it does, with today's entry, examples and tags, and leaves out (counting) one the instance lacks; for that, DictionaryEndpoint.entries gives entries by their ids, at most 1,000 at once. reviews.json lists reviews of the archive's cards; they go into the person's review log once the cards are in, so every card's schedule goes on from them. The sheet says what the archive holds ("Japanese" holds: 12 studysets, 7,745 flashcards, 3 paths, 20,317 reviews), imports once confirmed, busy meanwhile, and opens the studyset made. Not an archive, a newer format or an unreadable one says so and imports nothing. No export into the format yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-11 16:39:07 +02:00
"libraryImportArchive": "Halkyon-Archiv",
"libraryImportArchiveHint": "Ein Lernset mit allem darin und seinem Fortschritt, aus einer .zip-Datei",
"archiveFileType": "Halkyon-Archiv",
"archiveImportTitle": "Archiv importieren",
"archiveImportReading": "Das Archiv wird gelesen …",
"archiveImportHolds": "„{title}“ enthält:",
"archiveCountStudysets": "{count, plural, =1{1 Lernset} other{{count} Lernsets}}",
"archiveCountReviews": "{count, plural, =1{1 Wiederholung} other{{count} Wiederholungen}}",
"archiveImportConfirm": "Importieren",
"archiveImported": "Importiert: {cards} und {reviews}.",
"archiveImportMissingEntries": "{count, plural, =1{1 Wort fehlt} other{{count} Wörter fehlen}} im Wörterbuch dieser Instanz und {count, plural, =1{blieb} other{blieben}} draußen.",
"archiveNotAnArchive": "Diese Datei ist kein Halkyon-Archiv.",
"archiveNewerFormat": "Dieses Archiv stammt aus einer neueren Version der App. Aktualisiere die App, um es zu importieren.",
"archiveUnreadable": "Dieses Archiv lässt sich nicht lesen.",
"archiveImportBrokeOff": "Der Import brach ab. Prüfe die Verbindung und versuche es noch einmal.",
feat(app): Home, the Library and the studyset sheets laid out as before Home: plain cards on the surface, 16 dp apart, the goal first and the Pomodoro timer after it in a new dashboard. The streak chip sits centred in the app bar, and its sheet shows the days inside a big flame and the week as marks over the weekdays' initials, with a word on today in a box. The week names its day as "Thursday, Oct 8" and its days carry no tooltip. The heatmap scrolls its weekdays with the weeks, outlines the days to come, and names a day's activities with its date. The goal card has a ring of 5 dp, a check once met and a pencil, and its sheet saves across its width with Remove goal below. Arranging puts an eye on each widget's corner and lifts the one picked up, with a tap the hand feels; with every widget hidden, Customise brings arranging back. The stepper moves to core, where the goal's sheet takes it too. Library: the counts line includes files (PDFs); Refresh in the app bar and pulling the list down sync now; a list that can't be read offers Retry, which reads it again; the star keeps its square corners. Studyset sheet: "Title *", the secondary title explained behind a question mark, Inherit as a box beside the colour, and the description in up to three lines with a chevron. Move sheet: round marks, the studyset itself marked as current, the top level only while it is inside another, archived studysets last under their heading, the destination named in the footer, and a new studyset to move into, made only once the move is. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-08 11:12:23 +02:00
"libraryRetry": "Erneut versuchen",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studysetNoContent": "Noch kein Inhalt",
feat(app): the studyset screen laid out as before The Study pill reads "Learn 12 flashcards" in the app bar and "Learn 12" floating, "Study" with nothing due, and is off with nothing to study, saying so. With a path not finished, a chevron beside it offers to start or continue the path: a menu in the app bar, a Study mode sheet on phones. The floating bar rises above the licence line, which takes two lines at most. Add material offers a path, flashcards, a note and a PDF, in that order; imports moved to the options' Import content, which asks for a learning path or an Anki deck. The options read Edit, Move, Study options, Import content, Reset progress, Archive, Delete. The bibliography is an outlined round button above the content, and on phones at the foot of the topics. The tabs sit on a line of their own across the card, what the tab shown offers beside them: the flashcards' filter and options, and on the paths Reorder once there are two, which turns them into handles to drag. An empty tab says so in its middle; tapping the open tab again returns to its top, and pulling a tab down syncs. The breadcrumb's steps are plain links between "›", the studyset itself bold. A long description is cut at a fixed height, measured, with Read more opening it whole under the studyset's title. A studyset that no longer exists leads back to the library. The topics: All topics on the primary colour, in view also while they are rearranged; each topic with the study it invites in a round icon, what it holds ("Empty" with nothing, files counted too), and its options (now with Reset progress) behind "…" or a long press where the finger is; New sub-studyset at the foot below a line, the list with its scrollbar always shown. All topics opens Add material while nothing is due. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-08 11:42:50 +02:00
"studysetEmpty": "Leer",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studysetActionReview": "Wiederholen",
"studysetActionStudy": "Lernen",
"studysetActionAdd": "Inhalt hinzufügen",
"studysetArchived": "Archiviert",
"studysetStar": "Mit Stern markieren",
"studysetUnstar": "Markierung entfernen",
"studysetByYou": "Von dir",
"studysetByAuthor": "Von {author}",
"studysetByOthers": "Eine Kopie",
"studysetVisibilityPrivate": "Privat",
"studysetVisibilityPublic": "Öffentlich",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studysetOptions": "Optionen",
"studysetBibliography": "Literaturverzeichnis",
"studysetBibliographyIntro": "Die in diesem Lernset zitierten Werke, im Zitierstil aus den Einstellungen.",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studysetMenuEdit": "Bearbeiten",
"studysetMenuArchive": "Archivieren",
"studysetMenuUnarchive": "Aus Archiv holen",
"studysetMenuDelete": "Löschen",
"studysetMenuMove": "Verschieben nach…",
"studysetTabFlashcards": "Karteikarten",
"studysetTabNotes": "Notizen",
"studysetTabPaths": "Pfade",
"studysetCreatePath": "Pfad erstellen",
"pathImportMenu": "Pfad importieren (JSON)",
"pathImportFileType": "Lernpfad (JSON)",
"pathImported": "{count, plural, =1{„{title}“ mit 1 Schritt importiert.} other{„{title}“ mit {count} Schritten importiert.}}",
"pathImportSkipped": "{count, plural, =1{1 Block wurde ausgelassen: Bilder und Animationen werden nicht importiert.} other{{count} Blöcke wurden ausgelassen: Bilder und Animationen werden nicht importiert.}}",
"pathImportFailed": "Diese Datei konnte nicht importiert werden. {reason}",
"pathImportFileFailed": "{file} konnte nicht importiert werden. {reason}",
"pathImportReading": "{count, plural, =1{Datei wird gelesen …} other{{count} Dateien werden gelesen …}}",
"pathImportStoring": "{count, plural, =1{„{title}“ wird importiert …} other{Pfad {index} von {count} wird importiert: „{title}“ …}}",
"pathsImported": "{steps, plural, =0{{count} Pfade ohne Schritte importiert.} =1{{count} Pfade mit 1 Schritt importiert.} other{{count} Pfade mit {steps} Schritten importiert.}}",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"pathImportUnreadable": "Der Inhalt ist kein Text in UTF-8.",
"pathsEmpty": "Noch keine Pfade",
"pathsEmptyHint": "Ein Pfad führt Schritt für Schritt durch eine Lektion. Nutze „Material hinzufügen → Pfad erstellen“, um einen zu schreiben, oder „⋮ → Inhalt importieren“, um einen zu importieren.",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"pathOptions": "Pfadoptionen",
"pathEdit": "Bearbeiten",
"pathResetProgress": "Fortschritt zurücksetzen",
"pathProgressReset": "Fortschritt zurückgesetzt",
"pathResetTitle": "Fortschritt zurücksetzen?",
"pathResetMessage": "Dein gesamter Fortschritt in diesem Pfad wird gelöscht. Du kannst das einige Sekunden lang rückgängig machen.",
"pathResetConfirm": "Zurücksetzen",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"pathDelete": "Löschen",
"pathDeleteTitle": "Pfad löschen?",
"pathDeleteMessage": "Dieser Pfad und seine Schritte werden aus dem Lernset entfernt. Du kannst dies für einige Sekunden rückgängig machen.",
"pathDeleteConfirm": "Löschen",
"pathDeleted": "Pfad gelöscht",
"pathCreateTitle": "Neuer Pfad",
"pathCreate": "Erstellen",
"pathTitleLabel": "Titel",
"pathSecondaryTitleLabel": "Zweittitel",
"pathSecondaryTitleHint": "Z. B. der Titel in der Sprache, die du lernst",
"pathEditTitle": "Pfad bearbeiten",
"pathDescription": "Beschreibung",
"pathAddDescription": "Beschreibung hinzufügen",
"pathDescriptionEditTitle": "Pfadbeschreibung",
"pathAddTags": "Tags hinzufügen",
"pathTags": "Tags",
"pathEditTags": "Tags bearbeiten",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"pathSteps": "Schritte",
"pathStepsEmpty": "Noch keine Schritte",
"pathStepsEmptyHint": "Wähle einen Schritt-Typ, um mit dem Schreiben der Lektion zu beginnen.",
"pathAddStep": "Schritt hinzufügen",
"pathReorder": "Umsortieren",
"pathReorderDone": "Fertig",
"pathStepDelete": "Schritt löschen",
"pathStepDeleted": "Schritt gelöscht",
"stepUntitled": "Unbenannter Schritt",
"stepKindInfo": "Info",
"stepKindSingleChoice": "Einzelauswahl",
"stepKindMultipleChoice": "Mehrfachauswahl",
"stepKindDragAndDrop": "Ziehen und Ablegen",
"stepKindFillInTheBlank": "Lückentext",
"stepEditTitle": "Schritt bearbeiten",
"stepTitleHint": "Titel",
"stepOptions": "Optionen",
"stepOptionHint": "Option {number}",
"stepAddOption": "Option hinzufügen",
"stepRemoveOption": "Option entfernen",
"stepCorrectOption": "Richtige Option",
"stepCorrectOptions": "Richtige Optionen",
"stepCategories": "Kategorien",
"stepCategoryHint": "Kategorie {number}",
"stepAddCategory": "Kategorie hinzufügen",
"stepRemoveCategory": "Kategorie entfernen",
"stepItems": "Elemente",
"stepItemHint": "Element {number}",
"stepAddItem": "Element hinzufügen",
"stepRemoveItem": "Element entfernen",
"stepItemCategory": "Gehört zu",
"stepPassage": "Textpassage",
"stepPassageHint": "Gib ___ (drei Unterstriche) überall dort ein, wo ein Wort eingesetzt werden soll.",
"stepBlankHint": "Wort für Lücke {number}",
"stepIncomplete": "Noch nicht beantwortbar: Fülle jedes Feld aus und wähle, was richtig ist.",
"stepFeedbackRight": "Feedback nach einer richtigen Antwort",
"stepFeedbackWrong": "Feedback nach einer falschen Antwort",
"stepFeedbackNone": "Keines",
"sources": "Quellen",
"sourcesCount": "{count, plural, =1{1 Quelle} other{{count} Quellen}}",
"sourcesNone": "Noch keine Quellen angegeben.",
"sourcesEdit": "Quellen bearbeiten",
"sourcesEditDone": "Bearbeiten beenden",
"sourceAdd": "Quelle hinzufügen",
"sourceEdit": "Quelle bearbeiten",
"sourceRemove": "Quelle entfernen",
"sourceRemoved": "Quelle entfernt",
"sourceSheetAdd": "Hinzufügen",
"sourceAuthors": "Autoren",
"sourceAuthorsHint": "Vollständige Namen, einer pro Zeile, z. B. Mark A. McDaniel",
"sourceYear": "Jahr",
"sourceYearHint": "z. B. 2014",
"sourceTitle": "Titel",
"sourceTitleHint": "Titel des Werks",
"sourceContainer": "Erschienen in",
"sourceContainerHint": "Zeitschrift, Buch oder Website, mit Seiten",
"sourceContainerHelper": "Leer lassen bei einem eigenständigen Werk wie einem Buch.",
"sourcePublisher": "Verlag",
"sourcePublisherHint": "z. B. Belknap Press",
"sourceIsbn": "ISBN",
"sourceIsbnHint": "z. B. 978-0-674-72901-8",
"sourceUrl": "Link",
"sourceUrlHint": "https://…",
"sourceImportedAs": "Importiert als: {citation}",
"sourceIsbnLine": "ISBN: {isbn}",
"sourceAvailableAt": "Verfügbar unter:",
"sourceEmpty": "Leere Quellenangabe",
"sourceDiscardTitle": "Änderungen verwerfen?",
"sourceDiscardMessage": "Was du für diese Quelle eingegeben hast, geht verloren.",
"sourceDiscardConfirm": "Verwerfen",
"sourceKind": "Art der Quelle",
"sourceKindWork": "Buch oder Artikel",
"sourceKindWebsite": "Website",
"sourceKindVideo": "YouTube-Video",
"sourceWebsiteName": "Website",
"sourceWebsiteNameHint": "Ihr Name, z. B. Wikipedia",
"sourcePageTitleHint": "Titel der Seite",
"sourceChannel": "Kanal",
"sourceChannelHint": "Wer es auf YouTube veröffentlicht hat",
"sourceVideoTitleHint": "Titel des Videos",
"sourceVideoLink": "Link zum Video",
"sourceVideoLinkInvalid": "Kein Link zu einem YouTube-Video",
"sourcePlay": "Video abspielen",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"stepConflict": "Dieser Schritt wurde auf einem anderen Gerät anders geändert. Behalte eine Version, um weiterzuschreiben.",
"stepFieldTitle": "Titel",
"stepFieldBody": "Text",
"stepFieldExercise": "Aufgabe",
"stepFieldRightFeedback": "Feedback nach einer richtigen Antwort",
"stepFieldWrongFeedback": "Feedback nach einer falschen Antwort",
"stepFieldSources": "Quellen",
"runnerClose": "Schließen",
"runnerEditStep": "Schritt bearbeiten",
"runnerBack": "Zurück",
"runnerCheck": "Antworten prüfen",
"runnerContinue": "Weiter",
"runnerFinish": "Abschließen",
"runnerRight": "Richtig!",
"runnerWrong": "Nicht ganz",
"runnerAlreadyRight": "Du hast das schon richtig beantwortet.",
"runnerSelectAll": "Wähle alle zutreffenden aus.",
"runnerDragHint": "Ziehe jedes Element in die Kategorie, zu der es gehört, oder tippe es an und dann die Kategorie. Tippe ein platziertes Element an, um es zurückzunehmen.",
"runnerBlankHint": "Ziehe ein Wort in jede Lücke oder tippe es an und dann die Lücke. Tippe ein platziertes Wort an, um es zurückzunehmen.",
"runnerEmpty": "Dieser Pfad hat noch keine Schritte.",
"runnerFinished": "Du hast diesen Pfad abgeschlossen",
"runnerFinishedSteps": "{count, plural, =1{1 Schritt abgeschlossen.} other{{count} Schritte abgeschlossen.}}",
"runnerNextPath": "Weiter zum nächsten Pfad",
"runnerBackToStudyset": "Zurück zum Lernset",
"studysetCountPaths": "{count, plural, =1{1 Pfad} other{{count} Pfade}}",
"studysetCreateNote": "Notiz erstellen",
"notesEmpty": "Noch keine Notizen",
"notesEmptyHint": "Nutze „Material hinzufügen → Notiz erstellen“, um eine zu schreiben.",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"noteUntitled": "Unbenannte Notiz",
"noteEdited": "Bearbeitet {when}",
"timeJustNow": "gerade eben",
"timeMinutesAgo": "{count, plural, =1{vor 1 Minute} other{vor {count} Minuten}}",
"timeHoursAgo": "{count, plural, =1{vor 1 Stunde} other{vor {count} Stunden}}",
"timeDaysAgo": "{count, plural, =1{gestern} other{vor {count} Tagen}}",
"noteOptions": "Notizoptionen",
"noteEdit": "Bearbeiten",
"noteDelete": "Löschen",
"noteDeleteTitle": "Notiz löschen?",
"noteDeleteMessage": "Diese Notiz wird aus dem Lernset entfernt. Du kannst dies für einige Sekunden rückgängig machen.",
"noteDeleteConfirm": "Löschen",
"noteDeleted": "Notiz gelöscht",
"noteTitleHint": "Titel",
"noteEditing": "Wird bearbeitet…",
"noteSaving": "Wird gespeichert…",
"noteSaved": "Gespeichert",
"noteSaveFailed": "Speichern fehlgeschlagen",
"noteConflict": "Diese Notiz wurde auf einem anderen Gerät anders geändert. Behalte eine Version, um weiterzuschreiben.",
"noteFieldTitle": "Titel",
"noteFieldBody": "Text",
"noteKeepThis": "Diese behalten",
"noteAddTags": "Tags hinzufügen",
"noteEditTags": "Tags bearbeiten",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studysetFlashcardsEmpty": "Noch keine Karteikarten",
"studysetFlashcardsEmptyHint": "Nutze „Material hinzufügen → Karteikarten erstellen“, um welche zu schreiben, oder „⋮ → Inhalt importieren“ für ein Anki-Deck oder eine Liste.",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studysetAddMaterial": "Material hinzufügen",
"studysetPathsInTopics": "Die Pfade sind in seinen Themen",
"studysetPathsInTopicsHint": "Oder schreib hier einen: „Material hinzufügen → Pfad erstellen“.",
"studysetFlashcardsInTopics": "Die Karteikarten sind in seinen Themen",
"studysetFlashcardsInTopicsHint": "Oder füg hier welche hinzu: „Material hinzufügen → Karteikarten erstellen“.",
"studysetNotesInTopics": "Die Notizen sind in seinen Themen",
"studysetNotesInTopicsHint": "Oder schreib hier eine: „Material hinzufügen → Notiz erstellen“.",
"studysetFilesInTopics": "Die Dateien sind in seinen Themen",
"studysetFilesInTopicsHint": "Oder füg hier eine hinzu: „Material hinzufügen → Datei hochladen“.",
"studysetBrowseAllFlashcards": "{count, plural, =1{Ansehen} other{Alle {count} ansehen}}",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studysetCreateFlashcards": "Karteikarten erstellen",
"studysetStudy": "Lernen",
"studysetLearnCount": "{count} lernen",
feat(app): the studyset screen laid out as before The Study pill reads "Learn 12 flashcards" in the app bar and "Learn 12" floating, "Study" with nothing due, and is off with nothing to study, saying so. With a path not finished, a chevron beside it offers to start or continue the path: a menu in the app bar, a Study mode sheet on phones. The floating bar rises above the licence line, which takes two lines at most. Add material offers a path, flashcards, a note and a PDF, in that order; imports moved to the options' Import content, which asks for a learning path or an Anki deck. The options read Edit, Move, Study options, Import content, Reset progress, Archive, Delete. The bibliography is an outlined round button above the content, and on phones at the foot of the topics. The tabs sit on a line of their own across the card, what the tab shown offers beside them: the flashcards' filter and options, and on the paths Reorder once there are two, which turns them into handles to drag. An empty tab says so in its middle; tapping the open tab again returns to its top, and pulling a tab down syncs. The breadcrumb's steps are plain links between "›", the studyset itself bold. A long description is cut at a fixed height, measured, with Read more opening it whole under the studyset's title. A studyset that no longer exists leads back to the library. The topics: All topics on the primary colour, in view also while they are rearranged; each topic with the study it invites in a round icon, what it holds ("Empty" with nothing, files counted too), and its options (now with Reset progress) behind "…" or a long press where the finger is; New sub-studyset at the foot below a line, the list with its scrollbar always shown. All topics opens Add material while nothing is due. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-08 11:42:50 +02:00
"studysetLearnFlashcards": "{count, plural, =1{1 Karteikarte lernen} other{{count} Karteikarten lernen}}",
"studysetNothingToStudy": "Noch nichts zu lernen",
"studysetStudyMode": "Lernmodus",
"studysetStartPath": "Starten: {title}",
"studysetContinuePath": "Fortsetzen: {title}",
"studysetStartPathHint": "Beginne mit dem ersten Schritt dieses Pfads.",
"studysetContinuePathHint": "Mach beim nächsten Pfadschritt weiter, wo du aufgehört hast.",
"studysetSpacedRepetition": "Verteilte Wiederholung",
"studysetSpacedRepetitionHint": "Wiederhole die fälligen Karten, geplant durch FSRS.",
"studysetImportContent": "Inhalt importieren",
"studysetMenuExport": "Inhalt exportieren",
"exportedMarkdown": "Als Markdown exportiert.",
"exportedZip": "{count, plural, =1{Als Markdown mit 1 Datei exportiert (.zip).} other{Als Markdown mit {count} Dateien exportiert (.zip).}}",
"exportMissingFiles": "{count, plural, =1{1 Datei war nicht auf diesem Gerät und fehlt.} other{{count} Dateien waren nicht auf diesem Gerät und fehlen.}}",
"exportFailed": "Das Lernset konnte nicht exportiert werden.",
"exportTitle": "Exportieren",
"exportArchive": "Archiv",
"exportArchiveSubtitle": "Ein .zip, das sich wieder importieren lässt: eine Sicherung oder ein Umzug auf eine andere Instanz.",
"exportMarkdown": "Markdown",
"exportMarkdownSubtitle": "Zum Lesen anderswo. Es lässt sich nicht wieder importieren.",
"exportWithProgress": "Mit meinem Fortschritt",
"exportWithProgressSubtitle": "Wiederholungen, Antworten, gelesene Seiten, die Prüfung, auf die du dich vorbereitest, deine Meldungen und Lesefristen",
"exportConfirm": "Exportieren",
"exportedArchive": "Als Archiv exportiert (.zip).",
"exportArchiveFilesMissing": "{count, plural, =1{1 Datei ist nicht auf diesem Gerät und ließ sich nicht herunterladen.} other{{count} Dateien sind nicht auf diesem Gerät und ließen sich nicht herunterladen.}} Verbinde dich mit dem Internet und versuche es noch einmal.",
"exportQuestion": "F",
"exportAnswer": "A",
"exportHint": "Hinweis",
"exportIfRight": "Wenn richtig",
"exportIfWrong": "Wenn falsch",
"exportSound": "Ton",
"exportVideo": "YouTube-Video",
"exportSpoiler": "Spoiler",
"exportUnavailable": "nicht auf diesem Gerät verfügbar",
"studysetImportPath": "Lernpfade",
"studysetImportPathHint": "Aus Halkyon-Pfad-JSON-Dateien, ein Pfad je Datei",
feat(app): the studyset screen laid out as before The Study pill reads "Learn 12 flashcards" in the app bar and "Learn 12" floating, "Study" with nothing due, and is off with nothing to study, saying so. With a path not finished, a chevron beside it offers to start or continue the path: a menu in the app bar, a Study mode sheet on phones. The floating bar rises above the licence line, which takes two lines at most. Add material offers a path, flashcards, a note and a PDF, in that order; imports moved to the options' Import content, which asks for a learning path or an Anki deck. The options read Edit, Move, Study options, Import content, Reset progress, Archive, Delete. The bibliography is an outlined round button above the content, and on phones at the foot of the topics. The tabs sit on a line of their own across the card, what the tab shown offers beside them: the flashcards' filter and options, and on the paths Reorder once there are two, which turns them into handles to drag. An empty tab says so in its middle; tapping the open tab again returns to its top, and pulling a tab down syncs. The breadcrumb's steps are plain links between "›", the studyset itself bold. A long description is cut at a fixed height, measured, with Read more opening it whole under the studyset's title. A studyset that no longer exists leads back to the library. The topics: All topics on the primary colour, in view also while they are rearranged; each topic with the study it invites in a round icon, what it holds ("Empty" with nothing, files counted too), and its options (now with Reset progress) behind "…" or a long press where the finger is; New sub-studyset at the foot below a line, the list with its scrollbar always shown. All topics opens Add material while nothing is due. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-08 11:42:50 +02:00
"studysetImportAnki": "Anki-Deck",
"studysetImportAnkiHint": "Aus einer .apkg- oder .colpkg-Datei",
"studysetImportCards": "Karteikarten",
"studysetImportCardsHint": "Eingefügt oder aus einer CSV- oder TSV-Datei",
"cardTextImportTitle": "Karteikarten importieren",
"cardTextImportDescription": "Eine Karte pro Zeile: ihre Vorderseite, ein Trennzeichen, dann ihre Rückseite. Jede Zeile wird an ihrem ersten Trennzeichen geteilt; Zeilen ohne eines werden ausgelassen. Ein Feld in doppelten Anführungszeichen, wie Tabellenprogramme sie schreiben, darf Trennzeichen und Zeilenumbrüche enthalten.",
"cardTextImportHint": "Füge die Karten hier ein",
"cardTextImportLoadFile": "CSV- oder TSV-Datei laden",
"cardTextImportFileType": "CSV- oder TSV-Dateien",
"cardTextImportUnreadable": "Diese Datei enthält keinen Text.",
"cardTextImportSeparator": "Trennzeichen",
"cardTextSeparatorTab": "Tab",
"cardTextSeparatorComma": "Komma",
"cardTextSeparatorSemicolon": "Semikolon",
"cardTextImportNone": "Noch keine Karten erkannt.",
"cardTextImportReady": "{count, plural, =1{1 Karte bereit zum Importieren.} other{{count} Karten bereit zum Importieren.}}",
"cardTextImportSubmit": "Importieren",
"cardTextImported": "{count, plural, =1{1 Karteikarte importiert.} other{{count} Karteikarten importiert.}}",
feat(app): the studyset screen laid out as before The Study pill reads "Learn 12 flashcards" in the app bar and "Learn 12" floating, "Study" with nothing due, and is off with nothing to study, saying so. With a path not finished, a chevron beside it offers to start or continue the path: a menu in the app bar, a Study mode sheet on phones. The floating bar rises above the licence line, which takes two lines at most. Add material offers a path, flashcards, a note and a PDF, in that order; imports moved to the options' Import content, which asks for a learning path or an Anki deck. The options read Edit, Move, Study options, Import content, Reset progress, Archive, Delete. The bibliography is an outlined round button above the content, and on phones at the foot of the topics. The tabs sit on a line of their own across the card, what the tab shown offers beside them: the flashcards' filter and options, and on the paths Reorder once there are two, which turns them into handles to drag. An empty tab says so in its middle; tapping the open tab again returns to its top, and pulling a tab down syncs. The breadcrumb's steps are plain links between "›", the studyset itself bold. A long description is cut at a fixed height, measured, with Read more opening it whole under the studyset's title. A studyset that no longer exists leads back to the library. The topics: All topics on the primary colour, in view also while they are rearranged; each topic with the study it invites in a round icon, what it holds ("Empty" with nothing, files counted too), and its options (now with Reset progress) behind "…" or a long press where the finger is; New sub-studyset at the foot below a line, the list with its scrollbar always shown. All topics opens Add material while nothing is due. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-08 11:42:50 +02:00
"studysetReorder": "Umsortieren",
"studysetReorderPaths": "Pfade umsortieren",
"studysetReorderNotes": "Notizen umsortieren",
"studysetReorderFiles": "Dateien umsortieren",
feat(app): the studyset screen laid out as before The Study pill reads "Learn 12 flashcards" in the app bar and "Learn 12" floating, "Study" with nothing due, and is off with nothing to study, saying so. With a path not finished, a chevron beside it offers to start or continue the path: a menu in the app bar, a Study mode sheet on phones. The floating bar rises above the licence line, which takes two lines at most. Add material offers a path, flashcards, a note and a PDF, in that order; imports moved to the options' Import content, which asks for a learning path or an Anki deck. The options read Edit, Move, Study options, Import content, Reset progress, Archive, Delete. The bibliography is an outlined round button above the content, and on phones at the foot of the topics. The tabs sit on a line of their own across the card, what the tab shown offers beside them: the flashcards' filter and options, and on the paths Reorder once there are two, which turns them into handles to drag. An empty tab says so in its middle; tapping the open tab again returns to its top, and pulling a tab down syncs. The breadcrumb's steps are plain links between "›", the studyset itself bold. A long description is cut at a fixed height, measured, with Read more opening it whole under the studyset's title. A studyset that no longer exists leads back to the library. The topics: All topics on the primary colour, in view also while they are rearranged; each topic with the study it invites in a round icon, what it holds ("Empty" with nothing, files counted too), and its options (now with Reset progress) behind "…" or a long press where the finger is; New sub-studyset at the foot below a line, the list with its scrollbar always shown. All topics opens Add material while nothing is due. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-08 11:42:50 +02:00
"studysetReorderDone": "Fertig",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studysetOpenTopics": "Themen anzeigen",
feat(studyset): the screens behind a studyset are its path Deeper studysets, on iOS and Android alike (decided 2026-10-11, after Material 3's and Apple's guidelines, Android's principles of navigation and Nielsen Norman Group's on breadcrumbs): - The screens behind a studyset are its path: below "Japanese › Grammar › Tae Kim's Grammar Guide" lie Grammar's screen, then Japanese's, then the library. A topic at any depth opens with the levels between pushed beneath it; the path's steps go up by popping to that level's page (they replaced the location before, so back could skip levels); a studyset opened from elsewhere gets its levels beneath it. Back, Android's predictive back, iOS's swipe from the edge and the path all lead one level up. - The path's steps are targets 48 dp high; a long press on back lists the levels above, the nearest first and the library last, as iOS's back buttons do. - Below expanded windows the topics open in a sheet from "3 topics ▾" at the end of the path's line, where Vaia puts "All topics"; no drawer, whose swipe from the edge is iOS's way back and which Material 3 Expressive deprecates. Topics with topics of their own unfold them, at any depth, in the sheet and the side column alike. - The navigation bar steps aside inside a studyset (its screen, notes, paths and dictionary): Material 3 puts it on the top-level screens and toolbars below, never both. Apple's guidelines keep the tab bar, lest people forget where they are; the path, starting at Library, says where. A strip as high as the system's bar keeps those screens clear of it. - The bar at the bottom keeps Add material and Study. A trial for review, on its own branch, on top of the floating navigation bar. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-11 13:03:27 +02:00
"studysetTopicCount": "{count, plural, =1{1 Thema} other{{count} Themen}}",
"studysetShowInnerTopics": "Themen darin anzeigen",
"studysetHideInnerTopics": "Themen darin ausblenden",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studysetTopics": "Themen",
"studysetAllTopics": "Alle Themen",
"studysetNewSubStudyset": "Neues Unter-Lernset",
"studysetSubStudysetsEmpty": "Noch keine Unter-Lernsets.",
"studysetSubStudysetsEmptyHint": "Teile dieses Lernset in Meilensteine oder Lektionen auf.",
"studysetDragToReorder": "Zum Umsortieren ziehen",
"studysetMoveTitle": "Lernset verschieben nach",
"studysetMoveTopLevel": "Oberste Ebene",
feat(app): Home, the Library and the studyset sheets laid out as before Home: plain cards on the surface, 16 dp apart, the goal first and the Pomodoro timer after it in a new dashboard. The streak chip sits centred in the app bar, and its sheet shows the days inside a big flame and the week as marks over the weekdays' initials, with a word on today in a box. The week names its day as "Thursday, Oct 8" and its days carry no tooltip. The heatmap scrolls its weekdays with the weeks, outlines the days to come, and names a day's activities with its date. The goal card has a ring of 5 dp, a check once met and a pencil, and its sheet saves across its width with Remove goal below. Arranging puts an eye on each widget's corner and lifts the one picked up, with a tap the hand feels; with every widget hidden, Customise brings arranging back. The stepper moves to core, where the goal's sheet takes it too. Library: the counts line includes files (PDFs); Refresh in the app bar and pulling the list down sync now; a list that can't be read offers Retry, which reads it again; the star keeps its square corners. Studyset sheet: "Title *", the secondary title explained behind a question mark, Inherit as a box beside the colour, and the description in up to three lines with a chevron. Move sheet: round marks, the studyset itself marked as current, the top level only while it is inside another, archived studysets last under their heading, the destination named in the footer, and a new studyset to move into, made only once the move is. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-08 11:12:23 +02:00
"studysetMoveCurrent": "(aktuell)",
"studysetMoveTopLevelRow": "Oberste Ebene (in keinem Lernset)",
"studysetMoveArchived": "Archiviert",
"studysetMoveNew": "Neues Lernset",
"studysetMoveSelectDestination": "Wähle ein Ziel",
"studysetMoveDestination": "Ziel: {name}",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studysetMoveConfirm": "Verschieben",
feat(app): Home, the Library and the studyset sheets laid out as before Home: plain cards on the surface, 16 dp apart, the goal first and the Pomodoro timer after it in a new dashboard. The streak chip sits centred in the app bar, and its sheet shows the days inside a big flame and the week as marks over the weekdays' initials, with a word on today in a box. The week names its day as "Thursday, Oct 8" and its days carry no tooltip. The heatmap scrolls its weekdays with the weeks, outlines the days to come, and names a day's activities with its date. The goal card has a ring of 5 dp, a check once met and a pencil, and its sheet saves across its width with Remove goal below. Arranging puts an eye on each widget's corner and lifts the one picked up, with a tap the hand feels; with every widget hidden, Customise brings arranging back. The stepper moves to core, where the goal's sheet takes it too. Library: the counts line includes files (PDFs); Refresh in the app bar and pulling the list down sync now; a list that can't be read offers Retry, which reads it again; the star keeps its square corners. Studyset sheet: "Title *", the secondary title explained behind a question mark, Inherit as a box beside the colour, and the description in up to three lines with a chevron. Move sheet: round marks, the studyset itself marked as current, the top level only while it is inside another, archived studysets last under their heading, the destination named in the footer, and a new studyset to move into, made only once the move is. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-08 11:12:23 +02:00
"studysetMoveShowInside": "Unter-Lernsets anzeigen",
"studysetMoveHideInside": "Unter-Lernsets ausblenden",
"studysetMoved": "„{title}“ nach {destination} verschoben.",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studysetReadMore": "Mehr anzeigen",
"studysetDescriptionTitle": "Beschreibung",
"studysetDescriptionEditTitle": "Beschreibung bearbeiten",
"richTextSave": "Speichern",
"studysetSheetDescription": "Beschreibung",
feat(app): Home, the Library and the studyset sheets laid out as before Home: plain cards on the surface, 16 dp apart, the goal first and the Pomodoro timer after it in a new dashboard. The streak chip sits centred in the app bar, and its sheet shows the days inside a big flame and the week as marks over the weekdays' initials, with a word on today in a box. The week names its day as "Thursday, Oct 8" and its days carry no tooltip. The heatmap scrolls its weekdays with the weeks, outlines the days to come, and names a day's activities with its date. The goal card has a ring of 5 dp, a check once met and a pencil, and its sheet saves across its width with Remove goal below. Arranging puts an eye on each widget's corner and lifts the one picked up, with a tap the hand feels; with every widget hidden, Customise brings arranging back. The stepper moves to core, where the goal's sheet takes it too. Library: the counts line includes files (PDFs); Refresh in the app bar and pulling the list down sync now; a list that can't be read offers Retry, which reads it again; the star keeps its square corners. Studyset sheet: "Title *", the secondary title explained behind a question mark, Inherit as a box beside the colour, and the description in up to three lines with a chevron. Move sheet: round marks, the studyset itself marked as current, the top level only while it is inside another, archived studysets last under their heading, the destination named in the footer, and a new studyset to move into, made only once the move is. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-08 11:12:23 +02:00
"studysetSheetDescriptionAdd": "Tippen, um eine Beschreibung hinzuzufügen",
"studysetSheetDescriptionAdded": "Beschreibung hinzugefügt — zum Bearbeiten tippen",
"studysetSheetInheritColor": "Erben",
"studysetSheetLanguages": "Sprachen",
"studysetSheetSetLanguages": "Sprachen festlegen",
"studysetSheetLanguagesHelper": "In welcher Sprache die Seiten der Karten sind. Chinesisch, Japanisch und Koreanisch erscheinen dann in ihren eigenen Schriftzeichen.",
"studysetSheetLanguagesInherited": "Ausgeschaltet oder ohne festgelegte Seite übernimmt es die Sprachen des Lernsets, in dem es liegt.",
"studysetSheetFrontLanguage": "Sprache der Vorderseite",
"studysetSheetBackLanguage": "Sprache der Rückseite",
"studysetSheetLanguageNotSet": "Nicht festgelegt",
"studysetSheetLicense": "Lizenz",
"studysetSheetLicenseHelp": "Hilf mir bei der Wahl",
"studysetSheetLicenseLabel": "Lizenz",
"studysetSheetLicenseHelper": "Unter welchen Bedingungen andere den Inhalt nutzen dürfen, unter dem Lernset mit einem Link darauf angezeigt. Beispiele: CC-BY-4.0, CC-BY-SA-4.0, MIT, All Rights Reserved.",
"studysetSheetLicenseYear": "Jahr",
"studysetSheetLicenseYearHelper": "Das Jahr des Urheberrechts, angezeigt als „© 2019 Name“. Optional.",
"studysetSheetLicenseYearInvalid": "Gib ein Jahr zwischen {min} und {max} ein.",
"@studysetSheetLicenseYearInvalid": {"placeholders": {"min": {"type": "int"}, "max": {"type": "int"}}},
"studysetSheetLicenseHolder": "Rechteinhaber",
"studysetSheetLicenseHolderHelper": "Wer genannt wird: ein Name oder eine Organisation.",
"studysetSheetLicenseNewer": "{license} ist eine ältere Creative-Commons-Lizenz. Ihre aktuelle Version, {current}, passt vielleicht besser.",
"@studysetSheetLicenseNewer": {"placeholders": {"license": {"type": "String"}, "current": {"type": "String"}}},
"licenseChooserTitle": "Lizenz wählen",
"licenseChooserSubtitle": "Ein paar Fragen, um die Creative-Commons-Lizenz zu finden, die dazu passt, wie du dein Werk teilen möchtest.",
"licenseChooserIntroPrompt": "Möchtest du Rechte an deinem Werk behalten?",
"licenseChooserIntroYes": "Ja, unter einer Lizenz teilen",
"licenseChooserIntroYesDetail": "Andere müssen die Bedingungen einhalten, die du als Nächstes wählst.",
"licenseChooserIntroNo": "Nein, als Gemeingut freigeben",
"licenseChooserIntroNoDetail": "CC0: Jeder darf es für alles nutzen, ohne Bedingungen.",
"licenseChooserCommercialPrompt": "Dürfen andere dein Werk kommerziell nutzen?",
"licenseChooserYes": "Ja",
"licenseChooserCommercialYesDetail": "Auch mit Gewinnabsicht.",
"licenseChooserNo": "Nein",
"licenseChooserCommercialNoDetail": "Nur nicht-kommerzielle Nutzung (NC).",
"licenseChooserAdaptationsPrompt": "Dürfen andere dein Werk bearbeiten oder darauf aufbauen?",
"licenseChooserAdaptationsYesDetail": "Bearbeitungen und Remixe sind erlaubt.",
"licenseChooserAdaptationsShareAlike": "Ja, unter gleichen Bedingungen",
"licenseChooserAdaptationsShareAlikeDetail": "Bearbeitungen stehen unter derselben Lizenz (SA).",
"licenseChooserAdaptationsNoDetail": "Nur Weitergabe, keine Bearbeitungen (ND).",
"licenseChooserBack": "Zurück",
"licenseChooserRecommended": "Empfohlene Lizenz",
"licenseChooserUse": "Diese Lizenz verwenden",
"licenseSummaryCc0": "Jeder darf es für alles nutzen, ohne Bedingungen und ohne Nennung.",
"licenseSummaryBy": "Andere dürfen es teilen und bearbeiten, auch kommerziell, solange sie dich nennen.",
"licenseSummaryBySa": "Andere dürfen es teilen und bearbeiten, auch kommerziell, wenn sie dich nennen und ihre Bearbeitungen genauso lizenzieren.",
"licenseSummaryByNc": "Andere dürfen es für nicht-kommerzielle Zwecke teilen und bearbeiten, mit Nennung.",
"licenseSummaryByNcSa": "Andere dürfen es nicht-kommerziell teilen und bearbeiten, mit Nennung und derselben Lizenz für Bearbeitungen.",
"licenseSummaryByNd": "Andere dürfen es teilen, auch kommerziell, mit Nennung, aber keine Bearbeitungen weitergeben.",
"licenseSummaryByNcNd": "Andere dürfen es nicht-kommerziell teilen, mit Nennung, aber nicht bearbeiten: die strengste Creative-Commons-Lizenz.",
"languageArabic": "Arabisch",
"languageGerman": "Deutsch",
"languageGreek": "Griechisch",
"languageEnglish": "Englisch",
"languageSpanish": "Spanisch",
"languageFrench": "Französisch",
"languageHebrew": "Hebräisch",
"languageHindi": "Hindi",
"languageItalian": "Italienisch",
"languageJapanese": "Japanisch",
"languageKorean": "Koreanisch",
"languageDutch": "Niederländisch",
"languagePolish": "Polnisch",
"languagePortuguese": "Portugiesisch",
"languageRussian": "Russisch",
"languageSwedish": "Schwedisch",
"languageThai": "Thailändisch",
"languageTurkish": "Türkisch",
"languageUkrainian": "Ukrainisch",
"languageVietnamese": "Vietnamesisch",
"languageChineseSimplified": "Chinesisch (vereinfacht)",
"languageChineseTraditional": "Chinesisch (traditionell)",
feat(app): Home, the Library and the studyset sheets laid out as before Home: plain cards on the surface, 16 dp apart, the goal first and the Pomodoro timer after it in a new dashboard. The streak chip sits centred in the app bar, and its sheet shows the days inside a big flame and the week as marks over the weekdays' initials, with a word on today in a box. The week names its day as "Thursday, Oct 8" and its days carry no tooltip. The heatmap scrolls its weekdays with the weeks, outlines the days to come, and names a day's activities with its date. The goal card has a ring of 5 dp, a check once met and a pencil, and its sheet saves across its width with Remove goal below. Arranging puts an eye on each widget's corner and lifts the one picked up, with a tap the hand feels; with every widget hidden, Customise brings arranging back. The stepper moves to core, where the goal's sheet takes it too. Library: the counts line includes files (PDFs); Refresh in the app bar and pulling the list down sync now; a list that can't be read offers Retry, which reads it again; the star keeps its square corners. Studyset sheet: "Title *", the secondary title explained behind a question mark, Inherit as a box beside the colour, and the description in up to three lines with a chevron. Move sheet: round marks, the studyset itself marked as current, the top level only while it is inside another, archived studysets last under their heading, the destination named in the footer, and a new studyset to move into, made only once the move is. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-08 11:12:23 +02:00
"fieldRequired": "Pflichtfeld",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"exploreTitle": "Entdecken",
"exploreEmpty": "Lernsets, die andere teilen, erscheinen hier.",
"profileTabStatistics": "Statistik",
"statisticsDays": "Tage",
"statisticsWeeks": "Wochen",
"statisticsMonths": "Monate",
"statisticsTotal": "Insgesamt",
"statisticsPerDay": "Pro Tag",
"statisticsRecord": "Tagesrekord",
"statisticsStudyTime": "Lernzeit",
"statisticsMinutesInfo": "In Minuten, jede Karte höchstens eine Minute gezählt",
"statisticsHoursInfo": "In Stunden, jede Karte höchstens eine Minute gezählt",
"statisticsRatings": "Bewertungen",
"statisticsRatingsInfo": "Wie du die gelernten Karteikarten bewertet hast",
"statisticsRated": "{count, plural, =0{Keine Karte bewertet} =1{1 Karte bewertet} other{{count} Karten bewertet}}",
"@statisticsRated": {"placeholders": {"count": {"type": "int"}}},
"statisticsToday": "Heute",
"statisticsWeekOf": "Woche ab {date}",
"@statisticsWeekOf": {"placeholders": {"date": {"type": "String"}}},
"statisticsNothingYet": "Noch nichts gelernt. Deine Lernzeit und Bewertungen erscheinen hier, sobald du Karteikarten lernst.",
"profileSheetTitle": "Profil",
"profileSheetNotFound": "Niemand auf dieser Instanz hat diesen Handle.",
"profileSheetUnreachable": "Das Profil konnte nicht geladen werden. Prüfe deine Verbindung.",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"settingsTitle": "Einstellungen",
"settingsAccount": "Konto",
"instanceWelcome": "Willkommen bei Halkyon Learn",
feat: a round in the order cards come, shared daily limits, and a start screen Studying: - A round is one list in the order its cards come: those done, the one shown, those to come. A card due again within the day goes back in after 4 more cards when rated Bad, at the end otherwise, so the pills above the card follow it; the buttons say "in 4 cards", "at the end", "now" (round_order.dart). - The studied studyset's daily limits hold for everything inside it together, as Anki's do for subdecks: twenty topics start 20 new cards a day in all, not 20 each. - The study header's studyset name shows whole on hover or long press. - The assistant's button sits at the lower left: in the Library across from Create studyset, in a studyset above its bar, and higher while studying, above the buttons that answer the card. A studyset: - Progress also counts the learning paths' steps done and lists the PDFs not read to their end, begun first, each opening the reader, across its topics (MaterialProgressCubit). - Next up starts with studying for the exam while one is ahead: its reviews due and the new cards its pace leaves for the day. - Learning paths tagged with a level count towards its automatic exam plan and offer it, as cards do. - A step's first heading equal to its title is dropped on import and hidden in paths imported before. Signing out, or a session the server ended, leads to a start screen (GitHub, email, without an account, another instance) rather than a new anonymous account; only the very first start makes one by itself. Settings names the kind of account and its instance. Also: the Watch screen reads the cards once for held words and their progress; its ±10 s buttons tick as the navigation bar does; a map card keeps its view as its caption changes and brings a picked region towards the middle; an empty or failed library can be pulled to sync. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-17 00:39:34 +02:00
"startSignedOut": "Abgemeldet",
"startOn": "Starte auf {instance}:",
"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",
"instanceUseBuiltIn": "{name} verwenden",
"instanceBuiltInTagline": "In der App voreingestellt",
"instanceAnother": "Andere Instanz",
"instanceAnotherTagline": "Gib ihre Adresse ein",
"instanceDataAndBackupsIn": "Daten und Sicherungen: {place}",
"instanceDataIn": "Daten: {place}",
"instanceBackupsIn": "Sicherungen: {place}",
"instanceNoBackups": "Keine Sicherungen",
"instanceEuropeanUnion": "Europäische Union",
"instanceContinue": "Weiter",
"instanceAddressRequired": "Gib die Adresse einer Instanz ein.",
"instanceAddressInvalid": "Das ist keine Adresse.",
"instanceUnreachable": "Unter {name} antwortet keine Instanz von Halkyon Learn.",
"instanceOpenFailed": "Die App auf {name} konnte nicht geöffnet werden.",
feat: a round in the order cards come, shared daily limits, and a start screen Studying: - A round is one list in the order its cards come: those done, the one shown, those to come. A card due again within the day goes back in after 4 more cards when rated Bad, at the end otherwise, so the pills above the card follow it; the buttons say "in 4 cards", "at the end", "now" (round_order.dart). - The studied studyset's daily limits hold for everything inside it together, as Anki's do for subdecks: twenty topics start 20 new cards a day in all, not 20 each. - The study header's studyset name shows whole on hover or long press. - The assistant's button sits at the lower left: in the Library across from Create studyset, in a studyset above its bar, and higher while studying, above the buttons that answer the card. A studyset: - Progress also counts the learning paths' steps done and lists the PDFs not read to their end, begun first, each opening the reader, across its topics (MaterialProgressCubit). - Next up starts with studying for the exam while one is ahead: its reviews due and the new cards its pace leaves for the day. - Learning paths tagged with a level count towards its automatic exam plan and offer it, as cards do. - A step's first heading equal to its title is dropped on import and hidden in paths imported before. Signing out, or a session the server ended, leads to a start screen (GitHub, email, without an account, another instance) rather than a new anonymous account; only the very first start makes one by itself. Settings names the kind of account and its instance. Also: the Watch screen reads the cards once for held words and their progress; its ±10 s buttons tick as the navigation bar does; a map card keeps its view as its caption changes and brings a picked region towards the middle; an empty or failed library can be pulled to sync. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-17 00:39:34 +02:00
"accountSignedIn": "Angemeldet",
"accountsTitle": "Konten",
"accountAdd": "Konto hinzufügen",
"accountAddSubtitle": "Wähle die Instanz für das Konto, das du hinzufügst.",
"accountRemoveTooltip": "Konto entfernen",
"accountRemoveTitle": "Konto entfernen?",
feat(auth): sign in with an email address, keeping only a keyed hash of it People without GitHub can now keep an anonymous account, and sign in on another device, with an email address and a code mailed to it each time; no password. The instance keeps only HMAC-SHA256 of the address, keyed with its emailSignInPepper (ADR 0010): from what someone types it finds the person and tells whether an address is free, it mails only an address someone has just typed, and it can't write to anybody otherwise or show anybody their address. The device remembers the address it signed in with, in the person's folder, to show it. It works as GitHub does. A code for a new address makes it the signed-in person's, who becomes identified and keeps everything. A code for another person's address gives a switch token, which signs in as them without a session; a device holding studysets asks first. Asking for a code answers alike for every address. Codes are eight Crockford characters, valid 15 minutes and three tries (Serverpod's code challenges); three codes an hour per address, ten per network. In development the code goes to the server's log; elsewhere there is no email sign-in until a mail service is set up (instance.info().emailSignIn). Someone identified may add the other way in: the Profile tab lists how they sign in and adds GitHub or an address. They are never switched to another account: an address or GitHub account that is another's is said to be so. Switching now deletes the account left behind only when it was anonymous; it deleted any, which only anonymous people could reach so far. The migration adds email_identity and email_code_request with their indexes and foreign keys to Serverpod's challenges; nothing else changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-15 19:42:21 +02:00
"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",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"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.",
"settingsCitations": "Quellenangaben",
"settingsCitationsDescription": "Wie Quellen und die Literaturverzeichnisse von Lernsets auf diesem Gerät zitiert werden. Gib die vollständigen Namen der Autoren ein: Jeder Stil kürzt und ordnet sie selbst.",
"settingsCitationStyle": "Stil",
"settingsCitationStyleApa": "APA (7. Auflage)",
"settingsCitationStyleMla": "MLA (9. Auflage)",
"settingsCitationStyleChicago": "Chicago (18. Auflage)",
"settingsCitationPreview": "Vorschau",
"settingsCitationGuide": "Offizieller Leitfaden",
"settingsStudy": "Lernen",
"settingsStudyPomodoroTitle": "Pomodoro-Timer beim Lernen anzeigen",
"settingsStudyPomodoroSubtitle": "Zeige den Fokus-/Pausen-Countdown in der Lernsitzung, damit du die verbleibende Zeit siehst, ohne die Benachrichtigung zu öffnen.",
"settingsWriting": "Schreiben",
"settingsGrammarTitle": "Grammatik beim Schreiben prüfen",
"settingsGrammarSubtitle": "Unterstreiche mögliche Rechtschreib- und Grammatikfehler in Karteikarten und Notizen, mit Korrekturen per Fingertipp. Die Prüfung läuft, wenn du pausierst, in den Sprachen des Lernsets.",
"settingsGrammarUnavailable": "Diese Instanz hat noch keine Rechtschreib- und Grammatikprüfung eingerichtet, daher wird nichts unterstrichen. Bleibt es an, beginnt die Prüfung, sobald sie eine hat.",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"settingsVersion": "Version {version} (Build {build})",
"syncTitle": "Synchronisierung",
"syncStateSyncing": "Wird synchronisiert…",
"syncStateSynced": "Alles synchronisiert",
"syncStateNotYet": "Noch nicht synchronisiert",
"syncStateFailing": "Synchronisierung schlägt fehl",
"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}",
"syncNoRunYet": "Seit dem Start der App wurde noch keine Synchronisierung abgeschlossen",
"syncLastFailed": "Letzter Versuch fehlgeschlagen um {time}",
"syncNow": "Jetzt synchronisieren",
"syncPending": "{count, plural, =1{1 Änderung wartet auf die Synchronisierung} other{{count} Änderungen warten auf die Synchronisierung}}",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"syncTroubleLabel": "Synchronisierung benötigt Aufmerksamkeit",
"syncMismatchBanner": "Diese App kann nicht mehr mit {server} synchronisieren. Aktualisiere sie, um weiter zu synchronisieren.",
"syncMismatchMore": "Mehr",
"tagsReadFailed": "Die Tags konnten nicht gelesen werden.",
"notesReadFailed": "Die Notizen konnten nicht gelesen werden.",
"pathsReadFailed": "Die Lernpfade konnten nicht gelesen werden.",
"filesReadFailed": "Die Dateien konnten nicht gelesen werden.",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"tagPickerTitle": "Tags",
"tagPickerManage": "Tags verwalten",
"tagPickerSearchLabel": "Tag suchen oder erstellen",
"tagPickerCreate": "„{name}“ erstellen",
"tagSheetCreateTitle": "Tag erstellen",
"tagSheetEditTitle": "Tag bearbeiten",
"tagSheetNameLabel": "Name",
"tagSheetNameHelper": "Groß- und Kleinschreibung ergibt keinen neuen Tag: „Nomen“ und „nomen“ sind einer.",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"tagSheetNameExists": "Den Tag „{name}“ gibt es bereits.",
"tagSheetNameMerges": "Es gibt bereits einen Tag „{name}“: Beim Speichern wird dieser mit ihm zusammengeführt.",
"tagSheetColor": "Farbe",
"tagSheetCreate": "Erstellen",
"tagSheetSave": "Speichern",
"tagManageTitle": "Tags verwalten",
"tagManageEmpty": "Noch keine Tags. Füge unten einen hinzu.",
"tagManageAdd": "Tag hinzufügen",
"tagManageRow": "{name} ({count})",
"tagManageEdit": "Tag bearbeiten",
"tagManageHideJellyfin": "Tags aus Jellyfin beim Lernen ausblenden",
"tagManageHideJellyfinHint": "Die Serien, Folgen, Künstler und Songs, in denen Wörter vorkamen. Sie bleiben an den Karten, zum Filtern und Lernen.",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"tagManageDelete": "Tag löschen",
"tagDeleteTitle": "Tag „{name}“ löschen?",
"tagDeleteMessage": "{count, plural, =0{Er ist an keiner Karteikarte.} =1{Er wird auf all deinen Geräten von 1 Karteikarte entfernt.} other{Er wird auf all deinen Geräten von {count} Karteikarten entfernt.}}",
"tagDeleteConfirm": "Löschen",
"tagDeleted": "Tag „{name}“ gelöscht",
"studySettingsTitle": "Sitzungseinstellungen",
"studySettingsFilterByTags": "Nach Tags filtern",
"studySettingsNoTags": "Noch keine Inhalts-Tags. Füge deinen Karten Tags hinzu, um sie hier zu filtern.",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studySettingsReset": "Zurücksetzen",
"studySettingsSave": "Speichern",
"studySettingsHeadsUpTitle": "Achtung!",
"studySettingsHeadsUpBody": "Die vorgenommenen Änderungen laden die Sitzung neu und dein aktueller Fortschritt geht verloren.",
"studySettingsApplyChanges": "Änderungen übernehmen",
"studySettingsPerDay": " / Tag",
"studySettingsMoreTags": "+{count} weitere",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"cardTagsLabel": "Tags",
"cardTagsAdd": "Tags hinzufügen",
"cardTagsEdit": "Tags bearbeiten",
"tagChipsOverflow": "+{count, plural, =1{1 Tag} other{{count} Tags}}",
"cardHints": "Hinweise",
"cardHint": "Hinweis {number}",
"cardAddHint": "Hinweis hinzufügen",
"cardRemoveHint": "Hinweis entfernen",
"cardExplanation": "Erklärung",
"cardAddExplanation": "Erklärung hinzufügen",
"cardRemoveExplanation": "Erklärung entfernen",
"cardHintsSheetTitle": "{count, plural, =1{Hinweis} other{Hinweise}}",
"cardPreviousHint": "Vorheriger Hinweis",
"cardNextHint": "Nächster Hinweis",
"cardReport": "Meldung",
"cardSenses": "Wortbedeutungen",
"cardDictionaryEntry": "Wörterbucheintrag",
feat: a dictionary's corrections reach the cards made from it, by offer Every dictionary entry now has a version: 16 hex digits of the SHA-256 of what cards take of it (headword, reading, entry), made by the loader and carried on every hit. A card keeps the version it took (card schema 8). DictionaryEndpoint.changed returns, of the entries named with the versions cards keep (1,000 at most a call; the app asks 500 at a time), those whose version is another now. The card browser says how many cards are behind their dictionary and takes the corrections at a tap (decided 2026-10-09: by offer, never by themselves). Taking one writes the entry as it is now over the revision in which the card last took it, beside whatever came after, so the revisions merge per side as two devices' edits do (ADR 0003): a side only the dictionary changed takes the correction, a side the person changed too is a conflict settled in the composer, whose words now name that case. Cards made before versions are never offered one. The server rereads its dictionary folder hourly now, not daily: the dictionaries service fills its volume after an instance's first start, and an hour with nothing changed costs a hash of each file. Migration 20261009145434785-dictionary-entry-version: adds dictionary_entry.version, text NOT NULL DEFAULT '' (rows loaded before have none and are never reported as corrected), and by hand empties dictionary_source."fileHash", so every source loads once more and its entries get their versions; the schema stays as definition.sql says. The old server goes on working until the switch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-09 17:32:00 +02:00
"cardDictionaryVersion": "Wörterbuchversion",
"studysetFromDictionary": "Aus dem Wörterbuch",
"dictionaryTitle": "Wörterbuch",
"dictionarySearchHint": "Ein Wort in Kanji, Kana oder Romaji, oder eine Bedeutung",
feat(dictionary): German, Greek, English, Chinese and Korean words A studyset in German, Greek, English, Chinese or Korean finds its dictionary as one in Japanese does (ADR 0008), and its subtitles are cut into words by its language (`WordCutting`): Chinese by its longest words as they stand, the longer words over each cut offered as for Japanese; Korean at its spaces, a word the dictionary lacks as it stands taken without the particle it ends with (집에서 is 집, 아이 stays a child); every other language at its spaces, a word written exactly so first (the noun Essen before the verb essen). A studyset finds the dictionary of its language tag, else of its language alone (zh for zh-Hans). A Wiktionary word shows its genders, principal forms, IPA, romanisation and Hanja; a German or Greek noun of one gender goes onto its card with its article (das Haus, το σπίτι); its tag is its word class, named in full (Noun, Adjective, Preposition), as Wiktionary's adj and adv would read as JMdict's codes. Articles, pronouns, prepositions and conjunctions are left out of a video's words. Chinese words show their pinyin over each character on the Watch screen, carry their HSK level as a tag (HSK-1 … HSK-7-9), and the dictionary adds a level whole; the Watch screen filters by HSK levels for Chinese, JLPT's for Japanese, and by none for a language without. A reading is typed in a session only when it is kana, so pinyin isn't. Words are looked up on the web on Jisho in Japanese, on Wiktionary at the language's section otherwise, and a search's hint speaks of kana and romaji only in Japanese. `DICTIONARY_LANGUAGES` in deploy/.env names the languages an instance keeps (unset: de,el,en,ko,zh; empty: none). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-14 07:45:15 +02:00
"dictionarySearchHintWords": "Ein Wort, in jeder Form, oder eine Bedeutung",
"dictionaryNothingFound": "Nichts gefunden für „{query}“.",
"dictionaryUnreachable": "Das Wörterbuch ist gerade nicht erreichbar.",
"dictionaryRetry": "Erneut versuchen",
"dictionaryAddFailed": "Die Wörter konnten nicht hinzugefügt werden. Versuche es erneut.",
"addDestination": "Ziel: {studyset}",
"addDestinationHint": "Wohin neue Karteikarten kommen: in dieses Lernset oder eines seiner Themen",
"dictionaryMakingCards": "Die Karteikarten werden erstellt…",
"dictionaryNone": "Für die Sprache dieses Lernsets gibt es auf dieser Instanz kein Wörterbuch.",
"dictionaryAdd": "Hinzufügen",
"dictionaryInStudyset": "In diesem Lernset",
"dictionaryAdded": "„{word}“ hinzugefügt.",
"dictionaryLevels": "Eine ganze Stufe hinzufügen",
"dictionaryLevelsHint": "Jedes Wort einer Stufe wird eine Karteikarte, in der Reihenfolge ihrer Liste, mit Stufe und Wortart als Tags. Wörter, die schon in diesem Lernset sind, werden ausgelassen.",
"dictionaryLabelCommon": "Häufig",
"dictionaryAddLevel": "{count, plural, =1{1 Wort hinzufügen} other{{count} Wörter hinzufügen}}",
"dictionaryAddingLevel": "Wird hinzugefügt… {done} von {count}",
"dictionaryWordsAdded": "{count, plural, =0{Keine neuen Wörter.} =1{1 Wort hinzugefügt.} other{{count} Wörter hinzugefügt.}}",
"dictionaryWordsSkipped": "{count, plural, =1{1 war schon in diesem Lernset.} other{{count} waren schon in diesem Lernset.}}",
"dictionaryConfirmTitle": "{count} Wörter hinzufügen?",
"dictionaryConfirmMessage": "Jedes wird eine Karteikarte in diesem Lernset.",
"dictionaryConfirmAdd": "Hinzufügen",
"dictionaryCredits": "Wörter aus {sources}.",
"dictionarySourcesTitle": "Quellen",
"dictionaryLookUp": "Im Wörterbuch nachschlagen",
"dictionaryCharacterSearchHint": "Ein Kanji oder Kana, eine Lesung in Kana oder Romaji, oder eine Bedeutung",
"dictionaryTabWords": "Wörter",
"dictionaryTabCharacters": "Kanji & Kana",
"dictionaryTabCharactersChinese": "Hanzi",
"dictionaryTabCharactersKorean": "Hangul & Hanja",
"dictionaryTabCharactersGreek": "Alphabet",
"dictionaryCharacterSearchHintChinese": "Ein Schriftzeichen, sein Pinyin oder eine Bedeutung",
"dictionaryCharacterSearchHintKorean": "Ein Hanja oder Hangul-Buchstabe, sein Laut oder eine Bedeutung",
"dictionaryCharacterSearchHintGreek": "Ein Buchstabe oder sein Name",
"dictionaryGroupHsk": "HSK-Stufen",
"dictionaryGroupCommonCharacters": "Häufig gebraucht",
"dictionaryGroupHongKongGrades": "Schuljahre in Hongkong",
"dictionaryGroupHangul": "Hangul",
"dictionaryGroupEducationHanja": "In Schulen gelehrte Hanja",
"dictionaryGroupGreek": "Buchstaben",
"dictionaryLabelHangul": "Hangul-Buchstaben",
"dictionaryLabelEducationHanja": "1.800 Grund-Hanja",
"dictionaryLabelGreek": "Griechisches Alphabet",
"dictionaryLabelCommonCharacters": "3.500 häufige Schriftzeichen",
"dictionaryLabelHiragana": "Hiragana",
"dictionaryLabelKatakana": "Katakana",
"dictionaryGrade": "Klasse {grade}",
"@dictionaryGrade": {"placeholders": {"grade": {"type": "int"}}},
"dictionaryLabelSecondary": "Weiterführende Schule",
"dictionaryGroupKana": "Kana",
"dictionaryGroupJlpt": "JLPT-Stufen",
"dictionaryGroupGrades": "Schuljahre",
"dictionaryStrokes": "{count, plural, =1{1 Strich} other{{count} Striche}}",
"@dictionaryStrokes": {"placeholders": {"count": {"type": "int"}}},
"dictionaryTabRadicals": "Radikale",
"dictionaryRadicalsHint": "Die 214 Radikale, nach denen Wörterbücher Kanji ordnen, nach ihrer Strichzahl gruppiert. Wähle eins für die Kanji, die damit geschrieben werden.",
"dictionaryAllRadicals": "Alle Radikale",
"dictionaryRadicalNumber": "Radikal {number}",
"@dictionaryRadicalNumber": {"placeholders": {"number": {"type": "int"}}},
"dictionaryRadicalKanjiCount": "{count} Kanji",
"@dictionaryRadicalKanjiCount": {"placeholders": {"count": {"type": "int"}}},
"dictionaryRadicalNone": "Das Wörterbuch der Instanz hat unter diesem Radikal noch keine Kanji.",
"dictionaryCharacterLevelsHint": "Jedes Schriftzeichen einer Stufe wird eine Karteikarte, in der Reihenfolge ihrer Liste, mit Stufe, Schuljahr oder Schrift als Tags. Schriftzeichen, die schon in diesem Lernset sind, werden ausgelassen.",
"dictionaryAddCharacters": "{count, plural, =1{1 Schriftzeichen hinzufügen} other{{count} Schriftzeichen hinzufügen}}",
"@dictionaryAddCharacters": {"placeholders": {"count": {"type": "int"}}},
"dictionaryCharactersAdded": "{count, plural, =0{Keine neuen Schriftzeichen.} =1{1 Schriftzeichen hinzugefügt.} other{{count} Schriftzeichen hinzugefügt.}}",
"@dictionaryCharactersAdded": {"placeholders": {"count": {"type": "int"}}},
"dictionaryConfirmCharactersTitle": "{count} Schriftzeichen hinzufügen?",
"@dictionaryConfirmCharactersTitle": {"placeholders": {"count": {"type": "int"}}},
"dictionaryCharacterCredits": "Schriftzeichen aus {sources}.",
"@dictionaryCharacterCredits": {"placeholders": {"sources": {"type": "String"}}},
feat: a dictionary's corrections reach the cards made from it, by offer Every dictionary entry now has a version: 16 hex digits of the SHA-256 of what cards take of it (headword, reading, entry), made by the loader and carried on every hit. A card keeps the version it took (card schema 8). DictionaryEndpoint.changed returns, of the entries named with the versions cards keep (1,000 at most a call; the app asks 500 at a time), those whose version is another now. The card browser says how many cards are behind their dictionary and takes the corrections at a tap (decided 2026-10-09: by offer, never by themselves). Taking one writes the entry as it is now over the revision in which the card last took it, beside whatever came after, so the revisions merge per side as two devices' edits do (ADR 0003): a side only the dictionary changed takes the correction, a side the person changed too is a conflict settled in the composer, whose words now name that case. Cards made before versions are never offered one. The server rereads its dictionary folder hourly now, not daily: the dictionaries service fills its volume after an instance's first start, and an hour with nothing changed costs a hash of each file. Migration 20261009145434785-dictionary-entry-version: adds dictionary_entry.version, text NOT NULL DEFAULT '' (rows loaded before have none and are never reported as corrected), and by hand empties dictionary_source."fileHash", so every source loads once more and its entries get their versions; the schema stays as definition.sql says. The old server goes on working until the switch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-09 17:32:00 +02:00
"dictionaryUpdatesBehind": "{count, plural, =1{1 Karteikarte ist hinter dem Wörterbuch zurück: Ihr Eintrag wurde seitdem korrigiert.} other{{count} Karteikarten sind hinter dem Wörterbuch zurück: Ihre Einträge wurden seitdem korrigiert.}}",
"@dictionaryUpdatesBehind": {"placeholders": {"count": {"type": "int"}}},
"dictionaryUpdatesTake": "Korrekturen übernehmen",
"dictionaryUpdatesTaken": "{count, plural, =1{1 Karteikarte aktualisiert.} other{{count} Karteikarten aktualisiert.}}",
"@dictionaryUpdatesTaken": {"placeholders": {"count": {"type": "int"}}},
"dictionaryUpdatesToSettle": "{count, plural, =1{Eine hat dort auch eine Änderung von dir: Öffne sie, um zu wählen.} other{{count} haben dort auch eine Änderung von dir: Öffne sie, um zu wählen.}}",
"@dictionaryUpdatesToSettle": {"placeholders": {"count": {"type": "int"}}},
"dictionaryUpdatesFailed": "Die Korrekturen konnten nicht übernommen werden. Versuche es erneut.",
"kanjiStrokeOrder": "Strichfolge",
"kanjiPlayAgain": "Noch einmal abspielen",
"kanjiNoStrokes": "Für dieses Schriftzeichen gibt es keine Strichfolge.",
"kanjiComponents": "Bestandteile",
"studySettingsCharacters": "Schriftzeichen",
"studySettingsWriteByHand": "Von Hand schreiben",
"studySettingsWriteByHandDescription": "Kanji, Hanzi, Hanja, Kana, Hangul und Wörter in ihnen schreibst du Strich für Strich, jeder Strich wird gleich geprüft, nach einem eigenen Plan (ein koreanisches Wort Buchstabe für Buchstabe). Geschriebene Wörter werden weder abgefragt noch getippt.",
"writingHint": "Tipp",
"writingShow": "Zeigen",
"writingMistakes": "{count, plural, =0{Keine Fehler} =1{1 Fehler} other{{count} Fehler}}",
"@writingMistakes": {"placeholders": {"count": {"type": "int"}}},
"writingWrongOrder": "Noch nicht: Dieser Strich kommt später.",
"writingWrong": "Das ist nicht der nächste Strich.",
"writingSuggested": "{rating} vorgeschlagen",
"@writingSuggested": {"placeholders": {"rating": {"type": "String"}}},
"writingNoStrokes": "Für diese Schriftzeichen gibt es keine Strichfolge: Bewerte, wie gut du sie wusstest.",
"aboutDictionaries": "Wörterbücher dieser Instanz",
"aboutAppData": "Daten in der App",
"cardReportTitle": "Fehler melden",
"cardReportSubtitle": "Markiere diese Karte, um sie später zu finden und zu korrigieren.",
"cardReportTypo": "Tippfehler",
"cardReportGrammar": "Grammatik",
"cardReportContent": "Inhalt",
"cardReportOther": "Sonstiges",
"cardReportNote": "Notiz",
"cardReportNoteHint": "Was muss korrigiert werden?",
"cardReportSubmit": "Melden",
"cardReported": "Zur Korrektur markiert",
"cardResolveReport": "Meldung erledigen",
"cardReportResolved": "Meldung erledigt",
"cardBuriedBadge": "Zurückgestellt",
"cardUnbury": "Zurückstellung aufheben",
"cardTileBuried": "Karteikarte bis morgen zurückgestellt",
"cardTileUnburied": "Karteikarte nicht mehr zurückgestellt",
"cardDeleteTitle": "Karteikarte löschen?",
"cardDeleteMessage": "Diese Karteikarte wird aus dem Lernset entfernt. Du kannst dies für einige Sekunden rückgängig machen.",
"cardDeleted": "Karteikarte gelöscht",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"cardFilterTooltip": "Filter",
"cardFilterTitle": "Filter",
"cardFilterTag": "Tag",
"cardFilterAllTags": "Alle Tags",
"cardFilterNoTags": "Keine dieser Karteikarten hat bisher einen Tag.",
"cardFilterClear": "Alles zurücksetzen",
"cardFilterApply": "Anwenden",
"cardFilterNothing": "Keine Karteikarte hat diesen Tag.",
"cardListFailed": "Die Karten konnten nicht gelesen werden.",
"cardListMore": "Mehr",
"cardListManageTags": "Tags verwalten",
"composerTitle": "Karteikarten erstellen",
"composerTitleFor": "Karteikarten erstellen für „{title}“",
"composerEditTitle": "Karteikarten bearbeiten",
"composerEditTitleFor": "Karteikarten bearbeiten in „{title}“",
"composerSaving": "Wird gespeichert…",
"composerSaveFailed": "Speichern fehlgeschlagen – erneut versuchen",
"composerAllSaved": "Alle Änderungen gespeichert",
"composerNewFlashcard": "Neue Karteikarte",
"composerCollapseStack": "Stapel einklappen",
"composerExpandStack": "Stapel ausklappen",
"composerStatusSaving": "Wird gespeichert",
"composerStatusSaved": "Gespeichert",
"composerStatusFailed": "Speichern fehlgeschlagen",
"composerSaveFailedInline": "Speichern fehlgeschlagen.",
"composerRetry": "Erneut versuchen",
"composerEmptyPane": "Füge eine Karteikarte hinzu, um loszulegen.",
"composerKindFlashcard": "Karteikarte",
"composerKindVocabulary": "Vokabel",
"composerKindMatching": "Zuordnung",
"composerKindMap": "Landkarte",
"composerKindCharacter": "Schriftzeichen",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"composerLabelFront": "Vorderseite",
"composerLabelQuestion": "Frage",
"composerLabelExpression": "Ausdruck",
"composerLabelPrompt": "Aufgabe",
"composerLabelCharacter": "Schriftzeichen",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"composerLabelBack": "Rückseite",
"composerLabelAnswers": "Antworten",
"composerLabelAnswer": "Antwort",
"composerPlaceholderFront": "Frage hinzufügen",
"composerPlaceholderExpression": "Ausdruck hinzufügen",
"composerPlaceholderPrompt": "Aufgabe hinzufügen",
"composerPlaceholderCharacter": "Kanji oder Kana hinzufügen",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"composerAddAnswer": "Antwort hinzufügen",
"composerCorrectAnswer": "Richtige Antwort",
"composerWrongAnswer": "Falsche Antwort",
"composerRemoveAnswer": "Antwort entfernen",
"composerPin": "{field} anheften: für die nächste Karte behalten",
"composerUnpin": "{field} nicht mehr anheften: für die nächste Karte leeren",
"composerTags": "Tags",
"composerAddTags": "Tags hinzufügen",
"composerMoreActions": "Weitere Aktionen",
"composerDuplicate": "Duplizieren",
"composerClearFields": "Felder leeren",
"composerDelete": "Löschen",
"composerDeleteTitle": "Diese Karteikarte löschen?",
"composerDeleteDraftMessage": "Der Entwurf wird aus dieser Sitzung entfernt. Er wurde noch nicht gespeichert.",
"composerDeleteSavedMessage": "Die Karteikarte wird auf all deinen Geräten aus dem Lernset entfernt.",
"composerDiscardTitle": "{count, plural, =1{Nicht gespeicherte Karteikarte verwerfen?} other{Nicht gespeicherte Karteikarten verwerfen?}}",
"composerDiscardMessage": "{count, plural, =1{1 Karteikarte wurde noch nicht gespeichert. Wenn du jetzt gehst, wird sie verworfen.} other{{count} Karteikarten wurden noch nicht gespeichert. Wenn du jetzt gehst, werden sie verworfen.}}",
"composerDiscardConfirm": "Verwerfen",
"composerConflict": "Diese Karteikarte wurde auf zwei Arten zugleich geändert: auf zwei deiner Geräte oder von dir und durch eine Korrektur im Wörterbuch oder eine neue Veröffentlichung dessen, wovon es kopiert ist. Wähle unten für jeden Teil die Version, die du behalten möchtest.",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"composerKeepThis": "Diese behalten",
"formatRuby": "Text darüber (Aussprache, Übersetzung)",
"formatRubyFurigana": "Furigana (eine Lesung über dem Text)",
"formatRubyPinyin": "Pinyin (über den Schriftzeichen)",
"rubyTitle": "Text darüber",
"rubyTitleFurigana": "Furigana",
"rubyTitlePinyin": "Pinyin",
"rubyText": "Text",
"rubyHint": "z. B. eine Aussprache oder eine Übersetzung",
"rubyHintPinyin": "Mit Tonzeichen, z. B. hànzì",
"rubyReading": "Lesung",
"rubyReadingHint": "In Kana, z. B. かんじ",
"rubySave": "Speichern",
"rubyRemove": "Entfernen",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"vocabularyReading": "Lesung",
"vocabularyReadingHint": "Kana-Lesung",
"vocabularyMeanings": "Bedeutungen",
"vocabularyPrimaryMeaningHint": "Hauptbedeutung",
"vocabularyMeaningHint": "Bedeutung",
"vocabularyAddMeaning": "Bedeutung hinzufügen",
"vocabularyRemoveMeaning": "Bedeutung entfernen",
"vocabularyGlossHint": "Übersetzung",
"vocabularyAddGloss": "Übersetzung hinzufügen",
"vocabularyRemoveGloss": "Übersetzung entfernen",
"vocabularyAddSense": "Wortbedeutung hinzufügen",
"vocabularyRemoveSense": "Wortbedeutung entfernen",
"characterPrimaryMeaningHint": "Hauptbedeutung, bei Kana die Umschrift",
"characterOnReadings": "On-Lesungen",
"characterOnReadingsHint": "Aus dem Chinesischen, in Katakana: ショク、ジキ",
"characterKunReadings": "Kun-Lesungen",
"characterKunReadingsHint": "Japanisch, in Hiragana, Okurigana nach einem Punkt: た.べる",
"characterOn": "On",
"characterKun": "Kun",
"characterPinyin": "Pinyin",
"characterEum": "Eum",
"characterHun": "Hun",
"characterPinyinReadings": "Pinyin",
"characterPinyinReadingsHint": "Mit Tonzeichen oder Ziffern: shuǐ, shui3",
"characterEumReadings": "Laute (Eum)",
"characterEumReadingsHint": "Sinokoreanisch, in Hangul: 수",
"characterHunReadings": "Koreanische Bedeutungen (Hun)",
"characterHunReadingsHint": "Koreanische Wörter für seine Bedeutung, in Hangul: 물",
"characterPrimaryMeaningHintLetter": "Hauptbedeutung, bei Buchstaben der Laut",
"composerPlaceholderCharacterChinese": "Schriftzeichen hinzufügen",
"composerPlaceholderCharacterKorean": "Hanja oder Hangul-Buchstaben hinzufügen",
"composerPlaceholderCharacterGreek": "Buchstaben hinzufügen",
"vocabularyReadingHintPinyin": "Pinyin, mit Tonzeichen oder Ziffern",
"vocabularyReadingHintPronunciation": "Aussprache, wo sie von der Schreibung abweicht",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"matchingCategories": "Kategorien",
"matchingCategoriesHint": "Die Ablagekarten, auf die Lernende Elemente ziehen. Jede Kategorie braucht mindestens ein Element, daher kann eine Karte nicht mehr Kategorien als Elemente haben.",
"matchingCategory": "Kategorie {number}",
"matchingAddCategory": "Kategorie hinzufügen",
"matchingAddCategoryBlocked": "Füge zuerst ein Element hinzu: Eine Karte kann nicht mehr Kategorien als Elemente haben",
"matchingRemoveCategory": "Kategorie entfernen",
"matchingMinCategories": "Mindestens zwei Kategorien erforderlich",
"matchingItems": "Elemente",
"matchingItemsHint": "Die ziehbaren Elemente. Ordne jedes Element seiner richtigen Kategorie zu: Ein nicht zugeordnetes Element kann nie richtig platziert werden.",
"matchingItem": "Element {number}",
"matchingAddItem": "Element hinzufügen",
"matchingUnassigned": "Nicht zugeordnet",
"matchingRemoveItem": "Element entfernen",
"matchingMinItems": "Mindestens zwei Elemente erforderlich",
"cardTileOptions": "Optionen",
"cardTileEdit": "Bearbeiten",
"cardTileDelete": "Löschen",
"cardTileUntitled": "Unbenannt",
"cardTileConflict": "Auf zwei Geräten geändert",
"studyClose": "Sitzung schließen",
"studyReviewsDueTitle": "Fällige Wiederholungen",
"studyReviewsDueBody": "{reviews, plural, =1{1 Karte ist} other{{reviews} Karten sind}} zur Wiederholung fällig. {news, plural, =1{Wenn du jetzt 1 neue Karte lernst} other{Wenn du jetzt {news} neue Karten lernst}}, erhöht das deine Wiederholungslast.",
"studyReviewsDueAllTagsNote": "„Zuerst wiederholen“ arbeitet den gesamten Rückstand über alle Tags hinweg ab – dein Tag-Filter greift erst wieder, wenn er abgebaut ist.",
"studyReviewFirst": "Zuerst wiederholen",
"studyLearnAnyway": "Trotzdem lernen",
"studySettingsTagFilterPausedForBacklog": "Diese Sitzung arbeitet deinen Wiederholungsrückstand über alle Tags hinweg ab, deshalb schränken diese Tags sie nicht ein. Ab der nächsten Sitzung greifen sie wieder.",
"studyBuryCard": "Bis morgen zurückstellen",
"studyCardBuried": "Karte bis morgen zurückgestellt",
"studyUndo": "Rückgängig machen",
"studyLockScreen": "Bildschirm sperren",
"studyUnlock": "Entsperren",
"studyTapToUnlock": "Zum Entsperren tippen",
"studyLoadFailed": "Diese Sitzung konnte nicht gelesen werden.",
"studyRatingFailed": "Deine Bewertung konnte nicht gespeichert werden. Bewerte die Karte noch einmal.",
"studyRetry": "Erneut versuchen",
"studyScopeTitle": "Lernumfang",
"studyScopeDescription": "Dieses Lernset hat Unter-Lernsets. Wähle, welche Karten wiederholt werden sollen.",
"studyScopeEverythingTitle": "Alles",
"studyScopeEverythingSubtitle": "Dieses Lernset und alle Unter-Lernsets",
"studyScopeSelfTitle": "Nur dieses Lernset",
"studyScopeSelfSubtitle": "Karten in Unter-Lernsets überspringen",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studyBackFirstOn": "Rückseite der Karten wird zuerst gezeigt: tippe zum Zurückschalten",
"studyBackFirstOff": "Rückseite der Karten zuerst zeigen",
"studyShowAnswer": "Antwort anzeigen",
"studyCheck": "Prüfen",
feat: a round in the order cards come, shared daily limits, and a start screen Studying: - A round is one list in the order its cards come: those done, the one shown, those to come. A card due again within the day goes back in after 4 more cards when rated Bad, at the end otherwise, so the pills above the card follow it; the buttons say "in 4 cards", "at the end", "now" (round_order.dart). - The studied studyset's daily limits hold for everything inside it together, as Anki's do for subdecks: twenty topics start 20 new cards a day in all, not 20 each. - The study header's studyset name shows whole on hover or long press. - The assistant's button sits at the lower left: in the Library across from Create studyset, in a studyset above its bar, and higher while studying, above the buttons that answer the card. A studyset: - Progress also counts the learning paths' steps done and lists the PDFs not read to their end, begun first, each opening the reader, across its topics (MaterialProgressCubit). - Next up starts with studying for the exam while one is ahead: its reviews due and the new cards its pace leaves for the day. - Learning paths tagged with a level count towards its automatic exam plan and offer it, as cards do. - A step's first heading equal to its title is dropped on import and hidden in paths imported before. Signing out, or a session the server ended, leads to a start screen (GitHub, email, without an account, another instance) rather than a new anonymous account; only the very first start makes one by itself. Settings names the kind of account and its instance. Also: the Watch screen reads the cards once for held words and their progress; its ±10 s buttons tick as the navigation bar does; a map card keeps its view as its caption changes and brings a picked region towards the middle; an empty or failed library can be pulled to sync. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-17 00:39:34 +02:00
"studyComesBackIn": "{count, plural, =1{nach 1 Karte} other{nach {count} Karten}}",
"studyComesBackAtEnd": "am Ende",
"studyComesBackNow": "sofort",
"studySelectAll": "Wähle alle zutreffenden aus",
"studySelectOne": "Wähle die richtige Antwort",
"studyMatchingInstructions": "AUF DIE KARTEN OBEN ZIEHEN",
"studyMatchingAllPlaced": "Alle platziert",
"studyMatchingDropHere": "Hier ablegen",
"studyMapTapPrompt": "Tippe auf eine Region, um zu antworten",
"studyMapSelected": "Ausgewählt: {label}",
"studyCorrect": "Richtig",
"studyCorrectLabel": "Richtig — {label}",
"studyMapAnswer": "Antwort: {answer}",
"studyMapPickedAnswer": "Du hast {picked} gewählt · Antwort: {answer}",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studyRatingBad": "Schlecht",
"studyRatingOk": "OK",
"studyRatingGood": "Gut",
"studyRatingPerfect": "Perfekt",
"studyNothingTitle": "Gerade nichts zu lernen",
"studyNothingBody": "Komm später wieder, wenn mehr Karten fällig sind.",
"studyNextDue": "Bis zur nächsten fälligen Karte: {interval}.",
"studyDone": "Fertig",
"studySessionComplete": "Sitzung abgeschlossen",
"studyProgressReviewed": "{reviewed} / {total} wiederholt",
"studyReviewedCount": "{reviewed} wiederholt",
"studyStatCards": "Karten",
"studyStatAccuracy": "Genauigkeit",
"studyStatTime": "Zeit",
"studyDurationSec": "{sec} Sek.",
"studyDurationMin": "{min} Min.",
"studyDurationMinSec": "{min} Min. {sec} Sek.",
"studyLeaveTitle": "Diese Lernsitzung verlassen?",
"studyLeaveRated": "{count, plural, =1{Deine bisherigen Bewertungen sind gespeichert, aber die letzte Karte in dieser Runde wird verworfen, wenn du jetzt gehst.} other{Deine bisherigen Bewertungen sind gespeichert, aber die {count} noch verbleibenden Karten in dieser Runde werden verworfen, wenn du jetzt gehst.}}",
"studyLeaveUnrated": "{count, plural, =1{Du hast diese Karte noch nicht bewertet — beim Verlassen endet die Sitzung, ohne Fortschritt für diese Runde zu speichern.} other{Du hast noch keine der {count} Karten in dieser Runde bewertet — beim Verlassen endet die Sitzung, ohne Fortschritt dafür zu speichern.}}",
"studyLeaveConfirm": "Verlassen",
"studyKeepStudying": "Weiter lernen",
"studyInMinutes": "{count, plural, =1{in 1 Min.} other{in {count} Min.}}",
"studyInHours": "{count, plural, =1{in 1 Stunde} other{in {count} Stunden}}",
"studyInDays": "{count, plural, =1{in 1 Tag} other{in {count} Tagen}}",
"studyInMonths": "{count, plural, =1{in 1 Monat} other{in {count} Monaten}}",
"studyInYears": "{count, plural, =1{in 1 Jahr} other{in {count} Jahren}}",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studyContinue": "Weiterlernen",
"studyPrevious": "Vorherige Karte",
"studySkipCard": "Karte überspringen",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studyMinutes": "{count} Min.",
"studyHours": "{count} Std.",
"studyDays": "{count, plural, =1{1 Tag} other{{count} Tage}}",
"studyMonths": "{count, plural, =1{1 Monat} other{{count} Monate}}",
"studyYears": "{count, plural, =1{1 Jahr} other{{count} Jahre}}",
"studyFilteredBy": "{count, plural, =1{Eingegrenzt durch 1 Tag-Filter} other{Eingegrenzt durch {count} Tag-Filter}}",
"studySettingsCardsPerRound": "Karten pro Runde",
"studySettingsNewPerDay": "Neue Karten pro Tag",
"studySettingsNewPerDayHint": "Wie viele noch nie gelernte Karten jedes Lernset pro Tag neu beginnt, sofern seine eigenen Lernoptionen nichts anderes sagen.",
"studyOptionsTitle": "Lernoptionen",
"studyOptionsDescription": "Wie viele Karten dieses Lernset pro Tag bringt und welche zuerst kommen, auf all deinen Geräten. Die Lernsets darin behalten ihre eigenen.",
"studyOptionsReviewsPerDay": "Wiederholungen pro Tag",
"studyOptionsOrder": "Reihenfolge",
"studyOptionsReviewsFirst": "Wiederholungen zuerst",
"studyOptionsMixed": "Gemischt",
"studyOptionsNewFirst": "Neue zuerst",
"studyOptionsReset": "Standard wiederherstellen",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studySettingsUnlimited": "Unbegrenzt",
"studySettingsSortBy": "Sortieren nach",
"studySettingsLearnMode": "Lernmodus",
"studyModeSpaced": "Verteilte Wiederholung",
"studyModeSpacedHint": "Fällige Karten nach ihrem Zeitplan; Bewertungen verschieben sie.",
"studyModeCram": "Pauken",
"studyModeCramHint": "Geh jede Karte durch, ohne die Zeitpläne zu ändern.",
"studySettingsVocabulary": "Vokabeln",
"studySettingsQuizMc": "Als Multiple-Choice abfragen",
"studySettingsQuizMcDescription": "Zeige Vokabelkarten als Multiple-Choice-Frage, mit falschen Antworten aus anderen Vokabeln in diesem Set.",
"studySettingsTypeReading": "Lesung eintippen",
"studySettingsTypeReadingDescription": "Wörter mit Kanji fragen nach ihrer Lesung, in Kana getippt (Romaji werden beim Tippen zu Kana); chinesische Wörter nach ihrem Pinyin (Tonziffern werden zu Tonzeichen: aus ni3 wird nǐ).",
"studyTypedHint": "Die Lesung, in Kana oder Romaji",
"studyTypedHintPinyin": "Das Pinyin, mit Tonziffern oder Tonzeichen",
"studyTypedRight": "Richtig",
"studyTypedWrong": "Du hast {answer} getippt",
"studyAspectMeaning": "Bedeutung",
"studyAspectReading": "Lesung",
"studyAspectExpression": "Ausdruck",
"studyAspectMixed": "Gemischt",
"studySettingsAspectDescription": "Was abgefragt wird — die Bedeutung, die Lesung (Kana, Pinyin) oder der Ausdruck selbst (bei angezeigter Bedeutung). „Gemischt“ variiert Bedeutung und Lesung pro Karte; Karten, die nicht abgefragt werden können, bleiben ein normales Umdrehen.",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studySortOldestFirst": "Älteste zuerst",
"studySortRandom": "Zufällig",
"studySortNewestFirst": "Neueste zuerst",
"studyLimitNewPerDay": "Neue Karten pro Tag begrenzen",
"studyLimitReviewsPerDay": "Wiederholungen pro Tag begrenzen",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studysetMenuReset": "Fortschritt zurücksetzen",
"studysetResetTitle": "Fortschritt zurücksetzen?",
"studysetResetMessage": "Was du auswählst, beginnt darin und in den enthaltenen Lernsets auf all deinen Geräten von vorn. Dein Lernverlauf bleibt erhalten. Du kannst dies für einige Sekunden rückgängig machen.",
"studysetResetCards": "Karteikarten",
"studysetResetCardsDetail": "{count, plural, =1{1 Karteikarte beginnt wieder als neu} other{{count} Karteikarten beginnen wieder als neu}}",
"studysetResetPdfs": "Lesefortschritt der PDFs",
"studysetResetPdfsDetail": "{count, plural, =1{1 PDF wird wieder ab der ersten Seite gelesen} other{{count} PDFs werden wieder ab der ersten Seite gelesen}}",
"studysetResetPaths": "Lernpfade",
"studysetResetPathsDetail": "{count, plural, =1{1 Lernpfad beginnt wieder beim ersten Schritt} other{{count} Lernpfade beginnen wieder beim ersten Schritt}}",
"studysetResetNothing": "Darin gibt es noch keinen Fortschritt.",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"studysetResetConfirm": "Zurücksetzen",
"studysetResetDone": "Fortschritt zurückgesetzt",
"mapUnknown": "Diese Landkarte braucht eine neuere Version der App.",
"mapPickRegion": "Wähle einen Teil der Karte, dann tippe auf die Region, die die Frage beantwortet. Winzige Orte haben einen Ring; wo Ringe dicht liegen, zoome hinein.",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"mapNonePicked": "Noch keine Region gewählt",
"mapPickTitle": "Region wählen",
feat(map): every country on earth, picked continent first Map questions can now be on the world's countries besides Japan's prefectures: a new question chooses its map above it. The world is Natural Earth's 1:50m countries (public domain), as they are on the ground, one region per ISO 3166-1 code (239; Gibraltar and the US Outlying Islands from the 1:10m layer, which has them), named in every language a studyset can be in from the Unicode CLDR (Unicode License v3, its notice in the licence list). tool/maps/world_countries.py builds it; the outline code it shares with the Japan script moved to outlines.py, which still writes Japan's file byte for byte. The 1.8 MB file is parsed off the screen's isolate. Picking goes in layers on both maps: on the whole map one taps a group (a continent, or Kantō, Kansai …; chips name them too) and the map flies there, then one taps the region; Back returns. A group of one (Hokkaidō, Okinawa) and what is in none (Antarctica) are picked at once. A country in two groups (Russia, Türkiye, Cyprus) opens the one nearer the tap. Oceania's frame runs past 180° so the Pacific stays in one piece. What is still too small to hit gets a ring, 48 dp of reach as Material's touch target: on the ring it is picked; near it, where the tap could mean it or its neighbours, the map zooms in rather than guess. Pinching and a mouse's wheel zoom as before. Names show in the app's language, beside them the map's own (Japanese for Japan) or the studyset's (キプロス beside Cyprus in a Japanese studyset). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-12 07:18:20 +02:00
"mapNameJapan": "Japan",
"mapNameWorld": "Welt",
"mapPrefectures": "Präfekturen",
"mapZoomNote": "Strg + Scrollen zum Zoomen",
"mapZoomNoteMac": "⌘ + Scrollen zum Zoomen",
feat(map): every country on earth, picked continent first Map questions can now be on the world's countries besides Japan's prefectures: a new question chooses its map above it. The world is Natural Earth's 1:50m countries (public domain), as they are on the ground, one region per ISO 3166-1 code (239; Gibraltar and the US Outlying Islands from the 1:10m layer, which has them), named in every language a studyset can be in from the Unicode CLDR (Unicode License v3, its notice in the licence list). tool/maps/world_countries.py builds it; the outline code it shares with the Japan script moved to outlines.py, which still writes Japan's file byte for byte. The 1.8 MB file is parsed off the screen's isolate. Picking goes in layers on both maps: on the whole map one taps a group (a continent, or Kantō, Kansai …; chips name them too) and the map flies there, then one taps the region; Back returns. A group of one (Hokkaidō, Okinawa) and what is in none (Antarctica) are picked at once. A country in two groups (Russia, Türkiye, Cyprus) opens the one nearer the tap. Oceania's frame runs past 180° so the Pacific stays in one piece. What is still too small to hit gets a ring, 48 dp of reach as Material's touch target: on the ring it is picked; near it, where the tap could mean it or its neighbours, the map zooms in rather than guess. Pinching and a mouse's wheel zoom as before. Names show in the app's language, beside them the map's own (Japanese for Japan) or the studyset's (キプロス beside Cyprus in a Japanese studyset). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-12 07:18:20 +02:00
"mapGroupHokkaido": "Hokkaidō",
"mapGroupTohoku": "Tōhoku",
"mapGroupKanto": "Kantō",
"mapGroupChubu": "Chūbu",
"mapGroupKansai": "Kansai",
"mapGroupChugoku": "Chūgoku",
"mapGroupShikoku": "Shikoku",
"mapGroupKyushu": "Kyūshū",
"mapGroupOkinawa": "Okinawa",
"mapGroupEurope": "Europa",
"mapGroupAfrica": "Afrika",
"mapGroupWestAsia": "Westasien",
"mapGroupSouthAsia": "Zentral- und Südasien",
"mapGroupEastAsia": "Ostasien",
"mapGroupSoutheastAsia": "Südostasien",
"mapGroupNorthAmerica": "Nordamerika",
"mapGroupCentralAmerica": "Mittelamerika und Karibik",
"mapGroupSouthAmerica": "Südamerika",
"mapGroupOceania": "Ozeanien",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"composerPlaceholderQuestion": "Frage hinzufügen",
"composerLabelRegion": "Antwort",
"composerRegionPick": "Tippen, um die Region auf der Karte zu wählen",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"homeStreakTooltip": "Lernserie",
"homeArrange": "Widgets anordnen",
"homeDone": "Fertig",
"homeDragToReorder": "Zum Umsortieren ziehen",
"homeShowWidget": "{label} anzeigen",
"homeHideWidget": "{label} ausblenden",
"homeAllHidden": "Alle Widgets sind ausgeblendet",
feat(app): Home, the Library and the studyset sheets laid out as before Home: plain cards on the surface, 16 dp apart, the goal first and the Pomodoro timer after it in a new dashboard. The streak chip sits centred in the app bar, and its sheet shows the days inside a big flame and the week as marks over the weekdays' initials, with a word on today in a box. The week names its day as "Thursday, Oct 8" and its days carry no tooltip. The heatmap scrolls its weekdays with the weeks, outlines the days to come, and names a day's activities with its date. The goal card has a ring of 5 dp, a check once met and a pencil, and its sheet saves across its width with Remove goal below. Arranging puts an eye on each widget's corner and lifts the one picked up, with a tap the hand feels; with every widget hidden, Customise brings arranging back. The stepper moves to core, where the goal's sheet takes it too. Library: the counts line includes files (PDFs); Refresh in the app bar and pulling the list down sync now; a list that can't be read offers Retry, which reads it again; the star keeps its square corners. Studyset sheet: "Title *", the secondary title explained behind a question mark, Inherit as a box beside the colour, and the description in up to three lines with a chevron. Move sheet: round marks, the studyset itself marked as current, the top level only while it is inside another, archived studysets last under their heading, the destination named in the footer, and a new studyset to move into, made only once the move is. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-08 11:12:23 +02:00
"homeAllHiddenBody": "Blende einige wieder ein, um dein Dashboard zu füllen.",
"homeCustomise": "Anpassen",
"homeWidgetGoal": "Tagesziel",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"homeWidgetWeek": "Wochenübersicht",
"homeWidgetActivity": "Aktivitäts-Heatmap",
"homeActivityTitle": "Deine Aktivität",
"streakDays": "{count, plural, =1{1 Tag in Folge} other{{count} Tage in Folge}}",
"streakStart": "Lerne heute, um deine Lernserie zu starten.",
"streakGrow": "Bleib dran: Lerne mindestens einmal am Tag, um deine Lernserie auszubauen.",
"streakFirstDay": "Wiederhole heute ein paar Karten, um den ersten Tag zu entfachen.",
"streakComeBack": "Komm morgen wieder, um deine Lernserie zu halten.",
"streakKeepAlive": "Lerne heute, um deine Lernserie am Leben zu halten.",
"goalEditTitle": "Lernziel bearbeiten",
"goalSetTitle": "Lernziel festlegen",
"goalDescriptionDaily": "Wiederhole jeden Tag eine bestimmte Anzahl Karteikarten. Jede Karte, die du bewertest, zählt.",
"goalDescriptionWeekly": "Wiederhole jede Woche ab Montag eine bestimmte Anzahl Karteikarten. Jede Karte, die du bewertest, zählt.",
"goalPeriod": "Zeitraum",
"goalPerDay": "Pro Tag",
"goalPerWeek": "Pro Woche",
"goalCardsPerDay": "Karten pro Tag",
"goalCardsPerWeek": "Karten pro Woche",
"goalSave": "Ziel speichern",
"goalRemove": "Ziel entfernen",
"goalEmptySubtitle": "Wiederhole jeden Tag oder jede Woche eine feste Anzahl Karten.",
"goalDailyHeadline": "Tagesziel",
"goalWeeklyHeadline": "Wochenziel",
"goalProgressToday": "{reviewed} von {target} Karten heute",
"goalProgressThisWeek": "{reviewed} von {target} Karten diese Woche",
"goalMet": "Ziel erreicht: gut gemacht!",
"goalRemaining": "Noch {count}",
"weekToday": "Heute",
"weekPreviousDay": "Vorheriger Tag",
"weekNextDay": "Nächster Tag",
"weekRestDay": "Ruhetag",
"heatmapLess": "Weniger",
"heatmapMore": "Mehr",
"heatmapTotal": "{count, plural, =1{1 Aktivität im letzten Jahr} other{{count} Aktivitäten im letzten Jahr}}",
feat(app): Home, the Library and the studyset sheets laid out as before Home: plain cards on the surface, 16 dp apart, the goal first and the Pomodoro timer after it in a new dashboard. The streak chip sits centred in the app bar, and its sheet shows the days inside a big flame and the week as marks over the weekdays' initials, with a word on today in a box. The week names its day as "Thursday, Oct 8" and its days carry no tooltip. The heatmap scrolls its weekdays with the weeks, outlines the days to come, and names a day's activities with its date. The goal card has a ring of 5 dp, a check once met and a pencil, and its sheet saves across its width with Remove goal below. Arranging puts an eye on each widget's corner and lifts the one picked up, with a tap the hand feels; with every widget hidden, Customise brings arranging back. The stepper moves to core, where the goal's sheet takes it too. Library: the counts line includes files (PDFs); Refresh in the app bar and pulling the list down sync now; a list that can't be read offers Retry, which reads it again; the star keeps its square corners. Studyset sheet: "Title *", the secondary title explained behind a question mark, Inherit as a box beside the colour, and the description in up to three lines with a chevron. Move sheet: round marks, the studyset itself marked as current, the top level only while it is inside another, archived studysets last under their heading, the destination named in the footer, and a new studyset to move into, made only once the move is. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-08 11:12:23 +02:00
"heatmapDay": "{count, plural, =1{1 Aktivität} other{{count} Aktivitäten}} · {date}",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"commonCancel": "Abbrechen",
"commonSave": "Speichern",
"commonClose": "Schließen",
"moreInfo": "Weitere Informationen",
"moreInfoCreated": "Erstellt",
"moreInfoModified": "Zuletzt geändert",
"moreInfoItemId": "Element-ID",
"moreInfoStudysetId": "Lernset-ID",
"moreInfoPdfId": "PDF-Quellen-ID",
"moreInfoParentId": "Übergeordnete ID",
"moreInfoFile": "Datei",
"moreInfoReviews": "Wiederholungen",
"moreInfoReviewCount": "Anzahl Wiederholungen",
"moreInfoLastReviewed": "Zuletzt wiederholt",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"commonTryAgain": "Erneut versuchen",
"personDataFailed": "Die Daten dieses Geräts konnten nicht geöffnet werden.",
"sessionUnreachable": "Der Server war nicht erreichbar.",
"notFoundGone": "Das gibt es nicht mehr. Vielleicht wurde es auf einem anderen Gerät gelöscht.",
feat(app): the studyset screen laid out as before The Study pill reads "Learn 12 flashcards" in the app bar and "Learn 12" floating, "Study" with nothing due, and is off with nothing to study, saying so. With a path not finished, a chevron beside it offers to start or continue the path: a menu in the app bar, a Study mode sheet on phones. The floating bar rises above the licence line, which takes two lines at most. Add material offers a path, flashcards, a note and a PDF, in that order; imports moved to the options' Import content, which asks for a learning path or an Anki deck. The options read Edit, Move, Study options, Import content, Reset progress, Archive, Delete. The bibliography is an outlined round button above the content, and on phones at the foot of the topics. The tabs sit on a line of their own across the card, what the tab shown offers beside them: the flashcards' filter and options, and on the paths Reorder once there are two, which turns them into handles to drag. An empty tab says so in its middle; tapping the open tab again returns to its top, and pulling a tab down syncs. The breadcrumb's steps are plain links between "›", the studyset itself bold. A long description is cut at a fixed height, measured, with Read more opening it whole under the studyset's title. A studyset that no longer exists leads back to the library. The topics: All topics on the primary colour, in view also while they are rearranged; each topic with the study it invites in a round icon, what it holds ("Empty" with nothing, files counted too), and its options (now with Reset progress) behind "…" or a long press where the finger is; New sub-studyset at the foot below a line, the list with its scrollbar always shown. All topics opens Add material while nothing is due. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-08 11:42:50 +02:00
"studysetBackToLibrary": "Zurück zur Bibliothek",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"fileImage": "Bild",
"fileSound": "Audio",
"fileImageUnavailable": "Dieses Bild ist noch nicht auf diesem Gerät. Es erscheint, sobald es hochgeladen ist und du online bist.",
"fileImageUnreadable": "Dieses Bild kann nicht angezeigt werden. Die Datei ist vielleicht beschädigt oder in einem Format, das dieses Gerät nicht lesen kann.",
"fileFromElsewhere": "Dateien aus dem Web werden nicht angezeigt.",
"filePlaySound": "Audio abspielen",
"fileStopSound": "Audio stoppen",
"fileSoundUnavailable": "Diese Audiodatei ist noch nicht auf diesem Gerät. Du kannst sie abspielen, sobald sie hochgeladen ist und du online bist.",
"fileSoundUnplayable": "Diese Audiodatei kann nicht abgespielt werden. Die Datei ist vielleicht beschädigt oder in einem Format, das dieses Gerät nicht abspielen kann.",
"fileImages": "Bilder",
"fileSounds": "Audiodateien",
"fileNotAnImage": "Diese Datei ist kein Bild, das die App anzeigen kann.",
"fileNotASound": "Diese Datei ist keine Audiodatei, die die App abspielen kann.",
"fileTooLarge": "Diese Datei ist größer als {megabytes} MB.",
fix(privacy): what the app shows and adds keeps private studysets private (ADR 0019) The reading of 22 Oct, on the device's side. Private cards never move into a readable studyset: the card browser asks to make it private first. Locked studysets are left out of the move sheets and the destinations words are added to. A studyset whose key isn't on this device says to sign in with the password here, not that it is lost, and can still be archived; creating one there says why it can't. The marker shows the lock for a private studyset published before, and a shield with a warning while something in it is still readable or unsealed, with Finish in its dialog. The library's offer covers every top-level studyset, Recently deleted and orphaned ones too, says what couldn't be sealed, and its answer follows the person in their settings (schema 11). The full-window editors carry the studyset they were opened from, and an account with keys adds no file where none is known (a new studyset's description takes pictures once it is made). A file no live row names is never uploaded, and deleting a row clears what it owed. Sealed rows are indexed by key and hash. A suggestion from a private copy uploads readable copies of its files for the author; accepting swaps whole `asset:` values only. Docs: ADR 0019's "The reading (22 Oct 2026)" with the decisions, what changed and the residual risks; "As built" and Learn's AGENTS.md brought up to date. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-22 09:29:56 +02:00
"fileAfterCreate": "Bilder und Töne lassen sich hinzufügen, sobald das Lernset erstellt ist.",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"fileNotKept": "Die Datei konnte nicht auf diesem Gerät gespeichert werden.",
"fileRemoveImage": "Bild entfernen",
"fileRemoveSound": "Audio entfernen",
"blockCallout": "Hinweisbox",
"blockSpoiler": "Spoiler",
"calloutNote": "Notiz",
"calloutInfo": "Info",
"calloutTip": "Tipp",
"calloutSuccess": "Erfolg",
"calloutQuestion": "Frage",
"calloutWarning": "Warnung",
"calloutDanger": "Gefahr",
"calloutQuote": "Zitat",
"calloutOptions": "Hinweisbox-Optionen",
"calloutEditTitle": "Titel bearbeiten…",
"calloutFoldedAtFirst": "Anfangs eingeklappt",
"calloutRemove": "Hinweisbox entfernen",
"calloutShow": "Einblenden",
"calloutHide": "Ausblenden",
"calloutWriteInside": "Hineinschreiben",
"calloutTitleDialog": "Titel der Hinweisbox",
"calloutTitleLabel": "Titel",
"calloutTitleHelper": "Lass ihn leer, um den Namen des Typs anzuzeigen.",
"spoilerReveal": "Aufdecken",
"spoilerPlaceholder": "Versteckter Text, per Tippen aufgedeckt",
"blockFormula": "Formel",
"formatInlineMath": "Formel in der Zeile",
"formulaTitle": "Formel",
"formulaInLineTitle": "Formel in der Zeile",
"formulaPreview": "Vorschau",
"formulaPreviewEmpty": "Hier erscheint die Formel",
"formulaLatex": "LaTeX",
"formulaLatexHelper": "\\\\ beginnt eine neue Zeile in aligned, cases oder einer Matrix.",
"formulaEmpty": "Eine leere Formel. Tippe, um sie zu schreiben.",
"formulaEdit": "Formel bearbeiten",
"formulaRemove": "Formel entfernen",
"blockYoutube": "YouTube-Video",
"youtubeLink": "YouTube-Link",
"youtubeLinkHelper": "Füge einen Link von YouTube ein.",
"youtubeNotFound": "In diesem Link ist kein YouTube-Video.",
"youtubeFound": "Video gefunden.",
"youtubeFoundFrom": "Video gefunden, Start bei {time}.",
"youtubeCaption": "Beschriftung",
"youtubeCaptionHelper": "Wird anstelle des Videos angezeigt, bis es abgespielt wird.",
"youtubeVideo": "YouTube-Video",
"youtubeSource": "YouTube",
"youtubeFrom": "YouTube · ab {time}",
"youtubeEdit": "Video bearbeiten",
"youtubePlay": "Video abspielen",
"youtubeOpen": "Auf YouTube öffnen",
"youtubeRemove": "Video entfernen",
"youtubeBroken": "Der Link dieses Videos kann nicht gelesen werden.",
"youtubeNotOpened": "YouTube konnte nicht geöffnet werden.",
"blockStudyButton": "Lernbutton",
"studyButtonDefaultLabel": "Lernen",
"studyButtonStudyset": "Lernset",
"studyButtonTag": "Karten",
"studyButtonAllCards": "Alle Karten",
"studyButtonLabel": "Beschriftung",
"studyButtonTopics": "Mit seinen Themen",
"studyButtonBackFirst": "Rückseite zuerst",
"studyButtonBackFirstHelper": "Karten mit Vorder- und Rückseite sowie Vokabelkarten fragen ihre Rückseite ab.",
"studyButtonWithTag": "Mit Tag {tag}",
"studyButtonAlone": "Ohne seine Themen",
"studyButtonEdit": "Lernbutton bearbeiten",
"studyButtonRemove": "Lernbutton entfernen",
"studyButtonBroken": "Dieser Lernbutton gibt nicht an, was gelernt werden soll.",
"studyButtonGone": "Dieses Lernset gibt es nicht mehr.",
"pdfPageField": "PDF-Seite",
"studysetTabFiles": "Dateien",
"pdfUploadMenu": "Datei hochladen",
"pdfFileType": "PDFs und Markdown",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"pdfAdded": "„{title}“ hinzugefügt.",
"pdfNotPdf": "Diese Datei ist kein PDF.",
"pdfTooLarge": "Dieses PDF ist größer als {megabytes} MB.",
"pdfDuplicateTitle": "PDF schon vorhanden",
"pdfDuplicateMessage": "Diese Datei ist „{title}“ und liegt schon in diesem Lernset. Als Kopie hinzufügen oder das vorhandene behalten?",
"pdfDuplicateKeep": "Vorhandenes behalten",
"pdfDuplicateAdd": "Kopie hinzufügen",
"filesEmpty": "Noch keine Dateien",
"filesEmptyHint": "Nutze „Material hinzufügen → Datei hochladen“, um eines hinzuzufügen.",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"filesSort": "Sortieren",
"filesSortCustom": "Eigene Reihenfolge",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"filesSortName": "Name (A–Z)",
"filesSortNewest": "Neueste zuerst",
"filesSortOldest": "Älteste zuerst",
"filesSortLargest": "Größte zuerst",
"pdfPages": "{count, plural, =1{1 Seite} other{{count} Seiten}}",
"pdfPercentRead": "{percent} % gelesen",
"pdfDeadlineMet": "Lesefrist eingehalten",
"pdfDeadlineUpcoming": "Beginnt in {days, plural, =1{1 Tag} other{{days} Tagen}} – {pages}/Tag geplant",
"pdfDeadlinePassed": "Frist abgelaufen – noch {pages, plural, =1{1 Seite} other{{pages} Seiten}}",
"pdfDeadlineToday": "Heute fällig – noch {pages, plural, =1{1 Seite} other{{pages} Seiten}}",
"pdfDeadlinePace": "{pages}/Tag, um in {days, plural, =1{1 Tag} other{{days} Tagen}} Seite {target} zu erreichen",
"pdfOptions": "Aktionen",
"pdfRename": "Umbenennen",
"pdfRenameTitle": "PDF umbenennen",
"pdfRenameLabel": "Titel",
"pdfSetDeadline": "Lesefrist festlegen",
"pdfEditDeadline": "Lesefrist bearbeiten",
"pdfMarkFinished": "Als abgeschlossen markieren",
"pdfResetReading": "Lesefortschritt zurücksetzen",
"pdfResetTitle": "Lesefortschritt zurücksetzen?",
"pdfResetMessage": "Wie weit du „{title}“ gelesen hast, wird vergessen. Das PDF, seine Karteikarten und Notizen bleiben.",
"pdfResetConfirm": "Zurücksetzen",
"pdfMoreInfo": "Weitere Infos",
"pdfInfoFileName": "Dateiname",
"pdfInfoSize": "Größe",
"pdfInfoPages": "Seiten",
"pdfInfoUnknown": "Bekannt, sobald es geöffnet wurde",
"pdfDelete": "Löschen",
"pdfDeleteTitle": "PDF löschen?",
"pdfDeleteMessage": "„{title}“ wird samt Lesefortschritt aus diesem Lernset entfernt. Karteikarten und Notizen, die daraus entstanden sind, bleiben.",
"pdfDeleteConfirm": "Löschen",
"pdfDeleted": "PDF gelöscht",
"deadlineSheetSet": "Lesefrist festlegen",
"deadlineSheetEdit": "Lesefrist bearbeiten",
"deadlineSheetHelp": "Erreiche bis zu einem Tag eine bestimmte Seite. Der Fortschritt folgt der weitesten Seite, die du beim Lesen erreichst.",
"deadlineReachPageOf": "Seite erreichen (von {count})",
"deadlineReachPage": "Seite erreichen",
"deadlineDecrease": "Verringern",
"deadlineIncrease": "Erhöhen",
"deadlineChapter": "Oder ein Kapitel abschließen",
"deadlineChapterEntry": "{title} · bis S. {page}",
"deadlineBy": "Bis",
"deadlineStart": "Beginn am",
"deadlineStartToday": "Heute",
"deadlineStartReset": "Heute beginnen",
"deadlineStartHelp": "Das Tagespensum zählt ab diesem Tag. Bis dahin wartet das PDF unter „Demnächst“.",
"deadlineSave": "Frist speichern",
"deadlineRemove": "Frist entfernen",
"readerMissing": "Dieses PDF ist noch nicht auf diesem Gerät. Es öffnet sich, sobald das Gerät, das es hinzugefügt hat, es hochgeladen hat und du online bist.",
"readerUnreadable": "Diese Datei kann nicht als PDF gelesen werden.",
"readerBack": "Zurück zum Lernset",
"readerSearch": "PDF durchsuchen",
"readerFitWidth": "An Breite anpassen",
"readerFitHeight": "An Höhe anpassen",
"readerZoomIn": "Vergrößern",
"readerZoomOut": "Verkleinern",
"readerSetZoom": "Zoom festlegen",
"readerZoomTitle": "Zoom",
"readerZoomApply": "Anwenden",
"readerFullscreen": "Vollbild",
"readerExitFullscreen": "Vollbild verlassen",
"readerPreviousPage": "Vorherige Seite",
"readerNextPage": "Nächste Seite",
"readerPageOf": "/ {count}",
"readerFindHint": "Im PDF suchen",
"readerMatchOf": "{current} von {total}",
"readerPreviousMatch": "Vorheriger Treffer",
"readerNextMatch": "Nächster Treffer",
"readerCloseSearch": "Suche schließen",
"readerExpand": "Ausklappen",
"readerCollapse": "Einklappen",
"readerTabFlashcards": "Karteikarten",
"readerTabNotes": "Notizen",
"readerCardCreated": "Karteikarte erstellt",
"readerCardDeleteTitle": "Karteikarte löschen?",
"readerCardDeleteMessage": "Die Karteikarte wird samt ihrem Lernverlauf gelöscht.",
"readerCardDeleteConfirm": "Löschen",
"readerFrontMatter": "Vorspann",
"readerPage": "Seite {page}",
"readerByPage": "Seite",
"readerByChapter": "Kapitel",
"readerCardsEmpty": "Wähle Text aus, um im Nu Karteikarten zu erstellen",
"readerCardsEmptyHint": "Wähle die wichtigen Zeilen aus und schicke sie in eine Frage oder eine Antwort, oder nutze „Karteikarte erstellen“.",
"readerCreateCard": "Karteikarte erstellen",
"readerEditCard": "Karteikarte bearbeiten",
"readerBackToCards": "Zurück zu den Karteikarten",
"readerReferencedPage": "Referenzierte Seite: {page}",
"readerUseCurrentPage": "Aktuelle verwenden ({page})",
"readerQuestion": "Frage",
"readerAnswer": "Antwort",
"readerKeepOpen": "Erstellungsmodus geöffnet lassen",
"readerClear": "Leeren",
"readerCreate": "Erstellen",
"readerUntitledCard": "Unbenannte Karteikarte",
"readerCardOptions": "Kartenoptionen",
"readerNoteSaved": "Gespeichert",
"readerNoteEditing": "Wird bearbeitet…",
"readerNoteSaving": "Wird gespeichert…",
"readerNoteFailed": "Speichern fehlgeschlagen",
"readerToQuestion": "Frage",
"readerToAnswer": "Antwort",
"readerToNote": "Notizen",
"readerLineBreaksJoined": "Zeilenumbrüche zusammengeführt (tippen zum Beibehalten)",
"readerLineBreaksKept": "Zeilenumbrüche beibehalten (tippen zum Zusammenführen)",
"blockScreenshot": "Bildschirmfoto der Seite",
"readerCaptureCancel": "Bildschirmfoto abbrechen",
"readerCaptureHint": "Ziehe über den Teil der Seite, den du behalten willst",
"readerCaptureFailed": "Die Seite konnte nicht dargestellt werden. Versuche es erneut, sobald sie geladen ist.",
"readerScreenshotSaved": "Bildschirmfoto gespeichert",
"imageOpenPdfPage": "PDF auf dieser Seite öffnen",
"homeWidgetPickUp": "Weiterlernen",
"homePickUpPlaceholder": "Die Lernsets, die du lernst, das zuletzt gelernte zuerst",
"homePickUpStudied": "{days, plural, =0{Heute gelernt} =1{Gestern gelernt} other{Vor {days} Tagen gelernt}}",
"homePickUpLearned": "{percent} % gelernt",
"homePickUpReview": "{count, plural, =1{1 Karte wiederholen} other{{count} Karten wiederholen}}",
"homePickUpLearn": "{count, plural, =1{1 neue Karte lernen} other{{count} neue Karten lernen}}",
"homePickUpReviewAndLearn": "{reviews} wiederholen, {fresh} neue lernen",
"homePickUpDone": "Heute nichts fällig",
"homePickUpMore": "{count} weitere zeigen",
"homePickUpFewer": "Weniger zeigen",
feat(app): Home, the Library and the studyset sheets laid out as before Home: plain cards on the surface, 16 dp apart, the goal first and the Pomodoro timer after it in a new dashboard. The streak chip sits centred in the app bar, and its sheet shows the days inside a big flame and the week as marks over the weekdays' initials, with a word on today in a box. The week names its day as "Thursday, Oct 8" and its days carry no tooltip. The heatmap scrolls its weekdays with the weeks, outlines the days to come, and names a day's activities with its date. The goal card has a ring of 5 dp, a check once met and a pencil, and its sheet saves across its width with Remove goal below. Arranging puts an eye on each widget's corner and lifts the one picked up, with a tap the hand feels; with every widget hidden, Customise brings arranging back. The stepper moves to core, where the goal's sheet takes it too. Library: the counts line includes files (PDFs); Refresh in the app bar and pulling the list down sync now; a list that can't be read offers Retry, which reads it again; the star keeps its square corners. Studyset sheet: "Title *", the secondary title explained behind a question mark, Inherit as a box beside the colour, and the description in up to three lines with a chevron. Move sheet: round marks, the studyset itself marked as current, the top level only while it is inside another, archived studysets last under their heading, the destination named in the footer, and a new studyset to move into, made only once the move is. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-08 11:12:23 +02:00
"homeWidgetDeadlines": "PDF-Lesefristen",
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
"deadlinesTitle": "Lesefristen",
"deadlinesCurrent": "Aktuell",
"deadlinesUpcoming": "Demnächst",
"deadlinesProgress": "S. {furthest}/{target} · {when}",
"deadlinePassedShort": "Frist abgelaufen",
"deadlineDueTodayShort": "heute fällig",
"deadlineDaysLeft": "{days, plural, =1{noch 1 Tag} other{noch {days} Tage}}",
"deadlineToPageToday": "heute bis S. {page}",
"deadlineStartsIn": "Beginnt in {days, plural, =1{1 Tag} other{{days} Tagen}}",
"deadlinesPlaceholder": "Erscheint, sobald du Lesefristen hast",
"deadlinesOpenTimeline": "Zeitleiste öffnen",
"timelineTitle": "Lesefristen-Zeitleiste",
"timelineEmpty": "Noch keine Lesefristen",
"timelineEmptyHint": "Lege für ein PDF eine Lesefrist fest, um sie hier zu sehen.",
"timelineToday": "Heute",
"timelinePages": "S. {furthest}/{target}",
"chapterFinished": "„{chapter}“ fertig gelesen – die {count, plural, =1{Karte} other{{count} Karten}} lernen, die du erstellt hast?",
"chapterStudyNow": "Jetzt lernen",
"chapterDismiss": "Schließen",
"deadlineChapterLoading": "Kapitel werden geladen…",
"fileSizeKb": "{size} KB",
"fileSizeMb": "{size} MB",
"pdfPageShort": "S. {page}",
"ankiImportMenu": "Aus Anki importieren",
"ankiImportFileType": "Anki-Stapel",
"ankiImportTitle": "Anki-Stapel importieren",
"ankiImportOptionsTitle": "Wie sollen Unterstapel importiert werden?",
"ankiImportReading": "Stapel wird gelesen…",
"ankiImportSummary": "{cards, plural, =1{1 Karte.} other{{cards} Karten.}}",
"ankiImportSummaryDecks": "{cards, plural, =1{1 Karte} other{{cards} Karten}} in {decks} Unterstapeln.",
"ankiImportModeFlatten": "In dieses Lernset zusammenführen",
"ankiImportModeFlattenSubtitle": "Alle Karten hierher importieren und die Unterstapel ignorieren.",
"ankiImportModeSubStudysets": "Als Unter-Lernsets nachbilden",
"ankiImportModeSubStudysetsSubtitle": "Die Unterstapel nachbilden: Jeder Unterstapel wird ein verschachteltes Lernset.",
"ankiImportModeTag": "Karten nach Unterstapel taggen",
"ankiImportModeTagSubtitle": "Alle Karten hier behalten, getaggt mit jedem Unterstapel, aus dem sie stammen.",
"ankiImportProgress": "Lernfortschritt importieren",
"ankiImportProgressSubtitle": "Den Wiederholungsverlauf aus Anki übernehmen: Karten machen dort weiter, wo sie aufgehört haben. Neue Karten bleiben neu.",
"ankiImportMedia": "{count, plural, =1{Medien übernehmen (1 Datei)} other{Medien übernehmen ({count} Dateien)}}",
"ankiImportMediaSubtitle": "Bilder und Töne des Stapels auf den Karten behalten.",
"ankiImportMediaMayNotFit": "Die Dateien belegen {size} MB, mehr als die {left} MB, die dir noch bleiben: Was nicht hineinpasst, bleibt auf diesem Gerät, und deine anderen Geräte zeigen es nicht an.",
"ankiImportConfirm": "Importieren",
"ankiImportNotAPackage": "Das ist kein Anki-Stapel. Exportiere in Anki einen Stapel als .apkg-Datei und importiere diese.",
"ankiImportNewerFormat": "Dieser Stapel stammt aus einer neueren Anki-Version, die diese App noch nicht kennt. Exportiere ihn erneut mit „Ältere Anki-Versionen unterstützen“.",
"ankiImportUnreadable": "Dieser Stapel ist beschädigt und kann nicht gelesen werden.",
"ankiImportBrokeOff": "Der Import wurde abgebrochen. Die bis dahin importierten Karten bleiben erhalten.",
"ankiImported": "{count, plural, =1{1 Karteikarte aus Anki importiert.} other{{count} Karteikarten aus Anki importiert.}}",
"ankiImportedSubStudysets": "{count, plural, =1{1 Karte in Unter-Lernsets importiert.} other{{count} Karten in Unter-Lernsets importiert.}}",
"ankiImportedTagged": "{count, plural, =1{1 Karte importiert und nach Unterstapel getaggt.} other{{count} Karten importiert und nach Unterstapel getaggt.}}",
feat(app): a Pomodoro timer on Home, in the notification and in the top bar Home has a Pomodoro timer (decided 2026-10-07, after Goodtime): the profile it runs, chosen there while no timer is set, the time left of the phase, and Start, Pause or Resume, Skip and Stop. While studying, a small countdown sits in the study screen's header, and a tap pauses it or goes on. A phase that ends leads to the next, which starts by itself where the profile says so and otherwise waits, paused at its full length. Profiles follow the person to every device, in their settings (schema 4, still written as schema 3 while the profiles are as they come, so older apps go on reading the settings): Classic, 25 minutes of focus, 5 of break and 15 after four, and 52/17 without long breaks, built in; both can be changed, more added and deleted, from Home's card or from Settings. A profile can start breaks and focus by themselves, and keep the device quiet while focusing. The running timer is the device's own, kept in the person's folder: closed and opened again, the app catches up with the phases that ran out meanwhile. Android: the app's own foreground service (Kotlin, specialUse, as Goodtime does) shows an ongoing notification counting the phase down, with Pause or Resume, Skip and Stop; on Android 16 it is a Live Update, its progress bar the profile's cycle, each phase a segment, focus in cobalt and breaks in copper. An exact alarm (USE_EXACT_ALARM) alerts with sound and vibration when the phase ends, also with the app closed, and Do Not Disturb goes on while focusing once the person allowed it, the filter before given back afterwards. No notification plugin: flutter_local_notifications has Live Updates only in a prerelease that needs compileSdk 37; androidx.core 1.18, which the build resolved already, has every API needed. Linux, over the session bus (package:dbus, already in the build): where the desktop shows icons in its top bar (GNOME with the AppIndicator extension, which Ubuntu has built in; KDE) the timer counts down there, the buttons in the icon's menu, as a StatusNotifierItem written in Dart on the names and paths the snap's desktop plug allows; elsewhere a notification with the buttons says until when the phase runs. An alert with sound ends each phase while the app runs, and GNOME's banners stay off while focusing, through gsettings. xdg-desktop-portal's Background status, the planned fallback, serves Flatpaks only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:54:52 +02:00
"ankiImportFilesSkipped": "{count, plural, =1{1 Mediendatei konnte nicht importiert werden.} other{{count} Mediendateien konnten nicht importiert werden.}}",
"pomodoroTitle": "Pomodoro",
"pomodoroFocus": "Fokus",
"pomodoroShortBreak": "Kurze Pause",
"pomodoroLongBreak": "Lange Pause",
"pomodoroFocusOf": "Fokus {done} von {total}",
"pomodoroStart": "Starten",
"pomodoroPause": "Pausieren",
"pomodoroResume": "Fortsetzen",
"pomodoroSkip": "Überspringen",
"pomodoroStop": "Beenden",
"pomodoroPaused": "Pausiert",
"pomodoroPausedProfile": "Pausiert · {profile}",
"pomodoroClassic": "Klassisch",
"pomodoroUnnamed": "Profil ohne Namen",
"pomodoroProfiles": "Pomodoro-Profile",
"pomodoroChooseProfile": "Profil wählen",
"pomodoroAddProfile": "Profil hinzufügen",
"pomodoroEditProfile": "Profil bearbeiten",
"pomodoroName": "Name",
"pomodoroFocusLength": "Fokus",
"pomodoroShortBreakLength": "Kurze Pause",
"pomodoroLongBreakLength": "Lange Pause",
"pomodoroMinutes": "{count} Min.",
"pomodoroNoLongBreak": "Keine",
"pomodoroLongBreakAfter": "Fokusphasen vor einer langen Pause",
"pomodoroAutoStartBreaks": "Pausen von selbst starten",
"pomodoroAutoStartFocus": "Fokus nach einer Pause von selbst starten",
"pomodoroDoNotDisturb": "Nicht stören während des Fokus",
fix(app): the Pomodoro timer holds up with the app gone, asleep or edited A review of the timer found: - Stop in the notification with the app swiped away took the timer away there, but the app showed it again at its next start. The service now leaves a mark the app takes when it starts, and the timer it kept is forgotten. - Pause, Resume and Skip did nothing with the app gone: since Android 12 a service may not start an activity from a notification's button. The notification is posted again with buttons that open the app. - A timer kept while the app was closed was shown as it was before it caught up, so its ended phase alerted a second time. It is now caught up before it first shows. - Dart's timers sleep with the device, so a phase that ended while the phone or laptop slept went unnoticed until the app came back. While a phase runs the timer looks every 15 seconds, and on Android the alarm's receiver wakes it too. - On Linux, changes that came at once overlapped on the bus (an indicator registered twice, notifications left over, a ticking label never stopped); they now go one at a time. The indicator registers again when GNOME's watcher restarts, and with a watcher that only turns up later. - Changing the running profile could put the timer outside its cycle ("Focus 6 of 4", the Live Update's bar past its end); where it is stays within the new cycle, and a phase waiting at its full length takes the new length. A countdown past its end shows 00:00. - Writes of the kept timer go one at a time, and a closed timer arms no more timers. - The alert no longer renames the timer's notification channel, and a German hint said the alert came at the device's end. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 03:23:24 +02:00
"pomodoroDoNotDisturbHint": "Das Gerät bleibt still, während du dich konzentrierst; die Meldung am Ende des Fokus ist trotzdem zu hören.",
feat(app): a Pomodoro timer on Home, in the notification and in the top bar Home has a Pomodoro timer (decided 2026-10-07, after Goodtime): the profile it runs, chosen there while no timer is set, the time left of the phase, and Start, Pause or Resume, Skip and Stop. While studying, a small countdown sits in the study screen's header, and a tap pauses it or goes on. A phase that ends leads to the next, which starts by itself where the profile says so and otherwise waits, paused at its full length. Profiles follow the person to every device, in their settings (schema 4, still written as schema 3 while the profiles are as they come, so older apps go on reading the settings): Classic, 25 minutes of focus, 5 of break and 15 after four, and 52/17 without long breaks, built in; both can be changed, more added and deleted, from Home's card or from Settings. A profile can start breaks and focus by themselves, and keep the device quiet while focusing. The running timer is the device's own, kept in the person's folder: closed and opened again, the app catches up with the phases that ran out meanwhile. Android: the app's own foreground service (Kotlin, specialUse, as Goodtime does) shows an ongoing notification counting the phase down, with Pause or Resume, Skip and Stop; on Android 16 it is a Live Update, its progress bar the profile's cycle, each phase a segment, focus in cobalt and breaks in copper. An exact alarm (USE_EXACT_ALARM) alerts with sound and vibration when the phase ends, also with the app closed, and Do Not Disturb goes on while focusing once the person allowed it, the filter before given back afterwards. No notification plugin: flutter_local_notifications has Live Updates only in a prerelease that needs compileSdk 37; androidx.core 1.18, which the build resolved already, has every API needed. Linux, over the session bus (package:dbus, already in the build): where the desktop shows icons in its top bar (GNOME with the AppIndicator extension, which Ubuntu has built in; KDE) the timer counts down there, the buttons in the icon's menu, as a StatusNotifierItem written in Dart on the names and paths the snap's desktop plug allows; elsewhere a notification with the buttons says until when the phase runs. An alert with sound ends each phase while the app runs, and GNOME's banners stay off while focusing, through gsettings. xdg-desktop-portal's Background status, the planned fallback, serves Flatpaks only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:54:52 +02:00
"pomodoroDoNotDisturbDenied": "Die App darf dieses Gerät nicht stummschalten. Erlaube es in den Systemeinstellungen.",
"pomodoroDeleteProfile": "Profil löschen",
"pomodoroSummary": "{focus} Min. Fokus, {shortBreak} Min. Pause",
"pomodoroSummaryLong": "{focus} Min. Fokus, {shortBreak} Min. Pause, {longBreak} Min. nach {after}",
"pomodoroAlertFocusDone": "Zeit für eine Pause",
"pomodoroAlertBreakDone": "Zurück zum Fokus",
"pomodoroAlertStarts": "{phase} hat begonnen.",
"pomodoroAlertWaits": "{phase} wartet auf dich.",
"homeWidgetPomodoro": "Pomodoro-Timer",
"pomodoroAlerts": "Pomodoro-Meldungen",
"pomodoroUntil": "Bis {time}",
"pomodoroLeft": "Noch {left}",
"pathImportAtStep": "Schritt {step}: {problem}",
"pathImportNotJson": "Das ist kein JSON: {detail}",
"pathImportNoPath": "ein „path“-Objekt fehlt.",
"pathImportNoTitle": "der Pfad hat keinen „title“.",
"pathImportDescriptionNotText": "„description“ des Pfads ist kein Text.",
"pathImportNotAnObject": "kein Objekt.",
"pathImportUnknownStepType": "unbekannter „type“: {detail}.",
"pathImportRightOptionMissing": "die richtige Option {detail} fehlt unter den Optionen.",
"pathImportRightOptionsMissing": "eine genannte richtige Option fehlt unter den Optionen.",
"pathImportNoPairing": "kein „correct_pairing“.",
"pathImportPairingTargetMissing": "Elemente werden einem fehlenden Ziel zugeordnet: {detail}.",
"pathImportPairingIncomplete": "jedes Element braucht genau ein Ziel.",
"pathImportNoPassage": "keine „passage“.",
"pathImportBlanksMismatch": "für jedes ___ in der Passage braucht es ein Wort in „blanks“.",
"pathImportBlockWithoutType": "ein Block ohne „type“.",
"pathImportMalformedLevel": "eine Überschrift mit fehlerhafter Ebene.",
"pathImportMalformedListItem": "ein fehlerhafter Listenpunkt.",
"pathImportMalformedMath": "ein fehlerhafter Formelblock.",
"pathImportMalformedCode": "ein fehlerhafter Codeblock.",
"pathImportUnknownBlock": "ein unbekannter Block: {detail}.",
"pathImportTextlessBlock": "ein „{detail}“ ohne „text“ oder „runs“.",
"pathImportMalformedRun": "ein fehlerhafter Textabschnitt.",
"pathImportListExpected": "eine Liste wurde erwartet.",
"pathImportNotText": "„{detail}“ muss Text sein.",
"pathImportTooFew": "es braucht mindestens zwei „{detail}“.",
"pathImportMalformedNumber": "eine fehlerhafte Zahl.",
"pathImportTitleNotText": "ein Titel muss Text sein.",
"pathImportMalformedSource": "eine Quelle muss ein Objekt oder Text sein und ihre Teile Text.",
"pathImportMalformedTable": "eine Tabelle braucht „rows“ aus Zellen, jede so lang wie die erste.",
"pathImportMalformedCallout": "eine Hinweisbox mit fehlerhaftem „{detail}“.",
"pathImportNotInCallout": "ein „{detail}“ kann nicht in einer Hinweisbox stehen.",
"pomodoroTopBarHint": "Der Timer kann in der oberen Leiste von GNOME herunterzählen, mit seinen Knöpfen, sobald die Erweiterung „AppIndicator“ an ist.",
"pomodoroTopBarSetUp": "Einrichten",
"pomodoroTopBarDismiss": "Nicht mehr vorschlagen",
"cardBrowserTitle": "Karteikarten",
"cardBrowserTitleWithName": "{title} – Karteikarten",
"cardBrowserWithSubstudysets": "Mit seinen Unter-Lernsets",
"cardBrowserBrowse": "Durchsuchen",
"cardBrowserBrowseTooltip": "Karteikarten durchsuchen",
"cardBrowserStudy": "Lernen",
"cardBrowserEditor": "Editor",
"cardBrowserMore": "Mehr",
"cardBrowserImport": "Karteikarten importieren",
"cardBrowserGrid": "Raster",
"cardBrowserDetail": "Detail",
"cardBrowserSearch": "Suchen",
"cardBrowserSort": "Sortieren",
"cardBrowserFilter": "Filtern",
"cardBrowserSelect": "Auswählen",
"cardBrowserSortManual": "Eigene Reihenfolge",
"cardBrowserSortNewest": "Neueste zuerst",
"cardBrowserSortOldest": "Älteste zuerst",
"cardBrowserSortAlphabetical": "A–Z (Vorderseite)",
"cardBrowserSortDue": "Fällige zuerst",
"cardBrowserSearchHint": "Karteikarten durchsuchen",
"cardBrowserCloseSearch": "Suche schließen",
"cardBrowserClearQuery": "Suche leeren",
"cardBrowserFilterTitle": "Karteikarten filtern",
"cardBrowserFilterType": "Art",
"cardBrowserTypeAll": "Alle Karten",
"cardBrowserTypeFrontBack": "Nur Frage und Antwort",
"cardBrowserTypeMultipleChoice": "Nur Multiple Choice",
"cardBrowserTypeVocabulary": "Nur Wörter",
"cardBrowserTypeMatching": "Nur Zuordnungen",
"cardBrowserTypeMap": "Nur Karten",
"cardBrowserTypeCharacter": "Nur Schriftzeichen",
"cardBrowserFilterTag": "Tag",
"cardBrowserAllTags": "Alle Tags",
"cardBrowserFilterStatus": "Stand",
"cardBrowserStatusNew": "Neu",
"cardBrowserStatusLearning": "Im Lernen",
"cardBrowserStatusDue": "Fällig",
"cardBrowserStatusBuried": "Zurückgestellt",
"cardBrowserStatusReported": "Gemeldet",
"cardBrowserClearAll": "Alle zurücksetzen",
"cardBrowserApply": "Anwenden",
"cardBrowserEmptyTitle": "Noch keine Karteikarten",
"cardBrowserEmptyHint": "Erstelle welche, um sie hier zu durchsuchen.",
"cardBrowserCreate": "Karteikarten erstellen",
"cardBrowserNoMatches": "Keine Karteikarte passt",
"cardBrowserNoMatchesHint": "Versuche eine andere Suche oder einen anderen Filter.",
"cardBrowserClearFilters": "Suche und Filter zurücksetzen",
"cardBrowserRetry": "Erneut versuchen",
"cardBrowserPrevious": "Vorige",
"cardBrowserNext": "Nächste",
"cardBrowserBuried": "Zurückgestellt",
"cardBrowserSelectAll": "Alle auswählen",
"cardBrowserDeselectAll": "Auswahl aufheben",
"cardBrowserSelected": "{count} ausgewählt",
"cardBrowserRangeHintTouch": "Halte eine andere Karte gedrückt, um alles dazwischen auszuwählen.",
"cardBrowserRangeHintPointer": "Klicke mit gedrückter Umschalttaste auf eine andere Karte, um alles dazwischen auszuwählen.",
"cardBrowserMove": "Verschieben",
"cardBrowserAddTags": "Tags hinzufügen",
"cardBrowserRemoveTags": "Tags entfernen",
"cardBrowserResetProgress": "Fortschritt zurücksetzen",
"cardBrowserDelete": "Löschen",
"cardBrowserMoreActions": "Weitere Aktionen",
"cardBrowserDone": "Fertig",
"cardBrowserDeleted": "{count, plural, =1{1 Karteikarte gelöscht} other{{count} Karteikarten gelöscht}}",
"cardBrowserMoveTitle": "{count, plural, =1{1 Karteikarte verschieben nach} other{{count} Karteikarten verschieben nach}}",
"cardBrowserMoved": "{count, plural, =1{1 Karteikarte nach „{title}“ verschoben} other{{count} Karteikarten nach „{title}“ verschoben}}",
"cardBrowserMoveFailed": "Die Karteikarten ließen sich nicht verschieben und sind wieder, wo sie waren.",
"cardBrowserAddTagsTitle": "{count, plural, =1{Tags zu 1 Karteikarte hinzufügen} other{Tags zu {count} Karteikarten hinzufügen}}",
"cardBrowserAddTo": "{count, plural, =1{Zu 1 Karteikarte hinzufügen} other{Zu {count} Karteikarten hinzufügen}}",
"cardBrowserRemoveTagsTitle": "{count, plural, =1{Tags von 1 Karteikarte entfernen} other{Tags von {count} Karteikarten entfernen}}",
"cardBrowserRemoveFrom": "{count, plural, =1{Von 1 Karteikarte entfernen} other{Von {count} Karteikarten entfernen}}",
"cardBrowserNoTags": "Noch keine Tags. Erstelle Tags im Editor einer Karteikarte und weise sie dann hier zu.",
"cardBrowserNoTagsOnCards": "Die ausgewählten Karteikarten haben keine Tags.",
"cardBrowserTagsAdded": "{tags, plural, =1{1 Tag zu {count, plural, =1{1 Karteikarte} other{{count} Karteikarten}} hinzugefügt} other{{tags} Tags zu {count, plural, =1{1 Karteikarte} other{{count} Karteikarten}} hinzugefügt}}",
"cardBrowserTagsRemoved": "{tags, plural, =1{1 Tag von {count, plural, =1{1 Karteikarte} other{{count} Karteikarten}} entfernt} other{{tags} Tags von {count, plural, =1{1 Karteikarte} other{{count} Karteikarten}} entfernt}}",
"cardBrowserResetTitle": "{count, plural, =1{1 Karteikarte neu beginnen?} other{{count} Karteikarten neu beginnen?}}",
"cardBrowserResetMessage": "Sie gelten wieder als neu. Ihre Wiederholungen bleiben in deinem Verlauf und deinen Serien.",
"cardBrowserResetConfirm": "Zurücksetzen",
"cardBrowserReset": "{count, plural, =1{1 Karteikarte beginnt neu} other{{count} Karteikarten beginnen neu}}",
"studysetShare": "Teilen",
"studysetSharePrivate": "Teilen: privat",
"studysetSharePublished": "Teilen: veröffentlicht",
"publishTitle": "Veröffentlichen",
"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.",
"publishName": "Name",
"publishNameHint": "japanisch",
"publishLocation": "Zu finden unter {location}",
"publishNameFixed": "Fest, seit du zuerst veröffentlicht hast: andere verweisen darauf.",
"publishLicence": "Lizenz",
"publishLicenceNone": "Keine",
"publishLicenceOpen": "Erlaubt das Veröffentlichen.",
"publishLicenceNoDerivatives": "Erlaubt das Veröffentlichen, wie es ist: Lernende behalten ihre Änderungen für sich.",
"publishLicenceClosed": "Erlaubt keine Weitergabe. Wähle unter Bearbeiten eine andere.",
"publishLicenceNotOpen": "Die Lizenzen dieser Lernsets erlauben keine Weitergabe: {titles}",
"publishNotes": "Was sich geändert hat",
"publishNotesHint": "Neu in dieser Veröffentlichung …",
"publishDescription": "Beschreibung auf Entdecken",
"publishDescriptionAdd": "Beschreibung hinzufügen",
"publishDescriptionHelp": "Was andere auf Entdecken sehen, bevor sie es hinzufügen. Sie beginnt mit der des Lernsets; das Lernset behält seine eigene, wie sie ist.",
"publishReleases": "Veröffentlichungen",
"publishRelease": "v{version} · {date}",
"publishButton": "v{version} veröffentlichen",
"publishNoProfile": "Eine Veröffentlichung nennt dich mit deinem öffentlichen Profil. Lege zuerst eines an.",
"publishMakeProfile": "Öffentliches Profil anlegen",
"publishConflicts": "Diese wurden auf zwei Geräten verschieden geändert. Kläre sie zuerst:",
"publishConflictsElsewhere": "Einige Karteikarten, Notizen oder Schritte wurden auf zwei Geräten verschieden geändert. Synchronisiere, dann versuche es noch einmal.",
"publishUntitled": "Ohne Titel",
"publishFilesMissing": "Einige Dateien sind noch nicht auf deiner Instanz angekommen. Versuche es gleich noch einmal.",
"publishNothingChanged": "Seit der letzten Veröffentlichung hat sich nichts geändert.",
"publishBusy": "Dieses Lernset wird schon veröffentlicht. Versuche es gleich noch einmal.",
"publishSlugInvalid": "Kleinbuchstaben, Ziffern und Bindestriche, am Anfang ein Buchstabe oder eine Ziffer.",
"publishSlugTaken": "Ein anderes deiner Lernsets hat diesen Namen.",
"publishNotesTooLong": "Höchstens 5.000 Zeichen.",
"publishDone": "v{version} veröffentlicht.",
"publishFailed": "Deine Instanz war nicht erreichbar. Nichts wurde veröffentlicht.",
"publishUnreachable": "Das Veröffentlichen ist gerade nicht erreichbar.",
"publishRetry": "Erneut versuchen",
"publishCopyLocation": "Adresse kopieren",
"publishLocationCopied": "Adresse kopiert.",
"publishedField": "Veröffentlichung",
"publishedVersion": "v{version}",
"exploreSearch": "Titel und Namen durchsuchen",
"exploreLanguages": "Sprachen",
"exploreAnyLanguage": "Alle",
"exploreLanguagePair": "{front} → {back}",
"exploreKinds": "Inhalt",
"exploreKindsChosen": "{count, plural, =1{1 Art Inhalt} other{{count} Arten Inhalt}}",
"exploreKindCards": "Karteikarten",
"exploreKindNotes": "Notizen",
"exploreKindPaths": "Lernpfade",
"exploreKindPdfs": "PDFs",
"exploreKindsIntro": "Nur Lernsets, die all das enthalten.",
"exploreLicense": "Lizenz",
"exploreLicenseChosen": "Lizenz: {count}",
"exploreLicenseIntro": "Nur Lernsets, deren Lizenz dir jedes davon erlaubt. Alles hier darf kopiert und weitergegeben werden.",
"exploreLicenseAdapt": "Bearbeiten",
"exploreLicenseAdaptDetail": "Verändern und das Ergebnis weitergeben: keine Lizenzen mit NoDerivatives.",
"exploreLicenseCommercial": "Kommerziell nutzen",
"exploreLicenseCommercialDetail": "Für bezahlte Arbeit oder Unterricht nutzen: keine Lizenzen mit NonCommercial.",
"exploreClearFilters": "Filter zurücksetzen",
"exploreNothingMatches": "Nichts Veröffentlichtes passt dazu.",
"exploreBy": "von {author}",
"exploreRelease": "v{version} · {date}",
"exploreMaterial": "Material",
"exploreLatestRelease": "Neueste Veröffentlichung: v{version} · {date}",
"exploreAddToLibrary": "Zur Bibliothek hinzufügen",
"exploreAdd": "Hinzufügen",
"exploreInLibraryShort": "In Bibliothek",
"exploreInLibrary": "In deiner Bibliothek",
"exploreYours": "Deins",
"exploreAddCopyAnyway": "Trotzdem eine Kopie hinzufügen",
"explorePercent": "{percent} %",
"exploreAdded": "Zu deiner Bibliothek hinzugefügt.",
"exploreOpen": "Öffnen",
"exploreNeedsNewerApp": "Dieses Lernset braucht eine neuere Version der App.",
"exploreFailed": "Deine Instanz war nicht erreichbar. Versuche es noch einmal.",
"exploreNotGivenOut": "Deine Instanz konnte dieses Lernset nicht herausgeben. Versuche es später noch einmal.",
"exploreNotWritten": "Es konnte auf diesem Gerät nicht zu deiner Bibliothek hinzugefügt werden.",
"exploreUnreachable": "Entdecken ist gerade nicht erreichbar.",
"exploreRetry": "Erneut versuchen",
"exploreMore": "Mehr anzeigen",
"exploreNoDescription": "Keine Beschreibung.",
"exploreReadLicence": "Lizenz lesen",
"publishWithdraw": "Aus Entdecken nehmen",
"publishWithdrawTitle": "Aus Entdecken nehmen?",
"publishWithdrawMessage": "Niemand kann es dann noch hinzufügen, und Kopien bekommen keine Aktualisierungen. Seine Veröffentlichungen bleiben, wie sie sind; veröffentlichst du es wieder, ist es zurück.",
"publishWithdrawn": "Zurückgezogen · Kopien bekommen keine Aktualisierungen",
"publishWithdrawnDone": "Aus Entdecken genommen.",
"copyUpdateOut": "v{version} ist da: {summary}.",
"copyUpdateChanged": "{count} geändert",
"copyUpdateAdded": "{count} neu",
"copyUpdateWithdrawn": "{count} zurückgezogen",
"copyUpdateNothing": "an deiner Kopie ändert sich nichts",
"copyUpdate": "Aktualisieren",
"copyUpdated": "Auf v{version} aktualisiert.",
"copyUpdatedToSettle": "{count, plural, =1{Bei einem hast du dort auch etwas geändert: öffne es, um zu wählen.} other{Bei {count} hast du dort auch etwas geändert: öffne sie, um zu wählen.}}",
"copyUpdateFailed": "Deine Instanz war nicht erreichbar. Versuche es noch einmal.",
"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, 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.",
"publishLicenseMustStay": "Sein Original verlangt, dass Bearbeitungen unter {license} bleiben: wähle sie unter Bearbeiten, für jedes Lernset darin.",
"exploreBasedOn": "nach {location}",
"feedbackReport": "Meldung",
"feedbackSuggestion": "Vorschlag",
"feedbackOnStudyset": "Zum Lernset",
"feedbackOnCard": "Zu einer Karteikarte",
"feedbackOnNote": "Zu einer Notiz",
"feedbackOnStep": "Zu einem Schritt",
"feedbackByOn": "{name} · {date}",
"feedbackStatusClosed": "Geschlossen",
"feedbackStatusAccepted": "Angenommen",
"feedbackStatusDeclined": "Abgelehnt",
"feedbackStatusHidden": "Verborgen",
"feedbackReplyHint": "Schreib eine Antwort …",
"feedbackSend": "Senden",
"feedbackAccept": "Annehmen",
"feedbackDecline": "Ablehnen",
"feedbackClose": "Schließen",
"feedbackReopen": "Wieder öffnen",
"feedbackHide": "Verbergen",
"feedbackShow": "Zeigen",
"feedbackBlock": "{name} blockieren",
"feedbackBlockTitle": "{name} blockieren?",
"feedbackBlockMessage": "Was zu deinen Lernsets von dort kam und kommt, sieht dann niemand außer der Person selbst.",
"feedbackProposed": "Vorgeschlagen",
"feedbackYours": "Jetzt bei dir",
"feedbackAuthor": "Original",
"feedbackAccepted": "In dein Lernset übernommen. Die nächste Veröffentlichung nennt, wer es vorgeschlagen hat.",
"feedbackDecided": "Erledigt.",
"feedbackReplied": "Antwort gesendet.",
"feedbackBlocked": "Blockiert.",
"feedbackNotTaken": "Das lässt sich nicht übernehmen: worum es geht, ist nicht mehr in deinem Lernset.",
"feedbackFailed": "Deine Instanz war nicht erreichbar. Versuche es noch einmal.",
"feedbackUnreachable": "Meldungen und Vorschläge sind gerade nicht erreichbar.",
"feedbackRetry": "Erneut versuchen",
"inboxTitle": "Posteingang",
feat(discussions): questions on published studysets, answered by learners A learner asks about a published studyset, a topic in it, or one card, note or step of a release, and others answer, as on Stack Exchange (ADR 0013): questions and answers in the app's editor without images, sounds or videos, comments of up to 600 characters under the question and each answer. There are no votes: the asker accepts an answer, which comes first, then the oldest; the author's posts are marked. The instance reads from git's file list which topics a question's target sits in, so a topic lists what is asked within it and below it. Posts live in two server-only tables, written through endpoints, so the synced tables stay as they are and v0.17.0 keeps syncing. Everyone signed in reads; writing needs an identity and a public profile; the studyset's author hides posts and blocks people with feedback's blocks; a withdrawn studyset takes no new questions; anyone writes at most 30 posts an hour. A post with others' replies under it is emptied when deleted, else deleted; deletePerson deletes what a person wrote the same way, and a published studyset's deletion takes its discussions with it. The migration adds Serverpod's gen_random_uuid_v7(), discussion_post and discussion_seen with their indexes and cascading foreign keys, and changes nothing else. In the app, discussions open from a copy's studyset or topic menu, a studied card's "Ask about this", Explore's summary and the Publish sheet; the Profile tab's inbox lists those the person follows, and its count includes what is new in them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-15 23:52:40 +02:00
"inboxIntro": "Fragen und Antworten, Meldungen und Vorschläge zu deinen veröffentlichten Lernsets und die, in denen du geschrieben hast.",
"inboxEmpty": "Noch nichts.",
"studysetFeedback": "Meldungen und Vorschläge",
"studysetFeedbackEmpty": "Noch hat niemand etwas gemeldet oder vorgeschlagen.",
"reportToAuthor": "Fehler im Original melden",
feat(discussions): questions on published studysets, answered by learners A learner asks about a published studyset, a topic in it, or one card, note or step of a release, and others answer, as on Stack Exchange (ADR 0013): questions and answers in the app's editor without images, sounds or videos, comments of up to 600 characters under the question and each answer. There are no votes: the asker accepts an answer, which comes first, then the oldest; the author's posts are marked. The instance reads from git's file list which topics a question's target sits in, so a topic lists what is asked within it and below it. Posts live in two server-only tables, written through endpoints, so the synced tables stay as they are and v0.17.0 keeps syncing. Everyone signed in reads; writing needs an identity and a public profile; the studyset's author hides posts and blocks people with feedback's blocks; a withdrawn studyset takes no new questions; anyone writes at most 30 posts an hour. A post with others' replies under it is emptied when deleted, else deleted; deletePerson deletes what a person wrote the same way, and a published studyset's deletion takes its discussions with it. The migration adds Serverpod's gen_random_uuid_v7(), discussion_post and discussion_seen with their indexes and cascading foreign keys, and changes nothing else. In the app, discussions open from a copy's studyset or topic menu, a studied card's "Ask about this", Explore's summary and the Publish sheet; the Profile tab's inbox lists those the person follows, and its count includes what is new in them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-15 23:52:40 +02:00
"discussionsTitle": "Diskussionen",
"discussionsSearch": "Fragen durchsuchen",
"discussionsAsk": "Frage stellen",
"discussionsEmpty": "Noch keine Fragen",
"discussionsEmptyHint": "Stell die erste: zum Lernset, zu einem Thema oder zu einer seiner Karteikarten.",
"discussionsNoMatch": "Kein Fragentitel sagt das.",
"discussionsMore": "Mehr zeigen",
"discussionsUnreachable": "Die Diskussionen sind gerade nicht erreichbar.",
"discussionsAnswers": "{count, plural, =0{Keine Antworten} =1{1 Antwort} other{{count} Antworten}}",
"@discussionsAnswers": {"placeholders": {"count": {"type": "int"}}},
"discussionsBy": "{name} · {date}",
"@discussionsBy": {"placeholders": {"name": {"type": "String"}, "date": {"type": "String"}}},
"discussionsSomeone": "Jemand",
"discussionsDeletedQuestion": "Gelöschte Frage",
"discussionsHidden": "Ausgeblendet",
"discussionsAboutCard": "Zu einer Karteikarte",
"discussionsAboutNote": "Zu einer Notiz",
"discussionsAboutStep": "Zu einem Schritt",
"discussionsAccepted": "Angenommen",
"discussionsOn": "Zu {title}",
"@discussionsOn": {"placeholders": {"title": {"type": "String"}}},
"discussionRefusalNoIdentity": "Um zu fragen und zu antworten, melde dich im Profil mit einer Identität an: Beiträge zeigen, wer sie geschrieben hat.",
"discussionRefusalNoProfile": "Um zu fragen und zu antworten, leg im Profil ein öffentliches Profil an: Beiträge zeigen, wer sie geschrieben hat.",
"discussionRefusalBlocked": "Wer dieses Lernset veröffentlicht hat, lässt dich zu seinen Lernsets nichts schreiben.",
"discussionRefusalWithdrawn": "Dieses Lernset wurde aus Entdecken genommen: Was hier steht, bleibt, aber Neues wird nicht gefragt.",
"discussionRefusalNotInRelease": "Das ist nicht mehr in der Veröffentlichung des Lernsets.",
"discussionRefusalEmpty": "Schreib zuerst etwas.",
"discussionRefusalTooLong": "Das ist länger als erlaubt.",
"discussionRefusalTooMany": "Du hast in der letzten Stunde viel geschrieben. Versuch es etwas später noch einmal.",
"discussionRefusalWithFiles": "Bilder und Töne lassen sich nicht posten: Deine Dateien gehören dir allein, also sähe sie niemand sonst.",
"discussionFailed": "Die Instanz ist nicht erreichbar. Versuch es noch einmal, sobald du online bist.",
"discussionTitle": "Frage",
"discussionMissing": "Diese Frage gibt es nicht mehr.",
"discussionDeleted": "Das wurde gelöscht.",
"discussionEdited": "bearbeitet",
"discussionWriteAnswer": "Antwort schreiben",
"discussionYourAnswer": "Deine Antwort",
"discussionEditHeading": "Bearbeiten",
"discussionTitleField": "Titel",
"discussionTitleHint": "Was möchtest du wissen?",
"discussionPost": "Posten",
"discussionComment": "Kommentar hinzufügen",
"discussionCommentHint": "Eine kurze Bemerkung",
"discussionAccept": "Annehmen",
"discussionUnaccept": "Zurücknehmen",
"discussionMenu": "Mehr",
"discussionMenuEdit": "Bearbeiten",
"discussionMenuDelete": "Löschen",
"discussionMenuHide": "Ausblenden",
"discussionMenuShow": "Wieder zeigen",
"discussionMenuBlock": "{name} blockieren",
"@discussionMenuBlock": {"placeholders": {"name": {"type": "String"}}},
"discussionDeleteTitle": "Das löschen?",
"discussionDeleteBody": "Was andere darunter geantwortet haben, bleibt, ohne deinen Text und Namen.",
"discussionAnswered": "Antwort gepostet.",
"discussionCommented": "Kommentar gepostet.",
"discussionSaved": "Gespeichert.",
"discussionDeletedDone": "Gelöscht.",
"discussionAcceptedDone": "Antwort angenommen.",
"discussionUnacceptedDone": "Jetzt ist keine Antwort angenommen.",
"discussionHiddenDone": "Ausgeblendet: Nur wer es geschrieben hat und du sehen es.",
"discussionShownDone": "Wieder sichtbar.",
"discussionBlockedDone": "Blockiert: Was diese Person zu deinen Lernsets schreibt, sieht nur sie selbst.",
"discussionAskAbout": "Dazu fragen",
"inboxDiscussions": "Diskussionen",
"inboxFeedback": "Meldungen und Vorschläge",
"inboxDiscussionsEmpty": "Noch keine Diskussionen.",
"cardReportToAuthor": "Auch im Original melden",
"cardReportToAuthorHint": "Öffentlich: alle, die es lernen, lesen es, mit deinem öffentlichen Profil.",
"feedbackReportSent": "Im Original gemeldet.",
"suggestToAuthor": "Dem Original vorschlagen",
"suggestHint": "Was es ändert, und warum",
"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.",
"kanjiExampleWords": "Wörter damit",
feat(assistant)!: no hand-off and no connector; the field searches the web (ADR 0022) The developer decided on 23 Oct to drop the hand-off to an AI assistant outside the app, and Claude's connector with it, in v0.19.0, the app and the server together: build 22 raises minimumAppBuild anyway, so no app calling the connector's endpoints uses the instance after it. An instance is to have one way to an assistant, its operator's (ADR 0021, proposed). The app: the field at the foot of Home, and the button in the Library, on a studyset and while studying, search the web alone, through the engine chosen in Settings or Android's own search, with the parts of a card the person picks; a studyset's name and description are never offered. Gone: the assistants a question opened in (AiAssistant, AssistantHandOff), the switch between them and the web, Settings' choice of assistant, Connect Claude with its route, cubit, repository and gateway, and their texts. A settings file from before keeps the old keys until the next change of a setting writes it anew; nothing reads them. The server: lib/src/assistant/ (MCP, its OAuth, the five tools, connect codes and tokens), AssistantEndpoint, the daily forgetting of the connector's secrets (its scheduled call cancelled at start), its lines in the deletion hook, instance.info().assistantConnectorUrl (nullable, so an older app reads it as none), and Caddy's forwarding of /mcp, /oauth/* and /.well-known/oauth-*. The migration drops the connector's five tables, children first: DROP TABLE "assistant_token" CASCADE; -- tokens of a connection DROP TABLE "assistant_grant" CASCADE; -- OAuth codes of a connection DROP TABLE "assistant_connection" CASCADE; -- a person's connected client DROP TABLE "assistant_connect_code" CASCADE; DROP TABLE "assistant_client" CASCADE; -- OAuth clients registered No other table references them, so CASCADE drops only their own foreign keys. For the minute between the maintenance run and the switch, the old server answers the connector with errors and fails to delete an account (its hook still deletes from these tables); ADR 0022 says so. BREAKING CHANGE: a connected Claude gets no answer from the deploy on, and the app no longer opens a question in an AI assistant. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-23 15:33:53 +02:00
"settingsAssistant": "Websuche",
"settingsAskAssistant": "Aus der App im Web suchen",
"settingsAskAssistantSubtitle": "Aus, bis du es einschaltest. Fügt ein Feld auf der Startseite und einen Knopf in der Bibliothek, bei einem Lernset und beim Lernen hinzu. Eine Frage öffnet sich als Websuche, nur mit den Teilen einer Karteikarte, die du wählst; von hier aus wird nichts gesendet.",
"assistantOpen": "Im Web suchen",
"assistantClose": "Schließen",
"assistantBackToConversation": "Zurück zur Unterhaltung",
feat(assistant): Claude reads studysets through a connector on the instance A Claude plan can't drive a chat inside another app, but Claude's apps (every plan, the phone apps too) can add a remote MCP server as a custom connector. The instance now is one (ADR 0006): Serverpod's web server serves the MCP endpoint (/mcp, Streamable HTTP, JSON answers, no sessions) with five read-only tools over the person's own synced rows (their studysets, a studyset's cards and notes a page at a time, a search across cards, a note, their progress), and the OAuth the specification asks for: protected resource and authorization server metadata, dynamic client registration, authorization code with PKCE (S256 only), tokens bound to the resource, iss in the response, refresh tokens that rotate. Caddy forwards these paths alone to the web server, which production now runs on 8082. People connect with a code from the app (Settings › Assistant › Connect Claude): eight Crockford characters, valid for ten minutes and once, typed on the authorization page, which names where it returns to, loads nothing from elsewhere and may not be framed. Anonymous people can connect too. Codes and tokens are kept only as SHA-256 hashes; an access token lives an hour, a refresh token 30 days. The app lists what is connected and disconnects it, which ends its tokens at once; deleting the account deletes it; a daily job forgets what expired and clients nobody connected within a week. InstanceInfo says where the connector is (additive); the migration only adds server-only tables, so devices and older apps are untouched. The handlers take plain requests, so the integration tests drive the whole flow (registration, the code, tokens, refresh, the tools, another person's content, disconnecting, expiry, pruning, account deletion) without a web server. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-10 12:13:00 +02:00
feat(assistant): search the web too, and choose what goes along The assistant's field now has a switch at its start: a question goes to Claude or into a web search, and the field remembers which. A web search opens the chosen engine's results: on Android the device's own web search by default (ACTION_WEB_SEARCH, answered by its default browser or search app; Brave Search where nothing answers), elsewhere Brave Search by default; Settings › Assistant › Search engine offers Ecosia, DuckDuckGo, Startpage, Qwant, Google, Bing, or one's own address with %s where the question goes. Above the field, chips offer what the question is about: a card's front, back, each hint and its explanation, the studyset's name and description. None is chosen, so only what the person picks goes along, each part cut at 600 characters; Claude gets the question and a compact line per chosen part, a web search the question and the chosen text, never the studyset's name. A chosen chip alone is enough to send. The old sentences around every question (where it was asked, the connector) are gone: they cost tokens for nothing unless the studyset is chosen. On a studyset's screen the button now stands above the bottom bar, as in the Library: unfolded inside the bar, its chips lay outside the bar's bounds, where taps don't land. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-10 14:41:36 +02:00
"assistantLineFront": "Vorderseite: {text}",
"assistantLineBack": "Rückseite: {text}",
"assistantLineHint": "Hinweis {number}: {text}",
"assistantLineExplanation": "Erklärung: {text}",
"assistantLineDescription": "Beschreibung: {text}",
"assistantChipStudyset": "Lernset: {title}",
"assistantChipImage": "Bild {number}",
feat(assistant): search the web too, and choose what goes along The assistant's field now has a switch at its start: a question goes to Claude or into a web search, and the field remembers which. A web search opens the chosen engine's results: on Android the device's own web search by default (ACTION_WEB_SEARCH, answered by its default browser or search app; Brave Search where nothing answers), elsewhere Brave Search by default; Settings › Assistant › Search engine offers Ecosia, DuckDuckGo, Startpage, Qwant, Google, Bing, or one's own address with %s where the question goes. Above the field, chips offer what the question is about: a card's front, back, each hint and its explanation, the studyset's name and description. None is chosen, so only what the person picks goes along, each part cut at 600 characters; Claude gets the question and a compact line per chosen part, a web search the question and the chosen text, never the studyset's name. A chosen chip alone is enough to send. The old sentences around every question (where it was asked, the connector) are gone: they cost tokens for nothing unless the studyset is chosen. On a studyset's screen the button now stands above the bottom bar, as in the Library: unfolded inside the bar, its chips lay outside the bar's bounds, where taps don't land. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-10 14:41:36 +02:00
"assistantHintWeb": "Im Web suchen…",
"assistantSendWeb": "Suchen",
"assistantSearchFailed": "Die Suche ließ sich nicht öffnen.",
"assistantChoose": "Wer antwortet",
"assistantWebSearch": "Websuche",
"assistantChooseAgree": "Erst lesen und zustimmen",
"assistantChooseOwn": "Mit deinem Schlüssel",
"assistantHintAsk": "{name} fragen…",
"assistantSendAsk": "Fragen",
"assistantScope": "Was er nachschlagen darf",
"assistantEffortTooltip": "Denkaufwand: wie viel er nachdenkt, bevor er antwortet",
"assistantEffortDefault": "{effort} (Standard)",
"assistantEffortMenu": "Denkaufwand: {effort}",
"assistantContext": "Was mitgeht",
"assistantContextReach": "Wie weit er schaut",
"assistantContextParts": "Mitschicken",
"assistantContextChosen": "{count, plural, =1{1 Teil} other{{count} Teile}}",
"assistantContextDone": "Fertig",
"assistantAttach": "Foto oder Datei anhängen",
"assistantAttachFile": "Datei anhängen",
"assistantAttachFiles": "Bilder, PDFs und Textdateien",
"assistantAttachNotRead": "{name} kann nicht mit: nur Bilder, PDFs und Textdateien können es.",
"assistantAttachTooLarge": "{name} ist größer als 5 MB, mehr als Assistenten annehmen.",
"assistantAttachNoImages": "{name} ist ein Bild, und {assistant} liest keine.",
"assistantAttachRemove": "Entfernen",
"assistantSpeak": "Frage sprechen",
"assistantStopListening": "Zuhören beenden",
"assistantSpeechUnavailable": "Dieses Gerät kann gerade nicht zuhören. Prüfe, ob die App das Mikrofon nutzen darf und die Spracherkennung an ist.",
"assistantScopeTicked": "Nur was ich auswähle",
"assistantScopeStudyset": "Dieses Lernset",
"assistantScopeTree": "Ganzer Baum",
"assistantScopeLibrary": "Bibliothek",
"assistantScopeTickedLong": "Nur was ich mitschicke",
"assistantScopeStudysetLong": "Dieses Lernset mit seinen Themen",
"assistantScopeTreeLong": "Sein ganzer Baum, von oben",
"assistantScopeLibraryLong": "Meine ganze Bibliothek",
"assistantScopePrivate": "Private Lernsets einbeziehen",
"assistantScopeWithPrivate": "{scope}, auch private",
"assistantHistory": "Unterhaltungen",
"assistantHistoryEmpty": "Noch keine Unterhaltungen",
"assistantHistoryEmptyHint": "Frag einen Assistenten im Feld unten.",
"assistantHistoryExplained": "Karte erklärt",
"assistantHistoryChecked": "Auf Fehler geprüft",
"assistantHistoryDelete": "Unterhaltung löschen",
"assistantHistoryDeleted": "Unterhaltung gelöscht",
"assistantGone": "Ein nicht mehr angebotener Assistent",
"assistantGoneNote": "Dieser Assistent wird dir hier nicht mehr angeboten, also lässt sich die Unterhaltung nicht fortsetzen.",
"assistantNotKept": "Nicht gespeichert: Dieses Gerät kann Unterhaltungen nicht verschlüsseln, also ist diese weg, sobald du sie schließt.",
"assistantFollowUp": "Weiter fragen…",
"assistantStop": "Anhalten",
"assistantAnswering": "Antwortet…",
"assistantStopped": "Vor der Antwort angehalten.",
"assistantStoppedEarly": "Er hat zu oft nachgeschlagen und ohne Antwort aufgehört.",
"assistantNoAnswer": "Keine Antwort.",
"assistantCopyAnswer": "Antwort kopieren",
"assistantCopied": "Antwort kopiert",
"assistantLookedUpStudysets": "{count, plural, =0{Keine Lernsets} =1{1 Lernset} other{{count} Lernsets}} aufgelistet",
"assistantLookedUpCards": "Karten nach „{query}“ durchsucht: {count, plural, =0{keine gefunden} =1{1 gefunden} other{{count} gefunden}}",
"assistantLookedUpNotes": "Notizen nach „{query}“ durchsucht: {count, plural, =0{keine gefunden} =1{1 gefunden} other{{count} gefunden}}",
"assistantLookedUpNote": "Eine Notiz gelesen",
"assistantLookedUpNoNote": "Eine Notiz gesucht, keine gefunden",
"assistantListedPdfs": "{count, plural, =0{Keine PDFs} =1{1 PDF} other{{count} PDFs}} aufgelistet",
"assistantLookedUpPdfs": "PDFs nach „{query}“ durchsucht: {count, plural, =0{keine gefunden} =1{1 gefunden} other{{count} gefunden}}",
"assistantLookedUpPage": "Eine Seite einer PDF gelesen",
"assistantLookedUpNoPage": "Eine Seite einer PDF gesucht, nicht lesbar",
"assistantShownImage": "Hat ein Bild gesehen, das du freigegeben hast",
"assistantNotShownImage": "Hat ein Bild nicht gesehen",
"assistantShownPage": "Hat eine Seite gesehen, die du freigegeben hast",
"assistantNotShownPage": "Hat eine Seite nicht gesehen",
"assistantImageAskCard": "{name} möchte Bild {number} der Karte „{title}“ sehen.",
"assistantImageAskPage": "{name} möchte Seite {page} von „{title}“ als Bild sehen.",
"assistantImageShow": "Zeigen",
"assistantImageDontShow": "Nicht zeigen",
"assistantPrivateTitle": "{count, plural, =1{Ein privates Lernset an {name} senden?} other{Private Lernsets an {name} senden?}}",
"assistantPrivateGranted": "{count, plural, =1{Es ist Ende-zu-Ende-verschlüsselt, sodass nicht einmal {instance} es lesen kann. Was {name} darin nachschlägt oder was du daraus auswählst, geht durch {instance}, das nichts davon aufbewahrt, an {host}, wo es nach den Bedingungen des Anbieters gelesen wird.} other{Sie sind Ende-zu-Ende-verschlüsselt, sodass nicht einmal {instance} sie lesen kann. Was {name} darin nachschlägt oder was du daraus auswählst, geht durch {instance}, das nichts davon aufbewahrt, an {host}, wo es nach den Bedingungen des Anbieters gelesen wird.}}",
"assistantPrivateOwn": "{count, plural, =1{Es ist Ende-zu-Ende-verschlüsselt, sodass nicht einmal die Instanz es lesen kann. Was {name} darin nachschlägt oder was du daraus auswählst, geht direkt an {host}, wo es nach den Bedingungen des Anbieters gelesen wird.} other{Sie sind Ende-zu-Ende-verschlüsselt, sodass nicht einmal die Instanz sie lesen kann. Was {name} darin nachschlägt oder was du daraus auswählst, geht direkt an {host}, wo es nach den Bedingungen des Anbieters gelesen wird.}}",
"assistantPrivateOnce": "Das wird einmal je Lernset und Assistent gefragt. Zurücknehmen kannst du es über das Schloss beim Lernset.",
"assistantPrivateTerms": "Bedingungen des Anbieters",
"assistantPrivateSend": "Senden",
"assistantPrivateMark": "{name} darf dieses private Lernset bekommen",
"studysetPrivacyAssistants": "Assistenten, an die es gehen darf",
"studysetPrivacyTakeBack": "Zurücknehmen",
"studysetPrivacyGrammar": "Rechtschreibung und Grammatik",
"studysetPrivacyGrammarChecked": "Beim Schreiben von {instance} geprüft",
"studysetPrivacyGrammarNotChecked": "Beim Schreiben nicht geprüft",
"studyMissedExplain": "Nicht gewusst? {name} kann erklären, warum.",
"assistantExplain": "Erklären",
"assistantExplainQuestion": "Warum ist das die Antwort?",
"studyTypedWhy": "Warum?",
"assistantWhyTyped": "Ich habe „{typed}“ getippt. Warum stimmt das nicht?",
"grammarNoSuggestions": "Keine Vorschläge",
"grammarNothingFound": "Keine Rechtschreib- oder Grammatikfehler gefunden",
"grammarPrivateAsk": "Rechtschreibung und Grammatik in diesem privaten Lernset prüfen? Während geprüft wird, geht, was du hier schreibst, lesbar an {instance}, ein Absatz nach dem anderen; weder die Instanz noch ihr LanguageTool behält etwas davon. Gefragt wird einmal für dieses Lernset und seine Themen.",
"grammarPrivateNotHere": "Hier nicht",
"grammarPrivateCheckHere": "Hier prüfen",
"proposalsTitle": "Karteikarten von {name}",
"proposalsWriting": "{name} schreibt Karteikarten …",
"proposalsNone": "{name} hat keine Karteikarten vorgeschlagen.",
"proposalsCheck": "Prüf jede Karte, bevor du sie hinzufügst: Ein Assistent kann sich irren.",
"proposalsEdit": "Karteikarte bearbeiten",
"proposalsAdd": "{count, plural, =0{Karteikarten hinzufügen} =1{1 Karteikarte hinzufügen} other{{count} Karteikarten hinzufügen}}",
"proposalsAdded": "{count, plural, =1{1 Karteikarte hinzugefügt} other{{count} Karteikarten hinzugefügt}}",
"proposalsFromNote": "Karteikarten aus dieser Notiz",
"proposalsFromPage": "Aus dieser Seite",
"proposalsFromSelection": "Aus der Auswahl",
feat(assistant): search the web too, and choose what goes along The assistant's field now has a switch at its start: a question goes to Claude or into a web search, and the field remembers which. A web search opens the chosen engine's results: on Android the device's own web search by default (ACTION_WEB_SEARCH, answered by its default browser or search app; Brave Search where nothing answers), elsewhere Brave Search by default; Settings › Assistant › Search engine offers Ecosia, DuckDuckGo, Startpage, Qwant, Google, Bing, or one's own address with %s where the question goes. Above the field, chips offer what the question is about: a card's front, back, each hint and its explanation, the studyset's name and description. None is chosen, so only what the person picks goes along, each part cut at 600 characters; Claude gets the question and a compact line per chosen part, a web search the question and the chosen text, never the studyset's name. A chosen chip alone is enough to send. The old sentences around every question (where it was asked, the connector) are gone: they cost tokens for nothing unless the studyset is chosen. On a studyset's screen the button now stands above the bottom bar, as in the Library: unfolded inside the bar, its chips lay outside the bar's bounds, where taps don't land. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MMm7usAo6q9ZZRoPkWjoxi Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-10 14:41:36 +02:00
"settingsSearchEngine": "Suchmaschine",
"searchEngineDevice": "Suche des Geräts",
"searchEngineCustom": "Eigene Adresse",
"searchEngineCustomHint": "https://example.org/search?q=%s",
"searchEngineCustomInvalid": "Eine http- oder https-Adresse mit %s, wo die Frage hingehört.",
2026-10-12 13:48:11 +02:00
"searchEngineCustomSave": "Verwenden",
"studysetPartMaterial": "Material",
"studysetPartProgress": "Fortschritt",
"studysetPartPlan": "Lernplan",
"progressLearned": "Gelernt",
"progressLearnedInfo": "Karten, die du drei Wochen oder länger behältst.",
"progressOfStudyset": "dieses Lernsets",
"progressCardsLearned": "{count, plural, =1{{learned} von 1 Karte} other{{learned} von {count} Karten}}",
"progressToReview": "Zu wiederholen",
"progressToReviewInfo": "Schon gelernte Karten, die heute wieder fällig sind.",
"progressDueToday": "{count, plural, =1{Karte heute fällig} other{Karten heute fällig}}",
"progressExamTitle": "Bereitest du dich auf eine Prüfung vor?",
"progressExamHint": "Wähle sie und ihr Datum, um zu sehen, wie bereit du bist.",
"progressExamChoose": "Prüfung wählen",
2026-10-12 13:48:11 +02:00
"progressStudyTime": "Lernzeit",
"progressStudyTimeInfo": "Wie lange du die Karteikarten dieses Lernsets in den letzten sieben Tagen gelernt hast, jede Karte höchstens eine Minute gezählt.",
2026-10-12 13:48:11 +02:00
"progressThisWeek": "diese Woche",
"progressMinutes": "{minutes} Min.",
"progressHoursMinutes": "{hours} Std. {minutes} Min.",
feat: a round in the order cards come, shared daily limits, and a start screen Studying: - A round is one list in the order its cards come: those done, the one shown, those to come. A card due again within the day goes back in after 4 more cards when rated Bad, at the end otherwise, so the pills above the card follow it; the buttons say "in 4 cards", "at the end", "now" (round_order.dart). - The studied studyset's daily limits hold for everything inside it together, as Anki's do for subdecks: twenty topics start 20 new cards a day in all, not 20 each. - The study header's studyset name shows whole on hover or long press. - The assistant's button sits at the lower left: in the Library across from Create studyset, in a studyset above its bar, and higher while studying, above the buttons that answer the card. A studyset: - Progress also counts the learning paths' steps done and lists the PDFs not read to their end, begun first, each opening the reader, across its topics (MaterialProgressCubit). - Next up starts with studying for the exam while one is ahead: its reviews due and the new cards its pace leaves for the day. - Learning paths tagged with a level count towards its automatic exam plan and offer it, as cards do. - A step's first heading equal to its title is dropped on import and hidden in paths imported before. Signing out, or a session the server ended, leads to a start screen (GitHub, email, without an account, another instance) rather than a new anonymous account; only the very first start makes one by itself. Settings names the kind of account and its instance. Also: the Watch screen reads the cards once for held words and their progress; its ±10 s buttons tick as the navigation bar does; a map card keeps its view as its caption changes and brings a picked region towards the middle; an empty or failed library can be pulled to sync. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-17 00:39:34 +02:00
"progressPathsInfo": "Die Schritte der Lernpfade dieses Lernsets und seiner Themen, die du erledigt hast.",
"progressStepsDone": "{total, plural, =1{von 1 Schritt erledigt} other{von {total} Schritten erledigt}}",
"progressReading": "Lesen",
"progressReadingInfo": "Die PDFs dieses Lernsets und seiner Themen, die du noch nicht bis zur letzten Seite gelesen hast. Tippe eins an, um weiterzulesen.",
"progressPdfPage": "Seite {page} von {count}",
"progressPdfNotBegun": "Noch nicht begonnen",
"progressPdfsAllRead": "{count, plural, =1{Das PDF ist zu Ende gelesen.} other{Alle {count} PDFs sind zu Ende gelesen.}}",
"progressShowAllPdfs": "Alle {count} zeigen",
"progressShowFewerPdfs": "Weniger zeigen",
2026-10-12 13:48:11 +02:00
"planPathsDone": "{count, plural, =1{{done} von 1 Pfad abgeschlossen} other{{done} von {count} Pfaden abgeschlossen}}",
"planNoPaths": "Noch keine Lernpfade",
"planNextUp": "Als Nächstes",
"planReview": "{count, plural, =1{1 Karteikarte lernen} other{{count} Karteikarten lernen}}",
feat: a round in the order cards come, shared daily limits, and a start screen Studying: - A round is one list in the order its cards come: those done, the one shown, those to come. A card due again within the day goes back in after 4 more cards when rated Bad, at the end otherwise, so the pills above the card follow it; the buttons say "in 4 cards", "at the end", "now" (round_order.dart). - The studied studyset's daily limits hold for everything inside it together, as Anki's do for subdecks: twenty topics start 20 new cards a day in all, not 20 each. - The study header's studyset name shows whole on hover or long press. - The assistant's button sits at the lower left: in the Library across from Create studyset, in a studyset above its bar, and higher while studying, above the buttons that answer the card. A studyset: - Progress also counts the learning paths' steps done and lists the PDFs not read to their end, begun first, each opening the reader, across its topics (MaterialProgressCubit). - Next up starts with studying for the exam while one is ahead: its reviews due and the new cards its pace leaves for the day. - Learning paths tagged with a level count towards its automatic exam plan and offer it, as cards do. - A step's first heading equal to its title is dropped on import and hidden in paths imported before. Signing out, or a session the server ended, leads to a start screen (GitHub, email, without an account, another instance) rather than a new anonymous account; only the very first start makes one by itself. Settings names the kind of account and its instance. Also: the Watch screen reads the cards once for held words and their progress; its ±10 s buttons tick as the navigation bar does; a map card keeps its view as its caption changes and brings a picked region towards the middle; an empty or failed library can be pulled to sync. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-17 00:39:34 +02:00
"planStudyForExam": "{count, plural, =1{1 Karteikarte für {exam} lernen} other{{count} Karteikarten für {exam} lernen}}",
2026-10-12 13:48:11 +02:00
"planContinue": "„{title}“ fortsetzen",
"planStart": "„{title}“ beginnen",
"planStepOf": "Schritt {number} von {total}",
"planStepOfTitled": "Schritt {number} von {total}: {title}",
"planStepsDone": "{total, plural, =1{{done} von 1 Schritt} other{{done} von {total} Schritten}}",
2026-10-12 13:48:11 +02:00
"planNothing": "Gerade steht nichts an.",
feat(jellyfin): watch from one's own Jellyfin server and learn the words of its subtitles Animelon's way of learning from video, from the person's own Jellyfin server: connected per device (Settings, or a studyset's Add material › Watch from Jellyfin) with a name and password or a Quick Connect code, over HTTPS only (plain HTTP only to a server on the same machine); the token stays in the system's keyring. Shows, films and videos tied to a studyset follow the person in their settings as the server's and the item's ids alone (settings schema 9), named by the server when shown. The Watch screen plays the video (video_player on Android, media_kit's libmpv on Linux and Windows) with the line in the studyset's front language cut into the dictionary's words with furigana, and the back language's line beneath; a word tapped pauses the video and becomes a card with the line and its translation as its first hint, tagged with the show. The video's words are listed, most frequent first. The sound is the track in the studyset's language, whichever the file marks default, and the menu switches it; the subtitles read are a whole track, never a forced one (which only covers what the sound doesn't say), and captions for the hard of hearing only without plain ones. The line and its translation take the video's width in a box of a fixed height, so the video keeps its size; in the dark theme the video's colours glow around it, as YouTube's ambient mode, and the words' panel takes the colour of the episode's picture under the pointer. A line is cut into words with one request: DictionaryEndpoint.withKeys looks up every stretch of it that may be a word, as it stands and as every word it may be a conjugation of, in the new dictionary_key table (one row per key, indexed; migration dictionary-keys adds the table and its index, nothing else), which the loader fills beside the entries. The instance gets the text of each line looked up and keeps none of it, as the Watch screen says. Linux builds need libmpv-dev, and the app links libmpv: the snap stages Ubuntu's libmpv2, makes the update-alternatives links for BLAS and LAPACK that ffmpeg's speech recognition needs (staging never runs install scripts), and removes what the GNOME runtime and core24 already hold, as older copies of cairo, pango and librsvg hid the runtime's from its GTK. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-13 11:31:37 +02:00
"planLearningPaths": "Lernpfade",
"examPrepare": "Auf eine Prüfung vorbereiten",
"examPrepareHint": "Wähle, was sie abdeckt und wann sie ist, und bekomme ein Tempo, das dich hinbringt.",
"examChange": "Prüfung ändern",
"examDaysLeft": "{count, plural, =0{Heute, {date}} =1{Morgen, {date}} other{In {count} Tagen, {date}}}",
"examPast": "Sie war am {date}",
"examPlanGone": "Diesen Prüfungsplan gibt es nicht mehr",
"examCardsStarted": "{total, plural, =1{{started} von 1 Karteikarte begonnen} other{{started} von {total} Karteikarten begonnen}}",
"examPagesRead": "{total, plural, =1{{read} von 1 Seite gelesen} other{{read} von {total} Seiten gelesen}}",
"examPaceTitle": "Dein Tempo",
"examPaceNew": "{count, plural, =1{1 neue Karteikarte am Tag} other{{count} neue Karteikarten am Tag}}",
"examPaceSteps": "{count, plural, =1{1 Schritt pro Woche} other{{count} Schritte pro Woche}}",
"examPacePages": "{count, plural, =1{1 Seite am Tag} other{{count} Seiten am Tag}}",
"examPaceDone": "Alles Neue ist gelernt: bis zur Prüfung wiederholen.",
"examStudy": "Für die Prüfung lernen",
"examSheetHelp": "Wähle, was die Prüfung abdeckt und wann sie ist. Alles Neue wird dann so verteilt, dass es eine Woche vor der Prüfung gelernt ist, oder auf halbem Weg dorthin, wenn sie näher ist, und der Rest zum Wiederholen bleibt. Das Datum siehst nur du.",
"examDate": "Prüfungsdatum",
"examSheetPlans": "Prüfungspläne dieses Lernsets",
"examSheetFromTags": "Aus den Stufen-Tags",
"examSheetNoPlans": "Noch keine Prüfungspläne. Erstelle einen aus den Themen und Tags dieses Lernsets.",
"examRemove": "Nicht mehr vorbereiten",
"examPlanTopicCount": "{count, plural, =1{1 Thema} other{{count} Themen}}",
"examPlanNew": "Neuer Prüfungsplan",
"examPlanEdit": "Prüfungsplan bearbeiten",
"examPlanHelp": "Ein Prüfungsplan nennt, was eine Prüfung abdeckt: ganze Themen mit ihren Karteikarten, Lernpfaden und PDFs, und Karteikarten mit bestimmten Tags. Er wird mit dem Lernset veröffentlicht.",
"examPlanName": "Name",
"examPlanNameHint": "z. B. Abschlussprüfung",
"examPlanTopics": "Themen, die sie ganz abdeckt",
"examPlanTags": "Karteikarten mit diesen Tags",
"examPlanEmpty": "Dieses Lernset hat noch keine Themen oder Karteikarten mit Tags zur Auswahl.",
"examPlanDelete": "Plan löschen",
feat(jellyfin): watch from one's own Jellyfin server and learn the words of its subtitles Animelon's way of learning from video, from the person's own Jellyfin server: connected per device (Settings, or a studyset's Add material › Watch from Jellyfin) with a name and password or a Quick Connect code, over HTTPS only (plain HTTP only to a server on the same machine); the token stays in the system's keyring. Shows, films and videos tied to a studyset follow the person in their settings as the server's and the item's ids alone (settings schema 9), named by the server when shown. The Watch screen plays the video (video_player on Android, media_kit's libmpv on Linux and Windows) with the line in the studyset's front language cut into the dictionary's words with furigana, and the back language's line beneath; a word tapped pauses the video and becomes a card with the line and its translation as its first hint, tagged with the show. The video's words are listed, most frequent first. The sound is the track in the studyset's language, whichever the file marks default, and the menu switches it; the subtitles read are a whole track, never a forced one (which only covers what the sound doesn't say), and captions for the hard of hearing only without plain ones. The line and its translation take the video's width in a box of a fixed height, so the video keeps its size; in the dark theme the video's colours glow around it, as YouTube's ambient mode, and the words' panel takes the colour of the episode's picture under the pointer. A line is cut into words with one request: DictionaryEndpoint.withKeys looks up every stretch of it that may be a word, as it stands and as every word it may be a conjugation of, in the new dictionary_key table (one row per key, indexed; migration dictionary-keys adds the table and its index, nothing else), which the loader fills beside the entries. The instance gets the text of each line looked up and keeps none of it, as the Watch screen says. Linux builds need libmpv-dev, and the app links libmpv: the snap stages Ubuntu's libmpv2, makes the update-alternatives links for BLAS and LAPACK that ffmpeg's speech recognition needs (staging never runs install scripts), and removes what the GNOME runtime and core24 already hold, as older copies of cairo, pango and librsvg hid the runtime's from its GTK. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-13 11:31:37 +02:00
"jellyfinTitle": "Jellyfin",
"jellyfinSubtitle": "Schau Serien und Filme und hör Musik von deinem eigenen Jellyfin-Server und lerne die Wörter ihrer Untertitel und Liedtexte. Angemeldet bietet „Material hinzufügen“ eines Lernsets „Aus Jellyfin“ an.",
feat(dictionary): Japanese cut into words and looked up on the device Once the person agrees, the device holds MeCab's IPADIC and the instance's JMdict and cuts lines as Jisho.org does, so their text never leaves it (ADR 0012). MeCab comes through mecab_for_dart, whose build hook compiles it; its tokens are grouped by Ve's rules, written anew in Dart, with に kept a word of its own. Each word is found as it stands or as a form of a word, else by its dictionary form, else as the longest words it holds from token to token; longer words over token boundaries are offered as before. The curator packs Ubuntu's compiled IPADIC beside the dictionary files (curate ipadic, and every update run). The server exports its JMdict from its tables, so the device finds the same keys and keeps the same versions, and serves both at /device-dictionaries/, named in dictionary.deviceFiles('ja') with their hashes; Caddy forwards the path. The app checks each file against its hash, unpacks IPADIC, builds a SQLite database from the export on an isolate, and asks the instance for newer files every 30 days, downloading only what changed. The Watch screen offers the download once per device with its size (34 MB, some 150 MB once set up); Settings downloads and removes them. Without them, or should cutting on the device fail, lines go to the instance as before. MeCab's, IPADIC's and Ve's licences join the licence list. Every build now needs a C++ compiler; mecab_for_dart holds code_assets at 1.x. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-15 21:55:00 +02:00
"jellyfinPrivacy": "Die Adresse deines Servers und deine Anmeldung bleiben auf diesem Gerät, und was du mit einem Lernset verbindest, folgt dir als IDs, nie als Titel. Um die Wörter einer Zeile zu finden, fragt die App die Instanz nach ihrem Text; sie antwortet und speichert ihn nicht, außer die japanischen Wörterbücher sind auf diesem Gerät (Einstellungen): Dann schlägt die App sie hier nach. Wörter, die du hinzufügst, bekommen Tags, wo du ihnen begegnet bist, gespeichert mit deinen Karteikarten wie jeder Tag.",
"deviceDictionaryOfferTitle": "Wörter auf diesem Gerät nachschlagen?",
"deviceDictionaryOfferBody": "Lade die japanischen Wörterbücher einmal herunter ({size}, eingerichtet mehr), um Zeilen hier in Wörter zu zerlegen, wie Jisho.org es tut. Ihr Text verlässt dieses Gerät dann nicht mehr.",
"@deviceDictionaryOfferBody": {"placeholders": {"size": {"type": "String"}}},
"deviceDictionaryOfferDownload": "Herunterladen",
"deviceDictionaryOfferLater": "Nicht jetzt",
"deviceDictionaryDownloading": "Wird heruntergeladen: {received} von {total}",
"@deviceDictionaryDownloading": {"placeholders": {"received": {"type": "String"}, "total": {"type": "String"}}},
"deviceDictionaryPreparing": "Wird eingerichtet…",
"deviceDictionaryReady": "Wörter werden jetzt auf diesem Gerät nachgeschlagen.",
"deviceDictionaryFailed": "Die Wörterbücher konnten nicht heruntergeladen werden. Versuch es in den Einstellungen noch einmal.",
"settingsDeviceDictionaryTitle": "Wörterbücher auf diesem Gerät",
"settingsDeviceDictionaryAbout": "Die Wörterbücher einer Sprache, auf dieses Gerät geladen, schlagen Wörter hier nach, und der Text verlässt es nicht. Ohne sie fragt die App die Instanz, die antwortet und nichts speichert. Die japanischen sind das von MeCab, das die Zeilen von Videos und Liedern in Wörter zerlegt, wie Jisho.org es tut, und JMdict, mit den Lesungen und Bedeutungen jedes Worts.",
feat(dictionary): Japanese cut into words and looked up on the device Once the person agrees, the device holds MeCab's IPADIC and the instance's JMdict and cuts lines as Jisho.org does, so their text never leaves it (ADR 0012). MeCab comes through mecab_for_dart, whose build hook compiles it; its tokens are grouped by Ve's rules, written anew in Dart, with に kept a word of its own. Each word is found as it stands or as a form of a word, else by its dictionary form, else as the longest words it holds from token to token; longer words over token boundaries are offered as before. The curator packs Ubuntu's compiled IPADIC beside the dictionary files (curate ipadic, and every update run). The server exports its JMdict from its tables, so the device finds the same keys and keeps the same versions, and serves both at /device-dictionaries/, named in dictionary.deviceFiles('ja') with their hashes; Caddy forwards the path. The app checks each file against its hash, unpacks IPADIC, builds a SQLite database from the export on an isolate, and asks the instance for newer files every 30 days, downloading only what changed. The Watch screen offers the download once per device with its size (34 MB, some 150 MB once set up); Settings downloads and removes them. Without them, or should cutting on the device fail, lines go to the instance as before. MeCab's, IPADIC's and Ve's licences join the licence list. Every build now needs a C++ compiler; mecab_for_dart holds code_assets at 1.x. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-15 21:55:00 +02:00
"settingsDeviceDictionaryHeld": "Auf diesem Gerät: {size}",
"@settingsDeviceDictionaryHeld": {"placeholders": {"size": {"type": "String"}}},
"settingsDeviceDictionaryDownload": "Herunterladen ({size})",
"@settingsDeviceDictionaryDownload": {"placeholders": {"size": {"type": "String"}}},
"settingsDeviceDictionaryRemove": "Entfernen",
"settingsDeviceDictionaryFailed": "Das Herunterladen ist fehlgeschlagen.",
feat(jellyfin): watch from one's own Jellyfin server and learn the words of its subtitles Animelon's way of learning from video, from the person's own Jellyfin server: connected per device (Settings, or a studyset's Add material › Watch from Jellyfin) with a name and password or a Quick Connect code, over HTTPS only (plain HTTP only to a server on the same machine); the token stays in the system's keyring. Shows, films and videos tied to a studyset follow the person in their settings as the server's and the item's ids alone (settings schema 9), named by the server when shown. The Watch screen plays the video (video_player on Android, media_kit's libmpv on Linux and Windows) with the line in the studyset's front language cut into the dictionary's words with furigana, and the back language's line beneath; a word tapped pauses the video and becomes a card with the line and its translation as its first hint, tagged with the show. The video's words are listed, most frequent first. The sound is the track in the studyset's language, whichever the file marks default, and the menu switches it; the subtitles read are a whole track, never a forced one (which only covers what the sound doesn't say), and captions for the hard of hearing only without plain ones. The line and its translation take the video's width in a box of a fixed height, so the video keeps its size; in the dark theme the video's colours glow around it, as YouTube's ambient mode, and the words' panel takes the colour of the episode's picture under the pointer. A line is cut into words with one request: DictionaryEndpoint.withKeys looks up every stretch of it that may be a word, as it stands and as every word it may be a conjugation of, in the new dictionary_key table (one row per key, indexed; migration dictionary-keys adds the table and its index, nothing else), which the loader fills beside the entries. The instance gets the text of each line looked up and keeps none of it, as the Watch screen says. Linux builds need libmpv-dev, and the app links libmpv: the snap stages Ubuntu's libmpv2, makes the update-alternatives links for BLAS and LAPACK that ffmpeg's speech recognition needs (staging never runs install scripts), and removes what the GNOME runtime and core24 already hold, as older copies of cairo, pango and librsvg hid the runtime's from its GTK. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-13 11:31:37 +02:00
"jellyfinSignedInAs": "{user} auf {server}",
"jellyfinSignOut": "Von Jellyfin abmelden",
"jellyfinAddress": "Serveradresse",
"jellyfinAddressHint": "jellyfin.example.org",
"jellyfinFind": "Weiter",
"jellyfinUser": "Benutzername",
"jellyfinPublicUsers": "Auf diesem Server",
feat(jellyfin): watch from one's own Jellyfin server and learn the words of its subtitles Animelon's way of learning from video, from the person's own Jellyfin server: connected per device (Settings, or a studyset's Add material › Watch from Jellyfin) with a name and password or a Quick Connect code, over HTTPS only (plain HTTP only to a server on the same machine); the token stays in the system's keyring. Shows, films and videos tied to a studyset follow the person in their settings as the server's and the item's ids alone (settings schema 9), named by the server when shown. The Watch screen plays the video (video_player on Android, media_kit's libmpv on Linux and Windows) with the line in the studyset's front language cut into the dictionary's words with furigana, and the back language's line beneath; a word tapped pauses the video and becomes a card with the line and its translation as its first hint, tagged with the show. The video's words are listed, most frequent first. The sound is the track in the studyset's language, whichever the file marks default, and the menu switches it; the subtitles read are a whole track, never a forced one (which only covers what the sound doesn't say), and captions for the hard of hearing only without plain ones. The line and its translation take the video's width in a box of a fixed height, so the video keeps its size; in the dark theme the video's colours glow around it, as YouTube's ambient mode, and the words' panel takes the colour of the episode's picture under the pointer. A line is cut into words with one request: DictionaryEndpoint.withKeys looks up every stretch of it that may be a word, as it stands and as every word it may be a conjugation of, in the new dictionary_key table (one row per key, indexed; migration dictionary-keys adds the table and its index, nothing else), which the loader fills beside the entries. The instance gets the text of each line looked up and keeps none of it, as the Watch screen says. Linux builds need libmpv-dev, and the app links libmpv: the snap stages Ubuntu's libmpv2, makes the update-alternatives links for BLAS and LAPACK that ffmpeg's speech recognition needs (staging never runs install scripts), and removes what the GNOME runtime and core24 already hold, as older copies of cairo, pango and librsvg hid the runtime's from its GTK. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-13 11:31:37 +02:00
"jellyfinPassword": "Passwort",
"jellyfinPasswordNone": "Leer lassen, wenn das Konto keins hat",
feat(jellyfin): watch from one's own Jellyfin server and learn the words of its subtitles Animelon's way of learning from video, from the person's own Jellyfin server: connected per device (Settings, or a studyset's Add material › Watch from Jellyfin) with a name and password or a Quick Connect code, over HTTPS only (plain HTTP only to a server on the same machine); the token stays in the system's keyring. Shows, films and videos tied to a studyset follow the person in their settings as the server's and the item's ids alone (settings schema 9), named by the server when shown. The Watch screen plays the video (video_player on Android, media_kit's libmpv on Linux and Windows) with the line in the studyset's front language cut into the dictionary's words with furigana, and the back language's line beneath; a word tapped pauses the video and becomes a card with the line and its translation as its first hint, tagged with the show. The video's words are listed, most frequent first. The sound is the track in the studyset's language, whichever the file marks default, and the menu switches it; the subtitles read are a whole track, never a forced one (which only covers what the sound doesn't say), and captions for the hard of hearing only without plain ones. The line and its translation take the video's width in a box of a fixed height, so the video keeps its size; in the dark theme the video's colours glow around it, as YouTube's ambient mode, and the words' panel takes the colour of the episode's picture under the pointer. A line is cut into words with one request: DictionaryEndpoint.withKeys looks up every stretch of it that may be a word, as it stands and as every word it may be a conjugation of, in the new dictionary_key table (one row per key, indexed; migration dictionary-keys adds the table and its index, nothing else), which the loader fills beside the entries. The instance gets the text of each line looked up and keeps none of it, as the Watch screen says. Linux builds need libmpv-dev, and the app links libmpv: the snap stages Ubuntu's libmpv2, makes the update-alternatives links for BLAS and LAPACK that ffmpeg's speech recognition needs (staging never runs install scripts), and removes what the GNOME runtime and core24 already hold, as older copies of cairo, pango and librsvg hid the runtime's from its GTK. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-13 11:31:37 +02:00
"jellyfinSignIn": "Anmelden",
"jellyfinQuickConnect": "Mit einem Code anmelden",
"jellyfinQuickConnectCode": "Gib diesen Code unter Quick Connect in einer Jellyfin-App ein, in der du angemeldet bist:",
"jellyfinQuickConnectWaiting": "Warte, bis der Code bestätigt ist …",
"jellyfinOtherServer": "Anderer Server",
"jellyfinUnreachable": "Unter dieser Adresse antwortet kein Server über HTTPS.",
"jellyfinNotEncrypted": "Diese Adresse ist nicht verschlüsselt, und dein Passwort ginge im Klartext. Nutze die HTTPS-Adresse des Servers.",
"jellyfinNotJellyfin": "Unter dieser Adresse ist kein Jellyfin-Server.",
"jellyfinWrongCredentials": "Benutzername oder Passwort stimmt nicht.",
"jellyfinSignedOut": "Du wurdest von Jellyfin abgemeldet. Melde dich erneut an.",
"jellyfinFailed": "Das hat auf dem Jellyfin-Server nicht geklappt. Versuch es noch einmal.",
"studysetWatch": "Aus Jellyfin",
"jellyfinBrowseTitle": "Jellyfin",
feat(jellyfin): watch from one's own Jellyfin server and learn the words of its subtitles Animelon's way of learning from video, from the person's own Jellyfin server: connected per device (Settings, or a studyset's Add material › Watch from Jellyfin) with a name and password or a Quick Connect code, over HTTPS only (plain HTTP only to a server on the same machine); the token stays in the system's keyring. Shows, films and videos tied to a studyset follow the person in their settings as the server's and the item's ids alone (settings schema 9), named by the server when shown. The Watch screen plays the video (video_player on Android, media_kit's libmpv on Linux and Windows) with the line in the studyset's front language cut into the dictionary's words with furigana, and the back language's line beneath; a word tapped pauses the video and becomes a card with the line and its translation as its first hint, tagged with the show. The video's words are listed, most frequent first. The sound is the track in the studyset's language, whichever the file marks default, and the menu switches it; the subtitles read are a whole track, never a forced one (which only covers what the sound doesn't say), and captions for the hard of hearing only without plain ones. The line and its translation take the video's width in a box of a fixed height, so the video keeps its size; in the dark theme the video's colours glow around it, as YouTube's ambient mode, and the words' panel takes the colour of the episode's picture under the pointer. A line is cut into words with one request: DictionaryEndpoint.withKeys looks up every stretch of it that may be a word, as it stands and as every word it may be a conjugation of, in the new dictionary_key table (one row per key, indexed; migration dictionary-keys adds the table and its index, nothing else), which the loader fills beside the entries. The instance gets the text of each line looked up and keeps none of it, as the Watch screen says. Linux builds need libmpv-dev, and the app links libmpv: the snap stages Ubuntu's libmpv2, makes the update-alternatives links for BLAS and LAPACK that ffmpeg's speech recognition needs (staging never runs install scripts), and removes what the GNOME runtime and core24 already hold, as older copies of cairo, pango and librsvg hid the runtime's from its GTK. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-13 11:31:37 +02:00
"jellyfinTied": "Mit diesem Lernset verbunden",
"jellyfinLibraries": "Mediatheken",
"jellyfinSearchHint": "Serien, Filme und Musik suchen",
feat(jellyfin): watch from one's own Jellyfin server and learn the words of its subtitles Animelon's way of learning from video, from the person's own Jellyfin server: connected per device (Settings, or a studyset's Add material › Watch from Jellyfin) with a name and password or a Quick Connect code, over HTTPS only (plain HTTP only to a server on the same machine); the token stays in the system's keyring. Shows, films and videos tied to a studyset follow the person in their settings as the server's and the item's ids alone (settings schema 9), named by the server when shown. The Watch screen plays the video (video_player on Android, media_kit's libmpv on Linux and Windows) with the line in the studyset's front language cut into the dictionary's words with furigana, and the back language's line beneath; a word tapped pauses the video and becomes a card with the line and its translation as its first hint, tagged with the show. The video's words are listed, most frequent first. The sound is the track in the studyset's language, whichever the file marks default, and the menu switches it; the subtitles read are a whole track, never a forced one (which only covers what the sound doesn't say), and captions for the hard of hearing only without plain ones. The line and its translation take the video's width in a box of a fixed height, so the video keeps its size; in the dark theme the video's colours glow around it, as YouTube's ambient mode, and the words' panel takes the colour of the episode's picture under the pointer. A line is cut into words with one request: DictionaryEndpoint.withKeys looks up every stretch of it that may be a word, as it stands and as every word it may be a conjugation of, in the new dictionary_key table (one row per key, indexed; migration dictionary-keys adds the table and its index, nothing else), which the loader fills beside the entries. The instance gets the text of each line looked up and keeps none of it, as the Watch screen says. Linux builds need libmpv-dev, and the app links libmpv: the snap stages Ubuntu's libmpv2, makes the update-alternatives links for BLAS and LAPACK that ffmpeg's speech recognition needs (staging never runs install scripts), and removes what the GNOME runtime and core24 already hold, as older copies of cairo, pango and librsvg hid the runtime's from its GTK. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-13 11:31:37 +02:00
"jellyfinTie": "Mit diesem Lernset verbinden",
"jellyfinUntie": "Vom Lernset lösen",
"jellyfinEmpty": "Hier ist nichts",
"jellyfinEpisode": "S{season} F{episode}",
"jellyfinNoPlayer": "Auf diesem Gerät können keine Videos abgespielt werden.",
"jellyfinNoPlayerLinux": "Auf diesem Gerät können keine Videos abgespielt werden: Dafür braucht es libmpv (das Paket libmpv2).",
"watchNoSubtitles": "Dieses Video hat keine Untertitel in der Sprache des Lernsets als Text, es gibt also nichts nachzuschlagen.",
"watchSubtitles": "Untertitel",
"watchTranslation": "Übersetzung",
"watchAudio": "Audio",
"watchBack10": "10 Sekunden zurück",
"watchForward10": "10 Sekunden vor",
"watchSettings": "Einstellungen",
"watchShortcuts": "Tastenkürzel",
"watchTrackForced": "erzwungen",
"watchTrackCaptions": "für Hörgeschädigte",
"watchKeyPlayPause": "Abspielen oder pausieren",
"watchKeyFive": "5 Sekunden zurück oder vor",
"watchKeyTen": "10 Sekunden zurück oder vor",
"watchKeyLines": "Vorige oder nächste Zeile",
"watchKeyJump": "Zu 0 %, 10 %, … 90 % des Videos",
"watchKeyStartEnd": "Zum Anfang oder zum Ende",
"watchKeyClose": "Wort oder Einstellungen schließen",
"watchKeyShortcuts": "Diese Tastenkürzel",
"watchKeySpace": "Leertaste",
"watchKeyShift": "Umschalt",
"watchKeyHome": "Pos1",
"watchKeyEnd": "Ende",
"watchProgressNew": "Neu",
"watchProgressLearning": "Am Lernen",
"watchProgressDue": "Fällig",
"watchProgressLearned": "Gelernt · {days, plural, =0{heute wieder} =1{morgen wieder} other{in {days} Tagen wieder}}",
feat(dictionary): German, Greek, English, Chinese and Korean words A studyset in German, Greek, English, Chinese or Korean finds its dictionary as one in Japanese does (ADR 0008), and its subtitles are cut into words by its language (`WordCutting`): Chinese by its longest words as they stand, the longer words over each cut offered as for Japanese; Korean at its spaces, a word the dictionary lacks as it stands taken without the particle it ends with (집에서 is 집, 아이 stays a child); every other language at its spaces, a word written exactly so first (the noun Essen before the verb essen). A studyset finds the dictionary of its language tag, else of its language alone (zh for zh-Hans). A Wiktionary word shows its genders, principal forms, IPA, romanisation and Hanja; a German or Greek noun of one gender goes onto its card with its article (das Haus, το σπίτι); its tag is its word class, named in full (Noun, Adjective, Preposition), as Wiktionary's adj and adv would read as JMdict's codes. Articles, pronouns, prepositions and conjunctions are left out of a video's words. Chinese words show their pinyin over each character on the Watch screen, carry their HSK level as a tag (HSK-1 … HSK-7-9), and the dictionary adds a level whole; the Watch screen filters by HSK levels for Chinese, JLPT's for Japanese, and by none for a language without. A reading is typed in a session only when it is kana, so pinyin isn't. Words are looked up on the web on Jisho in Japanese, on Wiktionary at the language's section otherwise, and a search's hint speaks of kana and romaji only in Japanese. `DICTIONARY_LANGUAGES` in deploy/.env names the languages an instance keeps (unset: de,el,en,ko,zh; empty: none). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-14 07:45:15 +02:00
"watchLookUpOn": "Auf {site} nachschlagen",
"watchWider": "Längere Wörter hier",
"watchWordsTitleSong": "Wörter in diesem Lied",
"watchStudyWordsSong": "Die Wörter dieses Lieds lernen",
"watchNoLyrics": "Dieses Lied hat keinen Liedtext, es gibt nichts nachzuschlagen.",
"jellyfinNoLyrics": "Kein Liedtext",
"watchStudy": "Lernen",
"watchStudyWords": "Die Wörter dieses Videos lernen",
"watchAddListed": "{count, plural, =1{1 Wort hinzufügen} other{{count} Wörter hinzufügen}}",
"watchAddListedHint": "Fügt die aufgelisteten Wörter dem Lernset hinzu, mit Tags, wo sie vorkamen, um sie zu lernen",
"watchAddNothing": "Keine neuen Wörter in der Liste: ändere den Filter",
"watchAddNew": "{count, plural, =1{Das 1 neue Wort der Liste hinzufügen} other{Die {count} neuen Wörter der Liste hinzufügen}}",
"watchAddedWords": "{count, plural, =0{Keine Wörter hinzugefügt} =1{1 Wort hinzugefügt} other{{count} Wörter hinzugefügt}}",
"watchStudyScheduled": "Lernen, nach Plan",
"watchStudyCram": "Pauken, jedes einmal",
"watchFilter": "Wörter filtern",
"watchFilterFresh": "Neue Wörter",
"watchFilterHeld": "Wörter im Lernset",
"watchFilterAll": "Alle Wörter",
"watchFilterNoLevel": "Ohne {levels}-Stufe",
"watchFilterClass": "Wortart",
"watchFilterEmpty": "Keine Wörter dieses Videos passen zum Filter.",
"watchClassNoun": "Nomen",
"watchClassVerb": "Verben",
"watchClassAdjective": "Adjektive",
"watchClassAdverb": "Adverbien",
"watchClassExpression": "Ausdrücke",
"watchClassOther": "Andere",
feat(jellyfin): watch from one's own Jellyfin server and learn the words of its subtitles Animelon's way of learning from video, from the person's own Jellyfin server: connected per device (Settings, or a studyset's Add material › Watch from Jellyfin) with a name and password or a Quick Connect code, over HTTPS only (plain HTTP only to a server on the same machine); the token stays in the system's keyring. Shows, films and videos tied to a studyset follow the person in their settings as the server's and the item's ids alone (settings schema 9), named by the server when shown. The Watch screen plays the video (video_player on Android, media_kit's libmpv on Linux and Windows) with the line in the studyset's front language cut into the dictionary's words with furigana, and the back language's line beneath; a word tapped pauses the video and becomes a card with the line and its translation as its first hint, tagged with the show. The video's words are listed, most frequent first. The sound is the track in the studyset's language, whichever the file marks default, and the menu switches it; the subtitles read are a whole track, never a forced one (which only covers what the sound doesn't say), and captions for the hard of hearing only without plain ones. The line and its translation take the video's width in a box of a fixed height, so the video keeps its size; in the dark theme the video's colours glow around it, as YouTube's ambient mode, and the words' panel takes the colour of the episode's picture under the pointer. A line is cut into words with one request: DictionaryEndpoint.withKeys looks up every stretch of it that may be a word, as it stands and as every word it may be a conjugation of, in the new dictionary_key table (one row per key, indexed; migration dictionary-keys adds the table and its index, nothing else), which the loader fills beside the entries. The instance gets the text of each line looked up and keeps none of it, as the Watch screen says. Linux builds need libmpv-dev, and the app links libmpv: the snap stages Ubuntu's libmpv2, makes the update-alternatives links for BLAS and LAPACK that ffmpeg's speech recognition needs (staging never runs install scripts), and removes what the GNOME runtime and core24 already hold, as older copies of cairo, pango and librsvg hid the runtime's from its GTK. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-13 11:31:37 +02:00
"watchNone": "Keine",
"watchPlay": "Abspielen",
"watchPause": "Pause",
"watchPreviousLine": "Vorherige Zeile",
"watchNextLine": "Nächste Zeile",
"watchPauseAtLineEnd": "Nach jeder Zeile anhalten",
"watchWordsTitle": "Wörter in diesem Video",
"watchWordsFinding": "Wörter werden gesucht …",
"watchWordCount": "{count}×",
"watchAdd": "Hinzufügen",
"watchAdded": "{word} hinzugefügt",
"watchAddFailed": "{word} konnte nicht hinzugefügt werden. Versuch es noch einmal.",
"watchStretchNone": "„{text}“ steht nicht als ein Wort im Wörterbuch.",
"watchStretchFailed": "Das Nachschlagen hat nicht geklappt. Wähle es noch einmal, um es erneut zu versuchen.",
feat(dictionary): German, Greek, English, Chinese and Korean words A studyset in German, Greek, English, Chinese or Korean finds its dictionary as one in Japanese does (ADR 0008), and its subtitles are cut into words by its language (`WordCutting`): Chinese by its longest words as they stand, the longer words over each cut offered as for Japanese; Korean at its spaces, a word the dictionary lacks as it stands taken without the particle it ends with (집에서 is 집, 아이 stays a child); every other language at its spaces, a word written exactly so first (the noun Essen before the verb essen). A studyset finds the dictionary of its language tag, else of its language alone (zh for zh-Hans). A Wiktionary word shows its genders, principal forms, IPA, romanisation and Hanja; a German or Greek noun of one gender goes onto its card with its article (das Haus, το σπίτι); its tag is its word class, named in full (Noun, Adjective, Preposition), as Wiktionary's adj and adv would read as JMdict's codes. Articles, pronouns, prepositions and conjunctions are left out of a video's words. Chinese words show their pinyin over each character on the Watch screen, carry their HSK level as a tag (HSK-1 … HSK-7-9), and the dictionary adds a level whole; the Watch screen filters by HSK levels for Chinese, JLPT's for Japanese, and by none for a language without. A reading is typed in a session only when it is kana, so pinyin isn't. Words are looked up on the web on Jisho in Japanese, on Wiktionary at the language's section otherwise, and a search's hint speaks of kana and romaji only in Japanese. `DICTIONARY_LANGUAGES` in deploy/.env names the languages an instance keeps (unset: de,el,en,ko,zh; empty: none). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-14 07:45:15 +02:00
"watchStretchSearch": "Auf {site} suchen",
"watchTapAWord": "Tipp auf ein Wort der Untertitel, um es nachzuschlagen, oder zieh über Zeichen, um einen beliebigen Teil einer Zeile nachzuschlagen (auf einem Touchscreen erst gedrückt halten).",
feat(jellyfin): watch from one's own Jellyfin server and learn the words of its subtitles Animelon's way of learning from video, from the person's own Jellyfin server: connected per device (Settings, or a studyset's Add material › Watch from Jellyfin) with a name and password or a Quick Connect code, over HTTPS only (plain HTTP only to a server on the same machine); the token stays in the system's keyring. Shows, films and videos tied to a studyset follow the person in their settings as the server's and the item's ids alone (settings schema 9), named by the server when shown. The Watch screen plays the video (video_player on Android, media_kit's libmpv on Linux and Windows) with the line in the studyset's front language cut into the dictionary's words with furigana, and the back language's line beneath; a word tapped pauses the video and becomes a card with the line and its translation as its first hint, tagged with the show. The video's words are listed, most frequent first. The sound is the track in the studyset's language, whichever the file marks default, and the menu switches it; the subtitles read are a whole track, never a forced one (which only covers what the sound doesn't say), and captions for the hard of hearing only without plain ones. The line and its translation take the video's width in a box of a fixed height, so the video keeps its size; in the dark theme the video's colours glow around it, as YouTube's ambient mode, and the words' panel takes the colour of the episode's picture under the pointer. A line is cut into words with one request: DictionaryEndpoint.withKeys looks up every stretch of it that may be a word, as it stands and as every word it may be a conjugation of, in the new dictionary_key table (one row per key, indexed; migration dictionary-keys adds the table and its index, nothing else), which the loader fills beside the entries. The instance gets the text of each line looked up and keeps none of it, as the Watch screen says. Linux builds need libmpv-dev, and the app links libmpv: the snap stages Ubuntu's libmpv2, makes the update-alternatives links for BLAS and LAPACK that ffmpeg's speech recognition needs (staging never runs install scripts), and removes what the GNOME runtime and core24 already hold, as older copies of cairo, pango and librsvg hid the runtime's from its GTK. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-13 11:31:37 +02:00
"watchFormOf": "Eine Form von {word}",
"watchFailed": "Das Video konnte nicht abgespielt werden.",
"publishPrivateRefused": "Es ist privat: Nur deine Geräte können es lesen. Mach es zuerst in seinem Menü nicht mehr privat.",
"publishTagNames": "Nicht alle seine Tags ließen sich benennen. Synchronisiere und versuche es noch einmal.",
"publishTagNamesChanged": "Die Tags, die mitgehen würden, haben sich geändert, seit sie angezeigt wurden. Sieh sie dir noch einmal an und veröffentliche dann.",
"studysetMenuMakePrivate": "Privat machen",
"studysetMenuMakeReadable": "Nicht mehr privat",
"studysetPrivateTitle": "„{title}“ privat machen?",
"studysetPrivateBody": "Alles darin wird auf deinen Geräten Ende-zu-Ende-verschlüsselt: Die Instanz kann es weder lesen noch veröffentlichen, und ein Assistent bekommt nur, was du ihm zu senden erlaubst. Kopien in den Sicherungen der Instanz bleiben lesbar, bis diese ablaufen.",
"studysetReadableTitle": "„{title}“ nicht mehr privat?",
feat(assistant)!: no hand-off and no connector; the field searches the web (ADR 0022) The developer decided on 23 Oct to drop the hand-off to an AI assistant outside the app, and Claude's connector with it, in v0.19.0, the app and the server together: build 22 raises minimumAppBuild anyway, so no app calling the connector's endpoints uses the instance after it. An instance is to have one way to an assistant, its operator's (ADR 0021, proposed). The app: the field at the foot of Home, and the button in the Library, on a studyset and while studying, search the web alone, through the engine chosen in Settings or Android's own search, with the parts of a card the person picks; a studyset's name and description are never offered. Gone: the assistants a question opened in (AiAssistant, AssistantHandOff), the switch between them and the web, Settings' choice of assistant, Connect Claude with its route, cubit, repository and gateway, and their texts. A settings file from before keeps the old keys until the next change of a setting writes it anew; nothing reads them. The server: lib/src/assistant/ (MCP, its OAuth, the five tools, connect codes and tokens), AssistantEndpoint, the daily forgetting of the connector's secrets (its scheduled call cancelled at start), its lines in the deletion hook, instance.info().assistantConnectorUrl (nullable, so an older app reads it as none), and Caddy's forwarding of /mcp, /oauth/* and /.well-known/oauth-*. The migration drops the connector's five tables, children first: DROP TABLE "assistant_token" CASCADE; -- tokens of a connection DROP TABLE "assistant_grant" CASCADE; -- OAuth codes of a connection DROP TABLE "assistant_connection" CASCADE; -- a person's connected client DROP TABLE "assistant_connect_code" CASCADE; DROP TABLE "assistant_client" CASCADE; -- OAuth clients registered No other table references them, so CASCADE drops only their own foreign keys. For the minute between the maintenance run and the switch, the old server answers the connector with errors and fails to delete an account (its hook still deletes from these tables); ADR 0022 says so. BREAKING CHANGE: a connected Claude gets no answer from the deploy on, and the app no longer opens a question in an AI assistant. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-23 15:33:53 +02:00
"studysetReadableBody": "Alles darin wird entschlüsselt und neu synchronisiert, sodass die Instanz es lesen kann: Du kannst es veröffentlichen.",
"studysetPrivateNoKeys": "Melde dich auf diesem Gerät mit deinem Passwort an, um Lernsets privat zu machen.",
"studysetPrivateSomeLocked": "Manches darin ließ sich auf diesem Gerät nicht öffnen und blieb, wie es war.",
"publishTagsSent": "Die Namen der Tags, die mitgehen und die die Instanz erfährt: {names}",
"@publishTagsSent": {"placeholders": {"names": {"type": "String"}}},
"publishTagsSentNone": "Es gehen keine Tags mit.",
"privacyAdoptTitle": "Unsignierte Änderungen übernehmen?",
"privacyAdoptTake": "Übernehmen",
"privacyAdoptLeave": "Gesperrt lassen",
"privacyAdoptListBody": "Während es privat gemacht wurde, wurde das hier ohne deine Schlüssel geschrieben: von einem Gerät, das sie nicht hatte, oder von der Instanz. Übernommen, werden genau diese als deine versiegelt; gelassen, bleiben sie gesperrt.",
"privacyEditCard": "Karteikarte",
"privacyEditNote": "Notiz",
"privacyEditPath": "Lernpfad",
"privacyEditStep": "Schritt",
"privacyEditPdf": "PDF",
"privacyEditStudyset": "Lernset",
"privacyEditAnswer": "Antwort",
"privacyEditNoText": "(kein Text)",
"studysetLockedTitle": "Gesperrt",
"studysetLockedBody": "Dieses Lernset ist privat, und sein Schlüssel öffnet sich auf diesem Gerät nicht: Es wurde mit Schlüsseln verschlüsselt, die dein Konto nicht mehr hat. Es lässt sich nur noch löschen.",
fix(privacy): what the app shows and adds keeps private studysets private (ADR 0019) The reading of 22 Oct, on the device's side. Private cards never move into a readable studyset: the card browser asks to make it private first. Locked studysets are left out of the move sheets and the destinations words are added to. A studyset whose key isn't on this device says to sign in with the password here, not that it is lost, and can still be archived; creating one there says why it can't. The marker shows the lock for a private studyset published before, and a shield with a warning while something in it is still readable or unsealed, with Finish in its dialog. The library's offer covers every top-level studyset, Recently deleted and orphaned ones too, says what couldn't be sealed, and its answer follows the person in their settings (schema 11). The full-window editors carry the studyset they were opened from, and an account with keys adds no file where none is known (a new studyset's description takes pictures once it is made). A file no live row names is never uploaded, and deleting a row clears what it owed. Sealed rows are indexed by key and hash. A suggestion from a private copy uploads readable copies of its files for the author; accepting swaps whole `asset:` values only. Docs: ADR 0019's "The reading (22 Oct 2026)" with the decisions, what changed and the residual risks; "As built" and Learn's AGENTS.md brought up to date. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-22 09:29:56 +02:00
"studysetVisibilityPartly": "Privat, teils lesbar",
"studysetPrivacyPartlyBody": "Manches darin kann die Instanz noch lesen: was ein Gerät schrieb, bevor es davon wusste, oder Dateien, die noch nicht umgezogen sind. Es wird versiegelt, sobald ein Gerät mit deinen Schlüsseln es kann, oder jetzt mit Abschließen.",
"studysetPrivacyFinish": "Abschließen",
"studysetLockedNoKeysBody": "Dieses Lernset ist privat, und sein Schlüssel ist nicht auf diesem Gerät. Melde dich auf diesem Gerät mit deinem Passwort an, um es zu öffnen.",
"cardMovePrivateTitle": "„{title}“ privat machen?",
"@cardMovePrivateTitle": {"placeholders": {"title": {"type": "String"}}},
"cardMovePrivateBody": "Diese Karteikarten sind privat. „{title}“ kann die Instanz lesen, also können sie erst dorthin, wenn es auch privat ist.",
"@cardMovePrivateBody": {"placeholders": {"title": {"type": "String"}}},
"cardMovePrivateAction": "Privat machen und verschieben",
"privacyKeysMissing": "Melde dich auf diesem Gerät mit deinem Passwort an: Was du hier hinzufügst oder änderst, wäre privat.",
"exportReadableNote": "Das Archiv ist nicht verschlüsselt: Wer die Datei hat, kann es lesen.",
"studysetVisibilityReadable": "Nicht privat, nicht veröffentlicht",
"studysetShareReadable": "Teilen: nicht privat",
"studysetPrivacyPrivateTitle": "„{title}“ ist privat",
"studysetPrivacyPrivateBody": "Alles darin ist Ende-zu-Ende-verschlüsselt: Nur deine Geräte können es lesen. Die Instanz kann es nicht veröffentlichen, und ein Assistent bekommt nur, was du ihm zu senden erlaubst. Nicht mehr privat, wird es entschlüsselt und neu synchronisiert, sodass die Instanz es lesen kann.",
"studysetPrivacyReadableTitle": "„{title}“ ist nicht privat",
feat(assistant)!: no hand-off and no connector; the field searches the web (ADR 0022) The developer decided on 23 Oct to drop the hand-off to an AI assistant outside the app, and Claude's connector with it, in v0.19.0, the app and the server together: build 22 raises minimumAppBuild anyway, so no app calling the connector's endpoints uses the instance after it. An instance is to have one way to an assistant, its operator's (ADR 0021, proposed). The app: the field at the foot of Home, and the button in the Library, on a studyset and while studying, search the web alone, through the engine chosen in Settings or Android's own search, with the parts of a card the person picks; a studyset's name and description are never offered. Gone: the assistants a question opened in (AiAssistant, AssistantHandOff), the switch between them and the web, Settings' choice of assistant, Connect Claude with its route, cubit, repository and gateway, and their texts. A settings file from before keeps the old keys until the next change of a setting writes it anew; nothing reads them. The server: lib/src/assistant/ (MCP, its OAuth, the five tools, connect codes and tokens), AssistantEndpoint, the daily forgetting of the connector's secrets (its scheduled call cancelled at start), its lines in the deletion hook, instance.info().assistantConnectorUrl (nullable, so an older app reads it as none), and Caddy's forwarding of /mcp, /oauth/* and /.well-known/oauth-*. The migration drops the connector's five tables, children first: DROP TABLE "assistant_token" CASCADE; -- tokens of a connection DROP TABLE "assistant_grant" CASCADE; -- OAuth codes of a connection DROP TABLE "assistant_connection" CASCADE; -- a person's connected client DROP TABLE "assistant_connect_code" CASCADE; DROP TABLE "assistant_client" CASCADE; -- OAuth clients registered No other table references them, so CASCADE drops only their own foreign keys. For the minute between the maintenance run and the switch, the old server answers the connector with errors and fails to delete an account (its hook still deletes from these tables); ADR 0022 says so. BREAKING CHANGE: a connected Claude gets no answer from the deploy on, and the app no longer opens a question in an AI assistant. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-23 15:33:53 +02:00
"studysetPrivacyReadableBody": "Die Instanz kann es lesen: Du kannst es veröffentlichen. Privat wird es auf deinen Geräten Ende-zu-Ende-verschlüsselt; Kopien in den Sicherungen der Instanz bleiben lesbar, bis diese ablaufen.",
"studysetPrivacyTopic": "Seine Privatsphäre ist die des Lernsets, in dem es liegt.",
"studysetPrivacyPublish": "Veröffentlichen …",
"studysetSheetVisibility": "Sichtbarkeit",
"studysetSheetPrivate": "Privat",
"assistantAddTitle": "Zu deiner Frage hinzufügen",
"assistantAddCamera": "Kamera",
"assistantAddPhotos": "Fotos",
"assistantAddFiles": "Dateien",
"workStep": "Schritt {step} von {steps}: {name}",
"workCount": "{done} von {total}",
"workPercent": "{percent} %",
"workAbort": "Abbrechen",
"workAborting": "Wird abgebrochen …",
"workStageFiles": "Dateien kopieren",
"workStageContent": "Lernsets, Karteikarten und Notizen schreiben",
"workStageProgress": "Deinen Fortschritt übernehmen",
"workStageCards": "Karteikarten schreiben",
"workStageTags": "Tags vergeben",
"workStageReviews": "Den Lernverlauf übernehmen",
"workStageReading": "Inhalte lesen",
"workStageGathering": "Dateien sammeln",
"workStagePacking": "Packen",
"importAborted": "Import abgebrochen: Nichts davon wurde behalten.",
"exportAborted": "Export abgebrochen.",
"exportProgressTitle": "Wird exportiert",
"subjectGroupSciences": "Naturwissenschaften und Gesundheit",
"subjectGroupComputing": "Mathematik und Informatik",
"subjectGroupSociety": "Gesellschaft",
"subjectGroupArts": "Sprachen und Künste",
"subjectGroupEveryday": "Alltag",
"subjectGroupOther": "Sonstiges",
"subjectBiology": "Biologie",
"subjectChemistry": "Chemie",
"subjectPhysics": "Physik",
"subjectAstronomy": "Astronomie",
"subjectEarthSciences": "Geowissenschaften",
"subjectEnvironmentalScience": "Umweltwissenschaften",
"subjectMedicine": "Medizin",
"subjectNursing": "Pflege",
"subjectPharmacy": "Pharmazie",
"subjectNutrition": "Ernährung",
"subjectPsychology": "Psychologie",
"subjectSportsScience": "Sportwissenschaft",
"subjectMathematics": "Mathematik",
"subjectStatistics": "Statistik",
"subjectComputerScience": "Informatik",
"subjectSoftwareEngineering": "Softwareentwicklung",
"subjectDataScienceAi": "Data Science und KI",
"subjectItOperations": "IT und Betrieb",
"subjectSecurityPrivacy": "Sicherheit und Datenschutz",
"subjectEngineering": "Ingenieurwesen",
"subjectArchitecture": "Architektur",
"subjectHistory": "Geschichte",
"subjectGeography": "Geografie",
"subjectPolitics": "Politik",
"subjectLaw": "Recht",
"subjectEconomics": "Volkswirtschaft",
"subjectBusiness": "Betriebswirtschaft",
"subjectMarketing": "Marketing",
"subjectAccountingFinance": "Rechnungswesen und Finanzen",
"subjectSociology": "Soziologie",
"subjectAnthropology": "Anthropologie",
"subjectEducation": "Pädagogik",
"subjectMediaStudies": "Medienwissenschaft",
"subjectPhilosophy": "Philosophie",
"subjectReligiousStudies": "Religionswissenschaft",
"subjectLanguages": "Sprachen",
"subjectLiterature": "Literatur",
"subjectLinguistics": "Linguistik",
"subjectArtDesign": "Kunst und Design",
"subjectMusic": "Musik",
"subjectTheatreFilm": "Theater und Film",
"subjectCookingHospitality": "Kochen und Gastronomie",
"subjectDrivingLicences": "Führerschein und Lizenzen",
"subjectOther": "Sonstiges / unsicher",
"studysetSheetSubject": "Fach",
"studysetSheetSubjectNone": "Fach wählen",
"subjectPickerTitle": "Fach",
"libraryAllSubjects": "Alle Fächer",
"librarySubjectTooltip": "Ein Fach zeigen",
"libraryShelfStarred": "Mit Stern",
"libraryShelfLastWeek": "Letzte 7 Tage",
"libraryShelfLastMonth": "Letzter Monat",
"libraryShelfOlder": "Älter",
"studysetSideIntroduction": "Einführung",
"cardHintsFurigana": "Furigana",
"cardHintsPinyin": "Pinyin",
"cardHintsReadings": "Text darüber",
"cardHintsReadingsUnreviewed": "Manche Lesungen wurden automatisch erstellt und nicht geprüft.",
"settingsPathView": "Lernpfade",
"settingsPathViewHelp": "Schritte zeigt einen Schritt nach dem anderen. Scrollen zeigt einen Pfad auf einer Seite bis zu seiner nächsten Frage, mit seiner Gliederung daneben.",
"pathViewSteps": "Schritte",
"pathViewScroll": "Scrollen",
"runnerOutline": "Gliederung",
"runnerScrollLocked": "Beantworte die Frage oben, um weiterzumachen.",
"markdownNotText": "Diese Datei ist kein Markdown-Text in UTF-8.",
"markdownTooLarge": "Diese Markdown-Datei ist größer als {megabytes} MB.",
"markdownShare": "{percent} %",
"markdownAt": "Bei {percent} %",
"readerByPlace": "Stelle",
"proposalsFromPart": "Aus diesem Abschnitt",
"readerReferencedShare": "Referenzierte Stelle: {percent} %",
"readerUseCurrentShare": "Aktuelle verwenden ({percent} %)",
"progressMarkdownShare": "{percent} % gelesen",
"markdownDeadlineUpcoming": "Beginnt in {days, plural, =1{1 Tag} other{{days} Tagen}} – {percent} %/Tag geplant",
"markdownDeadlinePassed": "Frist abgelaufen – noch {percent} %",
"markdownDeadlineToday": "Heute fällig – noch {percent} %",
"markdownDeadlinePace": "{percent} %/Tag, um in {days, plural, =1{1 Tag} other{{days} Tagen}} {target} % zu erreichen",
"markdownDeadlineHelp": "Lies bis zu einem Tag einen Teil der Datei. Der Fortschritt folgt der weitesten Stelle, bis zu der du beim Lesen scrollst.",
"markdownDeadlineReach": "Erreichen (%)",
"markdownDeadlineChapterEntry": "{title} · bis {percent} %",
"markdownToShareToday": "heute bis {percent} %",
"markdownDeadlinesProgress": "{furthest} %/{target} % · {when}",
"readerShowSource": "Quelltext zeigen",
"readerShowFormatted": "Formatiert zeigen",
"studysetSheetMakingPrivate": "Alles darin wird verschlüsselt … Das kann eine Minute dauern; du kannst das hier solange schließen.",
"studysetSheetMakingReadable": "Alles darin wird lesbar gemacht … Das kann eine Minute dauern; du kannst das hier solange schließen."
feat(app): the app speaks British and American English and German Settings offers English (UK), English (US) and Deutsch after the device's language, each named in its own language. app_en.arb, the template, is now British English (colour, centre) and the fallback for any language the app doesn't speak; app_en_US.arb overrides the five messages American English spells differently, and app_en_GB.arb is empty, there so that Material's texts and dates are British too. The German translation says "du" and keeps one set of terms throughout (Lernset, Karteikarte, Lernpfad; Anki's own Stapel and Unterstapel in the Anki import). arb_files_test checks that German has every message of the template and that every translation keeps its placeholders. resolveAppLocale picks the first language the device prefers that the app speaks, in its country's variant where there is one; other English is British, and a country alone never picks a language (Spanish in the United States isn't American English), which Flutter's own resolution would do. Both MaterialApps take material_ui's GlobalMaterialLocalizations delegates: gen-l10n's list brings flutter_localizations', which serve only package:flutter/material.dart, so material_ui's widgets found no Material texts in German and threw. The editor's own text blocks show our placeholders while empty (list item, to-do, quote, heading, and the desktop's / hint): the editor's own follow a locale of their own, process-wide, in few languages. The last texts written into widgets (the person's data failing to open, the cards failing to read, the About dialog) moved into the arb files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-07 02:01:01 +02:00
}