![google-labs-jules[bot]](/assets/img/avatar_default.png)
This commit introduces internationalization for several page components by identifying hardcoded strings, adding them to translation files, and updating the components to use translation keys. Processed pages: - fe/src/pages/AuthCallbackPage.vue: I internationalized an error message. - fe/src/pages/ChoresPage.vue: I internationalized console error messages and an input placeholder. - fe/src/pages/ErrorNotFound.vue: I found no missing translations. - fe/src/pages/GroupDetailPage.vue: I internationalized various UI elements (ARIA labels, button text, fallback user display names) and console/error messages. - fe/src/pages/GroupsPage.vue: I internationalized error messages and console logs. - fe/src/pages/IndexPage.vue: I found no missing user-facing translations. - fe/src/pages/ListDetailPage.vue: My analysis is complete, and I identified a console message and a fallback string for translation (implementation of changes for this page is pending). For each processed page where changes were needed: - I added new keys to `fe/src/i18n/en.json`. - I added corresponding placeholder keys `"[TRANSLATE] Original Text"` to `fe/src/i18n/de.json`, `fe/src/i18n/es.json`, and `fe/src/i18n/fr.json`. - I updated the Vue component to use the `t()` function with the new keys. Further pages in `fe/src/pages/` are pending analysis and internationalization as per our original plan.
591 lines
21 KiB
JSON
591 lines
21 KiB
JSON
{
|
|
"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."
|
|
}
|
|
}
|