Files
medassist-ng/frontend/src/i18n/en.json
T
Daniel Volz 96b2a0c96f feat: image upload optimization with sharp, thumbnails, and structured error codes (#304)
- Add sharp for server-side image processing (WebP conversion + thumbnails)
- New shared backend utility for image upload, optimization, and cleanup
- Return structured error codes from upload endpoints (IMAGE_TOO_LARGE, INVALID_TYPE, etc.)
- Frontend error code mapping with i18n support (EN + DE)
- MedicationAvatar tries thumbnail first, falls back to full image
- Error display in MedicationsPage, MobileEditModal, and Auth avatar upload

Closes #302
2026-02-24 23:52:59 +01:00

673 lines
26 KiB
JSON

{
"nav": {
"dashboard": "Dashboard",
"medications": "Medications",
"planner": "Planner",
"settings": "Settings",
"schedule": "Schedule"
},
"header": {
"eyebrow": {
"overview": "MedAssist-ng · Overview",
"inventory": "MedAssist-ng · Inventory",
"planner": "MedAssist-ng · Planner",
"settings": "MedAssist-ng · Configuration",
"schedule": "MedAssist-ng · Schedule"
}
},
"dashboard": {
"reorder": {
"title": "Refill Reminder",
"badge": "Stock watch",
"noMeds": "No medications configured yet.",
"allGood": "All good, enough stock.",
"lowWarning": "Enough stock for now, but {{meds}} is running critically low.",
"lowWarning_other": "Enough stock for now, but {{meds}} are running critically low.",
"lowWarningPrefix": "Enough stock for now, but",
"lowWarningSuffix": "is running critically low.",
"lowWarningSuffix_other": "are running critically low.",
"sendReminder": "🔔 Send Reminder Now"
},
"overview": {
"title": "Medication Overview",
"badge": "Stock"
},
"schedules": {
"title": "Upcoming Schedules",
"1month": "1 month",
"3months": "3 months",
"6months": "6 months",
"allTaken": "All taken",
"showPastDays": "Show past days",
"hidePastDays": "Hide past days",
"pastDaysCount": "{{count}} day",
"pastDaysCount_other": "{{count}} days",
"showFutureDays": "Show future days",
"hideFutureDays": "Hide future days",
"futureDaysCount": "{{count}} day",
"futureDaysCount_other": "{{count}} days",
"missedDoses": "{{count}} missed dose",
"missedDoses_other": "{{count}} missed doses",
"clearMissed": "Clear missed",
"clearMissedConfirmTitle": "Clear Missed Doses?",
"clearMissedConfirmMessage": "This will mark {{count}} missed dose as acknowledged without deducting from your stock.",
"clearMissedConfirmMessage_other": "This will mark {{count}} missed doses as acknowledged without deducting from your stock.",
"clearMissedConfirm": "Yes, Clear",
"clearMissedCancel": "Cancel",
"clearMissedSuccess": "Cleared {{count}} missed doses"
},
"reminders": {
"active": "Automatic reminders active",
"status": "Status",
"allStockOk": "All stock good",
"allOk": "All good",
"lastReminder": "Last intake reminder",
"lastSent": "Last intake reminder",
"lastStockSent": "Last stock reminder",
"next": "Refill reminder",
"nextIn": "Refill reminder",
"inDays": "in {{days}} days",
"inDays_one": "in {{days}} day",
"inDays_other": "in {{days}} days",
"noRemindersNeeded": "No reminders needed",
"needRefill": "{{count}} medication needs refill",
"needRefill_other": "{{count}} medications need refill",
"emptyStock": "{{count}} medication is empty",
"emptyStock_other": "{{count}} medications are empty",
"lowWarning": "{{count}} medication running critically low",
"lowWarning_other": "{{count}} medications running critically low",
"waitingFirstCheck": "Waiting for first check",
"type": "Type",
"typeStock": "Stock",
"typeIntake": "Intake",
"via": "via",
"channelEmail": "Email",
"channelPush": "Push",
"channelBoth": "Email + Push",
"criticalMeds": "{{count}} medication is critical",
"criticalMeds_other": "{{count}} medications are critical",
"lowMeds": "{{count}} medication is low",
"lowMeds_other": "{{count}} medications are low",
"prescriptionNeeds": "Prescription low",
"prescriptionLowMeds": "{{count}} prescription low",
"prescriptionLowMeds_other": "{{count}} prescriptions low",
"prescriptionCriticalMeds": "{{count}} prescription empty",
"prescriptionCriticalMeds_other": "{{count}} prescriptions empty",
"needsPrescriptionRefill": "Needs prescription refill",
"usedBy": "Used by",
"refillsLeft": "{{count}} refill left",
"refillsLeft_other": "{{count}} refills left",
"daysLeft": "{{days}} day left",
"daysLeft_other": "{{days}} days left",
"needsRefill": "Needs refill"
}
},
"table": {
"name": "Name",
"pills": "Pills",
"days": "Days",
"currentPills": "Current pills",
"fullBlisters": "Full blisters",
"openBlister": "Open blister",
"stock": "Stock",
"stockDetails": "Details",
"daysLeft": "Days left",
"status": "Status",
"runsOut": "Runs out",
"autoRemind": "Auto-remind",
"expiry": "Expiry",
"pillsCount": "{{count}} pills",
"pillsCount_one": "{{count}} pill",
"pillsCount_other": "{{count}} pills"
},
"medications": {
"list": {
"title": "Medication list",
"entries": "{{count}} entries",
"entries_one": "{{count}} entry",
"entries_other": "{{count}} entries",
"markObsolete": "Mark obsolete",
"reactivate": "Reactivate",
"obsoleteTitle": "Obsolete ({{count}})",
"obsoleteSince": "Stopped",
"started": "Started"
},
"details": {
"packs": "Packs",
"blisters": "Blisters per pack",
"pillsPerBlister": "Pills per blister",
"loose": "Loose",
"total": "Total",
"stock": "Stock",
"totalCapacity": "Capacity",
"type": "Type"
},
"deleteModal": {
"title": "Delete medication",
"message": "Do you really want to delete \"{{name}}\"?"
},
"obsoleteModal": {
"title": "Mark medication as obsolete",
"message": "Do you really want to mark \"{{name}}\" as obsolete?"
}
},
"form": {
"editEntry": "Edit",
"editEntryWithName": "Edit: {{name}}",
"viewEntry": "View",
"newEntry": "New medication",
"badge": "Packs + loose pills",
"sections": {
"general": "General",
"stock": "Package",
"prescription": "Prescription",
"prescriptionAndRefill": "Rx & Refill",
"schedule": "Schedule"
},
"commercialName": "Commercial Name",
"genericName": "Generic Name",
"takenBy": "Taken by",
"packageType": "Package Type",
"packageTypeBlister": "Blister Pack",
"packageTypeBottle": "Pill Bottle",
"packs": "Packs",
"blistersPerPack": "Blisters per pack",
"pillsPerBlister": "Pills per blister",
"totalCapacity": "Total Capacity",
"currentPills": "Current Pills",
"loosePills": "Loose pills",
"pillWeight": "Dose per pill",
"total": "Total (pills)",
"medicationStartDate": "Medication Start Date",
"expiryDate": "Expiry Date",
"notes": "Notes",
"medicationImage": "Medication Image",
"removeImage": "Remove Image",
"imageUploadErrors": {
"tooLarge": "Image is too large. Maximum upload size is 10 MB.",
"invalidType": "Invalid file type. Allowed formats: JPEG, PNG, WebP, GIF.",
"invalidImage": "Invalid or unsupported image file.",
"noFile": "No file was selected for upload.",
"generic": "Image upload failed. Please try again."
},
"placeholders": {
"commercial": "e.g. Ozempic",
"generic": "e.g. Semaglutide (optional)",
"takenBy": "Type name and press Enter",
"addPerson": "Add another person...",
"weight": "e.g. 240",
"notes": "e.g. Take with food, avoid alcohol... (optional)"
},
"validation": {
"startDateAfterIntake": "Medication start date ({{medicationStartDate}}) cannot be after intake date ({{intakeDate}})."
},
"blisters": {
"title": "Intake schedule",
"remind": "Remind",
"remindTooltip": "Receive a notification 15 minutes before each scheduled intake",
"addIntake": "Intake",
"usage": "Usage (pills)",
"everyDays": "Every (days)",
"every": "every",
"from": "from",
"startDate": "Date",
"startTime": "Time",
"takenByIntake": "Taken by",
"takenByEveryone": "Everyone"
}
},
"planner": {
"title": "Demand Calculator",
"badge": "Plan your supply",
"from": "From",
"until": "Until",
"includeUntilStart": "Include current consumption",
"includeUntilStartTooltip": "When enabled, pills consumed between today and the selected start date are subtracted from your current stock. This gives a more accurate picture of how much you'll actually have left when the planning period begins.",
"calculate": "Calculate",
"calculating": "Calculating...",
"sendEmail": "📧 Send via Email",
"sendNotification": "🔔 Send Demand",
"table": {
"medication": "Medication",
"usage": "Usage",
"blistersNeeded": "Blisters needed",
"prescriptionRefills": "Prescription refills",
"blisters": "Blisters",
"available": "Available"
}
},
"settings": {
"loading": "Loading settings...",
"language": {
"title": "Language",
"select": "Select language"
},
"notifications": {
"title": "Notifications",
"channels": "Channels",
"email": "Email",
"push": "Push",
"stockReminders": "Stock Reminders",
"intakeReminders": "Intake Reminders",
"prescriptionReminders": "Prescription Reminders",
"enableHint": "Enable at least one channel below to receive notifications.",
"skipTakenDoses": "Skip reminders for taken doses",
"skipTakenDosesTooltip": "Don't send intake reminders for doses that have already been marked as taken today",
"repeatReminders": "Repeat reminders for missed doses",
"repeatRemindersTooltip": "Automatically send repeated reminders for doses that haven't been marked as taken",
"reminderInterval": "Reminder interval (minutes)",
"reminderIntervalTooltip": "How often to send repeated reminders for missed doses",
"maxNaggingReminders": "Max reminders per dose",
"maxNaggingRemindersTooltip": "Stop sending repeat reminders after this many attempts (1-20)"
},
"email": {
"recipient": "Recipient",
"notConfigured": "Not configured"
},
"push": {
"url": "URL",
"urlPlaceholder": "ntfy://topic or pushover://:token@userkey/",
"supports": "Supports ntfy, Pushover, Gotify, Discord, Telegram, Slack & more",
"docsLink": "See shoutrrr.dev for all services"
},
"schedule": {
"title": "Reminder Schedule",
"stockCheck": "Stock & prescription check",
"dailyAt6": "Daily at 6:00 AM",
"intakeCheck": "Intake check",
"15minBefore": "15 min before scheduled time",
"nextCheck": "Next stock check",
"lastSent": "Last notification sent",
"lastStockSent": "Last stock reminder",
"lastIntakeSent": "Last intake reminder",
"lastPrescriptionSent": "Last prescription reminder",
"envHint": "These values can be configured via REMINDER_HOUR and REMINDER_MINUTES_BEFORE in .env"
},
"stock": {
"title": "Stock",
"calculationMode": "Stock Calculation",
"automatic": "Automatic",
"automaticDesc": "Stock automatically decreases based on schedule",
"manual": "Manual",
"manualDesc": "Stock only decreases when doses are marked as taken",
"thresholds": "Thresholds",
"criticalStockDays": "Critical (days)",
"criticalStockTooltip": "Stock below this value is critical and needs immediate attention",
"lowStockDays": "Low (days)",
"lowStockTooltip": "Stock below this value means you should reorder soon",
"highStockDays": "High (days)",
"highStockTooltip": "Stock above this value means you are well supplied",
"thresholdValidation": "Values must be: Critical < Low < High",
"shareStockStatus": "Show Stock on Shared Links",
"shareStockStatusDesc": "Show stock status (Normal/Low/Critical) and colored borders on shared schedule links for intake users"
},
"timeline": {
"title": "General UI",
"upcomingSection": "Upcoming Schedule",
"upcomingTodayOnly": "Show only today",
"upcomingTodayOnlyDesc": "Hide past and future days and show only today's schedule on the dashboard.",
"dashboardSectionOrder": "Dashboard Layout",
"swapDashboardSections": "Show Upcoming Schedules before Medication Overview",
"swapDashboardSectionsDesc": "When enabled, the dashboard prioritizes the upcoming schedule section above the medication overview section.",
"sharedSection": "Shared Schedule",
"shareScheduleTodayOnly": "Shared links show only today",
"shareScheduleTodayOnlyDesc": "Hide past and future days on shared schedule links and show only today's entries."
},
"stockReminder": {
"title": "Stock Reminder",
"description": "Enable stock reminders",
"infoTooltip": "Notifications include all medications with Low or Critical stock status. Low: stock is running low. Critical: stock is critically low — reorder soon.",
"repeatDaily": "Repeat daily",
"repeatTooltip": "When enabled, sends reminders every day while stock is critical. Otherwise, only notifies once per medication until restocked."
},
"saveSettings": "Save Settings"
},
"modal": {
"for": "for",
"at": "at",
"stockInfo": "Current Stock",
"packageDetails": "Package Details",
"currentStock": "Pills",
"packs": "Packs",
"blistersPerPack": "Blisters/Pack",
"pillsPerBlister": "Pills/Blister",
"loosePills": "Loose Pills",
"pillWeight": "Pill Weight",
"expiryDate": "Expiry Date",
"intakeSchedule": "Intake Schedule",
"coverageStatus": "Coverage Status",
"daysLeft": "Days Left",
"runsOut": "Runs Out",
"notes": "Notes",
"exportCalendar": "Export to Calendar",
"exportTooltip": "Export schedule to calendar",
"editMedication": "Edit Medication",
"userMedications": "{{name}}'s Medications",
"noMedsForUser": "No medications found for {{name}}"
},
"status": {
"outOfStock": "Empty",
"criticalStock": "Critical",
"lowStock": "Low",
"normal": "Normal",
"highStock": "High",
"noSchedule": "No Schedule",
"enough": "Enough",
"noPillsLeft": "No pills left",
"stockOk": "Stock OK"
},
"tooltips": {
"intakeReminders": "Intake reminders enabled",
"automaticTaken": "Automatically taken",
"hasNotes": "Has notes",
"hasPrescription": "Prescription tracking enabled",
"stockExceedsCapacity": "Stock exceeds package capacity — consider updating pack count",
"lightMode": "Switch to light mode",
"darkMode": "Switch to dark mode"
},
"theme": {
"title": "Theme",
"light": "Light",
"dark": "Dark",
"system": "System"
},
"dose": {
"takenBy": "taken by",
"markAsTaken": "Mark as taken",
"take": "Take"
},
"auth": {
"login": "Login",
"logout": "Logout",
"register": "Create Account",
"createAdmin": "Create Admin Account",
"profile": "Profile",
"username": "Username",
"password": "Password",
"email": "Email",
"confirmPassword": "Confirm Password",
"currentPassword": "Current Password",
"newPassword": "New Password",
"changePassword": "Change Password",
"forgotPassword": "Forgot password?",
"sendResetLink": "Send Reset Link",
"resetPassword": "Reset Password",
"backToLogin": "Back to Login",
"createAccount": "Create account",
"alreadyHaveAccount": "Already have an account? Login",
"firstUserInfo": "This will be the administrator account.",
"usernameHint": "Letters, numbers, underscores, and hyphens only",
"emailHint": "For password recovery",
"passwordMismatch": "Passwords do not match",
"checkEmail": "Check your email",
"resetEmailSent": "If an account with this email exists, we've sent a password reset link.",
"passwordReset": "Password Reset",
"passwordResetSuccess": "Your password has been reset. Redirecting to login...",
"profileUpdated": "Profile updated successfully",
"rememberMe": "Remember me",
"localAccount": "Local Account",
"updatePassword": "Update Password",
"fillAllFields": "Please fill in all password fields",
"signOut": "Sign Out",
"uploadAvatar": "Upload avatar",
"removeAvatar": "Remove avatar",
"avatarUpdated": "Avatar updated",
"avatarRemoved": "Avatar removed",
"loginWithSSO": "Login with {{provider}}",
"or": "or",
"deleteAccount": "Delete Account",
"deleteAccountConfirmTitle": "Delete Account?",
"deleteAccountConfirmText": "This will permanently delete your account and all your data (medications, settings, history). This action cannot be undone.",
"deleteAccountButton": "Yes, delete my account"
},
"common": {
"loading": "Loading...",
"sending": "Sending...",
"sent": "Sent!",
"sendFailed": "Failed to send",
"saveFailed": "Failed to save",
"networkError": "Network error",
"saving": "Saving...",
"unsavedChanges": {
"title": "Unsaved Changes",
"message": "You have unsaved changes. Are you sure you want to leave?",
"leave": "Leave",
"stay": "Stay"
},
"validation": {
"required": "This field is required",
"maxLength": "Maximum {{max}} characters ({{current}}/{{max}})",
"tooLong": "{{current}}/{{max}} characters"
},
"saved": "Saved",
"save": "Save",
"back": "Back",
"cancel": "Cancel",
"close": "Close",
"edit": "Edit",
"view": "View",
"delete": "Delete",
"remove": "Remove",
"reset": "Reset",
"test": "Test",
"undo": "Undo",
"expand": "Click to expand",
"collapse": "Click to collapse",
"optional": "optional",
"pill": "pill",
"pills": "pills",
"of": "of",
"loose": "loose",
"none": "None",
"daily": "daily",
"and": "and",
"everyNDays": "every {{count}} days",
"day": "day",
"days": "days",
"blister": "blister",
"blisters": "blisters",
"fullBlister": "full blister",
"fullBlisters": "full blisters",
"inBlister": "in 1 blister",
"total": "total",
"pillsTotal": "{{count}} pills total",
"pillsTotal_one": "{{count}} pill total",
"pillsTotal_other": "{{count}} pills total",
"max": "max",
"on": "On",
"off": "Off"
},
"share": {
"button": "Share",
"title": "Share Schedule",
"description": "Generate a secret link to share the medication schedule for a specific person. Anyone with this link can view the schedule. When the person marks a dose as taken, it will also be marked as taken in your app.",
"selectPerson": "Select person",
"selectPeriod": "Select time period",
"generateLink": "Generate Link",
"generating": "Generating...",
"generateAnother": "Generate another link",
"linkGenerated": "Share link generated!",
"copyLink": "Copy Link",
"copied": "Copied to clipboard!",
"noPeople": "No medications with 'Taken by' assigned. Add a person to a medication first.",
"scheduleFor": "Schedule for",
"period": "Period",
"noSchedule": "No scheduled doses found.",
"generatedBy": "Generated by",
"notFound": "Share link not found",
"error": "Failed to load schedule",
"expired": {
"title": "Link Expired",
"message": "This share link for {{takenBy}}'s medication schedule has expired.",
"contact": "Please contact {{username}} to request a new link.",
"expiredOn": "Expired on: {{date}}"
}
},
"exportImport": {
"title": "Data Export / Import",
"description": "Backup your data or transfer it to another device.",
"exportTitle": "Export",
"exportDesc": "Download all your data as a JSON file.",
"importTitle": "Import",
"importDesc": "Restore data from a backup file. This will replace all existing data.",
"export": "Export Data",
"exporting": "Exporting...",
"import": "Select File",
"importing": "Importing...",
"selectFile": "Select File",
"includeSensitive": "Include sensitive data (notification URLs)",
"sensitiveWarning": "Notification URLs may contain passwords and will be stored in plain text.",
"includeImages": "Include medication images",
"includeImagesHint": "Images significantly increase file size. Uncheck for smaller exports (~50 KB instead of several MB).",
"exportOptions": "Export Options",
"exportWithImages": "With Images",
"exportWithImagesDesc": "Full backup including all medication images. Larger file size.",
"exportDataOnly": "Data Only",
"exportDataOnlyDesc": "Compact backup without images. Much smaller file size (~50 KB).",
"confirmImport": "Replace All Data?",
"confirmImportMessage": "This will permanently delete all your current medications, dose history, settings, and share links, then replace them with the imported data.",
"confirmImportWarning": "This action cannot be undone!",
"confirmButton": "Yes, Replace All",
"confirmImportEmpty": "Import Data?",
"confirmImportEmptyMessage": "This will import all medications, dose history, settings, and share links from the selected file.",
"confirmButtonEmpty": "Import",
"cancelButton": "Cancel",
"exportSuccess": "Data exported successfully",
"importSuccess": "Data imported successfully",
"importSuccessDetails": "Imported: {{medications}} medications, {{doses}} doses, {{refills}} refills, {{shares}} share links",
"importError": "Failed to import data",
"invalidFile": "Invalid file format. Please select a valid MedAssist-ng export file.",
"downloadFilename": "medassist-export"
},
"refill": {
"saveFirst": "Save medication first to enable refill",
"title": "Refill",
"packs": "Packs to add",
"pillsToAdd": "Pills to add",
"loosePills": "Loose pills to add",
"pillsPerPack": "1 pack = {{count}} pills",
"addToStock": "Add to Stock",
"adding": "Adding...",
"success": "Added {{pills}} pills to stock",
"history": "Refill History",
"noHistory": "No refills recorded yet",
"packsAdded": "{{count}} pack",
"packsAdded_other": "{{count}} packs",
"pillsAdded": "{{count}} pill",
"pillsAdded_other": "{{count}} pills",
"button": "Refill",
"viaPrescription": "Prescription"
},
"prescription": {
"enabled": "Track prescription",
"authorizedRefills": "Authorized refills",
"remainingRefills": "Remaining prescription refills",
"lowThreshold": "Low-refill reminder threshold",
"expiryDate": "Prescription expiry",
"useForRefill": "Use prescription refill"
},
"editStock": {
"title": "Correct Stock",
"buttonLabel": "Correct Stock/Partial Blister",
"hint": "This is for correcting stock discrepancies. For regular stock changes, use 'Refill'.",
"totalPills": "Total pills",
"fullBlisters": "Full blisters",
"partialBlisterPills": "Partial blister",
"loosePills": "Loose pills",
"pillsPerBlister": "({{count}} pills each)",
"packageSize": "Package size: {{count}} pills",
"packageSizeBreakdown": "{{packCount}} x {{sizePerPack}} pills Pack = {{total}} pills",
"currentComposition": "Current stock: {{fullBlisters}} full blisters + {{partialPills}} partial + {{loosePills}} loose = {{total}} pills",
"maxExceeded": "Maximum package size is {{count}} pills. Values were capped.",
"decreaseValue": "Decrease value",
"increaseValue": "Increase value",
"currentTotal": "Current total",
"newTotal": "New total",
"difference": "Difference",
"save": "Save Correction",
"saving": "Saving...",
"success": "Stock corrected successfully"
},
"about": {
"title": "About",
"appName": "MedAssist-ng",
"description": "Open-source medication tracking and planning application for self-hosted environments.",
"version": "Version",
"checkForUpdates": "Check for Updates",
"checking": "Checking...",
"upToDate": "You're up to date!",
"updateAvailable": "Update available",
"downloadUpdate": "Download Update",
"checkFailed": "Could not check for updates",
"viewOnGitHub": "View on GitHub",
"github": "GitHub",
"license": "MIT License",
"copyright": "© {{year}} Daniel Volz",
"madeWith": "Made with ❤️ for better health management",
"techStack": "Built with React, Fastify & SQLite"
},
"report": {
"button": "Report",
"title": "Medication Report",
"description": "Generate a document with detailed medication information for your doctor or personal records.",
"selectAll": "Select all",
"deselectAll": "Deselect all",
"activeMeds": "Active Medications",
"obsoleteMeds": "Obsolete Medications",
"format": "Format",
"formatTxt": "Plain Text (.txt)",
"formatMd": "Markdown (.md)",
"formatPdf": "PDF (Print)",
"generate": "Generate",
"generating": "Generating...",
"noSelection": "Select at least one medication",
"filterByPerson": "Report for",
"allPeople": "Everyone",
"docTitle": "Medication Report",
"docGenerated": "Generated on",
"docGeneral": "General",
"docCommercialName": "Commercial Name",
"docGenericName": "Generic Name",
"docTakenBy": "Taken by",
"docStartDate": "Start Date",
"docObsoleteSince": "Obsolete Since",
"docStatus": "Status",
"docStatusActive": "Active",
"docStatusObsolete": "Obsolete",
"docPackage": "Package",
"docPackageType": "Package Type",
"docBlister": "Blister Pack",
"docBottle": "Pill Bottle",
"docPacks": "Packs",
"docBlistersPerPack": "Blisters per pack",
"docPillsPerBlister": "Pills per blister",
"docTotalCapacity": "Total capacity",
"docCurrentStock": "Current stock",
"docLoosePills": "Loose pills",
"docDose": "Dose",
"docDosePerPill": "Dose per pill",
"docExpiryDate": "Expiry Date",
"docNotes": "Notes",
"docIntakeSchedule": "Intake Schedule",
"docIntakeEntry": "{{usage}} pill(s) every {{every}} day(s) from {{start}}",
"docIntakeTakenBy": "taken by {{person}}",
"docIntakeReminder": "reminder enabled",
"docPrescription": "Prescription",
"docAuthorizedRefills": "Authorized refills",
"docRemainingRefills": "Remaining refills",
"docPrescriptionExpiry": "Prescription expiry",
"docIntakeHistory": "Intake History",
"docDosesTaken": "Doses taken",
"docDosesTakenAutomatic": "Automatically taken",
"docDosesDismissed": "Doses dismissed",
"docFirstDose": "First dose",
"docLastDose": "Last dose",
"docRefillHistory": "Refill History",
"docRefillEntry": "{{date}}: +{{packs}} packs, +{{loose}} pills",
"docRefillPrescription": "(prescription refill)",
"docNoRefills": "No refills recorded",
"docNoDoses": "No doses recorded",
"docPrintInstruction": "Use your browser's Print function (Ctrl+P / ⌘P) to save as PDF."
}
}