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:
472
i18n/en/medication.ts
Normal file
472
i18n/en/medication.ts
Normal 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!',
|
||||
},
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user