feat(app): export a studyset as Markdown
Export content, in the studyset's options, writes the studyset and everything inside it as one readable Markdown document (decided 2026-10-08: no re-importable archive before the public tier's release files): its title, secondary title, description and licence, then its flashcards (answers below their questions, choices as task lists), notes, learning paths (steps with their kinds, answers, feedback and sources), PDFs and bibliography, then each sub-studyset a level deeper. Rich text keeps its formatting; formulas go between dollars, callouts become quotes, spoilers HTML details, YouTube videos links. With files (images, sounds, PDFs) it keeps a .zip of the document and them under files/; a file this device can't have is named and counted. Saving goes through a FileSaver: file_selector's dialog on the desktop, file_picker's (Android's Storage Access Framework) on phones, a direct dependency now at the version the editor already brings. 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>
This commit is contained in:
parent
a26150a314
commit
882b669c3e
1 changed files with 1767 additions and 3 deletions
|
|
@ -885,6 +885,67 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||
@override
|
||||
String get studysetImportContent => 'Inhalt importieren';
|
||||
|
||||
@override
|
||||
String get studysetMenuExport => 'Inhalt exportieren';
|
||||
|
||||
@override
|
||||
String get exportRunning => 'Wird exportiert …';
|
||||
|
||||
@override
|
||||
String get exportedMarkdown => 'Als Markdown exportiert.';
|
||||
|
||||
@override
|
||||
String exportedZip(int count) {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: 'Als Markdown mit $count Dateien exportiert (.zip).',
|
||||
one: 'Als Markdown mit 1 Datei exportiert (.zip).',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String exportMissingFiles(int count) {
|
||||
String _temp0 = intl.Intl.pluralLogic(
|
||||
count,
|
||||
locale: localeName,
|
||||
other: '$count Dateien waren nicht auf diesem Gerät und fehlen.',
|
||||
one: '1 Datei war nicht auf diesem Gerät und fehlt.',
|
||||
);
|
||||
return '$_temp0';
|
||||
}
|
||||
|
||||
@override
|
||||
String get exportFailed => 'Das Lernset konnte nicht exportiert werden.';
|
||||
|
||||
@override
|
||||
String get exportQuestion => 'F';
|
||||
|
||||
@override
|
||||
String get exportAnswer => 'A';
|
||||
|
||||
@override
|
||||
String get exportHint => 'Hinweis';
|
||||
|
||||
@override
|
||||
String get exportIfRight => 'Wenn richtig';
|
||||
|
||||
@override
|
||||
String get exportIfWrong => 'Wenn falsch';
|
||||
|
||||
@override
|
||||
String get exportSound => 'Ton';
|
||||
|
||||
@override
|
||||
String get exportVideo => 'YouTube-Video';
|
||||
|
||||
@override
|
||||
String get exportSpoiler => 'Spoiler';
|
||||
|
||||
@override
|
||||
String get exportUnavailable => 'nicht auf diesem Gerät verfügbar';
|
||||
|
||||
@override
|
||||
String get studysetImportPath => 'Lernpfad';
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue