Files
digital-pilates/i18n/en/medication.ts

544 lines
18 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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: 'Set Expiry',
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!',
},
},
aiSummary: {
title: 'AI Medication Summary',
headerBadge: 'AI Insight',
subtitle: 'Adherence and safety overview',
overviewTitle: 'Adherence snapshot',
keyInsights: 'AI key insight',
refresh: 'DeepSeek is analyzing, please wait...',
stats: {
activePlans: 'Active plans',
plannedDoses: 'Planned doses',
takenDoses: 'Taken doses',
completion: 'Overall completion',
avgCompletion: 'Avg adherence',
activeDays: 'Planned days',
},
badges: {
adherence: 'Adherence',
safety: 'Monitoring',
},
doseSummary: 'Completed {{taken}} / {{planned}}',
daysLabel: '{{days}} day plan • {{times}} times/day',
completionLabel: '{{value}}% completed',
emptyTitle: 'No active medication plans',
emptyDescription: 'Activate or add a plan to generate the AI summary.',
error403: 'Free AI quota is used up, please upgrade to continue.',
genericError: 'Unable to load AI summary, please try again later.',
keyInsightPlaceholder: 'No AI insight available yet.',
listTitle: 'Plan breakdown',
updatedAt: 'Updated {{time}}',
pillChip: 'Professional advice',
retry: 'Retry',
infoModal: {
badge: 'Info',
title: 'Refresh & Adherence',
point1: '• Daily Generation: Based on active medication plans and actual check-in data, generated daily.',
point2: '• Refresh Effect: Retrieves the latest plan vs. actual completion and AI analysis, no extra quota used.',
point3: '• Adherence: Degree of following the plan (completion rate). Higher means better compliance and lower risk.',
point4: '• Statistics: Only counts plans with isActive=true and not deleted; completion only counts records with status "taken".',
button: 'Got it',
},
completionInfoModal: {
badge: 'Calculation',
title: 'Completion Calculation Logic',
point1: '• Overall completion = (Total actual doses taken ÷ Total planned doses) × 100%',
point2: '• Actual doses taken: Number of medication records marked as "taken"',
point3: '• Planned doses: Total doses calculated from the plan start date to current date based on daily frequency',
point4: '• Detailed calculation: (Current date - Start date + 1) × Daily doses, e.g.: Day 5 with 2 daily doses = 10 total planned doses',
point5: '• Individual plan completion = (Actual doses taken for that plan ÷ Planned doses for that plan) × 100%',
button: 'Understood',
},
},
aiSummaryInfo: {
title: 'AI Medication Summary',
placeholderImage: 'Intro Image',
viewImage: 'View Full Image',
features: {
intelligent: {
title: 'Intelligent Analysis',
description: 'AI deeply analyzes your medication records to provide personalized health recommendations',
},
tracking: {
title: 'Trend Tracking',
description: 'Long-term tracking of medication effects to help optimize treatment plans',
},
professional: {
title: 'Professional & Reliable',
description: 'Based on medical knowledge base, providing safe and reliable health analysis',
},
},
confirmButton: 'Subscribe Now',
},
};