feat(web): CSV-Import/Export, Tab-Format-Import, PDF-Druckansicht
- CSV-Import: Dropzone für .csv-Dateien, unterstützt 2-spaltig (front,back)
und 3-spaltig (type,front,back) inkl. cloze; Dedupe via contentHash
- CSV-Export: Button auf Deck-Detail-Seite, lädt type,front,back als .csv
- Tab-Format-Import (ehem. Quizlet): Textarea für tab-getrennte Zeilen;
funktioniert mit Excel, Google Sheets, Notion und Quizlet-Extension;
Anleitung erklärt Quizlet-Paywall-Workaround (Quizlet Exporter Extension)
- PDF-Druckansicht: Route /decks/[id]/print, A6-Karten mit alternierenden
Vorder-/Rückseiten, CSS @page { size: A6 landscape } für Browser-Druck
- Import-Seite: Tab-Bar Anki | CSV | Tab-Format
- i18n: alle 5 Sprachen (DE/EN/FR/ES/IT) vollständig
- docs/FEATURE_IDEAS.md: strukturierte Feature-Liste als Planungsgrundlage
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
9839737049
commit
926ff685c7
15 changed files with 1332 additions and 17 deletions
|
|
@ -50,6 +50,8 @@ export const it: TranslationNode = {
|
|||
card_delete_confirm: 'Eliminare la carta? I ripassi verranno eliminati insieme ad essa.',
|
||||
fan_aria: 'Carte aperte a ventaglio dal mazzo "{name}"',
|
||||
card_open: 'Apri carta — {type}',
|
||||
export_csv: 'CSV',
|
||||
print_cards: 'Stampa',
|
||||
},
|
||||
deck_stack: {
|
||||
aria_label: 'Mazzo "{name}" — {cards} carte, {due} da ripassare',
|
||||
|
|
@ -197,6 +199,43 @@ export const it: TranslationNode = {
|
|||
done_more: 'Un altro file',
|
||||
error_label: 'Errore: {msg}',
|
||||
retry: 'Riprova',
|
||||
tab_anki: 'Anki',
|
||||
tab_csv: 'CSV',
|
||||
tab_quizlet: 'Formato tab',
|
||||
csv_label: 'Importa file CSV',
|
||||
csv_dropzone: '📄 Trascina un file CSV qui o clicca',
|
||||
csv_dropzone_hint:
|
||||
'Formato: type,front,back — intestazione facoltativa. Supporta: basic, basic-reverse, cloze.',
|
||||
csv_deck_label: 'Nome del mazzo',
|
||||
csv_deck_placeholder: 'Il mio mazzo importato',
|
||||
csv_done_summary: '✓ {cards} carte aggiunte a "{deck}".',
|
||||
csv_format_title: 'Formato CSV',
|
||||
csv_format_example:
|
||||
'type,front,back\nbasic,What is 2+2?,4\nbasic-reverse,Paris,Capital of France\ncloze,"The {{c1::mitochondria}} are the powerhouse",',
|
||||
csv_format_note: 'Senza colonna type, tutte le carte vengono create come basic.',
|
||||
quizlet_label: 'Importa formato tabulato',
|
||||
quizlet_hint:
|
||||
'Funziona con Quizlet (tramite estensione), Excel, Notion, Google Sheets o qualsiasi strumento che copia righe separate da tabulazioni.',
|
||||
quizlet_paste_label: 'Incolla testo (termine Tab definizione)',
|
||||
quizlet_placeholder: 'Termine\tDefinizione',
|
||||
quizlet_deck_label: 'Nome del mazzo',
|
||||
quizlet_deck_placeholder: 'Il mio mazzo importato',
|
||||
quizlet_preview: 'Anteprima',
|
||||
quizlet_how_title: 'Da dove viene questo formato?',
|
||||
quizlet_how_1: 'Excel / Google Sheets: seleziona due colonne, copia → incolla qui.',
|
||||
quizlet_how_2: 'Tabella Notion: seleziona le colonne, copia → incolla qui.',
|
||||
quizlet_how_3:
|
||||
'Quizlet: l\'esportazione è a pagamento. Alternativa gratuita: installa l\'estensione "Quizlet Exporter" → esporta come CSV tabulato → incolla qui.',
|
||||
},
|
||||
print: {
|
||||
title: 'Stampa {deck}',
|
||||
loading: 'Caricamento…',
|
||||
btn: 'Stampa',
|
||||
back: '← Indietro',
|
||||
n_cards_one: '1 carta',
|
||||
n_cards: '{n} carte',
|
||||
front: 'Fronte',
|
||||
back_side: 'Retro',
|
||||
},
|
||||
inbox_banner: {
|
||||
label: '📥 In arrivo',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue