{ "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", "dailyConsumption": "Daily consumption", "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", "perDayWithUnit": "{{value}} {{unit}}" }, "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", "emptyState": "No medications yet. Add your first medication to get started." }, "details": { "packs": "Packs", "blisters": "Blisters per pack", "pillsPerBlister": "Pills per blister", "loose": "Loose", "total": "Total", "stock": "Stock", "capacityPerPackage": "Capacity per package", "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", "medicationForm": "Medication Form", "medicationFormCapsule": "Capsule", "medicationFormTablet": "Tablet", "medicationFormLiquid": "Liquid", "medicationFormTopical": "Topical", "pillForm": "Pill Form", "lifecycleCategory": "Lifecycle", "lifecycleRefillWhenEmpty": "Refill when empty", "lifecycleTreatmentPeriod": "Treatment period", "packageType": "Package Type", "packageTypeBlister": "Blister Pack", "packageTypeBottle": "Pill Bottle", "packageTypeTube": "Tube", "packageTypeLiquidContainer": "Liquid Container", "packs": "Packs", "bottles": "Bottles", "tubes": "Tubes", "blistersPerPack": "Blisters per pack", "pillsPerBlister": "Pills per blister", "totalCapacity": "Total Capacity", "currentPills": "Current Pills", "totalAmount": "Total Amount", "currentAmount": "Current Amount", "totalAmountLabel": "Total (amount)", "packageAmount": "Package amount", "packageAmountPerBottle": "Amount per bottle", "packageAmountPerTube": "Amount per tube", "packageAmountUnitMl": "ml", "packageAmountUnitG": "g", "loosePills": "Loose pills", "pillWeight": "Dose per pill", "total": "Total (pills)", "medicationStartDate": "Medication Start Date", "medicationEndDate": "Medication End Date", "autoMarkObsoleteAfterEndDate": "Automatically mark obsolete after end 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", "takenBy": "Type name and press Enter", "addPerson": "Add another person...", "weight": "e.g. 240", "notes": "e.g. Take with food, avoid alcohol... (optional)" }, "enrichment": { "title": "Optional medication lookup", "coverageLabel": "Incomplete free-source coverage", "collapsedHint": "Use this only when you want lookup suggestions.", "toggleShow": "Show lookup", "toggleHide": "Hide lookup", "infoShow": "About sources", "infoHide": "Hide source notes", "infoTitle": "Source notes", "description": "Results are primarily sourced from RxNorm and openFDA. EMA is used only as a fallback when needed. Review each suggestion before applying it to the form.", "searchLabel": "Search medication sources", "searchPlaceholder": "Search by brand or ingredient", "searchAction": "Search", "searching": "Searching...", "loadingSearch": "Searching medication sources...", "loadingMoreResults": "Loading more results...", "showMoreAction": "Show more results", "noResults": "No matches were found in the current free-source search. You can continue entering the medication manually.", "manualEntryHint": "Lookup suggestions are optional and may not cover every medication, strength, package size, or local market variant.", "authRequired": "Medication lookup requires an active sign-in. Please sign in again or continue with manual entry.", "searchError": "Medication lookup is currently unavailable. Please continue with manual entry.", "applyAction": "Apply", "applying": "Applying...", "applied": "Applied to form", "applyError": "Autofill could not be applied. Please keep editing the medication manually.", "partialNote": "Only partial autofill suggestions were available. Review the fields before saving.", "packageAvailable": "Package size", "packageUnavailable": "No package size", "packageTitle": "Package size suggestions", "packageHint": "Choose a package size to update the stock fields.", "appliedPackage": "Applied package size: {{label}}", "packageContainers": { "blister_one": "1 blister pack", "blister_other": "{{count}} blister packs", "bottle_one": "1 bottle", "bottle_other": "{{count}} bottles", "liquidContainer_one": "1 bottle", "liquidContainer_other": "{{count}} bottles", "tube_one": "1 tube", "tube_other": "{{count}} tubes" }, "packageUnits": { "tablet_one": "tablet", "tablet_other": "tablets", "capsule_one": "capsule", "capsule_other": "capsules", "caplet_one": "caplet", "caplet_other": "caplets", "pill_one": "pill", "pill_other": "pills" }, "strengthTitle": "Strength suggestions", "strengthHint": "Choose a strength to update dose per pill and unit.", "showMoreStrengthsAction": "Show more", "appliedStrength": "Applied strength: {{label}}", "details": { "showAction": "More details", "hideAction": "Less details", "authorisationHolder": "Authorisation holder", "therapeuticArea": "Therapeutic area", "authorisationDate": "Authorisation date", "packageSizes": "Package sizes" }, "genericStatus": { "generic": "Generic", "original": "Original", "unknown": "Status unknown" }, "sources": { "ema": "EMA", "rxnorm": "RxNorm", "openfda": "openFDA (US)" } }, "validation": { "startDateAfterIntake": "Medication start date ({{medicationStartDate}}) cannot be after intake date ({{intakeDate}}).", "endDateBeforeStart": "Medication end date ({{medicationEndDate}}) cannot be before medication start date ({{medicationStartDate}})." }, "blisters": { "title": "Intake schedule", "remind": "Remind", "remindTooltip": "Receive a notification 15 minutes before each scheduled intake", "addIntake": "Intake", "usage": "Usage", "usageTablets": "Usage (tablets)", "usageCapsules": "Usage (capsules)", "usageMl": "Usage (ml)", "usageTsp": "Usage (tsp)", "usageTbsp": "Usage (tbsp)", "usageApplication": "Usage (applications)", "intakeUnit": "Intake unit", "intakeUnitMl": "Milliliters (ml)", "intakeUnitTsp": "Teaspoon (5 ml)", "intakeUnitTbsp": "Tablespoon (15 ml)", "intakes": "intakes", "intakes_one": "intake", "intakes_other": "intakes", "teaspoons": "teaspoons", "teaspoons_one": "teaspoon", "teaspoons_other": "teaspoons", "tablespoons": "tablespoons", "tablespoons_one": "tablespoon", "tablespoons_other": "tablespoons", "applications": "applications", "applications_one": "application", "applications_other": "applications", "scheduleMode": "Schedule mode", "scheduleModeInterval": "Every X days", "scheduleModeWeekdays": "Specific weekdays", "everyDays": "Every (days)", "every": "every", "weekdays": "Weekdays", "weekdaysRequired": "Select at least one weekday", "weekdaysShort": { "mon": "Mon", "tue": "Tue", "wed": "Wed", "thu": "Thu", "fri": "Fri", "sat": "Sat", "sun": "Sun" }, "weekdaysLong": { "mon": "Monday", "tue": "Tuesday", "wed": "Wednesday", "thu": "Thursday", "fri": "Friday", "sat": "Saturday", "sun": "Sunday" }, "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" }, "timezone": { "select": "Timezone", "hint": "Select an IANA timezone. When set, this overrides server TZ for your reminder timing.", "useServerDefault": "Use server default", "currentServerTz": "Server default timezone: {{timezone}}", "saving": "Saving timezone...", "saved": "Timezone saved" }, "apiKey": { "title": "API Access", "generateTitle": "Generate API key", "generateDesc": "Creates a new write-capable API key. The previous key becomes invalid automatically.", "generateButton": "Generate key", "generating": "Generating...", "currentToken": "New API key", "copyButton": "Copy", "copied": "Copied", "copyHint": "Copy this key now. It is shown only once and cannot be retrieved later.", "generateError": "Failed to generate API key" }, "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. If this option and automatic intake are both enabled, no intake reminders will be sent.", "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", "serverNotConfigured": "Email notifications stay unavailable until SMTP is configured on the backend.", "loadErrorAuth": "Email settings could not be loaded because your session is no longer valid. Please sign in again.", "loadErrorForbidden": "Email settings could not be loaded because this session is not allowed to read them.", "loadErrorGeneric": "Email availability could not be verified because loading settings failed." }, "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", "dailyAtHour": "Daily at {{hour}}:00", "intakeCheck": "Intake check", "minutesBefore": "{{minutes}} 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", "packageTypesNote": "Note: Tube medications are excluded from stock reminders. Liquid container medications use a single reminder baseline (Low and Critical are automatically derived from this value)." }, "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", "shareMedicationOverview": "Show medication overview on shared links", "shareMedicationOverviewDesc": "Embed the medication overview section on the normal shared page for intake users.", "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. Note: Tube medications are excluded; Liquid containers use a single baseline threshold (Low and Critical are derived).", "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", "packageTypeTubeHint": "Tube medications contain fixed amounts (e.g., creams, gels). Stock is not tracked and reminders are not sent.", "packageTypeLiquidHint": "Liquid containers use a simplified reminder model. Low and Critical levels are automatically derived from a single baseline threshold for simplicity.", "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...", "outOfStockTakeBlocked": "This medication is empty. Intake cannot be marked as taken.", "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", "nameOrGenericRequired": "Either commercial name or generic name 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.", "allPeople": "Everyone", "selectPerson": "Select person", "selectPeriod": "Select time period", "generateLink": "Generate Link", "generating": "Generating...", "generateAnother": "Generate another link", "linkGenerated": "Share link generated!", "scheduleLink": "Schedule link", "overviewLink": "Overview link", "copyLink": "Copy Link", "copyOverviewLink": "Copy Overview 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}}" } }, "sharedOverview": { "title": "Medication for {{person}}", "sharedBy": "Shared by {{user}}", "expiredOn": "Expired on: {{date}}", "noMedications": "No medications available for this share link.", "columns": { "name": "Name", "package": "Package", "stock": "Stock", "daysLeft": "Estimated days left", "nextIntake": "Next intake", "depletion": "Depletion", "priority": "Stock alert" }, "priority": { "normal": "Stock OK", "high": "Low stock" }, "stock": { "of": "{{current}} of {{capacity}}" }, "error": { "notFound": "Share link not found", "expired": "This shared overview link has expired", "rateLimit": "Too many requests. Please try again in a moment.", "generic": "Failed to load medication overview" } }, "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", "packageSizeAmount": "Package size: {{count}} {{unit}}", "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.", "maxExceededAmount": "Maximum package size is {{count}} {{unit}}. 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", "docTube": "Tube", "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." } }