884 lines
36 KiB
JSON
884 lines
36 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",
|
|
"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."
|
|
}
|
|
}
|