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:
@@ -106,7 +106,7 @@
|
||||
},
|
||||
"chapters": {
|
||||
"title": "Chapters",
|
||||
"detected": "{count} chapter(s) detected",
|
||||
"detected": "{{count}} chapter(s) detected",
|
||||
"selectAll": "Select all",
|
||||
"deselectAll": "Deselect all",
|
||||
"words": "words"
|
||||
@@ -133,7 +133,7 @@
|
||||
"errorChapterUpdate": "An error occurred while updating the chapter.",
|
||||
"errorChapterDelete": "An error occurred while deleting the chapter.",
|
||||
"errorChapterNameRequired": "Chapter name is required.",
|
||||
"errorChapterSubmit": "Error while trying to submit {chapterName} chapter.",
|
||||
"errorChapterSubmit": "Error while trying to submit {{chapterName}} chapter.",
|
||||
"errorFetchChapter": "Error while fetching chapter.",
|
||||
"errorFetchChapters": "Error while fetching chapters.",
|
||||
"successUpdate": "Chapter updated successfully.",
|
||||
@@ -226,8 +226,8 @@
|
||||
"inputPlaceholder": "Enter a word...",
|
||||
"enterWordError": "Please enter a word to search.",
|
||||
"loading": "Searching...",
|
||||
"resultSynonyms": "Synonyms for \"{word}\"",
|
||||
"resultAntonyms": "Antonyms for \"{word}\"",
|
||||
"resultSynonyms": "Synonyms for \"{{word}}\"",
|
||||
"resultAntonyms": "Antonyms for \"{{word}}\"",
|
||||
"emptySynonymsTitle": "Synonym Search",
|
||||
"emptyAntonymsTitle": "Antonym Search",
|
||||
"emptySynonymsDescription": "Enter a word to find synonyms suitable for different writing contexts.",
|
||||
@@ -305,7 +305,7 @@
|
||||
"search": "Search for a world...",
|
||||
"newWorld": "New world",
|
||||
"deleteTitle": "Delete world",
|
||||
"deleteMessage": "You are about to permanently delete the world \"{name}\".",
|
||||
"deleteMessage": "You are about to permanently delete the world \"{{name}}\".",
|
||||
"worldName": "World name",
|
||||
"worldNamePlaceholder": "Enter the world name",
|
||||
"worldHistory": "World history",
|
||||
@@ -338,7 +338,7 @@
|
||||
"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}\".",
|
||||
"deleteMessage": "You are about to permanently delete the section \"{{name}}\".",
|
||||
"elementName": "Element name",
|
||||
"elementNamePlaceholder": "Element name",
|
||||
"elementDescriptionPlaceholder": "Element description",
|
||||
@@ -346,11 +346,12 @@
|
||||
"subElementNamePlaceholder": "Sub-element name",
|
||||
"subElementDescriptionPlaceholder": "Sub-element description",
|
||||
"newSubElementPlaceholder": "New sub-element",
|
||||
"noElementAvailable": "No element available. Add one below!",
|
||||
"noElementAvailable": "No element available.",
|
||||
"editToAdd": "Click the edit icon to add elements.",
|
||||
"newElementPlaceholder": "New element",
|
||||
"noSectionAvailable": "No section available.",
|
||||
"createSectionLabel": "Create section",
|
||||
"elementsCount": "{count} elements",
|
||||
"elementsCount": "{{count}} elements",
|
||||
"element": "Element",
|
||||
"addElement": "Add an element",
|
||||
"addSubElement": "Add a sub-element",
|
||||
@@ -438,7 +439,7 @@
|
||||
"save": "Save",
|
||||
"delete": "Delete",
|
||||
"deleteTitle": "Delete spell",
|
||||
"deleteMessage": "You are about to permanently delete the spell \"{name}\".",
|
||||
"deleteMessage": "You are about to permanently delete the spell \"{{name}}\".",
|
||||
"basicInfo": "Basic information",
|
||||
"name": "Spell name",
|
||||
"namePlaceholder": "Enter spell name",
|
||||
@@ -448,7 +449,7 @@
|
||||
"appearancePlaceholder": "Describe the visual appearance of the spell",
|
||||
"tags": "Tags",
|
||||
"addTag": "Add a tag...",
|
||||
"createTag": "Create \"{name}\"",
|
||||
"createTag": "Create \"{{name}}\"",
|
||||
"powerLevel": "Power level",
|
||||
"components": "Components",
|
||||
"componentsPlaceholder": "Ingredients, gestures, incantations required...",
|
||||
@@ -487,7 +488,7 @@
|
||||
"newCharacter": "New character",
|
||||
"exportToSeries": "Export to series",
|
||||
"deleteTitle": "Delete character",
|
||||
"deleteMessage": "You are about to permanently delete the character \"{name}\".",
|
||||
"deleteMessage": "You are about to permanently delete the character \"{{name}}\".",
|
||||
"basicInfo": "Basic information",
|
||||
"name": "Name",
|
||||
"namePlaceholder": "Enter a name",
|
||||
@@ -545,7 +546,7 @@
|
||||
"noCharactersDescription": "Add your first character to get started."
|
||||
},
|
||||
"characterSectionElement": {
|
||||
"newItem": "New {item}"
|
||||
"newItem": "New {{item}}"
|
||||
},
|
||||
"aboutEditors": {
|
||||
"title": "About Scribe",
|
||||
@@ -572,7 +573,8 @@
|
||||
"bookGoals": "Book goals",
|
||||
"save": "Save",
|
||||
"notAvailable": "Option not available",
|
||||
"unknownError": "An unknown error occurred."
|
||||
"unknownError": "An unknown error occurred.",
|
||||
"quillsenseOffline": "QuillSense is not available offline."
|
||||
},
|
||||
"noBookHome": {
|
||||
"title": "Your work is waiting for its first words",
|
||||
@@ -583,14 +585,18 @@
|
||||
"preferences": "Preferences",
|
||||
"ghostWriter": "Ghost Writer",
|
||||
"draftCompanion": "Draft Companion",
|
||||
"save": "Save"
|
||||
"save": "Save",
|
||||
"indentDisabled": "Indentation disabled",
|
||||
"indentDisabledTitle": "Paragraph indentation disabled",
|
||||
"indentDisabledDescription": "First-line paragraph indentation is disabled due to a display bug in Apple's WebKit engine. A fix is being integrated and will be available in an upcoming Safari update. Indentation will be automatically re-enabled once the fix is available on your system.",
|
||||
"indentDisabledUnderstood": "Got it"
|
||||
},
|
||||
"draftCompanion": {
|
||||
"noPreviousVersion": "No previous version of this chapter",
|
||||
"errorFetchDraft": "Error while fetching draft content.",
|
||||
"unknownError": "An unknown error has occurred",
|
||||
"errorRefineText": "Error refining text",
|
||||
"errorRefineDraft": "Error while refining draft: {message}",
|
||||
"errorRefineDraft": "Error while refining draft: {{message}}",
|
||||
"unknownErrorRefineDraft": "An unknown error occurred while refining the draft",
|
||||
"successInsert": "Correction successfully inserted",
|
||||
"selectVersion": "Select a version",
|
||||
@@ -882,10 +888,10 @@
|
||||
"errorDelete": "Error deleting the element.",
|
||||
"errorAdd": "Error adding the element.",
|
||||
"errorUnknown": "An unexpected error occurred.",
|
||||
"emptyField": "The {section} field is empty.",
|
||||
"namePlaceholder": "Name of {section}",
|
||||
"descriptionPlaceholder": "Description of {section}",
|
||||
"newPlaceholder": "New {section}"
|
||||
"emptyField": "The {{section}} field is empty.",
|
||||
"namePlaceholder": "Name of {{section}}",
|
||||
"descriptionPlaceholder": "Description of {{section}}",
|
||||
"newPlaceholder": "New {{section}}"
|
||||
},
|
||||
"bookTypes": {
|
||||
"short": "Short Story",
|
||||
@@ -1093,7 +1099,7 @@
|
||||
"homePage": {
|
||||
"loading": "Loading...",
|
||||
"guide": {
|
||||
"welcome": "Welcome {name}",
|
||||
"welcome": "Welcome {{name}}",
|
||||
"step0": {
|
||||
"description1": "ERitors is AI-powered software (Anthropic and OpenAI APIs) integrated under the name QuillSense. Its goal is to provide you with all the necessary tools to create a complete work from A to Z.",
|
||||
"description2": "This guide will help you get started. You can skip it if you wish."
|
||||
@@ -1195,7 +1201,7 @@
|
||||
}
|
||||
},
|
||||
"syncField": {
|
||||
"uploadSuccess": "{count} element(s) updated successfully.",
|
||||
"uploadSuccess": "{{count}} element(s) updated successfully.",
|
||||
"uploadTooltip": "Push to series",
|
||||
"downloadTooltip": "Pull from series"
|
||||
},
|
||||
@@ -1210,7 +1216,7 @@
|
||||
"exporting": "Exporting...",
|
||||
"noBookSelected": "No book selected.",
|
||||
"noChaptersSelected": "Please select at least one chapter.",
|
||||
"downloadSuccess": "Your {format} file has been downloaded successfully.",
|
||||
"downloadSuccess": "Your {{format}} file has been downloaded successfully.",
|
||||
"downloadError": "Download failed.",
|
||||
"serverError": "Server error during export.",
|
||||
"unknownError": "An unknown error occurred."
|
||||
|
||||
@@ -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."
|
||||
|
||||
Reference in New Issue
Block a user