Add Chinese translations for medication management and personal settings

- Introduced new translation files for medication, personal, and weight management in Chinese.
- Updated the main index file to include the new translation modules.
- Enhanced the medication type definitions to include 'ointment'.
- Refactored workout type labels to utilize i18n for better localization support.
- Improved sleep quality descriptions and recommendations with i18n integration.
This commit is contained in:
richarjiang
2025-11-28 17:29:51 +08:00
parent fbe0c92f0f
commit bca6670390
42 changed files with 7972 additions and 6632 deletions

472
i18n/en/medication.ts Normal file
View File

@@ -0,0 +1,472 @@
export const medications = {
greeting: 'Hello, {{name}}',
welcome: 'Welcome to Medication Assistant!',
todayMedications: 'Today\'s Medications',
filters: {
all: 'All',
taken: 'Taken',
missed: 'Missed',
},
emptyState: {
title: 'No medications scheduled for today',
subtitle: 'No medication plans added yet. Let\'s add some.',
},
stack: {
completed: 'Completed ({{count}})',
},
dateFormats: {
today: 'Today, {{date}}',
other: '{{date}}',
},
// MedicationCard
card: {
status: {
missed: 'Missed',
timeToTake: 'Time to take',
remaining: '{{time}} remaining',
},
action: {
takeNow: 'Take Now',
taken: 'Taken',
skipped: 'Skipped',
skip: 'Skip',
submitting: 'Submitting...',
},
skipAlert: {
title: 'Confirm Skip',
message: 'Are you sure you want to skip this medication?\n\nIt will not be recorded as taken.',
cancel: 'Cancel',
confirm: 'Confirm Skip',
},
earlyTakeAlert: {
title: 'Not yet time to take medication',
message: 'This medication is scheduled for {{time}}, which is more than 1 hour from now.\n\nHave you already taken this medication?',
cancel: 'Cancel',
confirm: 'Confirm Taken',
},
takeError: {
title: 'Operation Failed',
message: 'An error occurred while recording medication, please try again later',
confirm: 'OK',
},
skipError: {
title: 'Operation Failed',
message: 'Skip operation failed, please try again later',
confirm: 'OK',
},
},
// Add Medication Page
add: {
title: 'Add Medication',
steps: {
name: 'Medication Name',
dosage: 'Dosage & Form',
frequency: 'Frequency',
time: 'Reminder Time',
note: 'Notes',
},
descriptions: {
name: 'Name the medication and upload package photo for easy identification',
dosage: 'Select tablet type and fill in dosage per administration',
frequency: 'Set medication frequency and daily times',
time: 'Add and manage daily reminder times',
note: 'Fill in notes or doctor instructions (optional)',
},
name: {
placeholder: 'Enter or search medication name',
},
photo: {
title: 'Upload Medication Photo',
subtitle: 'Take a photo or select from album to help identify medication packaging',
selectTitle: 'Select Image',
selectMessage: 'Please select image source',
camera: 'Camera',
album: 'From Album',
cancel: 'Cancel',
retake: 'Retake',
uploading: 'Uploading...',
uploadingText: 'Uploading',
remove: 'Remove',
cameraPermission: 'Camera permission is required to take medication photos',
albumPermission: 'Album permission is required to select medication photos',
uploadFailed: 'Upload Failed',
uploadFailedMessage: 'Image upload failed, please try again later',
cameraFailed: 'Camera Failed',
cameraFailedMessage: 'Unable to open camera, please try again later',
selectFailed: 'Selection Failed',
selectFailedMessage: 'Unable to open album, please try again later',
},
dosage: {
label: 'Dosage per administration',
placeholder: '0.5',
type: 'Type',
unitSelector: 'Select dosage unit',
},
frequency: {
label: 'Times per day',
value: '{{count}} times/day',
period: 'Medication period',
start: 'Start',
end: 'End',
longTerm: 'Long-term',
startDateInvalid: 'Invalid date',
startDateInvalidMessage: 'Start date cannot be earlier than today',
endDateInvalid: 'Invalid date',
endDateInvalidMessage: 'End date cannot be earlier than start date',
},
time: {
label: 'Daily reminder times',
addTime: 'Add Time',
editTime: 'Edit Reminder Time',
addTimeButton: 'Add Time',
},
note: {
label: 'Notes',
placeholder: 'Record precautions, doctor instructions or custom reminders',
voiceNotSupported: 'Voice-to-text is not supported on this device, you can type notes directly',
voiceError: 'Voice recognition unavailable',
voiceErrorMessage: 'Unable to use voice input, please check permission settings and try again',
voiceStartError: 'Unable to start voice input',
voiceStartErrorMessage: 'Please check microphone and voice recognition permissions and try again',
},
actions: {
previous: 'Previous',
next: 'Next',
complete: 'Complete',
},
success: {
title: 'Added Successfully',
message: 'Successfully added medication "{{name}}"',
confirm: 'OK',
},
error: {
title: 'Add Failed',
message: 'An error occurred while creating medication, please try again later',
confirm: 'OK',
},
datePickers: {
startDate: 'Select Start Date',
endDate: 'Select End Date',
time: 'Select Time',
cancel: 'Cancel',
confirm: 'Confirm',
},
pickers: {
timesPerDay: 'Select Times Per Day',
dosageUnit: 'Select Dosage Unit',
cancel: 'Cancel',
confirm: 'Confirm',
},
},
// Medication Management Page
manage: {
title: 'Medication Management',
subtitle: 'Manage status and reminders for all medications',
filters: {
all: 'All',
active: 'Active',
inactive: 'Inactive',
},
loading: 'Loading medication information...',
empty: {
title: 'No Medications',
subtitle: 'No medication records yet, click the top right to add',
},
deactivate: {
title: 'Deactivate {{name}}?',
description: 'After deactivation, medication plans generated for the day will be deleted and cannot be recovered.',
confirm: 'Confirm Deactivation',
cancel: 'Cancel',
error: {
title: 'Operation Failed',
message: 'An error occurred while deactivating medication, please try again later.',
},
},
toggleError: {
title: 'Operation Failed',
message: 'An error occurred while toggling medication status, please try again later.',
},
formLabels: {
capsule: 'Capsule',
pill: 'Tablet',
tablet: 'Tablet',
injection: 'Injection',
spray: 'Spray',
drop: 'Drops',
syrup: 'Syrup',
other: 'Other',
ointment: 'Ointment',
},
frequency: {
daily: 'Daily',
weekly: 'Weekly',
custom: 'Custom',
},
cardMeta: 'Started {{date}} Reminder: {{reminder}}',
reminderNotSet: 'Not set',
unknownDate: 'Unknown date',
},
// Medication Detail Page
detail: {
title: 'Medication Details',
notFound: {
title: 'Medication information not found',
subtitle: 'Please re-enter this page from the medication list.',
},
loading: 'Loading...',
error: {
title: 'Unable to retrieve medication information at this time, please try again later.',
subtitle: 'Please check your network and try again, or return to the previous page.',
},
sections: {
plan: 'Medication Plan',
dosage: 'Dosage & Form',
note: 'Notes',
overview: 'Medication Overview',
aiAnalysis: 'AI Medication Analysis',
},
plan: {
period: 'Medication Period',
time: 'Medication Time',
frequency: 'Frequency',
expiryDate: 'Expiry Date',
longTerm: 'Long-term',
periodMessage: 'Start date: {{startDate}}\n{{endDateInfo}}',
longTermPlan: 'Medication plan: Long-term medication',
timeMessage: 'Set times: {{times}}',
dateFormat: 'MMM D, YYYY',
periodRange: 'From {{startDate}} to {{endDate}}',
periodLongTerm: 'From {{startDate}} until indefinitely',
expiryStatus: {
notSet: 'Not set',
expired: 'Expired',
expiresToday: 'Expires today',
expiresInDays: 'Expires in {{days}} days',
},
},
dosage: {
label: 'Dosage per administration',
form: 'Form',
selectDosage: 'Select Dosage',
selectForm: 'Select Form',
dosageValue: 'Dosage Value',
unit: 'Unit',
},
note: {
label: 'Medication Notes',
placeholder: 'Record precautions, doctor instructions or custom reminders',
edit: 'Edit Notes',
noNote: 'No notes',
voiceNotSupported: 'Voice-to-text is not supported on this device, you can type notes directly',
save: 'Save',
saveError: {
title: 'Save Failed',
message: 'An error occurred while submitting notes, please try again later.',
},
},
overview: {
calculating: 'Calculating...',
takenCount: 'Taken {{count}} times in total',
calculatingDays: 'Calculating adherence days',
startedDays: 'Adhered for {{days}} days',
startDate: 'Started {{date}}',
noStartDate: 'No start date',
},
aiAnalysis: {
analyzing: 'Analyzing medication information...',
analyzingButton: 'Analyzing...',
reanalyzeButton: 'Reanalyze',
getAnalysisButton: 'Get AI Analysis',
button: 'AI Analysis',
status: {
generated: 'Generated',
memberExclusive: 'Member Exclusive',
pending: 'Pending',
},
title: 'Analysis Results',
recommendation: 'AI Recommended',
placeholder: 'Get AI analysis to quickly understand suitable populations, ingredient safety, and usage recommendations.',
categories: {
suitableFor: 'Suitable For',
unsuitableFor: 'Unsuitable For',
sideEffects: 'Possible Side Effects',
storageAdvice: 'Storage Advice',
healthAdvice: 'Health/Usage Advice',
},
membershipCard: {
title: 'Member Exclusive AI In-depth Analysis',
subtitle: 'Unlock complete medication analysis and unlimited usage',
},
error: {
title: 'Analysis Failed',
message: 'AI analysis failed, please try again later',
networkError: 'Failed to initiate analysis request, please check network connection',
unauthorized: 'Please log in first',
forbidden: 'No access to this medication',
notFound: 'Medication not found',
},
},
aiDraft: {
reshoot: 'Reshoot',
saveAndCreate: 'Save & Create',
saveError: {
title: 'Save Failed',
message: 'An error occurred while creating medication, please try again later',
},
},
status: {
enabled: 'Reminders Enabled',
disabled: 'Reminders Disabled',
},
delete: {
title: 'Delete {{name}}?',
description: 'After deletion, reminders and history related to this medication will be cleared and cannot be recovered.',
confirm: 'Delete',
cancel: 'Cancel',
error: {
title: 'Delete Failed',
message: 'An error occurred while removing this medication, please try again later.',
},
},
deactivate: {
title: 'Deactivate {{name}}?',
description: 'After deactivation, medication plans generated for the day will be deleted and cannot be recovered.',
confirm: 'Confirm Deactivation',
cancel: 'Cancel',
error: {
title: 'Operation Failed',
message: 'An error occurred while deactivating medication, please try again later.',
},
},
toggleError: {
title: 'Operation Failed',
message: 'An error occurred while toggling reminder status, please try again later.',
},
updateErrors: {
dosage: 'Update Failed',
dosageMessage: 'An error occurred while updating dosage, please try again later.',
form: 'Update Failed',
formMessage: 'An error occurred while updating form, please try again later.',
expiryDate: 'Update Failed',
expiryDateMessage: 'Failed to update expiry date, please try again later.',
},
imageViewer: {
close: 'Close',
},
pickers: {
cancel: 'Cancel',
confirm: 'Confirm',
},
},
// Edit Frequency Page
editFrequency: {
title: 'Edit Medication Frequency',
missingParams: 'Missing required parameters',
medicationName: 'Editing: {{name}}',
sections: {
frequency: 'Medication Frequency',
frequencyDescription: 'Set daily medication frequency',
time: 'Daily Reminder Times',
timeDescription: 'Add and manage daily reminder times',
},
frequency: {
repeatPattern: 'Repeat Pattern',
timesPerDay: 'Times Per Day',
daily: 'Daily',
weekly: 'Weekly',
custom: 'Custom',
timesLabel: '{{count}} times',
summary: '{{pattern}} {{count}} times',
},
time: {
addTime: 'Add Time',
editTime: 'Edit Reminder Time',
addTimeButton: 'Add Time',
},
actions: {
save: 'Save Changes',
},
error: {
title: 'Update Failed',
message: 'An error occurred while updating medication frequency, please try again later.',
},
pickers: {
cancel: 'Cancel',
confirm: 'Confirm',
},
},
aiProgress: {
title: 'Analyzing',
steps: {
analyzing_product: 'Analyzing product...',
analyzing_suitability: 'Checking suitability...',
analyzing_ingredients: 'Evaluating ingredients...',
analyzing_effects: 'Generating safety advice...',
completed: 'Completed, loading details...',
},
errors: {
default: 'Recognition failed, please retake photo',
queryFailed: 'Query failed, please try again later',
},
modal: {
title: 'Retake Required',
retry: 'Retake Photo',
},
},
aiCamera: {
title: 'AI Scan',
steps: {
front: {
title: 'Front',
subtitle: 'Ensure medication name is clearly visible',
},
side: {
title: 'Back',
subtitle: 'Include specs and ingredients info',
},
aux: {
title: 'Side',
subtitle: 'Add more details to improve accuracy',
},
stepProgress: 'Step {{current}} / {{total}}',
optional: '(Optional)',
notTaken: 'Empty',
},
buttons: {
flip: 'Flip',
capture: 'Snap',
complete: 'Done',
album: 'Album',
},
permission: {
title: 'Camera Permission Required',
description: 'Allow access to capture medication packaging for automatic recognition',
button: 'Allow Camera Access',
},
alerts: {
pickFailed: {
title: 'Selection Failed',
message: 'Please try again or choose another image',
},
captureFailed: {
title: 'Capture Failed',
message: 'Please try again',
},
insufficientPhotos: {
title: 'Photos Missing',
message: 'Please capture at least front and back sides',
},
taskFailed: {
title: 'Task Creation Failed',
defaultMessage: 'Please check network and try again',
},
},
guideModal: {
badge: 'Guide',
title: 'Keep Photos Clear',
description1: 'Please capture the product name and description on the front/back of the medication.',
description2: 'Ensure good lighting, avoid glare, and keep text legible. Photo clarity affects recognition accuracy.',
button: 'Got it!',
},
},
};