Bump app version to 0.5.0 and implement offline mode support across components

- Added offline detection logic with `OfflineContext` to improve app functionality in offline scenarios.
- Integrated Tauri IPC functions to handle local tool settings and character attributes when offline.
- Refined indentation logic in `TextEditor` for better compatibility with WebKit engines.
- Removed unused `indent` property and related settings in editor components to simplify configuration.
- Updated locale files with improved translation consistency and parameterized placeholders.
This commit is contained in:
natreex
2026-03-24 22:45:10 -04:00
parent a114592ac9
commit cfd08e3261
23 changed files with 410 additions and 409 deletions

View File

@@ -106,7 +106,7 @@
},
"chapters": {
"title": "Chapitres",
"detected": "{count} chapitre(s) détecté(s)",
"detected": "{{count}} chapitre(s) détecté(s)",
"selectAll": "Tout sélectionner",
"deselectAll": "Tout désélectionner",
"words": "mots"
@@ -133,7 +133,7 @@
"errorChapterUpdate": "Une erreur est survenue lors de la mise à jour du chapitre.",
"errorChapterDelete": "Une erreur est survenue lors de la suppression du chapitre.",
"errorChapterNameRequired": "Le nom du chapitre est requis.",
"errorChapterSubmit": "Erreur lors de la soumission du chapitre {chapterName}.",
"errorChapterSubmit": "Erreur lors de la soumission du chapitre {{chapterName}}.",
"errorFetchChapter": "Erreur lors de la récupération du chapitre.",
"errorFetchChapters": "Erreur lors de la récupération des chapitres.",
"successUpdate": "Chapitre mis à jour avec succès.",
@@ -226,8 +226,8 @@
"inputPlaceholder": "Entrez un mot...",
"enterWordError": "Veuillez entrer un mot à rechercher.",
"loading": "Recherche en cours...",
"resultSynonyms": "Synonymes de \"{word}\"",
"resultAntonyms": "Antonymes de \"{word}\"",
"resultSynonyms": "Synonymes de \"{{word}}\"",
"resultAntonyms": "Antonymes de \"{{word}}\"",
"emptySynonymsTitle": "Recherche de synonymes",
"emptyAntonymsTitle": "Recherche d'antonymes",
"emptySynonymsDescription": "Entrez un mot pour trouver des synonymes adaptés à différents contextes d'écriture.",
@@ -305,7 +305,7 @@
"search": "Rechercher un monde...",
"newWorld": "Nouveau monde",
"deleteTitle": "Supprimer le monde",
"deleteMessage": "Vous êtes sur le point de supprimer le monde « {name} » définitivement.",
"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",
@@ -338,7 +338,7 @@
"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.",
"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",
@@ -346,11 +346,12 @@
"subElementNamePlaceholder": "Nom du sous-élément",
"subElementDescriptionPlaceholder": "Description du sous-élément",
"newSubElementPlaceholder": "Nouveau sous-élément",
"noElementAvailable": "Aucun élément disponible. Ajoutez-en un ci-dessous!",
"noElementAvailable": "Aucun élément disponible.",
"editToAdd": "Cliquez sur l'icône de modification pour ajouter des éléments.",
"newElementPlaceholder": "Nouvel élément",
"noSectionAvailable": "Aucune section disponible.",
"createSectionLabel": "Créer une section",
"elementsCount": "{count} éléments",
"elementsCount": "{{count}} éléments",
"element": "Élément",
"addElement": "Ajouter un élément",
"addSubElement": "Ajouter un sous-élément",
@@ -438,7 +439,7 @@
"save": "Enregistrer",
"delete": "Supprimer",
"deleteTitle": "Supprimer le sort",
"deleteMessage": "Vous êtes sur le point de supprimer le sort « {name} » définitivement.",
"deleteMessage": "Vous êtes sur le point de supprimer le sort « {{name}} » définitivement.",
"basicInfo": "Informations de base",
"name": "Nom du sort",
"namePlaceholder": "Entrez le nom du sort",
@@ -448,7 +449,7 @@
"appearancePlaceholder": "Décrivez l'apparence visuelle du sort",
"tags": "Tags",
"addTag": "Ajouter un tag...",
"createTag": "Créer \"{name}\"",
"createTag": "Créer \"{{name}}\"",
"powerLevel": "Niveau de puissance",
"components": "Composantes",
"componentsPlaceholder": "Ingrédients, gestes, incantations nécessaires...",
@@ -487,7 +488,7 @@
"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.",
"deleteMessage": "Vous êtes sur le point de supprimer le personnage « {{name}} » définitivement.",
"basicInfo": "Informations de base",
"name": "Nom",
"namePlaceholder": "Entrer un nom",
@@ -545,7 +546,7 @@
"noCharactersDescription": "Ajoutez votre premier personnage pour commencer."
},
"characterSectionElement": {
"newItem": "Nouveau {item}"
"newItem": "Nouveau {{item}}"
},
"aboutEditors": {
"title": "À propos de Scribe",
@@ -572,7 +573,8 @@
"bookGoals": "Objectifs du livre",
"save": "Sauvegarder",
"notAvailable": "Option non disponible",
"unknownError": "Une erreur inconnue est survenue."
"unknownError": "Une erreur inconnue est survenue.",
"quillsenseOffline": "QuillSense n'est pas disponible hors ligne."
},
"noBookHome": {
"title": "Votre œuvre attend ses premiers mots",
@@ -583,14 +585,18 @@
"preferences": "Préférences",
"ghostWriter": "Écrivain Fantôme",
"draftCompanion": "Draft Companion",
"save": "Enregistrer"
"save": "Enregistrer",
"indentDisabled": "Indentation désactivée",
"indentDisabledTitle": "Indentation de paragraphe désactivée",
"indentDisabledDescription": "L'indentation de première ligne des paragraphes est désactivée en raison d'un bug d'affichage dans le moteur WebKit d'Apple. Un correctif est en cours d'intégration et sera disponible dans une prochaine mise à jour de Safari. L'indentation sera automatiquement réactivée dès que le correctif sera disponible sur votre système.",
"indentDisabledUnderstood": "Compris"
},
"draftCompanion": {
"noPreviousVersion": "Aucune version antérieure de ce chapitre",
"errorFetchDraft": "Erreur lors de la récupération du contenu du brouillon.",
"unknownError": "Une erreur inconnue s'est produite",
"errorRefineText": "Erreur lors de la correction du texte",
"errorRefineDraft": "Erreur lors de la correction du brouillon : {message}",
"errorRefineDraft": "Erreur lors de la correction du brouillon : {{message}}",
"unknownErrorRefineDraft": "Une erreur inconnue s'est produite lors de la correction du brouillon",
"successInsert": "Correction insérée avec succès",
"selectVersion": "Sélectionner une version",
@@ -881,10 +887,10 @@
"errorDelete": "Erreur lors de la suppression de l'élément.",
"errorAdd": "Erreur lors de l'ajout de l'élément.",
"errorUnknown": "Une erreur inattendue s'est produite.",
"emptyField": "Le champ {section} est vide.",
"namePlaceholder": "Nom {section}",
"descriptionPlaceholder": "Description de {section}",
"newPlaceholder": "Nouveau {section}"
"emptyField": "Le champ {{section}} est vide.",
"namePlaceholder": "Nom {{section}}",
"descriptionPlaceholder": "Description de {{section}}",
"newPlaceholder": "Nouveau {{section}}"
},
"bookTypes": {
"short": "Nouvelle",
@@ -1092,7 +1098,7 @@
"homePage": {
"loading": "Chargement en cours...",
"guide": {
"welcome": "Bienvenue {name}",
"welcome": "Bienvenue {{name}}",
"step0": {
"description1": "ERitors est un logiciel assisté par l'intelligence artificielle (API Anthropic et OpenAI) intégrée sous le nom de QuillSense. Son objectif est de vous fournir tous les outils nécessaires pour créer une œuvre complète de A à Z.",
"description2": "Ce guide vous accompagnera dans vos premiers pas. Vous pouvez naturellement le passer si vous le souhaitez."
@@ -1194,7 +1200,7 @@
}
},
"syncField": {
"uploadSuccess": "{count} élément(s) mis à jour avec succès.",
"uploadSuccess": "{{count}} élément(s) mis à jour avec succès.",
"uploadTooltip": "Envoyer vers la série",
"downloadTooltip": "Récupérer depuis la série"
},
@@ -1209,7 +1215,7 @@
"exporting": "Exportation en cours...",
"noBookSelected": "Aucun livre sélectionné.",
"noChaptersSelected": "Veuillez sélectionner au moins un chapitre.",
"downloadSuccess": "Votre fichier {format} a été téléchargé avec succès.",
"downloadSuccess": "Votre fichier {{format}} a été téléchargé avec succès.",
"downloadError": "Échec du téléchargement.",
"serverError": "Erreur du serveur lors de l'export.",
"unknownError": "Une erreur inconnue est survenue."