From 06da3c44ee1ca33d6a2f6d42864b4dc197ee014e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Thu, 4 Jun 2026 15:31:20 +0200 Subject: [PATCH] feat(i18n): translate Medications copy for es/fr/it/pl Schedule, wizard, intake, and detail-page copy in the medication surface rendered verbatim English for the four non-reference locales. Translate the wizard steps, cadence options, intake history, reminder controls, and danger-zone prose, leaving units, ATC/RxNorm codes, and GLP-1 INN drug names in their language-appropriate form. --- messages/es.json | 534 +++++++++++++++++++++++------------------------ messages/fr.json | 524 +++++++++++++++++++++++----------------------- messages/it.json | 532 +++++++++++++++++++++++----------------------- messages/pl.json | 534 +++++++++++++++++++++++------------------------ 4 files changed, 1062 insertions(+), 1062 deletions(-) diff --git a/messages/es.json b/messages/es.json index 045203dcf..36568a1f6 100644 --- a/messages/es.json +++ b/messages/es.json @@ -554,35 +554,35 @@ "scheduleDaily": "A diario", "inactive": "En pausa", "intakeHistory": "Historial de tomas", - "openDetailPage": "Open medication detail page", + "openDetailPage": "Abrir la página de detalle del medicamento", "deleteConfirm": "¿Eliminar medicamento?", "compliance": "Cumplimiento", - "importIntakes": "Import intakes", - "importDescription": "Paste a JSON array with intake data. Expected format:", - "importUploadFile": "Upload JSON file", - "importPaste": "Paste JSON here...", - "importSelected": "Selected: {name}", - "importFileLoaded": "File \"{name}\" loaded", - "importInvalidJson": "File does not contain valid JSON", - "importNoArray": "No array found", - "importResult": "{imported} intakes imported", - "importDuplicatesSkipped": "{count} duplicates skipped", - "importInvalidSkipped": "{count} invalid entries skipped", - "importFailed": "Import failed", - "importInvalidFormat": "Invalid JSON format", - "apiEndpointTitle": "API Endpoint: {name}", - "apiEndpointDescription": "Use this endpoint to record intakes via API (e.g., iPhone Shortcut or cron job).", - "apiEndpointActive": "API endpoint active", - "apiEndpointActivated": "API endpoint activated", - "apiEndpointDeactivated": "API endpoint deactivated", - "apiTokenCount": "Active ({count} tokens)", - "apiToken": "API Token", - "apiTokenActiveHint": "Endpoint is active. Existing tokens remain valid but cannot be shown in plain text again.", - "apiTokenActivateHint": "Activate the endpoint to create a new token.", - "apiTokenOnceHint": "The token is only shown in plain text once at creation.", - "requestExample": "Request example", - "statusLoadFailed": "Could not load status", - "changeFailed": "Change failed", + "importIntakes": "Importar tomas", + "importDescription": "Pega un array JSON con los datos de tomas. Formato esperado:", + "importUploadFile": "Subir archivo JSON", + "importPaste": "Pega el JSON aquí...", + "importSelected": "Seleccionado: {name}", + "importFileLoaded": "Archivo \"{name}\" cargado", + "importInvalidJson": "El archivo no contiene un JSON válido", + "importNoArray": "No se encontró ningún array", + "importResult": "{imported} tomas importadas", + "importDuplicatesSkipped": "{count} duplicados omitidos", + "importInvalidSkipped": "{count} entradas no válidas omitidas", + "importFailed": "Falló la importación", + "importInvalidFormat": "Formato JSON no válido", + "apiEndpointTitle": "Endpoint de API: {name}", + "apiEndpointDescription": "Usa este endpoint para registrar tomas a través de la API (p. ej., con un Atajo de iPhone o un cron job).", + "apiEndpointActive": "Endpoint de API activo", + "apiEndpointActivated": "Endpoint de API activado", + "apiEndpointDeactivated": "Endpoint de API desactivado", + "apiTokenCount": "Activo ({count} tokens)", + "apiToken": "Token de API", + "apiTokenActiveHint": "El endpoint está activo. Los tokens existentes siguen siendo válidos, pero no se pueden mostrar de nuevo en texto plano.", + "apiTokenActivateHint": "Activa el endpoint para crear un nuevo token.", + "apiTokenOnceHint": "El token solo se muestra en texto plano una vez, al crearlo.", + "requestExample": "Ejemplo de solicitud", + "statusLoadFailed": "No se pudo cargar el estado", + "changeFailed": "Falló el cambio", "categoryBloodPressure": "Presión arterial", "categoryVitamin": "Vitaminas", "categoryThyroid": "Tiroides", @@ -594,7 +594,7 @@ "categorySkin": "Cuidado de la piel", "categorySleepAid": "Para dormir", "categoryDiabetes": "Diabetes", - "categoryAntibiotic": "Antibiotic", + "categoryAntibiotic": "Antibiótico", "categoryOther": "Otros", "daysSun": "Do", "daysMon": "Lu", @@ -691,7 +691,7 @@ "glp1Specific": "Específico de GLP-1" }, "entries": { - "nausea": "Náusea", + "nausea": "Náuseas", "vomiting": "Vómito", "diarrhea": "Diarrea", "constipation": "Estreñimiento", @@ -738,141 +738,141 @@ } }, "cadence": { - "section": "Cadence", - "label": "How often", + "section": "Frecuencia", + "label": "Con qué frecuencia", "kind": { - "daily": "Every day", - "weekdays": "Certain days of the week", - "everyNWeeks": "Every N weeks on certain days", - "monthly": "Monthly on a specific day", - "everyNMonths": "Every N months on a specific day", - "yearly": "Once a year", - "rolling": "Every N days from when I last took it (flexible)", - "rollingExplainer": "Counts from your last logged intake — pauses if you skip a dose.", - "oneShot": "One-time dose" + "daily": "Cada día", + "weekdays": "Determinados días de la semana", + "everyNWeeks": "Cada N semanas en determinados días", + "monthly": "Mensualmente un día concreto", + "everyNMonths": "Cada N meses un día concreto", + "yearly": "Una vez al año", + "rolling": "Cada N días desde la última toma (flexible)", + "rollingExplainer": "Cuenta desde tu última toma registrada — se pausa si te saltas una dosis.", + "oneShot": "Dosis única" }, "weekdays": { - "label": "Days of the week", + "label": "Días de la semana", "short": { "mo": "Mo", - "tu": "Tu", - "we": "We", - "th": "Th", + "tu": "Ma", + "we": "Mi", + "th": "Ju", "fr": "Fr", "sa": "Sa", - "su": "Su" + "su": "Do" }, "long": { - "mo": "Monday", - "tu": "Tuesday", - "we": "Wednesday", - "th": "Thursday", - "fr": "Friday", - "sa": "Saturday", - "su": "Sunday" + "mo": "Lunes", + "tu": "Martes", + "we": "Miércoles", + "th": "Jueves", + "fr": "Viernes", + "sa": "Sábado", + "su": "Domingo" } }, "intervalWeeks": { - "suffix": "weeks" + "suffix": "semanas" }, "dayOfMonth": { - "label": "Day" + "label": "Día" }, "intervalMonths": { - "suffix": "months", - "dayOnLabel": "on day" + "suffix": "meses", + "dayOnLabel": "el día" }, "yearly": { "date": { - "label": "Date" + "label": "Fecha" } }, "rollingDays": { - "suffix": "days" + "suffix": "días" } }, "timesOfDay": { - "section": "Times of day", - "label": "Times of day", + "section": "Horas del día", + "label": "Horas del día", "empty": { - "cta": "Add the first time." + "cta": "Añade la primera hora." }, - "add": "Add time", - "remove": "Remove", + "add": "Añadir hora", + "remove": "Quitar", "presets": { - "morning": "Morning", - "noon": "Noon", - "evening": "Evening", - "night": "Night" + "morning": "Mañana", + "noon": "Mediodía", + "evening": "Tarde", + "night": "Noche" }, "max": { - "reached": "Maximum reached — remove a time before adding another." + "reached": "Máximo alcanzado — quita una hora antes de añadir otra." } }, "courseWindow": { - "section": "Course window", + "section": "Periodo de tratamiento", "startsOn": { - "label": "Starts on" + "label": "Empieza el" }, "endsOn": { - "label": "Ends on" + "label": "Termina el" }, - "noEndDate": "No end date", - "oneShotCaption": "(one-time dose)", - "invalidRange": "End date must be on or after the start date." + "noEndDate": "Sin fecha de fin", + "oneShotCaption": "(dosis única)", + "invalidRange": "La fecha de fin debe ser igual o posterior a la de inicio." } }, "wizard": { "header": { - "stepOf": "Step {current} of {total}", - "createTitle": "New medication", - "editTitle": "Edit {name}" + "stepOf": "Paso {current} de {total}", + "createTitle": "Nuevo medicamento", + "editTitle": "Editar {name}" }, "nav": { - "back": "Back", - "next": "Next", - "save": "Save", - "saveEdit": "Save changes", + "back": "Atrás", + "next": "Siguiente", + "save": "Guardar", + "saveEdit": "Guardar cambios", "nextHint": "Siguiente: {step}", "reviewHint": "Siguiente: Guardar", "jumpFirst": "Ir al primer paso", "jumpLast": "Ir a revisar y guardar" }, "nl": { - "button": "Describe" + "button": "Describir" }, "steps": { "step1": { - "title": "What's the medication called?", - "subline": "Exactly as it appears on the box.", + "title": "¿Cómo se llama el medicamento?", + "subline": "Exactamente como aparece en la caja.", "label": "Name", - "placeholder": "e.g. Ramipril", + "placeholder": "p. ej. Ramipril", "short": "Nombre" }, "step2": { - "title": "What kind of medication is it?", - "subline": "We use this for the right templates and analytics.", + "title": "¿Qué tipo de medicamento es?", + "subline": "Lo usamos para las plantillas y los análisis adecuados.", "short": "Tipo" }, "step3": { - "title": "What's the dose?", - "subline": "A tablet, a puff, a drop — depending on the form.", - "amountLabel": "Amount", - "amountPlaceholder": "e.g. 5", - "unitLabel": "Unit", + "title": "¿Cuál es la dosis?", + "subline": "Una pastilla, una inhalación, una gota — según la forma.", + "amountLabel": "Cantidad", + "amountPlaceholder": "p. ej. 5", + "unitLabel": "Unidad", "unit": { "mg": "mg", "ml": "ml", - "iu": "IU", + "iu": "UI", "mcg": "µg", "g": "g", - "tablets": "tablet(s)", - "capsules": "capsule(s)", - "drops": "drops", - "puffs": "puff", - "sprays": "spray", - "pieces": "pieces", - "other": "other" + "tablets": "comprimido(s)", + "capsules": "cápsula(s)", + "drops": "gotas", + "puffs": "inhalación", + "sprays": "pulverización", + "pieces": "unidades", + "other": "otro" }, "deliveryFormLabel": "Vía", "deliveryForm": { @@ -888,124 +888,124 @@ "short": "Dosis" }, "step4": { - "title": "Over what period are you taking it?", - "subline": "A start date is enough for today. You can add an end date later.", + "title": "¿Durante qué periodo lo tomas?", + "subline": "Por hoy basta con una fecha de inicio. Puedes añadir una fecha de fin más tarde.", "short": "Cuándo" }, "step5": { - "title": "How often do you take it?", - "subline": "Pick the cadence — the details follow on the next step.", + "title": "¿Con qué frecuencia lo tomas?", + "subline": "Elige la frecuencia — los detalles vienen en el siguiente paso.", "short": "Frecuencia" }, "step6": { - "title": "What does that look like in detail?", - "subline": "Set weekdays, intervals, or the day of the month.", + "title": "¿Cómo es exactamente?", + "subline": "Indica los días de la semana, los intervalos o el día del mes.", "intervalWeeks": { - "label": "Every", - "suffix": "weeks" + "label": "Cada", + "suffix": "semanas" }, "dayOfMonth": { - "label": "On", - "suffix": "day of the month" + "label": "El", + "suffix": "día del mes" }, "rollingDays": { - "label": "Every", - "suffix": "days from the last intake" + "label": "Cada", + "suffix": "días desde la última toma" }, "short": "Detalle" }, "step7": { - "title": "When do you take it?", - "subline": "One or more times of day — reminders follow this list.", - "presetsLabel": "Time-of-day presets", + "title": "¿Cuándo lo tomas?", + "subline": "Una o varias horas del día — los recordatorios siguen esta lista.", + "presetsLabel": "Preajustes por hora del día", "presets": { - "morning": "Morning", - "noon": "Noon", - "evening": "Evening", - "night": "Night" + "morning": "Mañana", + "noon": "Mediodía", + "evening": "Tarde", + "night": "Noche" }, "short": "Horas" }, "step8": { - "title": "All done — should HealthLog remind you?", - "subline": "Review everything below before you save.", - "remindersLabel": "Reminders on", - "remindersDescription": "Push, Telegram or ntfy — based on your settings.", - "multiScheduleNote": "This medication has multiple schedules. The detailed editor returns in a later release.", + "title": "Listo — ¿quieres que HealthLog te lo recuerde?", + "subline": "Revisa todo abajo antes de guardar.", + "remindersLabel": "Recordatorios activados", + "remindersDescription": "Push, Telegram o ntfy — según tus ajustes.", + "multiScheduleNote": "Este medicamento tiene varios horarios. El editor detallado volverá en una versión posterior.", "short": "Listo" } }, "classRow": { - "bloodPressure": "Blood pressure", + "bloodPressure": "Presión arterial", "diabetes": "Diabetes", - "hormone": "Hormones", - "glp1": "GLP-1 injection", - "painRelief": "Pain", - "allergy": "Allergy", - "vitamin": "Vitamins", - "supplement": "Supplement", - "antibiotic": "Antibiotic", - "other": "Other" + "hormone": "Hormonas", + "glp1": "Inyección de GLP-1", + "painRelief": "Dolor", + "allergy": "Alergia", + "vitamin": "Vitaminas", + "supplement": "Suplemento", + "antibiotic": "Antibiótico", + "other": "Otro" }, "cadence": { "daily": { - "label": "Daily", - "description": "Every day at the same time." + "label": "Diario", + "description": "Cada día a la misma hora." }, "weekdays": { - "label": "Specific weekdays", - "description": "E.g. Monday, Wednesday, Friday." + "label": "Días concretos de la semana", + "description": "P. ej. lunes, miércoles, viernes." }, "everyNWeeks": { - "label": "Every few weeks", - "description": "E.g. every 2 weeks on Thursdays (GLP-1, biologics)." + "label": "Cada pocas semanas", + "description": "P. ej. cada 2 semanas los jueves (GLP-1, biológicos)." }, "monthly": { - "label": "Monthly", - "description": "On a fixed day each month (e.g. always the 1st)." + "label": "Mensual", + "description": "Un día fijo cada mes (p. ej. siempre el 1)." }, "rolling": { - "label": "Flexible from last dose", - "description": "Leave the next dose open. When you tap 'taken', the counter starts again from that moment." + "label": "Flexible desde la última dosis", + "description": "Deja abierta la próxima dosis. Cuando pulsas «tomada», el contador empieza de nuevo desde ese momento." }, "oneShot": { - "label": "Single dose", - "description": "One administration, e.g. a vaccine or an antibiotic course." + "label": "Dosis única", + "description": "Una sola administración, p. ej. una vacuna o un ciclo de antibiótico." } }, "summary": { - "title": "Summary", + "title": "Resumen", "cadence": { - "daily": "Every day", - "weekdays": "On selected days of the week", - "biweekly": "Every two weeks", - "monthly": "Monthly", - "quarterly": "Every three months", - "yearly": "Once a year", - "rolling": "Every {n} days from your last intake", - "oneShot": "A single dose", - "everyNWeeks": "Every {n} weeks", - "everyNMonths": "Every {n} months" + "daily": "Cada día", + "weekdays": "En los días de la semana seleccionados", + "biweekly": "Cada dos semanas", + "monthly": "Mensual", + "quarterly": "Cada tres meses", + "yearly": "Una vez al año", + "rolling": "Cada {n} días desde tu última toma", + "oneShot": "Una dosis única", + "everyNWeeks": "Cada {n} semanas", + "everyNMonths": "Cada {n} meses" }, - "weekdaysDetail": ", on {days}", - "dayOfMonthDetail": ", on day {day}.", - "times": "at {times}", - "startsOn": "Starts: {date}", - "endsOn": "Ends: {date}", - "noEndDate": "No end date" + "weekdaysDetail": ", los {days}", + "dayOfMonthDetail": ", el día {day}.", + "times": "a las {times}", + "startsOn": "Empieza: {date}", + "endsOn": "Termina: {date}", + "noEndDate": "Sin fecha de fin" }, "compose": { - "scheduleIndex": "Schedule {n} of {total}", + "scheduleIndex": "Horario {n} de {total}", "list": { - "add": "Add another schedule", - "edit": "Edit", - "remove": "Remove", - "removeDisabled": "At least one schedule is required.", - "empty": "No schedule yet." + "add": "Añadir otro horario", + "edit": "Editar", + "remove": "Quitar", + "removeDisabled": "Se requiere al menos un horario.", + "empty": "Aún no hay horario." } }, "errors": { - "submitFailed": "Could not save the medication — please retry." + "submitFailed": "No se pudo guardar el medicamento — inténtalo de nuevo." } }, "doseStrength": { @@ -1160,88 +1160,88 @@ }, "detail": { "status": { - "active": "Active", - "paused": "Paused", - "ended": "Ended" + "active": "Activo", + "paused": "Pausado", + "ended": "Finalizado" }, "today": { - "groupLabel": "Today's dose", - "taken": "Taken", - "skipped": "Skipped", - "toastTaken": "Today's dose logged", - "toastSkipped": "Today's dose skipped", - "recordedTaken": "Taken today at {time}", - "recordedSkipped": "Skipped today at {time}", - "recordedOneShot": "One-shot dose taken at {time}", - "noneScheduled": "No dose scheduled for today.", - "pausedHint": "Paused — no reminder today.", - "error": "Could not log the dose." + "groupLabel": "Dosis de hoy", + "taken": "Tomada", + "skipped": "Omitida", + "toastTaken": "Dosis de hoy registrada", + "toastSkipped": "Dosis de hoy omitida", + "recordedTaken": "Tomada hoy a las {time}", + "recordedSkipped": "Omitida hoy a las {time}", + "recordedOneShot": "Dosis única tomada a las {time}", + "noneScheduled": "No hay ninguna dosis programada para hoy.", + "pausedHint": "En pausa — hoy no hay recordatorio.", + "error": "No se pudo registrar la dosis." }, "cadence": { - "oneShotOn": "One-time dose on {date}.", - "oneShotPending": "One-time dose pending." + "oneShotOn": "Dosis única el {date}.", + "oneShotPending": "Dosis única pendiente." }, "intake": { - "title": "Intake history", - "importButton": "Import", + "title": "Historial de tomas", + "importButton": "Importar", "rowActions": { - "openMenu": "Open row actions", - "edit": "Edit", - "delete": "Delete" + "openMenu": "Abrir acciones de la fila", + "edit": "Editar", + "delete": "Eliminar" }, "selection": { - "rowToggleLabel": "Select row" + "rowToggleLabel": "Seleccionar fila" }, "bulkDelete": { - "selectionCount": "{count} entries selected", - "deleteButton": "Delete selection", - "cancelButton": "Cancel", - "confirmTitle": "Delete the selected entries?", - "confirmBody": "{count} entries will be removed permanently. The medication itself stays.", - "confirmAction": "Delete", - "toast": "Selection deleted", - "failed": "Could not delete the selection." + "selectionCount": "{count} entradas seleccionadas", + "deleteButton": "Eliminar selección", + "cancelButton": "Cancelar", + "confirmTitle": "¿Eliminar las entradas seleccionadas?", + "confirmBody": "Se eliminarán {count} entradas de forma permanente. El medicamento se conserva.", + "confirmAction": "Eliminar", + "toast": "Selección eliminada", + "failed": "No se pudo eliminar la selección." }, "edit": { - "dialogTitle": "Edit intake", - "takenAtLabel": "Taken at", - "skippedLabel": "Skipped", - "noteLabel": "Note", - "save": "Save", - "cancel": "Cancel", - "savedToast": "Intake updated", - "failed": "Could not update the intake." + "dialogTitle": "Editar toma", + "takenAtLabel": "Tomada a las", + "skippedLabel": "Omitida", + "noteLabel": "Nota", + "save": "Guardar", + "cancel": "Cancelar", + "savedToast": "Toma actualizada", + "failed": "No se pudo actualizar la toma." }, "deleteRow": { - "confirmTitle": "Delete this intake?", - "confirmBody": "The entry is removed permanently.", - "confirmAction": "Delete", - "toast": "Intake deleted", - "failed": "Could not delete the intake." + "confirmTitle": "¿Eliminar esta toma?", + "confirmBody": "La entrada se elimina de forma permanente.", + "confirmAction": "Eliminar", + "toast": "Toma eliminada", + "failed": "No se pudo eliminar la toma." } }, "notifications": { - "title": "Notifications", - "switchLabel": "Send a reminder when this dose is due", - "helperOn": "Reminders are on.", - "helperOff": "Reminders are off.", - "enabledToast": "Reminders on", - "disabledToast": "Reminders off", - "toggleFailed": "Could not change the reminder setting.", - "clientManagedChip": "Your iPhone manages reminders for this medication." + "title": "Recordatorios", + "switchLabel": "Enviar un recordatorio cuando toque esta dosis", + "helperOn": "Los recordatorios están activados.", + "helperOff": "Los recordatorios están desactivados.", + "enabledToast": "Recordatorios activados", + "disabledToast": "Recordatorios desactivados", + "toggleFailed": "No se pudo cambiar el ajuste de recordatorios.", + "clientManagedChip": "Tu iPhone gestiona los recordatorios de este medicamento." }, "settings": { - "title": "Settings", + "title": "Ajustes", "phases": { - "openButton": "Configure phases", - "requiresCourseWindow": "Phases are available once a course window is set." + "openButton": "Configurar fases", + "requiresCourseWindow": "Las fases están disponibles una vez fijado un periodo de tratamiento." }, "grace": { - "label": "Reminder window — applies to your primary schedule", - "primaryScheduleNote": "Multi-schedule medications keep their other schedules' default window.", - "unit": "minutes", - "saved": "Reminder window saved", - "failed": "Could not save the reminder window." + "label": "Ventana de recordatorio — se aplica a tu horario principal", + "primaryScheduleNote": "Los medicamentos con varios horarios mantienen la ventana predeterminada de sus demás horarios.", + "unit": "minutos", + "saved": "Ventana de recordatorio guardada", + "failed": "No se pudo guardar la ventana de recordatorio." }, "codes": { "label": "Códigos clínicos (ATC / RxNorm)", @@ -1253,57 +1253,57 @@ } }, "zone": { - "title": "Manage & danger zone", + "title": "Gestión y zona de peligro", "pause": { - "title": "Pause", - "helper": "Pause reminders until you turn them back on. History stays intact.", - "pausedToast": "Reminders paused", - "resumedToast": "Reminders resumed", - "failed": "Could not change the paused state." + "title": "Pausar", + "helper": "Pausa los recordatorios hasta que los reactives. El historial se conserva.", + "pausedToast": "Recordatorios pausados", + "resumedToast": "Recordatorios reanudados", + "failed": "No se pudo cambiar el estado de pausa." }, "end": { - "title": "End medication", - "helper": "Stop reminders and mark the medication as ended. History stays visible.", - "button": "End", - "dialogTitle": "End {name} — stop reminders, history stays visible", - "dialogBody": "No more reminders. Old entries remain in the timeline.", - "toast": "Medication ended", - "failed": "Could not end the medication." + "title": "Finalizar medicamento", + "helper": "Detiene los recordatorios y marca el medicamento como finalizado. El historial sigue siendo visible.", + "button": "Finalizar", + "dialogTitle": "Finalizar {name} — detiene los recordatorios, el historial sigue visible", + "dialogBody": "No habrá más recordatorios. Las entradas antiguas permanecen en la línea de tiempo.", + "toast": "Medicamento finalizado", + "failed": "No se pudo finalizar el medicamento." }, "purge": { - "title": "Delete history", - "helper": "{count} intake events are stored for this medication.", - "button": "Delete history", - "dialogTitle": "Really delete the history?", - "dialogBody": "The {count} intake events will be removed permanently. The medication itself stays.", - "toast": "History deleted", - "failed": "Could not delete the history." + "title": "Eliminar historial", + "helper": "Hay {count} tomas registradas para este medicamento.", + "button": "Eliminar historial", + "dialogTitle": "¿Eliminar realmente el historial?", + "dialogBody": "Las {count} tomas se eliminarán de forma permanente. El medicamento se conserva.", + "toast": "Historial eliminado", + "failed": "No se pudo eliminar el historial." }, "delete": { - "title": "Delete medication", - "helper": "Removes the medication and every related record.", - "button": "Delete", - "dialogTitle": "Delete {name}?", - "dialogBody": "The medication, its schedules, intake history, API tokens, phase config and reminders will be removed permanently.", - "toast": "Medication deleted", - "failed": "Could not delete the medication." + "title": "Eliminar medicamento", + "helper": "Elimina el medicamento y todos los registros relacionados.", + "button": "Eliminar", + "dialogTitle": "¿Eliminar {name}?", + "dialogBody": "El medicamento, sus horarios, el historial de tomas, los tokens de API, la configuración de fases y los recordatorios se eliminarán de forma permanente.", + "toast": "Medicamento eliminado", + "failed": "No se pudo eliminar el medicamento." } }, "phases": { - "modeLabel": "{phase} mode", - "saveFailed": "Could not save the reminder phases." + "modeLabel": "Modo de {phase}", + "saveFailed": "No se pudieron guardar las fases de recordatorio." }, "api": { - "caption": "Endpoint for \"{name}\"", - "copyUrl": "Copy URL", - "urlCopied": "URL copied", - "mintToken": "Mint token", - "mintAnotherToken": "Mint another token", - "mintFailed": "Could not mint a token.", - "copyFailed": "Could not copy.", - "tokenCopied": "Token copied", - "copyToken": "Copy token", - "mintedHint": "Copy this token now — it is shown only once." + "caption": "Endpoint para «{name}»", + "copyUrl": "Copiar URL", + "urlCopied": "URL copiada", + "mintToken": "Generar token", + "mintAnotherToken": "Generar otro token", + "mintFailed": "No se pudo generar un token.", + "copyFailed": "No se pudo copiar.", + "tokenCopied": "Token copiado", + "copyToken": "Copiar token", + "mintedHint": "Copia este token ahora — solo se muestra una vez." }, "edit": { "planOption": "Editar plan", diff --git a/messages/fr.json b/messages/fr.json index 26988c906..5d63ec449 100644 --- a/messages/fr.json +++ b/messages/fr.json @@ -554,35 +554,35 @@ "scheduleDaily": "Quotidien", "inactive": "En pause", "intakeHistory": "Historique des prises", - "openDetailPage": "Open medication detail page", + "openDetailPage": "Ouvrir la page de détail du médicament", "deleteConfirm": "Supprimer le médicament ?", "compliance": "Observance", - "importIntakes": "Import intakes", - "importDescription": "Paste a JSON array with intake data. Expected format:", - "importUploadFile": "Upload JSON file", - "importPaste": "Paste JSON here...", - "importSelected": "Selected: {name}", - "importFileLoaded": "File \"{name}\" loaded", - "importInvalidJson": "File does not contain valid JSON", - "importNoArray": "No array found", - "importResult": "{imported} intakes imported", - "importDuplicatesSkipped": "{count} duplicates skipped", - "importInvalidSkipped": "{count} invalid entries skipped", - "importFailed": "Import failed", - "importInvalidFormat": "Invalid JSON format", - "apiEndpointTitle": "API Endpoint: {name}", - "apiEndpointDescription": "Use this endpoint to record intakes via API (e.g., iPhone Shortcut or cron job).", - "apiEndpointActive": "API endpoint active", - "apiEndpointActivated": "API endpoint activated", - "apiEndpointDeactivated": "API endpoint deactivated", - "apiTokenCount": "Active ({count} tokens)", - "apiToken": "API Token", - "apiTokenActiveHint": "Endpoint is active. Existing tokens remain valid but cannot be shown in plain text again.", - "apiTokenActivateHint": "Activate the endpoint to create a new token.", - "apiTokenOnceHint": "The token is only shown in plain text once at creation.", - "requestExample": "Request example", - "statusLoadFailed": "Could not load status", - "changeFailed": "Change failed", + "importIntakes": "Importer les prises", + "importDescription": "Collez un tableau JSON contenant les données de prises. Format attendu :", + "importUploadFile": "Téléverser un fichier JSON", + "importPaste": "Collez le JSON ici...", + "importSelected": "Sélectionné : {name}", + "importFileLoaded": "Fichier « {name} » chargé", + "importInvalidJson": "Le fichier ne contient pas de JSON valide", + "importNoArray": "Aucun tableau trouvé", + "importResult": "{imported} prises importées", + "importDuplicatesSkipped": "{count} doublons ignorés", + "importInvalidSkipped": "{count} entrées non valides ignorées", + "importFailed": "Échec de l’importation", + "importInvalidFormat": "Format JSON non valide", + "apiEndpointTitle": "Point de terminaison API : {name}", + "apiEndpointDescription": "Utilisez ce point de terminaison pour enregistrer des prises via l’API (par exemple un Raccourci iPhone ou une tâche cron).", + "apiEndpointActive": "Point de terminaison API actif", + "apiEndpointActivated": "Point de terminaison API activé", + "apiEndpointDeactivated": "Point de terminaison API désactivé", + "apiTokenCount": "Actif ({count} jetons)", + "apiToken": "Jeton API", + "apiTokenActiveHint": "Le point de terminaison est actif. Les jetons existants restent valides mais ne peuvent plus être affichés en texte clair.", + "apiTokenActivateHint": "Activez le point de terminaison pour créer un nouveau jeton.", + "apiTokenOnceHint": "Le jeton n’est affiché en texte clair qu’une seule fois, lors de sa création.", + "requestExample": "Exemple de requête", + "statusLoadFailed": "Impossible de charger le statut", + "changeFailed": "Échec de la modification", "categoryBloodPressure": "Tension artérielle", "categoryVitamin": "Vitamines", "categoryThyroid": "Thyroïde", @@ -594,7 +594,7 @@ "categorySkin": "Soin de la peau", "categorySleepAid": "Aide au sommeil", "categoryDiabetes": "Diabetes", - "categoryAntibiotic": "Antibiotic", + "categoryAntibiotic": "Antibiotique", "categoryOther": "Autres", "daysSun": "Dim", "daysMon": "Lun", @@ -691,7 +691,7 @@ "glp1Specific": "Spécifique GLP-1" }, "entries": { - "nausea": "Nausée", + "nausea": "Nausées", "vomiting": "Vomissement", "diarrhea": "Diarrhée", "constipation": "Constipation", @@ -739,48 +739,48 @@ }, "cadence": { "section": "Cadence", - "label": "How often", + "label": "À quelle fréquence", "kind": { - "daily": "Every day", - "weekdays": "Certain days of the week", - "everyNWeeks": "Every N weeks on certain days", - "monthly": "Monthly on a specific day", - "everyNMonths": "Every N months on a specific day", - "yearly": "Once a year", - "rolling": "Every N days from when I last took it (flexible)", - "rollingExplainer": "Counts from your last logged intake — pauses if you skip a dose.", - "oneShot": "One-time dose" + "daily": "Chaque jour", + "weekdays": "Certains jours de la semaine", + "everyNWeeks": "Toutes les N semaines certains jours", + "monthly": "Chaque mois un jour précis", + "everyNMonths": "Tous les N mois un jour précis", + "yearly": "Une fois par an", + "rolling": "Tous les N jours depuis la dernière prise (flexible)", + "rollingExplainer": "Compte à partir de votre dernière prise enregistrée — se met en pause si vous sautez une dose.", + "oneShot": "Dose unique" }, "weekdays": { - "label": "Days of the week", + "label": "Jours de la semaine", "short": { "mo": "Mo", - "tu": "Tu", - "we": "We", - "th": "Th", + "tu": "Ma", + "we": "Me", + "th": "Je", "fr": "Fr", "sa": "Sa", - "su": "Su" + "su": "Di" }, "long": { - "mo": "Monday", - "tu": "Tuesday", - "we": "Wednesday", - "th": "Thursday", - "fr": "Friday", - "sa": "Saturday", - "su": "Sunday" + "mo": "Lundi", + "tu": "Mardi", + "we": "Mercredi", + "th": "Jeudi", + "fr": "Vendredi", + "sa": "Samedi", + "su": "Dimanche" } }, "intervalWeeks": { - "suffix": "weeks" + "suffix": "semaines" }, "dayOfMonth": { - "label": "Day" + "label": "Jour" }, "intervalMonths": { - "suffix": "months", - "dayOnLabel": "on day" + "suffix": "mois", + "dayOnLabel": "le jour" }, "yearly": { "date": { @@ -788,91 +788,91 @@ } }, "rollingDays": { - "suffix": "days" + "suffix": "jours" } }, "timesOfDay": { - "section": "Times of day", - "label": "Times of day", + "section": "Heures de la journée", + "label": "Heures de la journée", "empty": { - "cta": "Add the first time." + "cta": "Ajoutez la première heure." }, - "add": "Add time", - "remove": "Remove", + "add": "Ajouter une heure", + "remove": "Retirer", "presets": { - "morning": "Morning", - "noon": "Noon", - "evening": "Evening", - "night": "Night" + "morning": "Matin", + "noon": "Midi", + "evening": "Soir", + "night": "Nuit" }, "max": { - "reached": "Maximum reached — remove a time before adding another." + "reached": "Maximum atteint — retirez une heure avant d’en ajouter une autre." } }, "courseWindow": { - "section": "Course window", + "section": "Période de traitement", "startsOn": { - "label": "Starts on" + "label": "Commence le" }, "endsOn": { - "label": "Ends on" + "label": "Se termine le" }, - "noEndDate": "No end date", - "oneShotCaption": "(one-time dose)", - "invalidRange": "End date must be on or after the start date." + "noEndDate": "Pas de date de fin", + "oneShotCaption": "(dose unique)", + "invalidRange": "La date de fin doit être égale ou postérieure à la date de début." } }, "wizard": { "header": { - "stepOf": "Step {current} of {total}", - "createTitle": "New medication", - "editTitle": "Edit {name}" + "stepOf": "Étape {current} sur {total}", + "createTitle": "Nouveau médicament", + "editTitle": "Modifier {name}" }, "nav": { - "back": "Back", - "next": "Next", - "save": "Save", - "saveEdit": "Save changes", + "back": "Retour", + "next": "Suivant", + "save": "Enregistrer", + "saveEdit": "Enregistrer les modifications", "nextHint": "Suivant : {step}", "reviewHint": "Suivant : Enregistrer", "jumpFirst": "Aller à la première étape", "jumpLast": "Aller à la vérification et à l’enregistrement" }, "nl": { - "button": "Describe" + "button": "Décrire" }, "steps": { "step1": { - "title": "What's the medication called?", - "subline": "Exactly as it appears on the box.", + "title": "Comment s’appelle le médicament ?", + "subline": "Exactement comme indiqué sur la boîte.", "label": "Name", - "placeholder": "e.g. Ramipril", + "placeholder": "par exemple Ramipril", "short": "Nom" }, "step2": { - "title": "What kind of medication is it?", - "subline": "We use this for the right templates and analytics.", + "title": "De quel type de médicament s’agit-il ?", + "subline": "Nous l’utilisons pour les bons modèles et analyses.", "short": "Type" }, "step3": { - "title": "What's the dose?", - "subline": "A tablet, a puff, a drop — depending on the form.", - "amountLabel": "Amount", - "amountPlaceholder": "e.g. 5", - "unitLabel": "Unit", + "title": "Quelle est la dose ?", + "subline": "Un comprimé, une bouffée, une goutte — selon la forme.", + "amountLabel": "Quantité", + "amountPlaceholder": "par exemple 5", + "unitLabel": "Unité", "unit": { "mg": "mg", "ml": "ml", - "iu": "IU", + "iu": "UI", "mcg": "µg", "g": "g", - "tablets": "tablet(s)", - "capsules": "capsule(s)", - "drops": "drops", - "puffs": "puff", - "sprays": "spray", - "pieces": "pieces", - "other": "other" + "tablets": "comprimé(s)", + "capsules": "gélule(s)", + "drops": "gouttes", + "puffs": "bouffée", + "sprays": "pulvérisation", + "pieces": "pièces", + "other": "autre" }, "deliveryFormLabel": "Voie", "deliveryForm": { @@ -888,124 +888,124 @@ "short": "Dose" }, "step4": { - "title": "Over what period are you taking it?", - "subline": "A start date is enough for today. You can add an end date later.", + "title": "Sur quelle période le prenez-vous ?", + "subline": "Une date de début suffit pour aujourd’hui. Vous pourrez ajouter une date de fin plus tard.", "short": "Quand" }, "step5": { - "title": "How often do you take it?", - "subline": "Pick the cadence — the details follow on the next step.", + "title": "À quelle fréquence le prenez-vous ?", + "subline": "Choisissez la cadence — les détails suivent à l’étape suivante.", "short": "Fréquence" }, "step6": { - "title": "What does that look like in detail?", - "subline": "Set weekdays, intervals, or the day of the month.", + "title": "À quoi cela ressemble-t-il en détail ?", + "subline": "Indiquez les jours de la semaine, les intervalles ou le jour du mois.", "intervalWeeks": { - "label": "Every", - "suffix": "weeks" + "label": "Toutes les", + "suffix": "semaines" }, "dayOfMonth": { - "label": "On", - "suffix": "day of the month" + "label": "Le", + "suffix": "jour du mois" }, "rollingDays": { - "label": "Every", - "suffix": "days from the last intake" + "label": "Tous les", + "suffix": "jours depuis la dernière prise" }, "short": "Détail" }, "step7": { - "title": "When do you take it?", - "subline": "One or more times of day — reminders follow this list.", - "presetsLabel": "Time-of-day presets", + "title": "Quand le prenez-vous ?", + "subline": "Une ou plusieurs heures de la journée — les rappels suivent cette liste.", + "presetsLabel": "Préréglages par moment de la journée", "presets": { - "morning": "Morning", - "noon": "Noon", - "evening": "Evening", - "night": "Night" + "morning": "Matin", + "noon": "Midi", + "evening": "Soir", + "night": "Nuit" }, "short": "Heures" }, "step8": { - "title": "All done — should HealthLog remind you?", - "subline": "Review everything below before you save.", - "remindersLabel": "Reminders on", - "remindersDescription": "Push, Telegram or ntfy — based on your settings.", - "multiScheduleNote": "This medication has multiple schedules. The detailed editor returns in a later release.", + "title": "Terminé — HealthLog doit-il vous le rappeler ?", + "subline": "Vérifiez tout ci-dessous avant d’enregistrer.", + "remindersLabel": "Rappels activés", + "remindersDescription": "Push, Telegram ou ntfy — selon vos réglages.", + "multiScheduleNote": "Ce médicament a plusieurs horaires. L’éditeur détaillé reviendra dans une version ultérieure.", "short": "Fini" } }, "classRow": { - "bloodPressure": "Blood pressure", + "bloodPressure": "Tension artérielle", "diabetes": "Diabetes", "hormone": "Hormones", - "glp1": "GLP-1 injection", - "painRelief": "Pain", - "allergy": "Allergy", - "vitamin": "Vitamins", - "supplement": "Supplement", - "antibiotic": "Antibiotic", - "other": "Other" + "glp1": "Injection de GLP-1", + "painRelief": "Douleur", + "allergy": "Allergie", + "vitamin": "Vitamines", + "supplement": "Complément", + "antibiotic": "Antibiotique", + "other": "Autre" }, "cadence": { "daily": { - "label": "Daily", - "description": "Every day at the same time." + "label": "Quotidien", + "description": "Chaque jour à la même heure." }, "weekdays": { - "label": "Specific weekdays", - "description": "E.g. Monday, Wednesday, Friday." + "label": "Jours précis de la semaine", + "description": "Par exemple lundi, mercredi, vendredi." }, "everyNWeeks": { - "label": "Every few weeks", - "description": "E.g. every 2 weeks on Thursdays (GLP-1, biologics)." + "label": "Toutes les quelques semaines", + "description": "Par exemple toutes les 2 semaines le jeudi (GLP-1, biologiques)." }, "monthly": { - "label": "Monthly", - "description": "On a fixed day each month (e.g. always the 1st)." + "label": "Mensuel", + "description": "Un jour fixe chaque mois (par exemple toujours le 1er)." }, "rolling": { - "label": "Flexible from last dose", - "description": "Leave the next dose open. When you tap 'taken', the counter starts again from that moment." + "label": "Flexible depuis la dernière dose", + "description": "Laissez la prochaine dose ouverte. Quand vous appuyez sur « pris », le compteur repart à partir de ce moment." }, "oneShot": { - "label": "Single dose", - "description": "One administration, e.g. a vaccine or an antibiotic course." + "label": "Dose unique", + "description": "Une seule administration, par exemple un vaccin ou une cure d’antibiotique." } }, "summary": { - "title": "Summary", + "title": "Résumé", "cadence": { - "daily": "Every day", - "weekdays": "On selected days of the week", - "biweekly": "Every two weeks", - "monthly": "Monthly", - "quarterly": "Every three months", - "yearly": "Once a year", - "rolling": "Every {n} days from your last intake", - "oneShot": "A single dose", - "everyNWeeks": "Every {n} weeks", - "everyNMonths": "Every {n} months" + "daily": "Chaque jour", + "weekdays": "Les jours de la semaine sélectionnés", + "biweekly": "Toutes les deux semaines", + "monthly": "Mensuel", + "quarterly": "Tous les trois mois", + "yearly": "Une fois par an", + "rolling": "Tous les {n} jours depuis votre dernière prise", + "oneShot": "Une dose unique", + "everyNWeeks": "Toutes les {n} semaines", + "everyNMonths": "Tous les {n} mois" }, - "weekdaysDetail": ", on {days}", - "dayOfMonthDetail": ", on day {day}.", - "times": "at {times}", - "startsOn": "Starts: {date}", - "endsOn": "Ends: {date}", - "noEndDate": "No end date" + "weekdaysDetail": ", le {days}", + "dayOfMonthDetail": ", le {day}.", + "times": "à {times}", + "startsOn": "Début : {date}", + "endsOn": "Fin : {date}", + "noEndDate": "Pas de date de fin" }, "compose": { - "scheduleIndex": "Schedule {n} of {total}", + "scheduleIndex": "Horaire {n} sur {total}", "list": { - "add": "Add another schedule", - "edit": "Edit", - "remove": "Remove", - "removeDisabled": "At least one schedule is required.", - "empty": "No schedule yet." + "add": "Ajouter un autre horaire", + "edit": "Modifier", + "remove": "Retirer", + "removeDisabled": "Au moins un horaire est requis.", + "empty": "Pas encore d’horaire." } }, "errors": { - "submitFailed": "Could not save the medication — please retry." + "submitFailed": "Impossible d’enregistrer le médicament — veuillez réessayer." } }, "doseStrength": { @@ -1160,88 +1160,88 @@ }, "detail": { "status": { - "active": "Active", - "paused": "Paused", - "ended": "Ended" + "active": "Actif", + "paused": "En pause", + "ended": "Terminé" }, "today": { - "groupLabel": "Today's dose", - "taken": "Taken", - "skipped": "Skipped", - "toastTaken": "Today's dose logged", - "toastSkipped": "Today's dose skipped", - "recordedTaken": "Taken today at {time}", - "recordedSkipped": "Skipped today at {time}", - "recordedOneShot": "One-shot dose taken at {time}", - "noneScheduled": "No dose scheduled for today.", - "pausedHint": "Paused — no reminder today.", - "error": "Could not log the dose." + "groupLabel": "Dose du jour", + "taken": "Pris", + "skipped": "Sauté", + "toastTaken": "Dose du jour enregistrée", + "toastSkipped": "Dose du jour sautée", + "recordedTaken": "Prise aujourd’hui à {time}", + "recordedSkipped": "Sautée aujourd’hui à {time}", + "recordedOneShot": "Dose unique prise à {time}", + "noneScheduled": "Aucune dose prévue aujourd’hui.", + "pausedHint": "En pause — pas de rappel aujourd’hui.", + "error": "Impossible d’enregistrer la dose." }, "cadence": { - "oneShotOn": "One-time dose on {date}.", - "oneShotPending": "One-time dose pending." + "oneShotOn": "Dose unique le {date}.", + "oneShotPending": "Dose unique en attente." }, "intake": { - "title": "Intake history", - "importButton": "Import", + "title": "Historique des prises", + "importButton": "Importer", "rowActions": { - "openMenu": "Open row actions", - "edit": "Edit", - "delete": "Delete" + "openMenu": "Ouvrir les actions de la ligne", + "edit": "Modifier", + "delete": "Supprimer" }, "selection": { - "rowToggleLabel": "Select row" + "rowToggleLabel": "Sélectionner la ligne" }, "bulkDelete": { - "selectionCount": "{count} entries selected", - "deleteButton": "Delete selection", - "cancelButton": "Cancel", - "confirmTitle": "Delete the selected entries?", - "confirmBody": "{count} entries will be removed permanently. The medication itself stays.", - "confirmAction": "Delete", - "toast": "Selection deleted", - "failed": "Could not delete the selection." + "selectionCount": "{count} entrées sélectionnées", + "deleteButton": "Supprimer la sélection", + "cancelButton": "Annuler", + "confirmTitle": "Supprimer les entrées sélectionnées ?", + "confirmBody": "{count} entrées seront supprimées définitivement. Le médicament est conservé.", + "confirmAction": "Supprimer", + "toast": "Sélection supprimée", + "failed": "Impossible de supprimer la sélection." }, "edit": { - "dialogTitle": "Edit intake", - "takenAtLabel": "Taken at", - "skippedLabel": "Skipped", + "dialogTitle": "Modifier la prise", + "takenAtLabel": "Prise à", + "skippedLabel": "Sautée", "noteLabel": "Note", - "save": "Save", - "cancel": "Cancel", - "savedToast": "Intake updated", - "failed": "Could not update the intake." + "save": "Enregistrer", + "cancel": "Annuler", + "savedToast": "Prise mise à jour", + "failed": "Impossible de mettre à jour la prise." }, "deleteRow": { - "confirmTitle": "Delete this intake?", - "confirmBody": "The entry is removed permanently.", - "confirmAction": "Delete", - "toast": "Intake deleted", - "failed": "Could not delete the intake." + "confirmTitle": "Supprimer cette prise ?", + "confirmBody": "L’entrée est supprimée définitivement.", + "confirmAction": "Supprimer", + "toast": "Prise supprimée", + "failed": "Impossible de supprimer la prise." } }, "notifications": { - "title": "Notifications", - "switchLabel": "Send a reminder when this dose is due", - "helperOn": "Reminders are on.", - "helperOff": "Reminders are off.", - "enabledToast": "Reminders on", - "disabledToast": "Reminders off", - "toggleFailed": "Could not change the reminder setting.", - "clientManagedChip": "Your iPhone manages reminders for this medication." + "title": "Rappels", + "switchLabel": "Envoyer un rappel lorsque cette dose est due", + "helperOn": "Les rappels sont activés.", + "helperOff": "Les rappels sont désactivés.", + "enabledToast": "Rappels activés", + "disabledToast": "Rappels désactivés", + "toggleFailed": "Impossible de modifier le réglage des rappels.", + "clientManagedChip": "Votre iPhone gère les rappels de ce médicament." }, "settings": { - "title": "Settings", + "title": "Réglages", "phases": { - "openButton": "Configure phases", - "requiresCourseWindow": "Phases are available once a course window is set." + "openButton": "Configurer les phases", + "requiresCourseWindow": "Les phases sont disponibles une fois une période de traitement définie." }, "grace": { - "label": "Reminder window — applies to your primary schedule", - "primaryScheduleNote": "Multi-schedule medications keep their other schedules' default window.", + "label": "Fenêtre de rappel — s’applique à votre horaire principal", + "primaryScheduleNote": "Les médicaments à horaires multiples conservent la fenêtre par défaut de leurs autres horaires.", "unit": "minutes", - "saved": "Reminder window saved", - "failed": "Could not save the reminder window." + "saved": "Fenêtre de rappel enregistrée", + "failed": "Impossible d’enregistrer la fenêtre de rappel." }, "codes": { "label": "Codes cliniques (ATC / RxNorm)", @@ -1253,57 +1253,57 @@ } }, "zone": { - "title": "Manage & danger zone", + "title": "Gestion et zone à risque", "pause": { - "title": "Pause", - "helper": "Pause reminders until you turn them back on. History stays intact.", - "pausedToast": "Reminders paused", - "resumedToast": "Reminders resumed", - "failed": "Could not change the paused state." + "title": "Mettre en pause", + "helper": "Mettez les rappels en pause jusqu’à ce que vous les réactiviez. L’historique est conservé.", + "pausedToast": "Rappels mis en pause", + "resumedToast": "Rappels réactivés", + "failed": "Impossible de modifier l’état de pause." }, "end": { - "title": "End medication", - "helper": "Stop reminders and mark the medication as ended. History stays visible.", - "button": "End", - "dialogTitle": "End {name} — stop reminders, history stays visible", - "dialogBody": "No more reminders. Old entries remain in the timeline.", - "toast": "Medication ended", - "failed": "Could not end the medication." + "title": "Terminer le médicament", + "helper": "Arrête les rappels et marque le médicament comme terminé. L’historique reste visible.", + "button": "Terminer", + "dialogTitle": "Terminer {name} — arrête les rappels, l’historique reste visible", + "dialogBody": "Plus de rappels. Les anciennes entrées restent dans la chronologie.", + "toast": "Médicament terminé", + "failed": "Impossible de terminer le médicament." }, "purge": { - "title": "Delete history", - "helper": "{count} intake events are stored for this medication.", - "button": "Delete history", - "dialogTitle": "Really delete the history?", - "dialogBody": "The {count} intake events will be removed permanently. The medication itself stays.", - "toast": "History deleted", - "failed": "Could not delete the history." + "title": "Supprimer l’historique", + "helper": "{count} prises sont enregistrées pour ce médicament.", + "button": "Supprimer l’historique", + "dialogTitle": "Supprimer vraiment l’historique ?", + "dialogBody": "Les {count} prises seront supprimées définitivement. Le médicament est conservé.", + "toast": "Historique supprimé", + "failed": "Impossible de supprimer l’historique." }, "delete": { - "title": "Delete medication", - "helper": "Removes the medication and every related record.", - "button": "Delete", - "dialogTitle": "Delete {name}?", - "dialogBody": "The medication, its schedules, intake history, API tokens, phase config and reminders will be removed permanently.", - "toast": "Medication deleted", - "failed": "Could not delete the medication." + "title": "Supprimer le médicament", + "helper": "Supprime le médicament et tous les enregistrements associés.", + "button": "Supprimer", + "dialogTitle": "Supprimer {name} ?", + "dialogBody": "Le médicament, ses horaires, l’historique des prises, les jetons API, la configuration des phases et les rappels seront supprimés définitivement.", + "toast": "Médicament supprimé", + "failed": "Impossible de supprimer le médicament." } }, "phases": { - "modeLabel": "{phase} mode", - "saveFailed": "Could not save the reminder phases." + "modeLabel": "Mode {phase}", + "saveFailed": "Impossible d’enregistrer les phases de rappel." }, "api": { - "caption": "Endpoint for \"{name}\"", - "copyUrl": "Copy URL", - "urlCopied": "URL copied", - "mintToken": "Mint token", - "mintAnotherToken": "Mint another token", - "mintFailed": "Could not mint a token.", - "copyFailed": "Could not copy.", - "tokenCopied": "Token copied", - "copyToken": "Copy token", - "mintedHint": "Copy this token now — it is shown only once." + "caption": "Point de terminaison pour « {name} »", + "copyUrl": "Copier l’URL", + "urlCopied": "URL copiée", + "mintToken": "Générer un jeton", + "mintAnotherToken": "Générer un autre jeton", + "mintFailed": "Impossible de générer un jeton.", + "copyFailed": "Impossible de copier.", + "tokenCopied": "Jeton copié", + "copyToken": "Copier le jeton", + "mintedHint": "Copiez ce jeton maintenant — il n’est affiché qu’une seule fois." }, "edit": { "planOption": "Modifier le plan", diff --git a/messages/it.json b/messages/it.json index 55152c790..c303acfcc 100644 --- a/messages/it.json +++ b/messages/it.json @@ -554,35 +554,35 @@ "scheduleDaily": "Quotidiano", "inactive": "In pausa", "intakeHistory": "Cronologia assunzioni", - "openDetailPage": "Open medication detail page", + "openDetailPage": "Apri la pagina di dettaglio del farmaco", "deleteConfirm": "Eliminare il farmaco?", "compliance": "Aderenza", - "importIntakes": "Import intakes", - "importDescription": "Paste a JSON array with intake data. Expected format:", - "importUploadFile": "Upload JSON file", - "importPaste": "Paste JSON here...", - "importSelected": "Selected: {name}", - "importFileLoaded": "File \"{name}\" loaded", - "importInvalidJson": "File does not contain valid JSON", - "importNoArray": "No array found", - "importResult": "{imported} intakes imported", - "importDuplicatesSkipped": "{count} duplicates skipped", - "importInvalidSkipped": "{count} invalid entries skipped", - "importFailed": "Import failed", - "importInvalidFormat": "Invalid JSON format", - "apiEndpointTitle": "API Endpoint: {name}", - "apiEndpointDescription": "Use this endpoint to record intakes via API (e.g., iPhone Shortcut or cron job).", - "apiEndpointActive": "API endpoint active", - "apiEndpointActivated": "API endpoint activated", - "apiEndpointDeactivated": "API endpoint deactivated", - "apiTokenCount": "Active ({count} tokens)", - "apiToken": "API Token", - "apiTokenActiveHint": "Endpoint is active. Existing tokens remain valid but cannot be shown in plain text again.", - "apiTokenActivateHint": "Activate the endpoint to create a new token.", - "apiTokenOnceHint": "The token is only shown in plain text once at creation.", - "requestExample": "Request example", - "statusLoadFailed": "Could not load status", - "changeFailed": "Change failed", + "importIntakes": "Importa assunzioni", + "importDescription": "Incolla un array JSON con i dati delle assunzioni. Formato previsto:", + "importUploadFile": "Carica file JSON", + "importPaste": "Incolla il JSON qui...", + "importSelected": "Selezionato: {name}", + "importFileLoaded": "File \"{name}\" caricato", + "importInvalidJson": "Il file non contiene un JSON valido", + "importNoArray": "Nessun array trovato", + "importResult": "{imported} assunzioni importate", + "importDuplicatesSkipped": "{count} duplicati ignorati", + "importInvalidSkipped": "{count} voci non valide ignorate", + "importFailed": "Importazione non riuscita", + "importInvalidFormat": "Formato JSON non valido", + "apiEndpointTitle": "Endpoint API: {name}", + "apiEndpointDescription": "Usa questo endpoint per registrare assunzioni tramite API (ad es. con un Comando rapido iPhone o un cron job).", + "apiEndpointActive": "Endpoint API attivo", + "apiEndpointActivated": "Endpoint API attivato", + "apiEndpointDeactivated": "Endpoint API disattivato", + "apiTokenCount": "Attivo ({count} token)", + "apiToken": "Token API", + "apiTokenActiveHint": "L’endpoint è attivo. I token esistenti restano validi ma non possono essere mostrati di nuovo in chiaro.", + "apiTokenActivateHint": "Attiva l’endpoint per creare un nuovo token.", + "apiTokenOnceHint": "Il token viene mostrato in chiaro solo una volta, alla creazione.", + "requestExample": "Esempio di richiesta", + "statusLoadFailed": "Impossibile caricare lo stato", + "changeFailed": "Modifica non riuscita", "categoryBloodPressure": "Pressione arteriosa", "categoryVitamin": "Vitamine", "categoryThyroid": "Tiroide", @@ -594,7 +594,7 @@ "categorySkin": "Cura della pelle", "categorySleepAid": "Per dormire", "categoryDiabetes": "Diabetes", - "categoryAntibiotic": "Antibiotic", + "categoryAntibiotic": "Antibiotico", "categoryOther": "Altro", "daysSun": "Dom", "daysMon": "Lun", @@ -738,141 +738,141 @@ } }, "cadence": { - "section": "Cadence", - "label": "How often", + "section": "Cadenza", + "label": "Con quale frequenza", "kind": { - "daily": "Every day", - "weekdays": "Certain days of the week", - "everyNWeeks": "Every N weeks on certain days", - "monthly": "Monthly on a specific day", - "everyNMonths": "Every N months on a specific day", - "yearly": "Once a year", - "rolling": "Every N days from when I last took it (flexible)", - "rollingExplainer": "Counts from your last logged intake — pauses if you skip a dose.", - "oneShot": "One-time dose" + "daily": "Ogni giorno", + "weekdays": "In determinati giorni della settimana", + "everyNWeeks": "Ogni N settimane in determinati giorni", + "monthly": "Mensilmente in un giorno specifico", + "everyNMonths": "Ogni N mesi in un giorno specifico", + "yearly": "Una volta all’anno", + "rolling": "Ogni N giorni dall’ultima assunzione (flessibile)", + "rollingExplainer": "Conta dall’ultima assunzione registrata — si mette in pausa se salti una dose.", + "oneShot": "Dose singola" }, "weekdays": { - "label": "Days of the week", + "label": "Giorni della settimana", "short": { "mo": "Mo", - "tu": "Tu", - "we": "We", - "th": "Th", + "tu": "Ma", + "we": "Me", + "th": "Gi", "fr": "Fr", "sa": "Sa", - "su": "Su" + "su": "Do" }, "long": { - "mo": "Monday", - "tu": "Tuesday", - "we": "Wednesday", - "th": "Thursday", - "fr": "Friday", - "sa": "Saturday", - "su": "Sunday" + "mo": "Lunedì", + "tu": "Martedì", + "we": "Mercoledì", + "th": "Giovedì", + "fr": "Venerdì", + "sa": "Sabato", + "su": "Domenica" } }, "intervalWeeks": { - "suffix": "weeks" + "suffix": "settimane" }, "dayOfMonth": { - "label": "Day" + "label": "Giorno" }, "intervalMonths": { - "suffix": "months", - "dayOnLabel": "on day" + "suffix": "mesi", + "dayOnLabel": "il giorno" }, "yearly": { "date": { - "label": "Date" + "label": "Data" } }, "rollingDays": { - "suffix": "days" + "suffix": "giorni" } }, "timesOfDay": { - "section": "Times of day", - "label": "Times of day", + "section": "Orari del giorno", + "label": "Orari del giorno", "empty": { - "cta": "Add the first time." + "cta": "Aggiungi il primo orario." }, - "add": "Add time", - "remove": "Remove", + "add": "Aggiungi orario", + "remove": "Rimuovi", "presets": { - "morning": "Morning", - "noon": "Noon", - "evening": "Evening", - "night": "Night" + "morning": "Mattina", + "noon": "Mezzogiorno", + "evening": "Sera", + "night": "Notte" }, "max": { - "reached": "Maximum reached — remove a time before adding another." + "reached": "Massimo raggiunto — rimuovi un orario prima di aggiungerne un altro." } }, "courseWindow": { - "section": "Course window", + "section": "Periodo di trattamento", "startsOn": { - "label": "Starts on" + "label": "Inizia il" }, "endsOn": { - "label": "Ends on" + "label": "Termina il" }, - "noEndDate": "No end date", - "oneShotCaption": "(one-time dose)", - "invalidRange": "End date must be on or after the start date." + "noEndDate": "Nessuna data di fine", + "oneShotCaption": "(dose singola)", + "invalidRange": "La data di fine deve essere uguale o successiva alla data di inizio." } }, "wizard": { "header": { - "stepOf": "Step {current} of {total}", - "createTitle": "New medication", - "editTitle": "Edit {name}" + "stepOf": "Passo {current} di {total}", + "createTitle": "Nuovo farmaco", + "editTitle": "Modifica {name}" }, "nav": { - "back": "Back", - "next": "Next", - "save": "Save", - "saveEdit": "Save changes", + "back": "Indietro", + "next": "Avanti", + "save": "Salva", + "saveEdit": "Salva modifiche", "nextHint": "Avanti: {step}", "reviewHint": "Avanti: Salva", "jumpFirst": "Vai al primo passaggio", "jumpLast": "Vai a revisione e salvataggio" }, "nl": { - "button": "Describe" + "button": "Descrivi" }, "steps": { "step1": { - "title": "What's the medication called?", - "subline": "Exactly as it appears on the box.", + "title": "Come si chiama il farmaco?", + "subline": "Esattamente come riportato sulla confezione.", "label": "Name", - "placeholder": "e.g. Ramipril", + "placeholder": "ad es. Ramipril", "short": "Nome" }, "step2": { - "title": "What kind of medication is it?", - "subline": "We use this for the right templates and analytics.", + "title": "Che tipo di farmaco è?", + "subline": "Lo usiamo per i modelli e le analisi corretti.", "short": "Tipo" }, "step3": { - "title": "What's the dose?", - "subline": "A tablet, a puff, a drop — depending on the form.", - "amountLabel": "Amount", - "amountPlaceholder": "e.g. 5", - "unitLabel": "Unit", + "title": "Qual è la dose?", + "subline": "Una compressa, uno spruzzo, una goccia — a seconda della forma.", + "amountLabel": "Quantità", + "amountPlaceholder": "ad es. 5", + "unitLabel": "Unità", "unit": { "mg": "mg", "ml": "ml", - "iu": "IU", + "iu": "UI", "mcg": "µg", "g": "g", - "tablets": "tablet(s)", - "capsules": "capsule(s)", - "drops": "drops", - "puffs": "puff", - "sprays": "spray", - "pieces": "pieces", - "other": "other" + "tablets": "compressa/e", + "capsules": "capsula/e", + "drops": "gocce", + "puffs": "spruzzo", + "sprays": "spruzzo", + "pieces": "pezzi", + "other": "altro" }, "deliveryFormLabel": "Via", "deliveryForm": { @@ -888,124 +888,124 @@ "short": "Dose" }, "step4": { - "title": "Over what period are you taking it?", - "subline": "A start date is enough for today. You can add an end date later.", + "title": "Per quanto tempo lo assumi?", + "subline": "Per oggi basta una data di inizio. Potrai aggiungere una data di fine in seguito.", "short": "Quando" }, "step5": { - "title": "How often do you take it?", - "subline": "Pick the cadence — the details follow on the next step.", + "title": "Con quale frequenza lo assumi?", + "subline": "Scegli la cadenza — i dettagli arrivano al passo successivo.", "short": "Frequenza" }, "step6": { - "title": "What does that look like in detail?", - "subline": "Set weekdays, intervals, or the day of the month.", + "title": "Come si presenta nel dettaglio?", + "subline": "Imposta i giorni della settimana, gli intervalli o il giorno del mese.", "intervalWeeks": { - "label": "Every", - "suffix": "weeks" + "label": "Ogni", + "suffix": "settimane" }, "dayOfMonth": { - "label": "On", - "suffix": "day of the month" + "label": "Il", + "suffix": "giorno del mese" }, "rollingDays": { - "label": "Every", - "suffix": "days from the last intake" + "label": "Ogni", + "suffix": "giorni dall’ultima assunzione" }, "short": "Dettaglio" }, "step7": { - "title": "When do you take it?", - "subline": "One or more times of day — reminders follow this list.", - "presetsLabel": "Time-of-day presets", + "title": "Quando lo assumi?", + "subline": "Uno o più orari del giorno — i promemoria seguono questo elenco.", + "presetsLabel": "Preimpostazioni per orario del giorno", "presets": { - "morning": "Morning", - "noon": "Noon", - "evening": "Evening", - "night": "Night" + "morning": "Mattina", + "noon": "Mezzogiorno", + "evening": "Sera", + "night": "Notte" }, "short": "Orari" }, "step8": { - "title": "All done — should HealthLog remind you?", - "subline": "Review everything below before you save.", - "remindersLabel": "Reminders on", - "remindersDescription": "Push, Telegram or ntfy — based on your settings.", - "multiScheduleNote": "This medication has multiple schedules. The detailed editor returns in a later release.", + "title": "Fatto — vuoi che HealthLog te lo ricordi?", + "subline": "Controlla tutto qui sotto prima di salvare.", + "remindersLabel": "Promemoria attivi", + "remindersDescription": "Push, Telegram o ntfy — in base alle tue impostazioni.", + "multiScheduleNote": "Questo farmaco ha più orari. L’editor dettagliato tornerà in una versione successiva.", "short": "Fatto" } }, "classRow": { - "bloodPressure": "Blood pressure", + "bloodPressure": "Pressione arteriosa", "diabetes": "Diabetes", - "hormone": "Hormones", - "glp1": "GLP-1 injection", - "painRelief": "Pain", - "allergy": "Allergy", - "vitamin": "Vitamins", - "supplement": "Supplement", - "antibiotic": "Antibiotic", - "other": "Other" + "hormone": "Ormoni", + "glp1": "Iniezione di GLP-1", + "painRelief": "Dolore", + "allergy": "Allergia", + "vitamin": "Vitamine", + "supplement": "Integratore", + "antibiotic": "Antibiotico", + "other": "Altro" }, "cadence": { "daily": { - "label": "Daily", - "description": "Every day at the same time." + "label": "Giornaliero", + "description": "Ogni giorno alla stessa ora." }, "weekdays": { - "label": "Specific weekdays", - "description": "E.g. Monday, Wednesday, Friday." + "label": "Giorni specifici della settimana", + "description": "Ad es. lunedì, mercoledì, venerdì." }, "everyNWeeks": { - "label": "Every few weeks", - "description": "E.g. every 2 weeks on Thursdays (GLP-1, biologics)." + "label": "Ogni poche settimane", + "description": "Ad es. ogni 2 settimane di giovedì (GLP-1, biologici)." }, "monthly": { - "label": "Monthly", - "description": "On a fixed day each month (e.g. always the 1st)." + "label": "Mensile", + "description": "Un giorno fisso ogni mese (ad es. sempre il 1°)." }, "rolling": { - "label": "Flexible from last dose", - "description": "Leave the next dose open. When you tap 'taken', the counter starts again from that moment." + "label": "Flessibile dall’ultima dose", + "description": "Lascia aperta la prossima dose. Quando tocchi «assunta», il conteggio riparte da quel momento." }, "oneShot": { - "label": "Single dose", - "description": "One administration, e.g. a vaccine or an antibiotic course." + "label": "Dose singola", + "description": "Una singola somministrazione, ad es. un vaccino o un ciclo di antibiotico." } }, "summary": { - "title": "Summary", + "title": "Riepilogo", "cadence": { - "daily": "Every day", - "weekdays": "On selected days of the week", - "biweekly": "Every two weeks", - "monthly": "Monthly", - "quarterly": "Every three months", - "yearly": "Once a year", - "rolling": "Every {n} days from your last intake", - "oneShot": "A single dose", - "everyNWeeks": "Every {n} weeks", - "everyNMonths": "Every {n} months" + "daily": "Ogni giorno", + "weekdays": "Nei giorni della settimana selezionati", + "biweekly": "Ogni due settimane", + "monthly": "Mensile", + "quarterly": "Ogni tre mesi", + "yearly": "Una volta all’anno", + "rolling": "Ogni {n} giorni dall’ultima assunzione", + "oneShot": "Una dose singola", + "everyNWeeks": "Ogni {n} settimane", + "everyNMonths": "Ogni {n} mesi" }, - "weekdaysDetail": ", on {days}", - "dayOfMonthDetail": ", on day {day}.", - "times": "at {times}", - "startsOn": "Starts: {date}", - "endsOn": "Ends: {date}", - "noEndDate": "No end date" + "weekdaysDetail": ", il {days}", + "dayOfMonthDetail": ", il giorno {day}.", + "times": "alle {times}", + "startsOn": "Inizio: {date}", + "endsOn": "Fine: {date}", + "noEndDate": "Nessuna data di fine" }, "compose": { - "scheduleIndex": "Schedule {n} of {total}", + "scheduleIndex": "Programma {n} di {total}", "list": { - "add": "Add another schedule", - "edit": "Edit", - "remove": "Remove", - "removeDisabled": "At least one schedule is required.", - "empty": "No schedule yet." + "add": "Aggiungi un altro programma", + "edit": "Modifica", + "remove": "Rimuovi", + "removeDisabled": "È richiesto almeno un programma.", + "empty": "Ancora nessun programma." } }, "errors": { - "submitFailed": "Could not save the medication — please retry." + "submitFailed": "Impossibile salvare il farmaco — riprova." } }, "doseStrength": { @@ -1160,88 +1160,88 @@ }, "detail": { "status": { - "active": "Active", - "paused": "Paused", - "ended": "Ended" + "active": "Attivo", + "paused": "In pausa", + "ended": "Terminato" }, "today": { - "groupLabel": "Today's dose", - "taken": "Taken", - "skipped": "Skipped", - "toastTaken": "Today's dose logged", - "toastSkipped": "Today's dose skipped", - "recordedTaken": "Taken today at {time}", - "recordedSkipped": "Skipped today at {time}", - "recordedOneShot": "One-shot dose taken at {time}", - "noneScheduled": "No dose scheduled for today.", - "pausedHint": "Paused — no reminder today.", - "error": "Could not log the dose." + "groupLabel": "Dose di oggi", + "taken": "Assunta", + "skipped": "Saltata", + "toastTaken": "Dose di oggi registrata", + "toastSkipped": "Dose di oggi saltata", + "recordedTaken": "Assunta oggi alle {time}", + "recordedSkipped": "Saltata oggi alle {time}", + "recordedOneShot": "Dose singola assunta alle {time}", + "noneScheduled": "Nessuna dose prevista per oggi.", + "pausedHint": "In pausa — nessun promemoria oggi.", + "error": "Impossibile registrare la dose." }, "cadence": { - "oneShotOn": "One-time dose on {date}.", - "oneShotPending": "One-time dose pending." + "oneShotOn": "Dose singola il {date}.", + "oneShotPending": "Dose singola in sospeso." }, "intake": { - "title": "Intake history", - "importButton": "Import", + "title": "Storico delle assunzioni", + "importButton": "Importa", "rowActions": { - "openMenu": "Open row actions", - "edit": "Edit", - "delete": "Delete" + "openMenu": "Apri azioni della riga", + "edit": "Modifica", + "delete": "Elimina" }, "selection": { - "rowToggleLabel": "Select row" + "rowToggleLabel": "Seleziona riga" }, "bulkDelete": { - "selectionCount": "{count} entries selected", - "deleteButton": "Delete selection", - "cancelButton": "Cancel", - "confirmTitle": "Delete the selected entries?", - "confirmBody": "{count} entries will be removed permanently. The medication itself stays.", - "confirmAction": "Delete", - "toast": "Selection deleted", - "failed": "Could not delete the selection." + "selectionCount": "{count} voci selezionate", + "deleteButton": "Elimina selezione", + "cancelButton": "Annulla", + "confirmTitle": "Eliminare le voci selezionate?", + "confirmBody": "{count} voci verranno rimosse definitivamente. Il farmaco resta.", + "confirmAction": "Elimina", + "toast": "Selezione eliminata", + "failed": "Impossibile eliminare la selezione." }, "edit": { - "dialogTitle": "Edit intake", - "takenAtLabel": "Taken at", - "skippedLabel": "Skipped", - "noteLabel": "Note", - "save": "Save", - "cancel": "Cancel", - "savedToast": "Intake updated", - "failed": "Could not update the intake." + "dialogTitle": "Modifica assunzione", + "takenAtLabel": "Assunta alle", + "skippedLabel": "Saltata", + "noteLabel": "Nota", + "save": "Salva", + "cancel": "Annulla", + "savedToast": "Assunzione aggiornata", + "failed": "Impossibile aggiornare l’assunzione." }, "deleteRow": { - "confirmTitle": "Delete this intake?", - "confirmBody": "The entry is removed permanently.", - "confirmAction": "Delete", - "toast": "Intake deleted", - "failed": "Could not delete the intake." + "confirmTitle": "Eliminare questa assunzione?", + "confirmBody": "La voce viene rimossa definitivamente.", + "confirmAction": "Elimina", + "toast": "Assunzione eliminata", + "failed": "Impossibile eliminare l’assunzione." } }, "notifications": { - "title": "Notifications", - "switchLabel": "Send a reminder when this dose is due", - "helperOn": "Reminders are on.", - "helperOff": "Reminders are off.", - "enabledToast": "Reminders on", - "disabledToast": "Reminders off", - "toggleFailed": "Could not change the reminder setting.", - "clientManagedChip": "Your iPhone manages reminders for this medication." + "title": "Promemoria", + "switchLabel": "Invia un promemoria quando questa dose è dovuta", + "helperOn": "I promemoria sono attivi.", + "helperOff": "I promemoria sono disattivati.", + "enabledToast": "Promemoria attivi", + "disabledToast": "Promemoria disattivati", + "toggleFailed": "Impossibile modificare l’impostazione dei promemoria.", + "clientManagedChip": "Il tuo iPhone gestisce i promemoria di questo farmaco." }, "settings": { - "title": "Settings", + "title": "Impostazioni", "phases": { - "openButton": "Configure phases", - "requiresCourseWindow": "Phases are available once a course window is set." + "openButton": "Configura le fasi", + "requiresCourseWindow": "Le fasi sono disponibili dopo aver impostato un periodo di trattamento." }, "grace": { - "label": "Reminder window — applies to your primary schedule", - "primaryScheduleNote": "Multi-schedule medications keep their other schedules' default window.", - "unit": "minutes", - "saved": "Reminder window saved", - "failed": "Could not save the reminder window." + "label": "Finestra di promemoria — si applica al tuo programma principale", + "primaryScheduleNote": "I farmaci con più programmi mantengono la finestra predefinita degli altri programmi.", + "unit": "minuti", + "saved": "Finestra di promemoria salvata", + "failed": "Impossibile salvare la finestra di promemoria." }, "codes": { "label": "Codici clinici (ATC / RxNorm)", @@ -1253,57 +1253,57 @@ } }, "zone": { - "title": "Manage & danger zone", + "title": "Gestione e zona pericolosa", "pause": { - "title": "Pause", - "helper": "Pause reminders until you turn them back on. History stays intact.", - "pausedToast": "Reminders paused", - "resumedToast": "Reminders resumed", - "failed": "Could not change the paused state." + "title": "Metti in pausa", + "helper": "Metti in pausa i promemoria finché non li riattivi. Lo storico resta intatto.", + "pausedToast": "Promemoria in pausa", + "resumedToast": "Promemoria ripresi", + "failed": "Impossibile modificare lo stato di pausa." }, "end": { - "title": "End medication", - "helper": "Stop reminders and mark the medication as ended. History stays visible.", - "button": "End", - "dialogTitle": "End {name} — stop reminders, history stays visible", - "dialogBody": "No more reminders. Old entries remain in the timeline.", - "toast": "Medication ended", - "failed": "Could not end the medication." + "title": "Termina il farmaco", + "helper": "Interrompe i promemoria e segna il farmaco come terminato. Lo storico resta visibile.", + "button": "Termina", + "dialogTitle": "Termina {name} — interrompe i promemoria, lo storico resta visibile", + "dialogBody": "Nessun altro promemoria. Le voci precedenti restano nella cronologia.", + "toast": "Farmaco terminato", + "failed": "Impossibile terminare il farmaco." }, "purge": { - "title": "Delete history", - "helper": "{count} intake events are stored for this medication.", - "button": "Delete history", - "dialogTitle": "Really delete the history?", - "dialogBody": "The {count} intake events will be removed permanently. The medication itself stays.", - "toast": "History deleted", - "failed": "Could not delete the history." + "title": "Elimina lo storico", + "helper": "Per questo farmaco sono memorizzate {count} assunzioni.", + "button": "Elimina lo storico", + "dialogTitle": "Eliminare davvero lo storico?", + "dialogBody": "Le {count} assunzioni verranno rimosse definitivamente. Il farmaco resta.", + "toast": "Storico eliminato", + "failed": "Impossibile eliminare lo storico." }, "delete": { - "title": "Delete medication", - "helper": "Removes the medication and every related record.", - "button": "Delete", - "dialogTitle": "Delete {name}?", - "dialogBody": "The medication, its schedules, intake history, API tokens, phase config and reminders will be removed permanently.", - "toast": "Medication deleted", - "failed": "Could not delete the medication." + "title": "Elimina il farmaco", + "helper": "Rimuove il farmaco e tutti i record correlati.", + "button": "Elimina", + "dialogTitle": "Eliminare {name}?", + "dialogBody": "Il farmaco, i suoi programmi, lo storico delle assunzioni, i token API, la configurazione delle fasi e i promemoria verranno rimossi definitivamente.", + "toast": "Farmaco eliminato", + "failed": "Impossibile eliminare il farmaco." } }, "phases": { - "modeLabel": "{phase} mode", - "saveFailed": "Could not save the reminder phases." + "modeLabel": "Modalità {phase}", + "saveFailed": "Impossibile salvare le fasi dei promemoria." }, "api": { - "caption": "Endpoint for \"{name}\"", - "copyUrl": "Copy URL", - "urlCopied": "URL copied", - "mintToken": "Mint token", - "mintAnotherToken": "Mint another token", - "mintFailed": "Could not mint a token.", - "copyFailed": "Could not copy.", - "tokenCopied": "Token copied", - "copyToken": "Copy token", - "mintedHint": "Copy this token now — it is shown only once." + "caption": "Endpoint per \"{name}\"", + "copyUrl": "Copia URL", + "urlCopied": "URL copiato", + "mintToken": "Genera token", + "mintAnotherToken": "Genera un altro token", + "mintFailed": "Impossibile generare un token.", + "copyFailed": "Impossibile copiare.", + "tokenCopied": "Token copiato", + "copyToken": "Copia token", + "mintedHint": "Copia questo token ora — viene mostrato una sola volta." }, "edit": { "planOption": "Modifica piano", diff --git a/messages/pl.json b/messages/pl.json index c68e1d163..8e1cb86fe 100644 --- a/messages/pl.json +++ b/messages/pl.json @@ -554,35 +554,35 @@ "scheduleDaily": "Codziennie", "inactive": "Wstrzymany", "intakeHistory": "Historia przyjęć", - "openDetailPage": "Open medication detail page", + "openDetailPage": "Otwórz stronę szczegółów leku", "deleteConfirm": "Usunąć lek?", "compliance": "Przestrzeganie zaleceń", - "importIntakes": "Import intakes", - "importDescription": "Paste a JSON array with intake data. Expected format:", - "importUploadFile": "Upload JSON file", - "importPaste": "Paste JSON here...", - "importSelected": "Selected: {name}", - "importFileLoaded": "File \"{name}\" loaded", - "importInvalidJson": "File does not contain valid JSON", - "importNoArray": "No array found", - "importResult": "{imported} intakes imported", - "importDuplicatesSkipped": "{count} duplicates skipped", - "importInvalidSkipped": "{count} invalid entries skipped", - "importFailed": "Import failed", - "importInvalidFormat": "Invalid JSON format", - "apiEndpointTitle": "API Endpoint: {name}", - "apiEndpointDescription": "Use this endpoint to record intakes via API (e.g., iPhone Shortcut or cron job).", - "apiEndpointActive": "API endpoint active", - "apiEndpointActivated": "API endpoint activated", - "apiEndpointDeactivated": "API endpoint deactivated", - "apiTokenCount": "Active ({count} tokens)", - "apiToken": "API Token", - "apiTokenActiveHint": "Endpoint is active. Existing tokens remain valid but cannot be shown in plain text again.", - "apiTokenActivateHint": "Activate the endpoint to create a new token.", - "apiTokenOnceHint": "The token is only shown in plain text once at creation.", - "requestExample": "Request example", - "statusLoadFailed": "Could not load status", - "changeFailed": "Change failed", + "importIntakes": "Importuj przyjęcia", + "importDescription": "Wklej tablicę JSON z danymi przyjęć. Oczekiwany format:", + "importUploadFile": "Prześlij plik JSON", + "importPaste": "Wklej tutaj JSON...", + "importSelected": "Wybrano: {name}", + "importFileLoaded": "Plik „{name}” wczytany", + "importInvalidJson": "Plik nie zawiera prawidłowego JSON", + "importNoArray": "Nie znaleziono tablicy", + "importResult": "{imported} przyjęć zaimportowano", + "importDuplicatesSkipped": "{count} duplikatów pominięto", + "importInvalidSkipped": "{count} nieprawidłowych wpisów pominięto", + "importFailed": "Import nie powiódł się", + "importInvalidFormat": "Nieprawidłowy format JSON", + "apiEndpointTitle": "Punkt końcowy API: {name}", + "apiEndpointDescription": "Użyj tego punktu końcowego do rejestrowania przyjęć przez API (np. Skrót iPhone lub zadanie cron).", + "apiEndpointActive": "Punkt końcowy API aktywny", + "apiEndpointActivated": "Punkt końcowy API aktywowany", + "apiEndpointDeactivated": "Punkt końcowy API dezaktywowany", + "apiTokenCount": "Aktywny ({count} tokenów)", + "apiToken": "Token API", + "apiTokenActiveHint": "Punkt końcowy jest aktywny. Istniejące tokeny pozostają ważne, ale nie można ich ponownie pokazać jako zwykły tekst.", + "apiTokenActivateHint": "Aktywuj punkt końcowy, aby utworzyć nowy token.", + "apiTokenOnceHint": "Token jest pokazywany jako zwykły tekst tylko raz, przy tworzeniu.", + "requestExample": "Przykład żądania", + "statusLoadFailed": "Nie udało się wczytać statusu", + "changeFailed": "Zmiana nie powiodła się", "categoryBloodPressure": "Ciśnienie krwi", "categoryVitamin": "Witaminy", "categoryThyroid": "Tarczyca", @@ -594,7 +594,7 @@ "categorySkin": "Pielęgnacja skóry", "categorySleepAid": "Na sen", "categoryDiabetes": "Diabetes", - "categoryAntibiotic": "Antibiotic", + "categoryAntibiotic": "Antybiotyk", "categoryOther": "Inne", "daysSun": "Nd", "daysMon": "Pn", @@ -738,141 +738,141 @@ } }, "cadence": { - "section": "Cadence", - "label": "How often", + "section": "Częstotliwość", + "label": "Jak często", "kind": { - "daily": "Every day", - "weekdays": "Certain days of the week", - "everyNWeeks": "Every N weeks on certain days", - "monthly": "Monthly on a specific day", - "everyNMonths": "Every N months on a specific day", - "yearly": "Once a year", - "rolling": "Every N days from when I last took it (flexible)", - "rollingExplainer": "Counts from your last logged intake — pauses if you skip a dose.", - "oneShot": "One-time dose" + "daily": "Codziennie", + "weekdays": "W określone dni tygodnia", + "everyNWeeks": "Co N tygodni w określone dni", + "monthly": "Co miesiąc w określonym dniu", + "everyNMonths": "Co N miesięcy w określonym dniu", + "yearly": "Raz w roku", + "rolling": "Co N dni od ostatniego przyjęcia (elastycznie)", + "rollingExplainer": "Liczy od ostatniego zarejestrowanego przyjęcia — wstrzymuje się, jeśli pominiesz dawkę.", + "oneShot": "Dawka jednorazowa" }, "weekdays": { - "label": "Days of the week", + "label": "Dni tygodnia", "short": { "mo": "Mo", - "tu": "Tu", - "we": "We", - "th": "Th", + "tu": "Wt", + "we": "Śr", + "th": "Cz", "fr": "Fr", "sa": "Sa", - "su": "Su" + "su": "Nd" }, "long": { - "mo": "Monday", - "tu": "Tuesday", - "we": "Wednesday", - "th": "Thursday", - "fr": "Friday", - "sa": "Saturday", - "su": "Sunday" + "mo": "Poniedziałek", + "tu": "Wtorek", + "we": "Środa", + "th": "Czwartek", + "fr": "Piątek", + "sa": "Sobota", + "su": "Niedziela" } }, "intervalWeeks": { - "suffix": "weeks" + "suffix": "tygodni" }, "dayOfMonth": { - "label": "Day" + "label": "Dzień" }, "intervalMonths": { - "suffix": "months", - "dayOnLabel": "on day" + "suffix": "miesięcy", + "dayOnLabel": "w dniu" }, "yearly": { "date": { - "label": "Date" + "label": "Data" } }, "rollingDays": { - "suffix": "days" + "suffix": "dni" } }, "timesOfDay": { - "section": "Times of day", - "label": "Times of day", + "section": "Pory dnia", + "label": "Pory dnia", "empty": { - "cta": "Add the first time." + "cta": "Dodaj pierwszą godzinę." }, - "add": "Add time", - "remove": "Remove", + "add": "Dodaj godzinę", + "remove": "Usuń", "presets": { - "morning": "Morning", - "noon": "Noon", - "evening": "Evening", - "night": "Night" + "morning": "Rano", + "noon": "Południe", + "evening": "Wieczór", + "night": "Noc" }, "max": { - "reached": "Maximum reached — remove a time before adding another." + "reached": "Osiągnięto maksimum — usuń jedną godzinę przed dodaniem kolejnej." } }, "courseWindow": { - "section": "Course window", + "section": "Okres leczenia", "startsOn": { - "label": "Starts on" + "label": "Rozpoczyna się" }, "endsOn": { - "label": "Ends on" + "label": "Kończy się" }, - "noEndDate": "No end date", - "oneShotCaption": "(one-time dose)", - "invalidRange": "End date must be on or after the start date." + "noEndDate": "Brak daty zakończenia", + "oneShotCaption": "(dawka jednorazowa)", + "invalidRange": "Data zakończenia musi być taka sama jak data rozpoczęcia lub późniejsza." } }, "wizard": { "header": { - "stepOf": "Step {current} of {total}", - "createTitle": "New medication", - "editTitle": "Edit {name}" + "stepOf": "Krok {current} z {total}", + "createTitle": "Nowy lek", + "editTitle": "Edytuj {name}" }, "nav": { - "back": "Back", - "next": "Next", - "save": "Save", - "saveEdit": "Save changes", + "back": "Wstecz", + "next": "Dalej", + "save": "Zapisz", + "saveEdit": "Zapisz zmiany", "nextHint": "Dalej: {step}", "reviewHint": "Dalej: Zapisz", "jumpFirst": "Przejdź do pierwszego kroku", "jumpLast": "Przejdź do podsumowania i zapisu" }, "nl": { - "button": "Describe" + "button": "Opisz" }, "steps": { "step1": { - "title": "What's the medication called?", - "subline": "Exactly as it appears on the box.", + "title": "Jak nazywa się lek?", + "subline": "Dokładnie tak, jak na opakowaniu.", "label": "Name", - "placeholder": "e.g. Ramipril", + "placeholder": "np. Ramipryl", "short": "Nazwa" }, "step2": { - "title": "What kind of medication is it?", - "subline": "We use this for the right templates and analytics.", - "short": "Typ" + "title": "Jaki to rodzaj leku?", + "subline": "Wykorzystujemy to do odpowiednich szablonów i analiz.", + "short": "Rodzaj" }, "step3": { - "title": "What's the dose?", - "subline": "A tablet, a puff, a drop — depending on the form.", - "amountLabel": "Amount", - "amountPlaceholder": "e.g. 5", - "unitLabel": "Unit", + "title": "Jaka jest dawka?", + "subline": "Tabletka, wziew, kropla — w zależności od formy.", + "amountLabel": "Ilość", + "amountPlaceholder": "np. 5", + "unitLabel": "Jednostka", "unit": { "mg": "mg", "ml": "ml", - "iu": "IU", + "iu": "j.m.", "mcg": "µg", "g": "g", - "tablets": "tablet(s)", - "capsules": "capsule(s)", - "drops": "drops", - "puffs": "puff", - "sprays": "spray", - "pieces": "pieces", - "other": "other" + "tablets": "tabletka/i", + "capsules": "kapsułka/i", + "drops": "krople", + "puffs": "wziew", + "sprays": "rozpylenie", + "pieces": "sztuki", + "other": "inne" }, "deliveryFormLabel": "Droga podania", "deliveryForm": { @@ -888,124 +888,124 @@ "short": "Dawka" }, "step4": { - "title": "Over what period are you taking it?", - "subline": "A start date is enough for today. You can add an end date later.", + "title": "Przez jaki okres go przyjmujesz?", + "subline": "Na dziś wystarczy data rozpoczęcia. Datę zakończenia możesz dodać później.", "short": "Kiedy" }, "step5": { - "title": "How often do you take it?", - "subline": "Pick the cadence — the details follow on the next step.", + "title": "Jak często go przyjmujesz?", + "subline": "Wybierz częstotliwość — szczegóły w następnym kroku.", "short": "Częstotliwość" }, "step6": { - "title": "What does that look like in detail?", - "subline": "Set weekdays, intervals, or the day of the month.", + "title": "Jak to wygląda szczegółowo?", + "subline": "Ustaw dni tygodnia, interwały lub dzień miesiąca.", "intervalWeeks": { - "label": "Every", - "suffix": "weeks" + "label": "Co", + "suffix": "tygodni" }, "dayOfMonth": { - "label": "On", - "suffix": "day of the month" + "label": "W dniu", + "suffix": "dzień miesiąca" }, "rollingDays": { - "label": "Every", - "suffix": "days from the last intake" + "label": "Co", + "suffix": "dni od ostatniego przyjęcia" }, "short": "Szczegóły" }, "step7": { - "title": "When do you take it?", - "subline": "One or more times of day — reminders follow this list.", - "presetsLabel": "Time-of-day presets", + "title": "Kiedy go przyjmujesz?", + "subline": "Jedna lub więcej pór dnia — przypomnienia opierają się na tej liście.", + "presetsLabel": "Ustawienia wstępne pory dnia", "presets": { - "morning": "Morning", - "noon": "Noon", - "evening": "Evening", - "night": "Night" + "morning": "Rano", + "noon": "Południe", + "evening": "Wieczór", + "night": "Noc" }, "short": "Godziny" }, "step8": { - "title": "All done — should HealthLog remind you?", - "subline": "Review everything below before you save.", - "remindersLabel": "Reminders on", - "remindersDescription": "Push, Telegram or ntfy — based on your settings.", - "multiScheduleNote": "This medication has multiple schedules. The detailed editor returns in a later release.", + "title": "Gotowe — czy HealthLog ma Ci przypominać?", + "subline": "Sprawdź wszystko poniżej przed zapisaniem.", + "remindersLabel": "Przypomnienia włączone", + "remindersDescription": "Push, Telegram lub ntfy — w zależności od ustawień.", + "multiScheduleNote": "Ten lek ma wiele harmonogramów. Szczegółowy edytor wróci w kolejnej wersji.", "short": "Gotowe" } }, "classRow": { - "bloodPressure": "Blood pressure", + "bloodPressure": "Ciśnienie krwi", "diabetes": "Diabetes", - "hormone": "Hormones", - "glp1": "GLP-1 injection", - "painRelief": "Pain", - "allergy": "Allergy", - "vitamin": "Vitamins", - "supplement": "Supplement", - "antibiotic": "Antibiotic", - "other": "Other" + "hormone": "Hormony", + "glp1": "Iniekcja GLP-1", + "painRelief": "Ból", + "allergy": "Alergia", + "vitamin": "Witaminy", + "supplement": "Suplement", + "antibiotic": "Antybiotyk", + "other": "Inne" }, "cadence": { "daily": { - "label": "Daily", - "description": "Every day at the same time." + "label": "Codziennie", + "description": "Codziennie o tej samej porze." }, "weekdays": { - "label": "Specific weekdays", - "description": "E.g. Monday, Wednesday, Friday." + "label": "Określone dni tygodnia", + "description": "Np. poniedziałek, środa, piątek." }, "everyNWeeks": { - "label": "Every few weeks", - "description": "E.g. every 2 weeks on Thursdays (GLP-1, biologics)." + "label": "Co kilka tygodni", + "description": "Np. co 2 tygodnie w czwartki (GLP-1, leki biologiczne)." }, "monthly": { - "label": "Monthly", - "description": "On a fixed day each month (e.g. always the 1st)." + "label": "Co miesiąc", + "description": "W stały dzień każdego miesiąca (np. zawsze 1.)." }, "rolling": { - "label": "Flexible from last dose", - "description": "Leave the next dose open. When you tap 'taken', the counter starts again from that moment." + "label": "Elastycznie od ostatniej dawki", + "description": "Pozostaw kolejną dawkę otwartą. Po naciśnięciu „przyjęto” licznik startuje od nowa od tego momentu." }, "oneShot": { - "label": "Single dose", - "description": "One administration, e.g. a vaccine or an antibiotic course." + "label": "Jednorazowo", + "description": "Jednorazowe podanie, np. szczepionka lub kuracja antybiotykowa." } }, "summary": { - "title": "Summary", + "title": "Podsumowanie", "cadence": { - "daily": "Every day", - "weekdays": "On selected days of the week", - "biweekly": "Every two weeks", - "monthly": "Monthly", - "quarterly": "Every three months", - "yearly": "Once a year", - "rolling": "Every {n} days from your last intake", - "oneShot": "A single dose", - "everyNWeeks": "Every {n} weeks", - "everyNMonths": "Every {n} months" + "daily": "Codziennie", + "weekdays": "W wybrane dni tygodnia", + "biweekly": "Co dwa tygodnie", + "monthly": "Co miesiąc", + "quarterly": "Co trzy miesiące", + "yearly": "Raz w roku", + "rolling": "Co {n} dni od ostatniego przyjęcia", + "oneShot": "Pojedyncza dawka", + "everyNWeeks": "Co {n} tygodni", + "everyNMonths": "Co {n} miesięcy" }, - "weekdaysDetail": ", on {days}", - "dayOfMonthDetail": ", on day {day}.", - "times": "at {times}", - "startsOn": "Starts: {date}", - "endsOn": "Ends: {date}", - "noEndDate": "No end date" + "weekdaysDetail": ", w {days}", + "dayOfMonthDetail": ", dnia {day}.", + "times": "o {times}", + "startsOn": "Początek: {date}", + "endsOn": "Koniec: {date}", + "noEndDate": "Brak daty zakończenia" }, "compose": { - "scheduleIndex": "Schedule {n} of {total}", + "scheduleIndex": "Harmonogram {n} z {total}", "list": { - "add": "Add another schedule", - "edit": "Edit", - "remove": "Remove", - "removeDisabled": "At least one schedule is required.", - "empty": "No schedule yet." + "add": "Dodaj kolejny harmonogram", + "edit": "Edytuj", + "remove": "Usuń", + "removeDisabled": "Wymagany jest co najmniej jeden harmonogram.", + "empty": "Brak harmonogramu." } }, "errors": { - "submitFailed": "Could not save the medication — please retry." + "submitFailed": "Nie udało się zapisać leku — spróbuj ponownie." } }, "doseStrength": { @@ -1160,88 +1160,88 @@ }, "detail": { "status": { - "active": "Active", - "paused": "Paused", - "ended": "Ended" + "active": "Aktywny", + "paused": "Wstrzymany", + "ended": "Zakończony" }, "today": { - "groupLabel": "Today's dose", - "taken": "Taken", - "skipped": "Skipped", - "toastTaken": "Today's dose logged", - "toastSkipped": "Today's dose skipped", - "recordedTaken": "Taken today at {time}", - "recordedSkipped": "Skipped today at {time}", - "recordedOneShot": "One-shot dose taken at {time}", - "noneScheduled": "No dose scheduled for today.", - "pausedHint": "Paused — no reminder today.", - "error": "Could not log the dose." + "groupLabel": "Dzisiejsza dawka", + "taken": "Przyjęto", + "skipped": "Pominięto", + "toastTaken": "Dzisiejsza dawka zapisana", + "toastSkipped": "Dzisiejsza dawka pominięta", + "recordedTaken": "Przyjęto dziś o {time}", + "recordedSkipped": "Pominięto dziś o {time}", + "recordedOneShot": "Jednorazową dawkę przyjęto o {time}", + "noneScheduled": "Na dziś nie zaplanowano żadnej dawki.", + "pausedHint": "Wstrzymano — dziś brak przypomnienia.", + "error": "Nie udało się zapisać dawki." }, "cadence": { - "oneShotOn": "One-time dose on {date}.", - "oneShotPending": "One-time dose pending." + "oneShotOn": "Dawka jednorazowa w dniu {date}.", + "oneShotPending": "Dawka jednorazowa oczekuje." }, "intake": { - "title": "Intake history", - "importButton": "Import", + "title": "Historia przyjęć", + "importButton": "Importuj", "rowActions": { - "openMenu": "Open row actions", - "edit": "Edit", - "delete": "Delete" + "openMenu": "Otwórz akcje wiersza", + "edit": "Edytuj", + "delete": "Usuń" }, "selection": { - "rowToggleLabel": "Select row" + "rowToggleLabel": "Zaznacz wiersz" }, "bulkDelete": { - "selectionCount": "{count} entries selected", - "deleteButton": "Delete selection", - "cancelButton": "Cancel", - "confirmTitle": "Delete the selected entries?", - "confirmBody": "{count} entries will be removed permanently. The medication itself stays.", - "confirmAction": "Delete", - "toast": "Selection deleted", - "failed": "Could not delete the selection." + "selectionCount": "{count} wpisów zaznaczono", + "deleteButton": "Usuń zaznaczone", + "cancelButton": "Anuluj", + "confirmTitle": "Usunąć zaznaczone wpisy?", + "confirmBody": "{count} wpisów zostanie trwale usuniętych. Sam lek pozostaje.", + "confirmAction": "Usuń", + "toast": "Zaznaczone usunięto", + "failed": "Nie udało się usunąć zaznaczonych." }, "edit": { - "dialogTitle": "Edit intake", - "takenAtLabel": "Taken at", - "skippedLabel": "Skipped", - "noteLabel": "Note", - "save": "Save", - "cancel": "Cancel", - "savedToast": "Intake updated", - "failed": "Could not update the intake." + "dialogTitle": "Edytuj przyjęcie", + "takenAtLabel": "Przyjęto o", + "skippedLabel": "Pominięto", + "noteLabel": "Notatka", + "save": "Zapisz", + "cancel": "Anuluj", + "savedToast": "Przyjęcie zaktualizowane", + "failed": "Nie udało się zaktualizować przyjęcia." }, "deleteRow": { - "confirmTitle": "Delete this intake?", - "confirmBody": "The entry is removed permanently.", - "confirmAction": "Delete", - "toast": "Intake deleted", - "failed": "Could not delete the intake." + "confirmTitle": "Usunąć to przyjęcie?", + "confirmBody": "Wpis zostanie trwale usunięty.", + "confirmAction": "Usuń", + "toast": "Przyjęcie usunięte", + "failed": "Nie udało się usunąć przyjęcia." } }, "notifications": { - "title": "Notifications", - "switchLabel": "Send a reminder when this dose is due", - "helperOn": "Reminders are on.", - "helperOff": "Reminders are off.", - "enabledToast": "Reminders on", - "disabledToast": "Reminders off", - "toggleFailed": "Could not change the reminder setting.", - "clientManagedChip": "Your iPhone manages reminders for this medication." + "title": "Przypomnienia", + "switchLabel": "Wyślij przypomnienie, gdy nadejdzie czas tej dawki", + "helperOn": "Przypomnienia są włączone.", + "helperOff": "Przypomnienia są wyłączone.", + "enabledToast": "Przypomnienia włączone", + "disabledToast": "Przypomnienia wyłączone", + "toggleFailed": "Nie udało się zmienić ustawienia przypomnień.", + "clientManagedChip": "Twój iPhone zarządza przypomnieniami dla tego leku." }, "settings": { - "title": "Settings", + "title": "Ustawienia", "phases": { - "openButton": "Configure phases", - "requiresCourseWindow": "Phases are available once a course window is set." + "openButton": "Skonfiguruj fazy", + "requiresCourseWindow": "Fazy są dostępne po ustawieniu okresu leczenia." }, "grace": { - "label": "Reminder window — applies to your primary schedule", - "primaryScheduleNote": "Multi-schedule medications keep their other schedules' default window.", - "unit": "minutes", - "saved": "Reminder window saved", - "failed": "Could not save the reminder window." + "label": "Okno przypomnienia — dotyczy głównego harmonogramu", + "primaryScheduleNote": "Leki z wieloma harmonogramami zachowują domyślne okno pozostałych harmonogramów.", + "unit": "minut", + "saved": "Okno przypomnienia zapisane", + "failed": "Nie udało się zapisać okna przypomnienia." }, "codes": { "label": "Kody kliniczne (ATC / RxNorm)", @@ -1253,57 +1253,57 @@ } }, "zone": { - "title": "Manage & danger zone", + "title": "Zarządzanie i strefa zagrożenia", "pause": { - "title": "Pause", - "helper": "Pause reminders until you turn them back on. History stays intact.", - "pausedToast": "Reminders paused", - "resumedToast": "Reminders resumed", - "failed": "Could not change the paused state." + "title": "Wstrzymaj", + "helper": "Wstrzymaj przypomnienia, aż włączysz je ponownie. Historia pozostaje nienaruszona.", + "pausedToast": "Przypomnienia wstrzymane", + "resumedToast": "Przypomnienia wznowione", + "failed": "Nie udało się zmienić stanu wstrzymania." }, "end": { - "title": "End medication", - "helper": "Stop reminders and mark the medication as ended. History stays visible.", - "button": "End", - "dialogTitle": "End {name} — stop reminders, history stays visible", - "dialogBody": "No more reminders. Old entries remain in the timeline.", - "toast": "Medication ended", - "failed": "Could not end the medication." + "title": "Zakończ lek", + "helper": "Zatrzymuje przypomnienia i oznacza lek jako zakończony. Historia pozostaje widoczna.", + "button": "Zakończ", + "dialogTitle": "Zakończ {name} — zatrzymuje przypomnienia, historia pozostaje widoczna", + "dialogBody": "Brak kolejnych przypomnień. Stare wpisy pozostają na osi czasu.", + "toast": "Lek zakończony", + "failed": "Nie udało się zakończyć leku." }, "purge": { - "title": "Delete history", - "helper": "{count} intake events are stored for this medication.", - "button": "Delete history", - "dialogTitle": "Really delete the history?", - "dialogBody": "The {count} intake events will be removed permanently. The medication itself stays.", - "toast": "History deleted", - "failed": "Could not delete the history." + "title": "Usuń historię", + "helper": "Dla tego leku zapisano {count} przyjęć.", + "button": "Usuń historię", + "dialogTitle": "Na pewno usunąć historię?", + "dialogBody": "{count} przyjęć zostanie trwale usuniętych. Sam lek pozostaje.", + "toast": "Historia usunięta", + "failed": "Nie udało się usunąć historii." }, "delete": { - "title": "Delete medication", - "helper": "Removes the medication and every related record.", - "button": "Delete", - "dialogTitle": "Delete {name}?", - "dialogBody": "The medication, its schedules, intake history, API tokens, phase config and reminders will be removed permanently.", - "toast": "Medication deleted", - "failed": "Could not delete the medication." + "title": "Usuń lek", + "helper": "Usuwa lek i wszystkie powiązane rekordy.", + "button": "Usuń", + "dialogTitle": "Usunąć {name}?", + "dialogBody": "Lek, jego harmonogramy, historia przyjęć, tokeny API, konfiguracja faz i przypomnienia zostaną trwale usunięte.", + "toast": "Lek usunięty", + "failed": "Nie udało się usunąć leku." } }, "phases": { - "modeLabel": "{phase} mode", - "saveFailed": "Could not save the reminder phases." + "modeLabel": "Tryb {phase}", + "saveFailed": "Nie udało się zapisać faz przypomnień." }, "api": { - "caption": "Endpoint for \"{name}\"", - "copyUrl": "Copy URL", - "urlCopied": "URL copied", - "mintToken": "Mint token", - "mintAnotherToken": "Mint another token", - "mintFailed": "Could not mint a token.", - "copyFailed": "Could not copy.", - "tokenCopied": "Token copied", - "copyToken": "Copy token", - "mintedHint": "Copy this token now — it is shown only once." + "caption": "Punkt końcowy dla „{name}”", + "copyUrl": "Kopiuj URL", + "urlCopied": "Skopiowano URL", + "mintToken": "Wygeneruj token", + "mintAnotherToken": "Wygeneruj kolejny token", + "mintFailed": "Nie udało się wygenerować tokena.", + "copyFailed": "Nie udało się skopiować.", + "tokenCopied": "Token skopiowany", + "copyToken": "Kopiuj token", + "mintedHint": "Skopiuj ten token teraz — jest pokazywany tylko raz." }, "edit": { "planOption": "Edytuj plan",