diff --git a/apps/mana/apps/web/src/lib/i18n/locales/comic/de.json b/apps/mana/apps/web/src/lib/i18n/locales/comic/de.json
index 9cb6e8d78..950350448 100644
--- a/apps/mana/apps/web/src/lib/i18n/locales/comic/de.json
+++ b/apps/mana/apps/web/src/lib/i18n/locales/comic/de.json
@@ -31,5 +31,50 @@
"cartoon": "Cartoon",
"graphic-novel": "Graphic Novel",
"webtoon": "Webtoon"
+ },
+ "picker": {
+ "section_title": "Protagonist",
+ "section_hint": "Dein Gesicht ist Pflicht. Body-Ref und bis zu {max} Kostüm-Fotos sind optional — klicke ein Bild oder das ✕, um es wieder zu entfernen.",
+ "face_required_title": "Face-Ref ist Pflicht — kann nicht entfernt werden",
+ "face_required_badge": "Pflicht",
+ "face_alt": "Face-Ref",
+ "face_missing": "Face fehlt",
+ "face_label": "Face",
+ "body_alt": "Body-Ref",
+ "body_missing": "Body fehlt",
+ "body_label": "Body",
+ "body_no_in_space": "Kein Body-Ref im aktiven Space",
+ "toggle_remove": "Klick zum Entfernen",
+ "toggle_add": "Klick zum Hinzufügen",
+ "garment_remove_aria": "{name} entfernen",
+ "garment_label": "Kostüm",
+ "garment_picker_title": "Kostüm aus dem Schrank wählen",
+ "garment_picker_close": "Schließen",
+ "garment_picker_empty_html": "Keine weiteren Kleidungsstücke verfügbar — lade welche in /wardrobe hoch.",
+ "no_face_alert_html": "Kein Gesichtsbild in diesem Space. Lade eins in Profil → Bilder hoch — ohne Face-Ref kein Comic.",
+ "body_tip": "Tipp: Ein Body-Ref hilft, wenn der Comic Ganzkörper-Panels zeigen soll."
+ },
+ "character_detail": {
+ "back_aria": "Zurück zu Characters",
+ "breadcrumb": "Comic · Characters",
+ "loading": "Lädt…",
+ "not_found": "Character nicht gefunden.",
+ "not_found_hint": "Gelöscht oder in einem anderen Space.",
+ "variant_one": "{n} Variante",
+ "variant_other": "{n} Varianten",
+ "pin_open": "Pin offen",
+ "favorite_remove": "Favorit entfernen",
+ "favorite_set": "Als Favorit markieren",
+ "prompt_add_label": "Prompt-Add:",
+ "section_variants": "Varianten",
+ "action_more_variants": "Mehr Varianten",
+ "empty_variants_title": "Noch keine Varianten.",
+ "empty_variants_hint_html": "Klick oben rechts auf + Mehr Varianten, um die ersten 4 zu generieren.",
+ "unarchive": "Wieder aktiv",
+ "archive": "Archivieren",
+ "delete": "Löschen",
+ "archived_hint": "Archivierter Character — keine Variant-Generierung möglich, bis wieder aktiviert.",
+ "confirm_delete_character": "Character \"{name}\" wirklich löschen?",
+ "confirm_remove_variant": "Variante aus dem Character entfernen? Das Bild bleibt in deiner Picture-Galerie und kann dort gelöscht werden."
}
}
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/comic/en.json b/apps/mana/apps/web/src/lib/i18n/locales/comic/en.json
index da18531bf..3da8a4942 100644
--- a/apps/mana/apps/web/src/lib/i18n/locales/comic/en.json
+++ b/apps/mana/apps/web/src/lib/i18n/locales/comic/en.json
@@ -31,5 +31,50 @@
"cartoon": "Cartoon",
"graphic-novel": "Graphic Novel",
"webtoon": "Webtoon"
+ },
+ "picker": {
+ "section_title": "Protagonist",
+ "section_hint": "Your face is required. Body-ref and up to {max} costume photos are optional — click an image or the ✕ to remove it.",
+ "face_required_title": "Face-ref is required — cannot be removed",
+ "face_required_badge": "Required",
+ "face_alt": "Face ref",
+ "face_missing": "No face",
+ "face_label": "Face",
+ "body_alt": "Body ref",
+ "body_missing": "No body",
+ "body_label": "Body",
+ "body_no_in_space": "No body-ref in active space",
+ "toggle_remove": "Click to remove",
+ "toggle_add": "Click to add",
+ "garment_remove_aria": "Remove {name}",
+ "garment_label": "Costume",
+ "garment_picker_title": "Pick a costume from the wardrobe",
+ "garment_picker_close": "Close",
+ "garment_picker_empty_html": "No more garments available — upload some in /wardrobe.",
+ "no_face_alert_html": "No face photo in this space. Upload one in Profile → Images — without a face ref no comic.",
+ "body_tip": "Tip: a body ref helps when the comic shows full-body panels."
+ },
+ "character_detail": {
+ "back_aria": "Back to characters",
+ "breadcrumb": "Comic · Characters",
+ "loading": "Loading…",
+ "not_found": "Character not found.",
+ "not_found_hint": "Deleted or in another space.",
+ "variant_one": "{n} variant",
+ "variant_other": "{n} variants",
+ "pin_open": "Pin pending",
+ "favorite_remove": "Remove favorite",
+ "favorite_set": "Mark as favorite",
+ "prompt_add_label": "Prompt add:",
+ "section_variants": "Variants",
+ "action_more_variants": "More variants",
+ "empty_variants_title": "No variants yet.",
+ "empty_variants_hint_html": "Click + More variants in the top right to generate the first 4.",
+ "unarchive": "Reactivate",
+ "archive": "Archive",
+ "delete": "Delete",
+ "archived_hint": "Archived character — no variant generation possible until reactivated.",
+ "confirm_delete_character": "Really delete character \"{name}\"?",
+ "confirm_remove_variant": "Remove variant from this character? The image stays in your Picture gallery and can be deleted there."
}
}
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/comic/es.json b/apps/mana/apps/web/src/lib/i18n/locales/comic/es.json
index 1980bbcd7..a95ab69a0 100644
--- a/apps/mana/apps/web/src/lib/i18n/locales/comic/es.json
+++ b/apps/mana/apps/web/src/lib/i18n/locales/comic/es.json
@@ -31,5 +31,50 @@
"cartoon": "Cartoon",
"graphic-novel": "Novela gráfica",
"webtoon": "Webtoon"
+ },
+ "picker": {
+ "section_title": "Protagonista",
+ "section_hint": "Tu cara es obligatoria. La body-ref y hasta {max} fotos de vestuario son opcionales — haz clic en una imagen o en la ✕ para quitarla.",
+ "face_required_title": "Face-ref es obligatoria — no se puede quitar",
+ "face_required_badge": "Obligatorio",
+ "face_alt": "Face ref",
+ "face_missing": "Sin cara",
+ "face_label": "Cara",
+ "body_alt": "Body ref",
+ "body_missing": "Sin cuerpo",
+ "body_label": "Cuerpo",
+ "body_no_in_space": "No hay body-ref en el espacio activo",
+ "toggle_remove": "Clic para quitar",
+ "toggle_add": "Clic para añadir",
+ "garment_remove_aria": "Quitar {name}",
+ "garment_label": "Vestuario",
+ "garment_picker_title": "Elegir vestuario del armario",
+ "garment_picker_close": "Cerrar",
+ "garment_picker_empty_html": "No hay más prendas disponibles — sube algunas en /wardrobe.",
+ "no_face_alert_html": "No hay foto de cara en este espacio. Sube una en Perfil → Imágenes — sin face-ref no hay cómic.",
+ "body_tip": "Tip: una body-ref ayuda cuando el cómic muestra paneles de cuerpo entero."
+ },
+ "character_detail": {
+ "back_aria": "Volver a personajes",
+ "breadcrumb": "Cómic · Personajes",
+ "loading": "Cargando…",
+ "not_found": "Personaje no encontrado.",
+ "not_found_hint": "Eliminado o en otro espacio.",
+ "variant_one": "{n} variante",
+ "variant_other": "{n} variantes",
+ "pin_open": "Pin pendiente",
+ "favorite_remove": "Quitar favorito",
+ "favorite_set": "Marcar como favorito",
+ "prompt_add_label": "Prompt extra:",
+ "section_variants": "Variantes",
+ "action_more_variants": "Más variantes",
+ "empty_variants_title": "Aún sin variantes.",
+ "empty_variants_hint_html": "Haz clic en + Más variantes arriba a la derecha para generar las primeras 4.",
+ "unarchive": "Reactivar",
+ "archive": "Archivar",
+ "delete": "Eliminar",
+ "archived_hint": "Personaje archivado — no se pueden generar variantes hasta reactivar.",
+ "confirm_delete_character": "¿Eliminar realmente el personaje \"{name}\"?",
+ "confirm_remove_variant": "¿Quitar variante del personaje? La imagen permanece en tu galería de Picture y puede eliminarse allí."
}
}
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/comic/fr.json b/apps/mana/apps/web/src/lib/i18n/locales/comic/fr.json
index 1c2ecb82e..45d6490df 100644
--- a/apps/mana/apps/web/src/lib/i18n/locales/comic/fr.json
+++ b/apps/mana/apps/web/src/lib/i18n/locales/comic/fr.json
@@ -31,5 +31,50 @@
"cartoon": "Cartoon",
"graphic-novel": "Roman graphique",
"webtoon": "Webtoon"
+ },
+ "picker": {
+ "section_title": "Protagoniste",
+ "section_hint": "Ton visage est obligatoire. La body-ref et jusqu'à {max} photos de costume sont optionnelles — clique sur une image ou la ✕ pour la retirer.",
+ "face_required_title": "Face-ref est obligatoire — impossible à retirer",
+ "face_required_badge": "Obligatoire",
+ "face_alt": "Face ref",
+ "face_missing": "Pas de visage",
+ "face_label": "Visage",
+ "body_alt": "Body ref",
+ "body_missing": "Pas de corps",
+ "body_label": "Corps",
+ "body_no_in_space": "Aucune body-ref dans l'espace actif",
+ "toggle_remove": "Clic pour retirer",
+ "toggle_add": "Clic pour ajouter",
+ "garment_remove_aria": "Retirer {name}",
+ "garment_label": "Costume",
+ "garment_picker_title": "Choisir un costume dans la garde-robe",
+ "garment_picker_close": "Fermer",
+ "garment_picker_empty_html": "Aucun autre vêtement disponible — ajoutes-en dans /wardrobe.",
+ "no_face_alert_html": "Aucune photo de visage dans cet espace. Ajoute-en une dans Profil → Images — sans face-ref pas de comic.",
+ "body_tip": "Astuce : une body-ref aide quand le comic montre des panneaux corps entier."
+ },
+ "character_detail": {
+ "back_aria": "Retour aux personnages",
+ "breadcrumb": "Comic · Personnages",
+ "loading": "Chargement…",
+ "not_found": "Personnage introuvable.",
+ "not_found_hint": "Supprimé ou dans un autre espace.",
+ "variant_one": "{n} variante",
+ "variant_other": "{n} variantes",
+ "pin_open": "Pin en attente",
+ "favorite_remove": "Retirer des favoris",
+ "favorite_set": "Marquer comme favori",
+ "prompt_add_label": "Prompt extra :",
+ "section_variants": "Variantes",
+ "action_more_variants": "Plus de variantes",
+ "empty_variants_title": "Pas encore de variantes.",
+ "empty_variants_hint_html": "Clique sur + Plus de variantes en haut à droite pour générer les 4 premières.",
+ "unarchive": "Réactiver",
+ "archive": "Archiver",
+ "delete": "Supprimer",
+ "archived_hint": "Personnage archivé — pas de génération de variantes possible jusqu'à réactivation.",
+ "confirm_delete_character": "Vraiment supprimer le personnage « {name} » ?",
+ "confirm_remove_variant": "Retirer la variante du personnage ? L'image reste dans ta galerie Picture et peut y être supprimée."
}
}
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/comic/it.json b/apps/mana/apps/web/src/lib/i18n/locales/comic/it.json
index d3a5a531c..5d0f6654f 100644
--- a/apps/mana/apps/web/src/lib/i18n/locales/comic/it.json
+++ b/apps/mana/apps/web/src/lib/i18n/locales/comic/it.json
@@ -31,5 +31,50 @@
"cartoon": "Cartoon",
"graphic-novel": "Graphic Novel",
"webtoon": "Webtoon"
+ },
+ "picker": {
+ "section_title": "Protagonista",
+ "section_hint": "Il tuo volto è obbligatorio. La body-ref e fino a {max} foto di costume sono opzionali — clicca un'immagine o la ✕ per rimuoverla.",
+ "face_required_title": "Face-ref è obbligatoria — non rimovibile",
+ "face_required_badge": "Obbligatorio",
+ "face_alt": "Face ref",
+ "face_missing": "Nessun volto",
+ "face_label": "Volto",
+ "body_alt": "Body ref",
+ "body_missing": "Nessun corpo",
+ "body_label": "Corpo",
+ "body_no_in_space": "Nessuna body-ref nello spazio attivo",
+ "toggle_remove": "Clic per rimuovere",
+ "toggle_add": "Clic per aggiungere",
+ "garment_remove_aria": "Rimuovi {name}",
+ "garment_label": "Costume",
+ "garment_picker_title": "Scegli un costume dall'armadio",
+ "garment_picker_close": "Chiudi",
+ "garment_picker_empty_html": "Nessun altro indumento disponibile — caricane in /wardrobe.",
+ "no_face_alert_html": "Nessuna foto del volto in questo spazio. Caricane una in Profilo → Immagini — senza face-ref niente comic.",
+ "body_tip": "Suggerimento: una body-ref aiuta quando il comic mostra pannelli a figura intera."
+ },
+ "character_detail": {
+ "back_aria": "Torna ai personaggi",
+ "breadcrumb": "Comic · Personaggi",
+ "loading": "Caricamento…",
+ "not_found": "Personaggio non trovato.",
+ "not_found_hint": "Eliminato o in un altro spazio.",
+ "variant_one": "{n} variante",
+ "variant_other": "{n} varianti",
+ "pin_open": "Pin in attesa",
+ "favorite_remove": "Rimuovi preferito",
+ "favorite_set": "Segna come preferito",
+ "prompt_add_label": "Prompt extra:",
+ "section_variants": "Varianti",
+ "action_more_variants": "Altre varianti",
+ "empty_variants_title": "Ancora nessuna variante.",
+ "empty_variants_hint_html": "Clicca + Altre varianti in alto a destra per generare le prime 4.",
+ "unarchive": "Riattiva",
+ "archive": "Archivia",
+ "delete": "Elimina",
+ "archived_hint": "Personaggio archiviato — generazione varianti non possibile fino alla riattivazione.",
+ "confirm_delete_character": "Eliminare davvero il personaggio \"{name}\"?",
+ "confirm_remove_variant": "Rimuovere la variante dal personaggio? L'immagine resta nella tua galleria Picture e può essere eliminata lì."
}
}
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/quiz/de.json b/apps/mana/apps/web/src/lib/i18n/locales/quiz/de.json
index 0b8242456..5ac5607d7 100644
--- a/apps/mana/apps/web/src/lib/i18n/locales/quiz/de.json
+++ b/apps/mana/apps/web/src/lib/i18n/locales/quiz/de.json
@@ -42,5 +42,23 @@
"action_add_question": "Frage hinzufügen",
"truefalse_true": "Wahr",
"truefalse_false": "Falsch"
+ },
+ "play_view": {
+ "back_aria": "Zurück",
+ "back_label": "Quiz",
+ "empty_quiz": "Quiz nicht gefunden.",
+ "empty_no_questions": "Dieses Quiz hat noch keine Fragen.",
+ "score_summary": "{correct} von {total} richtig",
+ "review_your_answer": "Deine Antwort: ",
+ "review_correct": "Richtig: ",
+ "action_back_to_list": "Zurück zur Liste",
+ "action_replay": "Nochmal spielen",
+ "placeholder_text_answer": "Deine Antwort",
+ "feedback_correct": "Richtig!",
+ "feedback_incorrect_label": "Richtige Antwort:",
+ "action_check": "Antwort prüfen",
+ "action_view_result": "Ergebnis ansehen",
+ "action_next": "Weiter",
+ "placeholder_review_dash": "—"
}
}
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/quiz/en.json b/apps/mana/apps/web/src/lib/i18n/locales/quiz/en.json
index 56107b127..67c24223f 100644
--- a/apps/mana/apps/web/src/lib/i18n/locales/quiz/en.json
+++ b/apps/mana/apps/web/src/lib/i18n/locales/quiz/en.json
@@ -42,5 +42,23 @@
"action_add_question": "Add question",
"truefalse_true": "True",
"truefalse_false": "False"
+ },
+ "play_view": {
+ "back_aria": "Back",
+ "back_label": "Quiz",
+ "empty_quiz": "Quiz not found.",
+ "empty_no_questions": "This quiz has no questions yet.",
+ "score_summary": "{correct} out of {total} correct",
+ "review_your_answer": "Your answer: ",
+ "review_correct": "Correct: ",
+ "action_back_to_list": "Back to list",
+ "action_replay": "Play again",
+ "placeholder_text_answer": "Your answer",
+ "feedback_correct": "Correct!",
+ "feedback_incorrect_label": "Correct answer:",
+ "action_check": "Check answer",
+ "action_view_result": "View result",
+ "action_next": "Next",
+ "placeholder_review_dash": "—"
}
}
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/quiz/es.json b/apps/mana/apps/web/src/lib/i18n/locales/quiz/es.json
index 576105800..dbba31f95 100644
--- a/apps/mana/apps/web/src/lib/i18n/locales/quiz/es.json
+++ b/apps/mana/apps/web/src/lib/i18n/locales/quiz/es.json
@@ -42,5 +42,23 @@
"action_add_question": "Añadir pregunta",
"truefalse_true": "Verdadero",
"truefalse_false": "Falso"
+ },
+ "play_view": {
+ "back_aria": "Atrás",
+ "back_label": "Quiz",
+ "empty_quiz": "Quiz no encontrado.",
+ "empty_no_questions": "Este quiz aún no tiene preguntas.",
+ "score_summary": "{correct} de {total} correctas",
+ "review_your_answer": "Tu respuesta: ",
+ "review_correct": "Correcta: ",
+ "action_back_to_list": "Volver a la lista",
+ "action_replay": "Volver a jugar",
+ "placeholder_text_answer": "Tu respuesta",
+ "feedback_correct": "¡Correcto!",
+ "feedback_incorrect_label": "Respuesta correcta:",
+ "action_check": "Comprobar respuesta",
+ "action_view_result": "Ver resultado",
+ "action_next": "Siguiente",
+ "placeholder_review_dash": "—"
}
}
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/quiz/fr.json b/apps/mana/apps/web/src/lib/i18n/locales/quiz/fr.json
index 270278f50..9fac36a9e 100644
--- a/apps/mana/apps/web/src/lib/i18n/locales/quiz/fr.json
+++ b/apps/mana/apps/web/src/lib/i18n/locales/quiz/fr.json
@@ -42,5 +42,23 @@
"action_add_question": "Ajouter la question",
"truefalse_true": "Vrai",
"truefalse_false": "Faux"
+ },
+ "play_view": {
+ "back_aria": "Retour",
+ "back_label": "Quiz",
+ "empty_quiz": "Quiz introuvable.",
+ "empty_no_questions": "Ce quiz n'a pas encore de questions.",
+ "score_summary": "{correct} sur {total} correctes",
+ "review_your_answer": "Ta réponse : ",
+ "review_correct": "Correct : ",
+ "action_back_to_list": "Retour à la liste",
+ "action_replay": "Rejouer",
+ "placeholder_text_answer": "Ta réponse",
+ "feedback_correct": "Bonne réponse !",
+ "feedback_incorrect_label": "Réponse correcte :",
+ "action_check": "Vérifier la réponse",
+ "action_view_result": "Voir le résultat",
+ "action_next": "Suivant",
+ "placeholder_review_dash": "—"
}
}
diff --git a/apps/mana/apps/web/src/lib/i18n/locales/quiz/it.json b/apps/mana/apps/web/src/lib/i18n/locales/quiz/it.json
index 3cac3b9bb..77d08bb29 100644
--- a/apps/mana/apps/web/src/lib/i18n/locales/quiz/it.json
+++ b/apps/mana/apps/web/src/lib/i18n/locales/quiz/it.json
@@ -42,5 +42,23 @@
"action_add_question": "Aggiungi domanda",
"truefalse_true": "Vero",
"truefalse_false": "Falso"
+ },
+ "play_view": {
+ "back_aria": "Indietro",
+ "back_label": "Quiz",
+ "empty_quiz": "Quiz non trovato.",
+ "empty_no_questions": "Questo quiz non ha ancora domande.",
+ "score_summary": "{correct} di {total} corrette",
+ "review_your_answer": "La tua risposta: ",
+ "review_correct": "Corretta: ",
+ "action_back_to_list": "Torna alla lista",
+ "action_replay": "Gioca di nuovo",
+ "placeholder_text_answer": "La tua risposta",
+ "feedback_correct": "Corretto!",
+ "feedback_incorrect_label": "Risposta corretta:",
+ "action_check": "Controlla risposta",
+ "action_view_result": "Vedi risultato",
+ "action_next": "Avanti",
+ "placeholder_review_dash": "—"
}
}