Remove unused components and models for improved maintainability

- Deleted redundant components (`AddActionButton`, `AlertBox`, `AlertStack`, `BackButton`, `CancelButton`, and `CollapsableArea`) and related files.
- Removed unused models (`Book`, `BookSerie`, `BookTables`, `Character`, and `Chapter`) to reduce codebase clutter.
- Updated project structure and references to reflect these removals.
This commit is contained in:
natreex
2026-03-22 22:37:31 -04:00
parent e8aaef108b
commit 64ed90d993
229 changed files with 15091 additions and 21289 deletions

View File

@@ -13,121 +13,6 @@
"activate": "Activate",
"cancel": "Cancel"
},
"loginPage": {
"title": "Login",
"welcome": "Welcome to ERitors",
"orSocial": "or continue with",
"noAccount": "Don't have an account yet?",
"createAccount": "Create one here",
"backToLogin": "Back to login",
"offlineWarning": {
"title": "First sync required",
"message": "An Internet connection is required for your first login to sync your data."
}
},
"loginForm": {
"error": {
"emailRequired": "Your email must be filled in.",
"passwordRequired": "Your password must be filled in.",
"emailLength": "Your email must have at least 3 characters.",
"emailInvalidChars": "Your email contains invalid characters.",
"connection": "An error occurred during login.",
"server": "A server error occurred during login.",
"unknown": "An unknown error occurred during login."
},
"fields": {
"email": {
"label": "Email address",
"placeholder": "your.email@example.com"
},
"password": {
"label": "Password",
"placeholder": "••••••••",
"forgot": "Forgot password?"
}
},
"loading": "Logging in...",
"submit": "Log in"
},
"registerPage": {
"title": "Create account",
"subtitle": "Create a free account and start your adventure with us.",
"progress": {
"infos": "Information",
"verif": "Verification"
},
"backToLogin": "Back to login"
},
"registerStepOne": {
"fields": {
"firstName": {
"label": "First Name",
"placeholder": "Your first name"
},
"lastName": {
"label": "Last Name",
"placeholder": "Your last name"
},
"username": {
"label": "Username",
"placeholder": "Choose a username",
"note": "Username must be at least 3 characters"
},
"email": {
"label": "Email Address",
"placeholder": "your.email@example.com"
},
"password": {
"label": "Password",
"placeholder": "••••••••"
},
"repeatPassword": {
"label": "Confirm Password",
"placeholder": "••••••••"
}
},
"next": "Next"
},
"resetPassword": {
"title": "Forgot password",
"subtitle": "Reset your password in a few simple steps",
"progress": {
"email": "Email",
"verification": "Verification",
"final": "Finalization"
},
"fields": {
"email": {
"label": "Email address",
"placeholder": "your.email@example.com"
},
"code": {
"label": "Verification code",
"placeholder": "Enter the code received by email"
},
"newPassword": {
"label": "New password",
"placeholder": "••••••••"
}
},
"verify": "Verify",
"confirm": "Confirm",
"changePassword": "Change password",
"back": "Back",
"success": "Your password has been successfully updated!",
"goToLogin": "Go to login page",
"backToLogin": "Back to login",
"error": {
"codeServer": "An error occurred while verifying the code on the server.",
"codeUnknown": "An unknown error occurred while verifying the code.",
"emailInvalid": "Your email is invalid. Please enter a valid email address.",
"emailFormat": "Your input is not a valid email address.",
"emailServer": "An error occurred while verifying the email on the server.",
"emailUnknown": "An unknown error occurred while verifying the email.",
"passwordServer": "An error occurred while changing the password on the server.",
"passwordUnknown": "An unknown error occurred while changing the password."
}
},
"controllerBar": {
"bookNotFound": "No book found",
"errorGettingBook": "Error while trying to get the book information",
@@ -137,6 +22,10 @@
"unknownBookError": "Unknown error while retrieving book",
"unknownChapterError": "Unknown error while retrieving chapter"
},
"userMenu": {
"settings": "Settings",
"logout": "Logout"
},
"bookList": {
"library": "Library",
"booksAreMirrors": "\"Books are the mirrors of the soul\"",
@@ -161,18 +50,7 @@
"bookCard": {
"noCoverAlt": "No cover",
"initialsSeparator": ".",
"subtitlePlaceholder": "No subtitle",
"synced": "Synced",
"localOnly": "Local only",
"serverOnly": "Server only",
"toSyncFromServer": "Download from server",
"toSyncToServer": "Upload to server",
"sync": "Sync",
"uploadError": "Error uploading book.",
"downloadError": "Error downloading book.",
"syncFromServerError": "Error syncing from server.",
"syncToServerError": "Error syncing to server.",
"refreshError": "Error refreshing books."
"subtitlePlaceholder": "No subtitle"
},
"scribeTopBar": {
"logoAlt": "Logo",
@@ -210,11 +88,41 @@
},
"importBook": {
"title": "Import a book",
"description": "Import a book from a DOCX file.",
"badge": "IMPORT"
"description": "Import a DOCX file to create a book.",
"badge": "DOCX"
}
}
},
"importBook": {
"header": "Import a book",
"pickFile": "Select a DOCX file",
"parsing": "Parsing file...",
"fields": {
"type": "Book type",
"title": "Title",
"subTitle": "Subtitle",
"summary": "Summary",
"version": "Chapter version"
},
"chapters": {
"title": "Chapters",
"detected": "{count} chapter(s) detected",
"selectAll": "Select all",
"deselectAll": "Deselect all",
"words": "words"
},
"submit": "Import",
"importing": "Importing...",
"success": "Book imported successfully.",
"error": {
"invalidFormat": "Invalid file format. Please select a DOCX file.",
"parseFailed": "Failed to parse the file.",
"titleRequired": "Title is required.",
"typeRequired": "Book type is required.",
"noChaptersSelected": "Please select at least one chapter.",
"importFailed": "An error occurred while importing the book."
}
},
"scribeChapterComponent": {
"sheetHeading": "Sheet",
"createSheet": "Create your sheet",
@@ -255,7 +163,7 @@
},
"spells": {
"title": "Spell Book",
"description": "Create and manage spells, magic systems, and supernatural abilities.",
"description": "Manage the spells and magic of your universe.",
"badge": "SPELL"
},
"items": {
@@ -303,7 +211,12 @@
"exampleHeading": "Example",
"literaryUsageHeading": "Literary usage",
"description": "Search for a word to get its definition, usage examples, and literary tips.",
"errorUnknown": "An unknown error occurred while searching for the word."
"errorUnknown": "An unknown error occurred while searching for the word.",
"errorNoResponse": "No response received from the server.",
"locked": {
"title": "Access required",
"description": "A QuillSense basic subscription or an API key is required to enable the smart dictionary."
}
},
"synonyms": {
"heading": "Lexical search",
@@ -319,7 +232,12 @@
"emptyAntonymsTitle": "Antonym Search",
"emptySynonymsDescription": "Enter a word to find synonyms suitable for different writing contexts.",
"emptyAntonymsDescription": "Enter a word to find antonyms suitable for different writing contexts.",
"errorUnknown": "An unknown error occurred while searching for the word."
"errorUnknown": "An unknown error occurred while searching for the word.",
"errorNoResponse": "No response received from the server.",
"locked": {
"title": "Access required",
"description": "A QuillSense basic subscription or an API key is required to enable synonym search."
}
},
"inspireMe": {
"fieldName": "Find inspiration",
@@ -332,7 +250,17 @@
"emptyHeading": "Inspire me",
"emptyDescription": "Search for ideas to enrich your writing. Enter a prompt and let AI inspire you with creative suggestions based on your current content.",
"emptyPromptError": "Please enter a prompt to get inspired.",
"errorUnknown": "An unknown error occurred while trying to fetch inspiration."
"error": {
"contentRetrieval": "Error retrieving content.",
"contentRetrievalUnknown": "Unknown error retrieving content.",
"noBook": "No book selected.",
"noChapter": "No chapter selected.",
"unknown": "An unknown error occurred during generation."
},
"locked": {
"title": "Access required",
"description": "A QuillSense basic subscription or an API key is required to enable the Inspire Me mode."
}
},
"conjugator": {
"locked": {
@@ -467,82 +395,17 @@
"errorCategoryRequired": "Character role is required.",
"successAdd": "Character added successfully.",
"successUpdate": "Character updated successfully.",
"successDelete": "Character deleted successfully.",
"errorAddCharacter": "Error adding character.",
"errorUpdateCharacter": "Error updating character.",
"errorDeleteCharacter": "Error deleting character.",
"errorAddAttribute": "Error adding attribute.",
"errorRemoveAttribute": "Error removing attribute.",
"errorDeleteCharacter": "Error deleting character.",
"successDelete": "Character deleted successfully.",
"enableTool": "Enable characters",
"enableToolDescription": "Enable character management for this book.",
"toolEnabled": "Character management enabled.",
"toolDisabled": "Character management disabled."
},
"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": "Name",
"namePlaceholder": "Enter a name",
"lastName": "Last name",
"lastNamePlaceholder": "Example: Smith",
"nickname": "Nickname",
"nicknamePlaceholder": "Alias or nickname",
"role": "Role",
"title": "Title",
"titlePlaceholder": "Ex: King, Captain, Doctor...",
"gender": "Gender",
"genderPlaceholder": "Ex: Male, Female, Non-binary",
"age": "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",
"roleFullPlaceholder": "Role of the character in the story",
"fetchAttributesError": "Error fetching attributes."
},
"characterList": {
"search": "Search for a character...",
"add": "Add a character",
"unknownImage": "?",
"unknown": "Unknown",
"noLastName": "No last name",
"noTitle": "No title",
"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",
@@ -613,16 +476,77 @@
},
"spellPowerLevels": {
"none": "None",
"cantrip": "Cantrip",
"novice": "Novice",
"apprentice": "Apprentice",
"journeyman": "Journeyman",
"expert": "Expert",
"master": "Master",
"grandmaster": "Grandmaster",
"minor": "Minor",
"moderate": "Moderate",
"major": "Major",
"legendary": "Legendary",
"divine": "Divine"
},
"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": "Name",
"namePlaceholder": "Enter a name",
"lastName": "Last name",
"lastNamePlaceholder": "Example: Smith",
"nickname": "Nickname",
"nicknamePlaceholder": "Alias or nickname",
"role": "Role",
"title": "Title",
"titlePlaceholder": "Ex: King, Captain, Doctor...",
"gender": "Gender",
"genderPlaceholder": "Ex: Male, Female, Non-binary",
"age": "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",
"roleFullPlaceholder": "Role of the character in the story",
"fetchAttributesError": "Error fetching attributes."
},
"characterList": {
"search": "Search for a character...",
"add": "Add a character",
"unknownImage": "?",
"unknown": "Unknown",
"noLastName": "No last name",
"noTitle": "No title",
"noRole": "No role",
"noCharacters": "No characters",
"noCharactersDescription": "Add your first character to get started."
},
"characterSectionElement": {
"newItem": "New {item}"
},
"aboutEditors": {
"title": "About Scribe",
"version": "Version",
@@ -642,29 +566,13 @@
"yourLocations": "Your locations",
"characters": "Characters",
"spells": "Spell Book",
"quillsense": "QuillSense Settings",
"export": "Export your book",
"objectsList": "Objects list",
"bookGoals": "Book goals",
"quillsense": "QuillSense Settings",
"export": "Export Book",
"save": "Save",
"notAvailable": "Option not available"
},
"exportOption": {
"title": "Export Your Book",
"description": "Choose the format and chapters to export.",
"format": "Format",
"selectFormat": "Select a format",
"chapters": "Chapters",
"selectAll": "Select all",
"deselectAll": "Deselect all",
"version": "Version",
"export": "Export",
"exporting": "Exporting...",
"noChapters": "No chapters available for export.",
"success": "Book exported successfully!",
"cancelled": "Export cancelled.",
"error": "Error exporting the book.",
"loadingChapters": "Loading chapters..."
"notAvailable": "Option not available",
"unknownError": "An unknown error occurred."
},
"noBookHome": {
"title": "Your work is waiting for its first words",
@@ -675,14 +583,7 @@
"preferences": "Preferences",
"ghostWriter": "Ghost Writer",
"draftCompanion": "Draft Companion",
"save": "Save",
"saving": "Saving...",
"close": "Close",
"toolbar": {
"1": "1",
"2": "2",
"3": "3"
}
"save": "Save"
},
"draftCompanion": {
"noPreviousVersion": "No previous version of this chapter",
@@ -696,13 +597,13 @@
"words": "Words",
"refine": "Refine",
"refining": "Refining...",
"abortSuccess": "Generation stopped. Token and cost totals will be available on next page refresh."
"abortSuccess": "Generation stopped. Token and cost totals will be available on next page refresh.",
"sseParsingError": "Error reading generation data"
},
"ghostWriter": {
"title": "Ghost Writer",
"description": "Turn your ideas into captivating prose",
"subscriptionRequired": "You must be subscribed to Quill Sense to use Ghost Writer.",
"quillsenseDisabled": "QuillSense is disabled for this book. You can enable it in the book settings.",
"subscriptionRequired": "You must be subscribed to QuillSense Pro to use Ghost Writer.",
"subscribe": "Subscribe",
"length": "Text length",
"minimum": "Minimum",
@@ -719,6 +620,7 @@
"cancel": "Cancel",
"generate": "Generate",
"generating": "Generating...",
"stop": "Stop",
"successGenerate": "Text generated successfully.",
"successInsert": "Excerpt successfully inserted",
"successImport": "Content imported successfully",
@@ -740,6 +642,7 @@
"unknownError": "Unknown error saving settings."
},
"tags": {
"addTagPlaceholder": "Tags",
"unknownError": "Unknown error managing tags."
}
},
@@ -776,12 +679,16 @@
"sépia": "Sepia"
},
"focusMode": "Focus mode (hide distractions)",
"reset": "Reset preferences"
"reset": "Reset preferences",
"saveError": "Error saving preferences.",
"unknownError": "An unknown error occurred while saving preferences."
},
"scribeFooterBar": {
"sheet": "Sheet : ",
"madeWith": "Scribe Editor made with",
"words": "Words",
"words": "words",
"pages": "pages",
"paragraphs": "paragraphs",
"books": "Books"
},
"addNewBookForm": {
@@ -1082,17 +989,7 @@
"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."
"settings": "Series settings"
},
"basicInformationSetting": {
"error": {
@@ -1120,6 +1017,12 @@
"generateWithQuillSense": "Generate with QuillSense"
}
},
"quillList": {
"untitled": "Untitled",
"error": {
"unknown": "An unknown error occurred while loading conversations."
}
},
"quillConversation": {
"emptyMessageError": "Please enter a message before sending it.",
"inputPlaceholder": "What's on your mind?",
@@ -1160,23 +1063,25 @@
"edit": "Edit",
"exportToSeries": "Export to series",
"save": "Save",
"unknownError": "An unknown error occurred",
"loading": "Loading..."
"unknownError": "An unknown error occurred"
},
"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"
"spellPowerLevels": {
"none": "None",
"cantrip": "Cantrip",
"novice": "Novice",
"apprentice": "Apprentice",
"journeyman": "Journeyman",
"expert": "Expert",
"master": "Master",
"grandmaster": "Grandmaster",
"legendary": "Legendary",
"divine": "Divine"
},
"editor": {
"error": {
"savedFailed": "Save failed",
"unknownError": "An unknown error occurred"
"unknownError": "An unknown error occurred",
"parsingContent": "Error loading chapter content"
},
"success": {
"saved": "Saved successfully"
@@ -1217,18 +1122,22 @@
"userNotFound": "User not found",
"authenticationError": "Error during authentication",
"termsAcceptError": "Error accepting terms of service",
"lastChapterError": "Error retrieving last chapter",
"localDataError": "Unable to load local data",
"encryptionKeyError": "Encryption key not found",
"offlineModeError": "Error initializing offline mode",
"offlineInitError": "Error initializing offline mode",
"syncError": "Error syncing data",
"dbInitError": "Error initializing local database",
"offlineError": "Error checking offline mode",
"fetchBooksError": "Error fetching books",
"fetchSeriesError": "Error fetching series"
"lastChapterError": "Error retrieving last chapter"
}
},
"quillsenseSetting": {
"enableQuillsense": "Enable QuillSense",
"enableDescription": "When disabled, all AI features will be hidden for this book.",
"advancedPrompt": "Advanced prompt for Ghost Writer",
"advancedPromptPlaceholder": "Enter custom instructions to guide the AI when generating text...",
"advancedPromptDescription": "This prompt will be used as a priority directive when generating text with Ghost Writer.",
"saveSuccess": "QuillSense settings saved successfully.",
"saveError": "Error saving settings.",
"unknownError": "An unknown error occurred.",
"enable_characters": "Enable characters",
"enable_worlds": "Enable worlds",
"enable_locations": "Enable locations"
},
"shortStoryGenerator": {
"title": "Short Story Generator",
"tabs": {
@@ -1285,123 +1194,221 @@
"close": "Close"
}
},
"userMenu": {
"settings": "Settings",
"logout": "Logout"
"syncField": {
"uploadSuccess": "{count} element(s) updated successfully.",
"uploadTooltip": "Push to series",
"downloadTooltip": "Pull from series"
},
"exportOption": {
"formatLabel": "Export format",
"chapters": "Chapters",
"loadingChapters": "Loading chapters...",
"noChaptersAvailable": "No chapters available for export.",
"selectAll": "Select all",
"deselectAll": "Deselect all",
"exportButton": "Export",
"exporting": "Exporting...",
"noBookSelected": "No book selected.",
"noChaptersSelected": "Please select at least one chapter.",
"downloadSuccess": "Your {format} file has been downloaded successfully.",
"downloadError": "Download failed.",
"serverError": "Server error during export.",
"unknownError": "An unknown error occurred."
},
"seriesImport": {
"importButton": "Import",
"importFromSeries": "Import from series",
"selectElement": "Select an element"
},
"loginPage": {
"title": "Login",
"welcome": "Welcome to ERitors Scribe",
"orSocial": "or sign in with",
"offlineWarning": {
"title": "Offline mode required",
"message": "You are not connected to the Internet. To use the app offline, you must first sign in at least once online."
}
},
"loginForm": {
"submit": "Sign in",
"fields": {
"email": {
"label": "Email address",
"placeholder": "Enter your email address"
},
"password": {
"label": "Password",
"placeholder": "Enter your password",
"forgot": "Forgot password?"
}
},
"error": {
"emailRequired": "Please enter your email address.",
"passwordRequired": "Please enter your password.",
"emailLength": "Email address must be between 5 and 100 characters.",
"emailInvalidChars": "Email address contains invalid characters.",
"connection": "Connection error. Check your credentials.",
"server": "Server error. Please try again later.",
"unknown": "An unknown error occurred."
}
},
"socialForm": {
"error": {
"connection": "Connection error with the provider."
}
},
"registerPage": {
"title": "Register",
"subtitle": "Create your ERitors account",
"backToLogin": "Back to login",
"progress": {
"infos": "Information",
"verif": "Verification"
}
},
"registerStepOne": {
"next": "Continue",
"fields": {
"firstName": {
"label": "First name",
"placeholder": "Enter your first name"
},
"lastName": {
"label": "Last name",
"placeholder": "Enter your last name"
},
"username": {
"label": "Username",
"placeholder": "Choose a username",
"note": "Username must be between 3 and 50 characters."
},
"email": {
"label": "Email address",
"placeholder": "Enter your email address"
},
"password": {
"label": "Password",
"placeholder": "Choose a password"
},
"repeatPassword": {
"label": "Confirm password",
"placeholder": "Confirm your password"
}
},
"error": {
"requiredFields": "All fields are required.",
"firstNameLength": "First name must be between 2 and 50 characters.",
"lastNameLength": "Last name must be between 2 and 50 characters.",
"usernameLength": "Username must be between 3 and 50 characters.",
"invalidInput": "One or more fields contain invalid characters.",
"passwordMismatch": "Passwords do not match.",
"preRegister": "Error during pre-registration.",
"unknown": "An unknown error occurred."
},
"success": {
"preRegister": "A verification code has been sent to your email address."
}
},
"registerStepTwo": {
"verify": "Verify",
"back": "Back",
"confirmed": "Your account has been verified successfully!",
"start": "Get started",
"instructions": {
"sent": "A verification code has been sent to your email address.",
"checkInbox": "Check your inbox and spam folder."
},
"fields": {
"code": {
"label": "Verification code",
"placeholder": "Enter the code received by email"
}
},
"error": {
"codeIncorrect": "The verification code is incorrect.",
"unknown": "An unknown error occurred."
},
"success": {
"verified": "Your account has been verified successfully!"
}
},
"resetPassword": {
"title": "Reset Password",
"subtitle": "Reset your password",
"verify": "Verify email",
"confirm": "Confirm code",
"changePassword": "Change password",
"back": "Back",
"backToLogin": "Back to login",
"success": "Your password has been reset successfully!",
"goToLogin": "Sign in",
"progress": {
"email": "Email",
"verification": "Verification",
"final": "New password"
},
"fields": {
"email": {
"label": "Email address",
"placeholder": "Enter your email address"
},
"code": {
"label": "Verification code",
"placeholder": "Enter the code received"
},
"newPassword": {
"label": "New password",
"placeholder": "Enter your new password"
}
},
"error": {
"emailInvalid": "Please enter a valid email address.",
"emailFormat": "The email address format is invalid.",
"emailServer": "Server error while verifying email.",
"emailUnknown": "An unknown error occurred.",
"codeServer": "Server error while verifying code.",
"codeUnknown": "An unknown error occurred.",
"passwordServer": "Server error while changing password.",
"passwordUnknown": "An unknown error occurred."
}
},
"offline": {
"mode": {
"title": "Offline Mode",
"backToOnline": "Back to online login"
"title": "Offline mode",
"backToOnline": "Back online"
},
"pin": {
"errors": {
"tooShort": "PIN must be at least 4 digits.",
"tooLong": "PIN cannot exceed 8 digits.",
"digitsOnly": "PIN must contain only digits.",
"mismatch": "PINs do not match.",
"setupFailed": "Error while setting up PIN."
},
"setup": {
"title": "Configure PIN",
"titleFirstLogin": "Secure your offline access",
"subtitle": "Protect your local data",
"description": "This PIN will allow you to access your works even without an internet connection",
"pinLabel": "PIN Code (4-8 digits)",
"confirmPinLabel": "Confirm PIN",
"title": "Set up offline PIN",
"titleFirstLogin": "Set up a PIN for offline mode",
"subtitle": "This PIN will allow you to access your data without an Internet connection.",
"description": "Choose a 4 to 8 digit PIN to secure offline access to your data.",
"pinLabel": "PIN code",
"confirmPinLabel": "Confirm PIN code",
"laterButton": "Later",
"configureButton": "Configure PIN",
"configuringButton": "Configuring...",
"footer": "Your PIN is stored securely on your device"
"configuringButton": "Setting up...",
"configureButton": "Set up PIN",
"footer": "You can change this PIN in settings."
},
"verify": {
"title": "Offline Mode",
"subtitle": "Enter your PIN to access your local works",
"placeholder": "Enter your PIN",
"enterPin": "Please enter your PIN",
"incorrect": "Incorrect PIN",
"tooManyAttempts": "Too many failed attempts. Please reconnect online.",
"error": "Error verifying PIN",
"title": "PIN Verification",
"subtitle": "Enter your PIN to access your offline data.",
"placeholder": "PIN code",
"enterPin": "Please enter your PIN.",
"incorrect": "Incorrect PIN.",
"tooManyAttempts": "Too many attempts. Please sign in online.",
"error": "Error while verifying PIN.",
"cancelButton": "Cancel",
"unlockButton": "Unlock",
"verifyingButton": "Verifying...",
"attemptsRemaining": "{{count}} attempt(s) remaining"
},
"errors": {
"tooShort": "PIN must be at least 4 digits",
"tooLong": "PIN cannot exceed 8 digits",
"digitsOnly": "PIN must contain only digits",
"mismatch": "PINs do not match",
"setupFailed": "Error configuring PIN"
"unlockButton": "Unlock"
}
}
},
"deleteBook": {
"title": "Delete book",
"message": "You are about to permanently delete your book.",
"confirm": "Delete",
"cancel": "Cancel",
"deleteLocalToo": "Also delete local version",
"deleteLocalWarning": "Warning: This action will delete the book from the server AND your device. This action is irreversible.",
"errorUnknown": "An unknown error occurred while deleting the book."
},
"quillSenseSetting": {
"title": "QuillSense Settings",
"description": "Manage AI features for this book.",
"enableSection": "Enable/Disable QuillSense",
"enableLabel": "QuillSense enabled",
"enableDescription": "When enabled, AI features like Ghost Writer and QuillSense will be available for this book.",
"advancedSection": "Advanced Settings",
"advancedPromptLabel": "Advanced Prompt",
"advancedPromptPlaceholder": "Enter custom instructions for the AI...",
"advancedPromptHint": "These instructions will be included in every text generation for this book.",
"disabledWarning": "QuillSense is disabled. AI features will not be available for this book.",
"errorFetch": "Error fetching QuillSense settings.",
"errorSave": "Error saving settings.",
"errorUnknown": "An unknown error occurred.",
"successSave": "QuillSense settings saved successfully.",
"noBookSelected": "No book selected.",
"enable_characters": "Enable character management for this book",
"enable_worlds": "Enable world management for this book",
"enable_locations": "Enable location management for this book"
},
"importBook": {
"header": {
"title": "Import a Book"
},
"pickFile": "Choose a DOCX file",
"parsing": "Analyzing file...",
"chaptersDetected": "{count} chapters detected",
"noChaptersDetected": "No chapters detected in the file",
"fields": {
"title": {
"label": "Book Title",
"placeholder": "Enter the title"
},
"subTitle": {
"label": "Subtitle",
"placeholder": "Enter the subtitle"
},
"summary": {
"label": "Summary",
"placeholder": "Enter a summary"
},
"type": {
"label": "Book Type"
},
"version": {
"label": "Chapter Version"
}
},
"chapters": {
"title": "Chapters to import",
"words": "{count} words",
"selectAll": "Select all",
"deselectAll": "Deselect all"
},
"submit": "Import",
"importing": "Importing...",
"success": "Book imported successfully",
"error": {
"titleRequired": "Book title is required",
"typeRequired": "Book type is required",
"noChaptersSelected": "Select at least one chapter",
"parseFailed": "Error analyzing the file",
"importFailed": "Error during import",
"invalidFormat": "Invalid format. Only DOCX files are accepted"
}
}
}