Remove CharacterComponent and CharacterDetail components

- Deleted `CharacterComponent` and `CharacterDetail` files from the project.
- Refactored related logic to improve code maintainability and reduce redundancy.
This commit is contained in:
natreex
2026-02-05 14:12:08 -05:00
parent cec5830360
commit 209dc6f85a
133 changed files with 17673 additions and 3110 deletions

View File

@@ -154,7 +154,9 @@
"errorBookCreate": "An error occurred while creating the book.",
"errorBooksFetch": "An error occurred while retrieving the books.",
"errorBookDetails": "Error fetching book details.",
"errorUnknown": "An unknown error occurred."
"errorUnknown": "An unknown error occurred.",
"seriesSettings": "Series settings",
"emptySeries": "Empty series"
},
"bookCard": {
"noCoverAlt": "No cover",
@@ -200,6 +202,11 @@
"title": "Lyrics Generator",
"description": "Create song lyrics in a few clicks.",
"badge": "Lyrics"
},
"addSeries": {
"title": "Create a series",
"description": "Create a series to group multiple books.",
"badge": "SERIES"
}
}
},
@@ -350,6 +357,8 @@
}
},
"worldSetting": {
"exportSuccess": "World exported to series successfully.",
"exportToSeries": "Export to series",
"getWorldsError": "Error while fetching worlds.",
"unknownError": "Unknown error.",
"newWorldNameError": "Please enter a name for the new world.",
@@ -358,11 +367,19 @@
"createWorldLabel": "Create world",
"selectWorldPlaceholder": "Select a world",
"noWorldAvailable": "No world available.",
"noWorldDescription": "Create your first world to develop your story's universe.",
"newWorldPlaceholder": "New world name...",
"search": "Search for a world...",
"newWorld": "New world",
"deleteTitle": "Delete world",
"deleteMessage": "You are about to permanently delete the world \"{name}\".",
"worldName": "World name",
"worldNamePlaceholder": "Enter the world name",
"worldHistory": "World history",
"worldHistoryPlaceholder": "Describe the history of your world",
"basicInfo": "Basic information",
"politicsEconomy": "Politics and economy",
"cultureLanguages": "Culture and languages",
"politics": "Political description",
"politicsPlaceholder": "The political description of this world...",
"economy": "Rules and economic status",
@@ -380,8 +397,16 @@
"toolDisabled": "World management disabled."
},
"locationComponent": {
"exportSuccess": "Location exported to series successfully.",
"exportToSeries": "Export to series",
"newSectionPlaceholder": "New section name",
"addSectionLabel": "Add section",
"search": "Search for a section...",
"noSectionDescription": "Create your first section to organize your story's locations.",
"newSection": "New section",
"deleteTitle": "Delete section",
"deleteMessage": "You are about to permanently delete the section \"{name}\".",
"elementName": "Element name",
"elementNamePlaceholder": "Element name",
"elementDescriptionPlaceholder": "Element description",
"subElementsHeading": "Sub-elements",
@@ -392,6 +417,10 @@
"newElementPlaceholder": "New element",
"noSectionAvailable": "No section available.",
"createSectionLabel": "Create section",
"elementsCount": "{count} elements",
"element": "Element",
"addElement": "Add an element",
"addSubElement": "Add a sub-element",
"errorSectionNameEmpty": "Section name cannot be empty.",
"errorElementNameEmpty": "Element name cannot be empty.",
"errorSubElementNameEmpty": "Sub-element name cannot be empty.",
@@ -416,7 +445,19 @@
"toolEnabled": "Location management enabled.",
"toolDisabled": "Location management disabled."
},
"characterCategories": {
"none": "Select role",
"main": "Main",
"secondary": "Secondary",
"recurring": "Recurring"
},
"characterStatus": {
"alive": "Alive",
"dead": "Deceased",
"unknown": "Unknown"
},
"characterComponent": {
"exportSuccess": "Character exported to series successfully.",
"errorNameRequired": "Character name is required.",
"errorCategoryRequired": "Character role is required.",
"successAdd": "Character added successfully.",
@@ -435,51 +476,53 @@
"characterDetail": {
"back": "Back",
"newCharacter": "New character",
"exportToSeries": "Export to series",
"deleteTitle": "Delete character",
"deleteMessage": "You are about to permanently delete the character \"{name}\".",
"basicInfo": "Basic information",
"name": "First name",
"namePlaceholder": "Enter a first name",
"name": "Name",
"namePlaceholder": "Enter a name",
"lastName": "Last name",
"lastNamePlaceholder": "Example: Smith",
"nickname": "Nickname",
"nicknamePlaceholder": "Nickname or alias",
"nicknamePlaceholder": "Alias or nickname",
"role": "Role",
"title": "Title",
"titlePlaceholder": "Example: King, Captain, Doctor...",
"titlePlaceholder": "Ex: King, Captain, Doctor...",
"gender": "Gender",
"genderPlaceholder": "Character's gender",
"genderPlaceholder": "Ex: Male, Female, Non-binary",
"age": "Age",
"agePlaceholder": "Character's age",
"agePlaceholder": "Ex: 25",
"yearsOld": "years old",
"species": "Species",
"speciesPlaceholder": "Ex: Human, Elf, Vampire",
"nationality": "Nationality/Origin",
"nationalityPlaceholder": "Ex: French, Elven",
"status": "Status",
"residence": "Place of residence",
"residencePlaceholder": "Where the character lives",
"speechPattern": "Speech pattern",
"speechPatternPlaceholder": "Verbal tics, accent, vocabulary...",
"catchphrase": "Catchphrase",
"catchphrasePlaceholder": "Character's recurring quote",
"notes": "Author notes",
"notesPlaceholder": "Personal notes, reminders...",
"colorLabel": "Associated color",
"colorPlaceholder": "Ex: #51AE84 or green",
"advancedMode": "Advanced mode",
"showAdvanced": "Show",
"hideAdvanced": "Hide",
"identitySection": "Extended identity",
"voiceSection": "Character voice",
"authorSection": "Author notes",
"historySection": "Background",
"biography": "Biography",
"biographyPlaceholder": "Character biography.",
"history": "History",
"historyPlaceholder": "Character history...",
"roleFull": "Role in the story",
"roleFull": "Role",
"roleFullPlaceholder": "Role of the character in the story",
"advancedMode": "Advanced mode",
"showAdvanced": "Show",
"hideAdvanced": "Hide",
"identitySection": "Extended identity",
"species": "Species",
"speciesPlaceholder": "Human, Elf, Vampire...",
"nationality": "Nationality",
"nationalityPlaceholder": "Country or region of origin",
"status": "Status",
"residence": "Residence",
"residencePlaceholder": "Current place of residence",
"voiceSection": "Character voice",
"speechPattern": "Speech pattern",
"speechPatternPlaceholder": "How does this character speak? Accent, speech quirks...",
"catchphrase": "Catchphrase",
"catchphrasePlaceholder": "A signature phrase of the character",
"authorSection": "Author notes",
"notes": "Notes",
"notesPlaceholder": "Personal notes about this character...",
"colorLabel": "Color",
"colorPlaceholder": "Color associated with the character",
"fetchAttributesError": "Error fetching attributes.",
"deleteTitle": "Delete character",
"deleteMessage": "Are you sure you want to delete {name}? This action cannot be undone."
"fetchAttributesError": "Error fetching attributes."
},
"characterList": {
"search": "Search for a character...",
@@ -488,12 +531,15 @@
"unknown": "Unknown",
"noLastName": "No last name",
"noTitle": "No title",
"noRole": "No role"
"noRole": "No role",
"noCharacters": "No characters",
"noCharactersDescription": "Add your first character to get started."
},
"characterSectionElement": {
"newItem": "New {item}"
},
"spellComponent": {
"exportSuccess": "Spell exported to series successfully.",
"enableTool": "Enable spell book",
"enableToolDescription": "Manage the spells and magic of your universe.",
"errorNameRequired": "Spell name is required.",
@@ -520,6 +566,7 @@
"spellDetail": {
"back": "Back",
"newSpell": "New spell",
"exportToSeries": "Export to series",
"save": "Save",
"delete": "Delete",
"deleteTitle": "Delete spell",
@@ -561,9 +608,13 @@
},
"spellPowerLevels": {
"none": "None",
"minor": "Minor",
"moderate": "Moderate",
"major": "Major",
"cantrip": "Cantrip",
"novice": "Novice",
"apprentice": "Apprentice",
"journeyman": "Journeyman",
"expert": "Expert",
"master": "Master",
"grandmaster": "Grandmaster",
"legendary": "Legendary",
"divine": "Divine"
},
@@ -763,6 +814,26 @@
"tip": "💡 Tip: Start with a short story to master the basics, then move to longer formats as you gain experience."
}
},
"addNewSeriesForm": {
"title": "Create a new series",
"name": "Series name",
"namePlaceholder": "E.g.: The Chronicles of...",
"description": "Description",
"descriptionPlaceholder": "Describe your series...",
"optional": "optional",
"selectBooks": "Books to include",
"selected": "selected",
"noBooks": "No books available",
"add": "Create",
"adding": "Creating...",
"success": "Series created successfully.",
"error": {
"nameMissing": "Series name is required.",
"nameTooShort": "Name is too short. Minimum 2 characters required.",
"nameTooLong": "Name is too long. Maximum 100 characters allowed.",
"addingSeries": "An error occurred while creating the series."
}
},
"searchBook": {
"placeholder": "Search for a book..."
},
@@ -893,6 +964,13 @@
"chapbook": "Chapbook",
"novel": "Novel"
},
"bookType": {
"short": "Short Story",
"novelette": "Novelette",
"novella": "Novella",
"chapbook": "Chapbook",
"novel": "Novel"
},
"chapterVersions": {
"prompt": "Prompt",
"draft": "Draft",
@@ -907,10 +985,90 @@
"world": "Worlds",
"locations": "Locations",
"characters": "Characters",
"spells": "Spells",
"spells": "Spell Book",
"quillsense": "QuillSense (AI)",
"objects": "Objects",
"goals": "Goals",
"quillsense": "QuillSense"
"goals": "Goals"
},
"seriesSetting": {
"basicInformation": "Information",
"books": "Books",
"characters": "Characters",
"worlds": "Worlds",
"locations": "Locations",
"spells": "Spell Book",
"backToLibrary": "Back to library",
"errorLoading": "Error loading series",
"deleteSeries": "Delete series",
"deleteConfirmMessage": "This will permanently delete the series and all its elements (characters, worlds, locations, spells). Continue?",
"deleteSuccess": "Series deleted successfully",
"deleteError": "Error deleting series"
},
"seriesSettingOption": {
"basicInformation": "Basic Information",
"books": "Series Books",
"characters": "Global Characters",
"worlds": "Global Worlds",
"locations": "Global Locations",
"spells": "Global Spell Book",
"notAvailable": "This option is not yet available."
},
"seriesBasicInformation": {
"error": {
"noFileSelected": "No file selected.",
"removeCover": "Error removing cover.",
"nameRequired": "Series name is required.",
"update": "Error updating series information.",
"unknown": "An unknown error occurred."
},
"success": {
"update": "Series updated successfully."
},
"fields": {
"name": "Series Name",
"namePlaceholder": "E.g.: The Chronicles of...",
"description": "Description",
"descriptionPlaceholder": "Describe your series...",
"coverImage": "Cover Image",
"coverImageAlt": "Current cover",
"generateWithQuillSense": "Generate with QuillSense"
}
},
"seriesBooks": {
"addBook": "Add a book",
"add": "Add",
"selectBookPlaceholder": "Select a book...",
"booksInSeries": "Books in the series",
"noBooks": "No books in this series",
"moveUp": "Move up",
"moveDown": "Move down",
"removeBook": "Remove from series",
"error": {
"selectBook": "Please select a book.",
"unknown": "An unknown error occurred."
},
"success": {
"saved": "Changes saved."
}
},
"seriesCharacter": {
"noCharacters": "No global characters in this series."
},
"seriesCard": {
"book": "book",
"books": "books",
"series": "Series",
"settings": "Series settings",
"synced": "Synced",
"localOnly": "Local only",
"serverOnly": "Server only",
"toSyncFromServer": "Download from server",
"toSyncToServer": "Upload to server",
"uploadError": "Error uploading series.",
"downloadError": "Error downloading series.",
"syncFromServerError": "Error syncing from server.",
"syncToServerError": "Error syncing to server.",
"refreshError": "Error refreshing series."
},
"basicInformationSetting": {
"error": {
@@ -969,12 +1127,28 @@
"insert": "Insert"
},
"common": {
"back": "Back",
"cancel": "Cancel",
"confirm": "Confirm",
"create": "Create",
"delete": "Delete",
"deleting": "Deleting...",
"edit": "Edit",
"exportToSeries": "Export to series",
"save": "Save",
"unknownError": "An unknown error occurred",
"loading": "Loading..."
},
"syncField": {
"uploadSuccess": "{count} element(s) updated successfully.",
"uploadTooltip": "Push to series",
"downloadTooltip": "Pull from series"
},
"seriesImport": {
"importButton": "Import",
"importFromSeries": "Import from series",
"selectElement": "Select an element"
},
"editor": {
"error": {
"savedFailed": "Save failed",
@@ -1026,7 +1200,9 @@
"offlineInitError": "Error initializing offline mode",
"syncError": "Error syncing data",
"dbInitError": "Error initializing local database",
"offlineError": "Error checking offline mode"
"offlineError": "Error checking offline mode",
"fetchBooksError": "Error fetching books",
"fetchSeriesError": "Error fetching series"
}
},
"shortStoryGenerator": {

View File

@@ -154,7 +154,9 @@
"errorBookCreate": "Une erreur est survenue lors de la création du livre.",
"errorBooksFetch": "Une erreur est survenue lors de la récupération des livres.",
"errorBookDetails": "Erreur lors de la récupération des détails du livre.",
"errorUnknown": "Une erreur inconnue est survenue."
"errorUnknown": "Une erreur inconnue est survenue.",
"seriesSettings": "Paramètres de la série",
"emptySeries": "Séries vides"
},
"bookCard": {
"noCoverAlt": "Pas de couverture",
@@ -200,6 +202,11 @@
"title": "Générateur de paroles",
"description": "Créer des paroles de chanson en quelque cliques.",
"badge": "Lyrics"
},
"addSeries": {
"title": "Créer une série",
"description": "Créez une série pour regrouper plusieurs livres.",
"badge": "SÉRIE"
}
}
},
@@ -350,6 +357,8 @@
}
},
"worldSetting": {
"exportSuccess": "Monde exporté vers la série avec succès.",
"exportToSeries": "Exporter vers la série",
"getWorldsError": "Erreur lors de la récupération des mondes.",
"unknownError": "Erreur inconnu.",
"newWorldNameError": "Veuillez entrer un nom pour le nouveau monde.",
@@ -358,11 +367,19 @@
"createWorldLabel": "Créer un monde",
"selectWorldPlaceholder": "Sélectionner un monde",
"noWorldAvailable": "Aucun monde disponible.",
"noWorldDescription": "Créez votre premier monde pour développer l'univers de votre histoire.",
"newWorldPlaceholder": "Nom du nouveau monde...",
"search": "Rechercher un monde...",
"newWorld": "Nouveau monde",
"deleteTitle": "Supprimer le monde",
"deleteMessage": "Vous êtes sur le point de supprimer le monde « {name} » définitivement.",
"worldName": "Nom du monde",
"worldNamePlaceholder": "Entrez le nom du monde",
"worldHistory": "Histoire du monde",
"worldHistoryPlaceholder": "Décrivez l'histoire de votre monde",
"basicInfo": "Informations de base",
"politicsEconomy": "Politique et économie",
"cultureLanguages": "Culture et langues",
"politics": "Description politique",
"politicsPlaceholder": "La description politique de ce monde...",
"economy": "Règles et statut économique",
@@ -380,8 +397,16 @@
"toolDisabled": "Gestion des mondes désactivée."
},
"locationComponent": {
"exportSuccess": "Lieu exporté vers la série avec succès.",
"exportToSeries": "Exporter vers la série",
"newSectionPlaceholder": "Nom de la nouvelle section",
"addSectionLabel": "Ajouter une section",
"search": "Rechercher une section...",
"noSectionDescription": "Créez votre première section pour organiser les lieux de votre histoire.",
"newSection": "Nouvelle section",
"deleteTitle": "Supprimer la section",
"deleteMessage": "Vous êtes sur le point de supprimer la section « {name} » définitivement.",
"elementName": "Nom de l'élément",
"elementNamePlaceholder": "Nom de l'élément",
"elementDescriptionPlaceholder": "Description de l'élément",
"subElementsHeading": "Sous-éléments",
@@ -392,6 +417,10 @@
"newElementPlaceholder": "Nouvel élément",
"noSectionAvailable": "Aucune section disponible.",
"createSectionLabel": "Créer une section",
"elementsCount": "{count} éléments",
"element": "Élément",
"addElement": "Ajouter un élément",
"addSubElement": "Ajouter un sous-élément",
"errorSectionNameEmpty": "Le nom de la section ne peut pas être vide.",
"errorElementNameEmpty": "Le nom de l'élément ne peut pas être vide.",
"errorSubElementNameEmpty": "Le nom du sous-élément ne peut pas être vide.",
@@ -417,6 +446,7 @@
"toolDisabled": "Gestion des lieux désactivée."
},
"characterComponent": {
"exportSuccess": "Personnage exporté vers la série avec succès.",
"errorNameRequired": "Le nom du personnage est requis.",
"errorCategoryRequired": "Le rôle du personnage est requis.",
"successAdd": "Personnage ajouté avec succès.",
@@ -435,20 +465,24 @@
"characterDetail": {
"back": "Retour",
"newCharacter": "Nouveau personnage",
"exportToSeries": "Exporter vers la série",
"deleteTitle": "Supprimer le personnage",
"deleteMessage": "Vous êtes sur le point de supprimer le personnage « {name} » définitivement.",
"basicInfo": "Informations de base",
"name": "Prénom",
"namePlaceholder": "Entrer un prénom",
"name": "Nom",
"namePlaceholder": "Entrer un nom",
"lastName": "Nom de famille",
"lastNamePlaceholder": "Exemple : Smith",
"nickname": "Surnom",
"nicknamePlaceholder": "Surnom ou alias du personnage",
"nicknamePlaceholder": "Alias ou surnom",
"role": "Rôle",
"title": "Titre",
"titlePlaceholder": "Exemple : Roi, Capitaine, Docteur...",
"titlePlaceholder": "Ex: Roi, Capitaine, Docteur...",
"gender": "Genre",
"genderPlaceholder": "Genre du personnage",
"genderPlaceholder": "Ex: Masculin, Féminin, Non-binaire",
"age": "Âge",
"agePlaceholder": "Âge du personnage",
"agePlaceholder": "Ex: 25",
"yearsOld": "ans",
"historySection": "Parcours",
"biography": "Biographie",
"biographyPlaceholder": "La biographie du personnage.",
@@ -488,12 +522,15 @@
"unknown": "Inconnu",
"noLastName": "Sans nom",
"noTitle": "Sans titre",
"noRole": "Sans rôle"
"noRole": "Sans rôle",
"noCharacters": "Aucun personnage",
"noCharactersDescription": "Ajoutez votre premier personnage pour commencer."
},
"characterSectionElement": {
"newItem": "Nouveau {item}"
},
"spellComponent": {
"exportSuccess": "Sort exporté vers la série avec succès.",
"enableTool": "Activer le grimoire de sorts",
"enableToolDescription": "Gérez les sorts et la magie de votre univers.",
"errorNameRequired": "Le nom du sort est requis.",
@@ -520,6 +557,7 @@
"spellDetail": {
"back": "Retour",
"newSpell": "Nouveau sort",
"exportToSeries": "Exporter vers la série",
"save": "Enregistrer",
"delete": "Supprimer",
"deleteTitle": "Supprimer le sort",
@@ -561,9 +599,13 @@
},
"spellPowerLevels": {
"none": "Aucun",
"minor": "Mineur",
"moderate": "Modéré",
"major": "Majeur",
"cantrip": "Tour de magie",
"novice": "Novice",
"apprentice": "Apprenti",
"journeyman": "Compagnon",
"expert": "Expert",
"master": "Maître",
"grandmaster": "Grand maître",
"legendary": "Légendaire",
"divine": "Divin"
},
@@ -970,9 +1012,15 @@
"insert": "Insérer"
},
"common": {
"back": "Retour",
"cancel": "Annuler",
"confirm": "Confirmer",
"create": "Créer",
"delete": "Supprimer",
"deleting": "Suppression...",
"edit": "Modifier",
"exportToSeries": "Exporter vers la série",
"save": "Enregistrer",
"unknownError": "Une erreur inconnue est survenue",
"loading": "Chargement..."
},
@@ -1027,7 +1075,9 @@
"offlineInitError": "Erreur lors de l'initialisation du mode hors ligne",
"syncError": "Erreur lors de la synchronisation des données",
"dbInitError": "Erreur lors de l'initialisation de la base de données locale",
"offlineError": "Erreur lors de la vérification du mode hors ligne"
"offlineError": "Erreur lors de la vérification du mode hors ligne",
"fetchBooksError": "Erreur lors de la récupération des livres",
"fetchSeriesError": "Erreur lors de la récupération des séries"
}
},
"shortStoryGenerator": {
@@ -1139,6 +1189,134 @@
"deleteLocalWarning": "Attention : Cette action supprimera le livre du serveur ET de votre appareil. Cette action est irréversible.",
"errorUnknown": "Une erreur inconnue est survenue lors de la suppression du livre."
},
"characterCategories": {
"none": "Sélectionner son rôle",
"main": "Principal",
"secondary": "Secondaire",
"recurring": "Récurrent"
},
"characterStatus": {
"alive": "Vivant",
"dead": "Décédé",
"unknown": "Inconnu"
},
"addNewSeriesForm": {
"title": "Créer une nouvelle série",
"name": "Nom de la série",
"namePlaceholder": "Ex: Les Chroniques de...",
"description": "Description",
"descriptionPlaceholder": "Décrivez votre série...",
"optional": "optionnel",
"selectBooks": "Livres à inclure",
"selected": "sélectionné(s)",
"noBooks": "Aucun livre disponible",
"add": "Créer",
"adding": "Création...",
"success": "Série créée avec succès.",
"error": {
"nameMissing": "Le nom de la série est requis.",
"nameTooShort": "Le nom est trop court. Minimum 2 caractères requis.",
"nameTooLong": "Le nom est trop long. Maximum 100 caractères autorisés.",
"addingSeries": "Une erreur est survenue lors de la création de la série."
}
},
"seriesSetting": {
"basicInformation": "Informations",
"books": "Œuvres",
"characters": "Personnages",
"worlds": "Mondes",
"locations": "Emplacements",
"spells": "Grimoire",
"backToLibrary": "Retour à la bibliothèque",
"errorLoading": "Erreur lors du chargement de la série",
"deleteSeries": "Supprimer la série",
"deleteConfirmMessage": "Cette action supprimera définitivement la série et tous ses éléments (personnages, mondes, lieux, sorts). Continuer?",
"deleteSuccess": "Série supprimée avec succès",
"deleteError": "Erreur lors de la suppression de la série"
},
"seriesSettingOption": {
"basicInformation": "Informations de base",
"books": "Œuvres de la série",
"characters": "Les personnages",
"worlds": "Gérer les mondes",
"locations": "Vos emplacements",
"spells": "Grimoire de sorts",
"notAvailable": "Cette option n'est pas encore disponible."
},
"seriesBasicInformation": {
"error": {
"noFileSelected": "Aucun fichier sélectionné.",
"removeCover": "Erreur lors de la suppression de la couverture.",
"nameRequired": "Le nom de la série est obligatoire.",
"update": "Erreur lors de la mise à jour des informations de la série.",
"unknown": "Une erreur inconnue est survenue."
},
"success": {
"update": "Série mise à jour avec succès."
},
"fields": {
"name": "Nom de la série",
"namePlaceholder": "Ex: Les Chroniques de...",
"description": "Description",
"descriptionPlaceholder": "Décrivez votre série...",
"coverImage": "Image couverture",
"coverImageAlt": "Couverture actuelle",
"generateWithQuillSense": "Générer avec QuillSense"
}
},
"seriesBooks": {
"addBook": "Ajouter un livre",
"add": "Ajouter",
"selectBookPlaceholder": "Sélectionner un livre...",
"booksInSeries": "Livres dans la série",
"noBooks": "Aucun livre dans cette série",
"moveUp": "Monter",
"moveDown": "Descendre",
"removeBook": "Retirer de la série",
"error": {
"selectBook": "Veuillez sélectionner un livre.",
"unknown": "Une erreur inconnue est survenue."
},
"success": {
"saved": "Changements enregistrés."
}
},
"seriesCharacter": {
"noCharacters": "Aucun personnage global dans cette série."
},
"seriesCard": {
"book": "livre",
"books": "livres",
"series": "Série",
"settings": "Paramètres de la série",
"synced": "Synchronisé",
"localOnly": "Local uniquement",
"serverOnly": "Sur le serveur uniquement",
"toSyncFromServer": "Télécharger depuis le serveur",
"toSyncToServer": "Envoyer vers le serveur",
"uploadError": "Erreur lors du téléversement de la série.",
"downloadError": "Erreur lors du téléchargement de la série.",
"syncFromServerError": "Erreur lors de la synchronisation depuis le serveur.",
"syncToServerError": "Erreur lors de la synchronisation vers le serveur.",
"refreshError": "Erreur lors du rafraîchissement des séries."
},
"bookType": {
"short": "Nouvelle",
"novelette": "Novelette",
"novella": "Novella",
"chapbook": "Chapbook",
"novel": "Roman"
},
"syncField": {
"uploadSuccess": "{count} élément(s) mis à jour avec succès.",
"uploadTooltip": "Envoyer vers la série",
"downloadTooltip": "Récupérer depuis la série"
},
"seriesImport": {
"importButton": "Importer",
"importFromSeries": "Importer depuis la série",
"selectElement": "Sélectionner un élément"
},
"quillSenseSetting": {
"title": "Paramètres QuillSense",
"description": "Gérez les fonctionnalités d'intelligence artificielle pour ce livre.",