{ "message": { "hello": "Hola" }, "loginPage": { "emailLabel": "ES: Email", "passwordLabel": "ES: Password", "togglePasswordVisibilityLabel": "ES: Toggle password visibility", "loginButton": "ES: Login", "signupLink": "ES: Don't have an account? Sign up", "errors": { "emailRequired": "ES: Email is required", "emailInvalid": "ES: Invalid email format", "passwordRequired": "ES: Password is required", "loginFailed": "ES: Login failed. Please check your credentials." }, "notifications": { "loginSuccess": "ES: Login successful" } }, "listsPage": { "retryButton": "ES: Retry", "emptyState": { "noListsForGroup": "ES: No lists found for this group.", "noListsYet": "ES: You have no lists yet.", "personalGlobalInfo": "ES: Create a personal list or join a group to see shared lists.", "groupSpecificInfo": "ES: This group doesn't have any lists yet." }, "createNewListButton": "ES: Create New List", "loadingLists": "ES: Loading lists...", "noDescription": "ES: No description", "addItemPlaceholder": "ES: Add new item...", "createCard": { "title": "ES: + Create a new list" }, "pageTitle": { "forGroup": "ES: Lists for {groupName}", "forGroupId": "ES: Lists for Group {groupId}", "myLists": "ES: My Lists" }, "errors": { "fetchFailed": "ES: Failed to fetch lists." } }, "groupsPage": { "retryButton": "ES: Retry", "emptyState": { "title": "ES: No Groups Yet!", "description": "ES: You are not a member of any groups yet. Create one or join using an invite code.", "createButton": "ES: Create New Group" }, "groupCard": { "newListButton": "ES: List" }, "createCard": { "title": "ES: + Group" }, "joinGroup": { "title": "ES: Join a Group with Invite Code", "inputLabel": "ES: Enter Invite Code", "inputPlaceholder": "ES: Enter Invite Code", "joinButton": "ES: Join" }, "createDialog": { "title": "ES: Create New Group", "closeButtonLabel": "ES: Close", "groupNameLabel": "ES: Group Name", "cancelButton": "ES: Cancel", "createButton": "ES: Create" }, "errors": { "fetchFailed": "ES: Failed to load groups", "groupNameRequired": "ES: Group name is required", "createFailed": "ES: Failed to create group. Please try again.", "inviteCodeRequired": "ES: Invite code is required", "joinFailed": "ES: Failed to join group. Please check the invite code and try again.", "invalidDataFromServer": "[TRANSLATE] Invalid data received from server.", "createFailedConsole": "[TRANSLATE] Error creating group:", "joinFailedConsole": "[TRANSLATE] Error joining group:" }, "notifications": { "groupCreatedSuccess": "ES: Group '{groupName}' created successfully.", "joinSuccessNamed": "ES: Successfully joined group '{groupName}'.", "joinSuccessGeneric": "ES: Successfully joined group.", "listCreatedSuccess": "ES: List '{listName}' created successfully." } }, "authCallbackPage": { "redirecting": "ES: Redirecting...", "errors": { "authenticationFailed": "ES: Authentication failed", "noTokenProvided": "[TRANSLATE] No token provided" } }, "choresPage": { "title": "ES: Chores", "tabs": { "overdue": "ES: Overdue", "today": "ES: Today", "upcoming": "ES: Upcoming", "allPending": "ES: All Pending", "completed": "ES: Completed" }, "viewToggle": { "calendarLabel": "ES: Calendar View", "calendarText": "ES: Calendar", "listLabel": "ES: List View", "listText": "ES: List" }, "newChoreButtonLabel": "ES: New Chore", "newChoreButtonText": "ES: New Chore", "loadingState": { "loadingChores": "ES: Loading chores..." }, "calendar": { "prevMonthLabel": "ES: Previous month", "nextMonthLabel": "ES: Next month", "weekdays": { "sun": "ES: Sun", "mon": "ES: Mon", "tue": "ES: Tue", "wed": "ES: Wed", "thu": "ES: Thu", "fri": "ES: Fri", "sat": "ES: Sat" }, "addChoreToDayLabel": "ES: Add chore to this day", "emptyState": "ES: No chores to display for this period." }, "listView": { "choreTypePersonal": "ES: Personal", "choreTypeGroupFallback": "ES: Group", "completedDatePrefix": "ES: Completed:", "actions": { "doneTitle": "ES: Mark as Done", "doneText": "ES: Done", "undoTitle": "ES: Mark as Not Done", "undoText": "ES: Undo", "editTitle": "ES: Edit", "editLabel": "ES: Edit chore", "editText": "ES: Edit", "deleteTitle": "ES: Delete", "deleteLabel": "ES: Delete chore", "deleteText": "ES: Delete" }, "emptyState": { "message": "ES: No chores in this view. Well done!", "viewAllButton": "ES: View All Pending" } }, "choreModal": { "editTitle": "ES: Edit Chore", "newTitle": "ES: New Chore", "closeButtonLabel": "ES: Close modal", "nameLabel": "ES: Name", "namePlaceholder": "ES: Enter chore name", "typeLabel": "ES: Type", "typePersonal": "ES: Personal", "typeGroup": "ES: Group", "groupLabel": "ES: Group", "groupSelectDefault": "ES: Select a group", "descriptionLabel": "ES: Description", "descriptionPlaceholder": "ES: Add a description (optional)", "frequencyLabel": "ES: Frequency", "intervalLabel": "ES: Interval (days)", "intervalPlaceholder": "ES: e.g. 3", "dueDateLabel": "ES: Due Date", "quickDueDateToday": "ES: Today", "quickDueDateTomorrow": "ES: Tomorrow", "quickDueDateNextWeek": "ES: Next Week", "cancelButton": "ES: Cancel", "saveButton": "ES: Save", "intervalPlaceholder": "[TRANSLATE] e.g., 10" }, "consoleErrors": { "loadFailed": "[TRANSLATE] Failed to load all chores:", "loadGroupsFailed": "[TRANSLATE] Failed to load groups", "createAssignmentForNewChoreFailed": "[TRANSLATE] Failed to create assignment for new chore:", "saveFailed": "[TRANSLATE] Failed to save chore:", "deleteFailed": "[TRANSLATE] Failed to delete chore:", "createAssignmentFailed": "[TRANSLATE] Failed to create assignment:", "updateCompletionStatusFailed": "[TRANSLATE] Failed to update chore completion status:" }, "deleteDialog": { "title": "ES: Delete Chore", "confirmationText": "ES: Are you sure you want to delete this chore? This action cannot be undone.", "deleteButton": "ES: Delete" }, "shortcutsModal": { "title": "ES: Keyboard Shortcuts", "descNewChore": "ES: New Chore", "descToggleView": "ES: Toggle View (List/Calendar)", "descToggleShortcuts": "ES: Show/Hide Shortcuts", "descCloseModal": "ES: Close any open Modal/Dialog" }, "frequencyOptions": { "oneTime": "ES: One Time", "daily": "ES: Daily", "weekly": "ES: Weekly", "monthly": "ES: Monthly", "custom": "ES: Custom" }, "formatters": { "noDueDate": "ES: No due date", "dueToday": "ES: Due Today", "dueTomorrow": "ES: Due Tomorrow", "overdueFull": "ES: Overdue: {date}", "dueFull": "ES: Due {date}", "invalidDate": "ES: Invalid Date" }, "notifications": { "loadFailed": "ES: Failed to load chores", "updateSuccess": "ES: Chore '{name}' updated successfully", "createSuccess": "ES: Chore '{name}' created successfully", "updateFailed": "ES: Failed to update chore", "createFailed": "ES: Failed to create chore", "deleteSuccess": "ES: Chore '{name}' deleted successfully", "deleteFailed": "ES: Failed to delete chore", "markedDone": "ES: {name} marked as done.", "markedNotDone": "ES: {name} marked as not done.", "statusUpdateFailed": "ES: Failed to update chore status." }, "validation": { "nameRequired": "ES: Chore name is required.", "groupRequired": "ES: Please select a group for group chores.", "intervalRequired": "ES: Custom interval must be at least 1 day.", "dueDateRequired": "ES: Due date is required.", "invalidDueDate": "ES: Invalid due date format." }, "unsavedChangesConfirmation": "ES: You have unsaved changes in the chore form. Are you sure you want to leave?" }, "errorNotFoundPage": { "errorCode": "ES: 404", "errorMessage": "ES: Oops. Nothing here...", "goHomeButton": "ES: Go Home" }, "groupDetailPage": { "loadingLabel": "ES: Loading group details...", "retryButton": "ES: Retry", "groupNotFound": "ES: Group not found or an error occurred.", "members": { "title": "ES: Group Members", "defaultRole": "ES: Member", "removeButton": "ES: Remove", "emptyState": "ES: No members found.", "closeMenuLabel": "[TRANSLATE] Close menu" }, "invites": { "title": "ES: Invite Members", "description": "[TRANSLATE] Invite new members by generating a shareable code.", "addMemberButtonLabel": "[TRANSLATE] Add member", "closeInviteLabel": "[TRANSLATE] Close invite", "regenerateButton": "ES: Regenerate Invite Code", "generateButton": "ES: Generate Invite Code", "activeCodeLabel": "ES: Current Active Invite Code:", "copyButtonLabel": "ES: Copy invite code", "copySuccess": "ES: Invite code copied to clipboard!", "emptyState": "ES: No active invite code. Click the button above to generate one.", "errors": { "newDataInvalid": "ES: New invite code data is invalid." } }, "errors": { "failedToFetchActiveInvite": "[TRANSLATE] Failed to fetch active invite code.", "failedToFetchGroupDetails": "[TRANSLATE] Failed to fetch group details.", "failedToLoadUpcomingChores": "[TRANSLATE] Error loading upcoming chores:", "failedToLoadRecentExpenses": "[TRANSLATE] Error loading recent expenses:" }, "console": { "noActiveInvite": "[TRANSLATE] No active invite code found for this group." }, "chores": { "title": "ES: Group Chores", "manageButton": "ES: Manage Chores", "duePrefix": "ES: Due:", "emptyState": "ES: No chores scheduled. Click \"Manage Chores\" to create some!" }, "expenses": { "title": "ES: Group Expenses", "manageButton": "ES: Manage Expenses", "emptyState": "ES: No expenses recorded. Click \"Manage Expenses\" to add some!", "fallbackUserName": "[TRANSLATE] User ID: {userId}", "activityByUserFallback": "[TRANSLATE] User {userId}", "splitTypes": { "equal": "ES: Equal", "exactAmounts": "ES: Exact Amounts", "percentage": "ES: Percentage", "shares": "ES: Shares", "itemBased": "ES: Item Based" } }, "notifications": { "fetchDetailsFailed": "ES: Failed to fetch group details.", "fetchInviteFailed": "ES: Failed to fetch active invite code.", "generateInviteSuccess": "ES: New invite code generated successfully!", "generateInviteError": "ES: Failed to generate invite code.", "clipboardNotSupported": "ES: Clipboard not supported or no code to copy.", "copyInviteFailed": "ES: Failed to copy invite code.", "removeMemberSuccess": "ES: Member removed successfully", "removeMemberFailed": "ES: Failed to remove member" } }, "accountPage": { "title": "Account Settings", "loadingProfile": "Loading profile...", "retryButton": "Retry", "profileSection": { "header": "Profile Information", "nameLabel": "Name", "emailLabel": "Email", "saveButton": "Save Changes" }, "passwordSection": { "header": "Change Password", "currentPasswordLabel": "Current Password", "newPasswordLabel": "New Password", "changeButton": "Change Password" }, "notificationsSection": { "header": "Notification Preferences", "emailNotificationsLabel": "Email Notifications", "emailNotificationsDescription": "Receive email notifications for important updates", "listUpdatesLabel": "List Updates", "listUpdatesDescription": "Get notified when lists are updated", "groupActivitiesLabel": "Group Activities", "groupActivitiesDescription": "Receive notifications for group activities" }, "notifications": { "profileLoadFailed": "Failed to load profile", "profileUpdateSuccess": "Profile updated successfully", "profileUpdateFailed": "Failed to update profile", "passwordFieldsRequired": "Please fill in both current and new password fields.", "passwordTooShort": "New password must be at least 8 characters long.", "passwordChangeSuccess": "Password changed successfully", "passwordChangeFailed": "Failed to change password", "preferencesUpdateSuccess": "Preferences updated successfully", "preferencesUpdateFailed": "Failed to update preferences" }, "saving": "Saving..." }, "signupPage": { "header": "Sign Up", "fullNameLabel": "Full Name", "emailLabel": "Email", "passwordLabel": "Password", "confirmPasswordLabel": "Confirm Password", "togglePasswordVisibility": "Toggle password visibility", "submitButton": "Sign Up", "loginLink": "Already have an account? Login", "validation": { "nameRequired": "Name is required", "emailRequired": "Email is required", "emailInvalid": "Invalid email format", "passwordRequired": "Password is required", "passwordLength": "Password must be at least 8 characters", "confirmPasswordRequired": "Please confirm your password", "passwordsNoMatch": "Passwords do not match" }, "notifications": { "signupFailed": "Signup failed. Please try again.", "signupSuccess": "Account created successfully. Please login." } }, "listDetailPage": { "loading": { "list": "Loading list...", "items": "Loading items...", "ocrProcessing": "Processing image...", "addingOcrItems": "Adding OCR items...", "costSummary": "Loading summary...", "expenses": "Loading expenses...", "settlement": "Processing settlement..." }, "errors": { "fetchFailed": "Failed to load list details.", "genericLoadFailure": "Group not found or an error occurred.", "ocrNoItems": "No items extracted from the image.", "ocrFailed": "Failed to process image.", "addItemFailed": "Failed to add item.", "updateItemFailed": "Failed to update item.", "updateItemPriceFailed": "Failed to update item price.", "deleteItemFailed": "Failed to delete item.", "addOcrItemsFailed": "Failed to add OCR items.", "fetchItemsFailed": "Failed to load items: {errorMessage}", "loadCostSummaryFailed": "Failed to load cost summary." }, "retryButton": "Retry", "buttons": { "addViaOcr": "Add via OCR", "addItem": "Add", "addItems": "Add Items", "cancel": "Cancel", "confirm": "Confirm", "saveChanges": "Save Changes", "close": "Close", "costSummary": "Cost Summary" }, "badges": { "groupList": "Group List", "personalList": "Personal List" }, "items": { "emptyState": { "title": "No Items Yet!", "message": "Add some items using the form below." }, "addItemForm": { "placeholder": "Add a new item", "quantityPlaceholder": "Qty", "itemNameSrLabel": "New item name", "quantitySrLabel": "Quantity" }, "pricePlaceholder": "Price", "editItemAriaLabel": "Edit item", "deleteItemAriaLabel": "Delete item" }, "modals": { "ocr": { "title": "Add Items via OCR", "uploadLabel": "Upload Image" }, "confirmation": { "title": "Confirmation" }, "editItem": { "title": "Edit Item", "nameLabel": "Item Name", "quantityLabel": "Quantity" }, "costSummary": { "title": "List Cost Summary", "totalCostLabel": "Total List Cost:", "equalShareLabel": "Equal Share Per User:", "participantsLabel": "Participating Users:", "userBalancesHeader": "User Balances", "tableHeaders": { "user": "User", "itemsAddedValue": "Items Added Value", "amountDue": "Amount Due", "balance": "Balance" }, "emptyState": "No cost summary available." }, "settleShare": { "title": "Settle Share", "settleAmountFor": "Settle amount for {userName}:", "amountLabel": "Amount", "errors": { "enterAmount": "Please enter an amount.", "positiveAmount": "Please enter a positive amount.", "exceedsRemaining": "Amount cannot exceed remaining: {amount}.", "noSplitSelected": "Error: No split selected." } } }, "confirmations": { "updateMessage": "Mark '{itemName}' as {status}?", "statusComplete": "complete", "statusIncomplete": "incomplete", "deleteMessage": "Delete '{itemName}'? This cannot be undone." }, "notifications": { "itemAddedSuccess": "Item added successfully.", "itemsAddedSuccessOcr": "{count} item(s) added successfully from OCR.", "itemUpdatedSuccess": "Item updated successfully.", "itemDeleteSuccess": "Item deleted successfully.", "enterItemName": "Please enter an item name.", "costSummaryLoadFailed": "Failed to load cost summary.", "cannotSettleOthersShares": "You can only settle your own shares.", "settlementDataMissing": "Cannot process settlement: missing data.", "settleShareSuccess": "Share settled successfully!", "settleShareFailed": "Failed to settle share." }, "expensesSection": { "title": "Expenses", "addExpenseButton": "Add Expense", "loading": "Loading expenses...", "emptyState": "No expenses recorded for this list yet.", "paidBy": "Paid by:", "onDate": "on", "owes": "owes", "paidAmount": "Paid:", "activityLabel": "Activity:", "byUser": "by", "settleShareButton": "Settle My Share", "retryButton": "Retry" }, "status": { "settled": "Settled", "partiallySettled": "Partially Settled", "unsettled": "Unsettled", "paid": "Paid", "partiallyPaid": "Partially Paid", "unpaid": "Unpaid", "unknown": "Unknown Status" } }, "myChoresPage": { "title": "My Assigned Chores", "showCompletedToggle": "Show Completed", "timelineHeaders": { "overdue": "Overdue", "today": "Due Today", "thisWeek": "This Week", "later": "Later", "completed": "Completed" }, "choreCard": { "personal": "Personal", "group": "Group", "duePrefix": "Due", "completedPrefix": "Completed", "dueToday": "Due Today", "markCompleteButton": "Mark Complete" }, "frequencies": { "one_time": "One Time", "daily": "Daily", "weekly": "Weekly", "monthly": "Monthly", "custom": "Custom", "unknown": "Unknown Frequency" }, "dates": { "invalidDate": "Invalid Date", "unknownDate": "Unknown Date" }, "emptyState": { "title": "No Assignments Yet!", "noAssignmentsPending": "You have no pending chore assignments.", "noAssignmentsAll": "You have no chore assignments (completed or pending).", "viewAllChoresButton": "View All Chores" }, "notifications": { "loadFailed": "Failed to load assignments", "markedComplete": "Marked \"{choreName}\" as complete!", "markCompleteFailed": "Failed to mark assignment as complete" } }, "personalChoresPage": { "title": "Personal Chores", "newChoreButton": "New Chore", "editButton": "Edit", "deleteButton": "Delete", "cancelButton": "Cancel", "saveButton": "Save", "modals": { "editChoreTitle": "Edit Chore", "newChoreTitle": "New Chore", "deleteChoreTitle": "Delete Chore" }, "form": { "nameLabel": "Name", "descriptionLabel": "Description", "frequencyLabel": "Frequency", "intervalLabel": "Interval (days)", "dueDateLabel": "Next Due Date" }, "deleteDialog": { "confirmationText": "Are you sure you want to delete this chore?" }, "frequencies": { "one_time": "One Time", "daily": "Daily", "weekly": "Weekly", "monthly": "Monthly", "custom": "Custom", "unknown": "Unknown Frequency" }, "dates": { "invalidDate": "Invalid Date", "duePrefix": "Due" }, "notifications": { "loadFailed": "Failed to load personal chores", "updateSuccess": "Personal chore updated successfully", "createSuccess": "Personal chore created successfully", "saveFailed": "Failed to save personal chore", "deleteSuccess": "Personal chore deleted successfully", "deleteFailed": "Failed to delete personal chore" } }, "indexPage": { "welcomeMessage": "Welcome to Valerie UI App", "mainPageInfo": "This is the main index page.", "sampleTodosHeader": "Sample Todos (from IndexPage data)", "totalCountLabel": "Total count from meta:", "noTodos": "No todos to display." } }