Files
HealthLog/messages/pl.json
T
Marc-André Bombeck 8dced00188 feat(medications): label each intake history row with its logging origin
The intake history surfaced the coarse IntakeSource enum directly, so a
dose logged from the iOS app showed nothing meaningful. Map the enum to
the practical client it represents — WEB to Web, API to iOS App,
REMINDER to Reminder, IMPORT to Import — and render it as a muted
"via {origin}" caption on each intake row next to the status. No schema
or API change; the source value already rides the existing intake
response. Tighten the en/de labels that read "External API" and
"Telegram / Reminder" into the same origin vocabulary across all six
locales.
2026-06-01 17:31:02 +02:00

4043 lines
181 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"common": {
"save": "Zapisz",
"cancel": "Anuluj",
"delete": "Usuń",
"edit": "Edytuj",
"moreOptions": "Więcej opcji",
"create": "Utwórz",
"close": "Zamknij",
"loading": "Ładowanie…...",
"loadFailed": "Could not load",
"error": "Błąd",
"saved": "Zapisano",
"no": "Nie",
"noData": "Brak danych",
"optional": "Opcjonalne",
"active": "Aktywne",
"inactive": "Nieaktywne",
"enabled": "Włączone",
"disabled": "Wyłączone",
"networkError": "Błąd sieci",
"unknownError": "Nieznany błąd",
"copied": "Skopiowano!",
"or": "lub",
"unknown": "Nieznane",
"add": "Dodaj",
"import": "Importuj",
"test": "Testuj",
"reset": "Resetuj",
"copy": "Kopiuj",
"copyDetails": "Kopiuj szczegóły",
"retry": "Spróbuj ponownie",
"reportIssue": "Zgłoś problem",
"showPassword": "Pokaż hasło",
"hidePassword": "Ukryj hasło"
},
"doctorReport": {
"title": "Raport zdrowotny",
"subtitle": "HealthLog — Osobisty raport zdrowotny",
"patient": "Pacjent",
"dateOfBirth": "Data urodzenia",
"gender": "Płeć",
"genderMale": "Mężczyzna",
"genderFemale": "Kobieta",
"genderOther": "Niebinarna",
"height": "Wzrost",
"period": "Okres raportu",
"createdOn": "Utworzono",
"vitalsTitle": "Parametry życiowe — Podsumowanie",
"colParameter": "Parametr",
"colCurrent": "Aktualny",
"colAvgPeriod": "Śr. okresu",
"colMin": "Min",
"colMax": "Maks",
"colN": "n",
"bpClassificationTitle": "Ciśnienie tętnicze — klasyfikacja ESH (2023)",
"avgBp": "Średnie ciśnienie tętnicze",
"classification": "Klasyfikacja",
"bmiTitle": "Wskaźnik masy ciała (BMI)",
"bmiRow": "BMI:{bmi} kg/m² — Classification: {class} (WHO)",
"complianceTitle": "Przestrzeganie leków",
"glp1Title": "Terapia GLP-1",
"glp1WeightSummary": "Waga w okresie raportu: {start} kg → {end} kg ({delta} kg)",
"glp1CurrentDose": "Aktualna dawka:{value} {unit} (since {since})",
"glp1Compliance": "Przestrzeganie zaleceń:{taken} / {total} ({rate}%)",
"glp1SideEffectsTitle": "Zarejestrowane działania niepożądane",
"colGlp1Date": "Data",
"colGlp1Dose": "Dawka",
"colGlp1Note": "Notatka",
"colGlp1SideEffect": "Skutek uboczny",
"colMedication": "Lek",
"colTaken": "Przyjęte",
"colSkipped": "Pominięte",
"colMissed": "Pominięte",
"colTotal": "Razem",
"colComplianceRate": "Wskaźnik przestrzegania",
"moodTitle": "Przebieg nastroju",
"moodSummary": "Średnia:{avg} / 5.0 · Entries: {count} · Range: {min}–{max}",
"colMood": "Nastrój",
"colCount": "Liczba",
"colShare": "Udział",
"footerDisclaimer1": "Ten raport został wygenerowany automatycznie z danych samodzielnie rejestrowanych i ma na celu wspierać",
"footerDisclaimer2": "rozmowę lekarza z pacjentem. Nie zastępuje diagnozy medycznej. Korelacje nie oznaczają związku przyczynowego.",
"footerSource": "Źródło: HealthLog | Strefa czasowa: Europe/Berlin | Utworzono: {timestamp}",
"typeWeight": "Masa ciała",
"typeBpSys": "Ciśnienie skurczowe",
"typeBpDia": "Ciśnienie rozkurczowe",
"typePulse": "Tętno spoczynkowe",
"typeBodyFat": "Tkanka tłuszczowa",
"typeSleep": "Czas snu",
"typeSteps": "Aktywność (kroki)",
"typeTotalBodyWater": "Całkowita woda w organizmie",
"typeBoneMass": "Masa kostna",
"typeOxygenSaturation": "Saturacja tlenem",
"unitSteps": "Kroki",
"bmiUnderweight": "Niedowaga",
"bmiNormal": "Waga prawidłowa",
"bmiOverweight": "Nadwaga (preobesyty)",
"bmiObeseGrade1": "Otyłość I stopnia",
"bmiObeseGrade2": "Otyłość II stopnia",
"bmiObeseGrade3": "Otyłość III stopnia",
"bpOptimal": "Optymalne",
"bpNormal": "Prawidłowe",
"bpHighNormal": "Wysokie prawidłowe",
"bpHypertensionGrade1": "Nadciśnienie 1 stopnia",
"bpHypertensionGrade2": "Nadciśnienie 2 stopnia",
"bpHypertensionGrade3": "Nadciśnienie 3 stopnia",
"moodAwful": "Bardzo zły",
"moodBad": "Źle",
"moodNeutral": "Neutralny",
"moodGood": "Dobrze",
"moodGreat": "Bardzo dobry",
"typeGlucoseFasting": "Glukoza (na czczo)",
"typeGlucosePostprandial": "Glukoza (po posiłku)",
"typeGlucoseRandom": "Glukoza (dowolna)",
"typeGlucoseBedtime": "Glukoza (przed snem)",
"glucoseClassificationTitle": "Glikemia — zakresy referencyjne (ADA 2024 / DDG)",
"glucoseRow": "{label}: śr. {avg} {unit} (cel {rangeMin}–{rangeMax}) — {class}",
"glucoseInTarget": "w celu",
"glucoseBelowTarget": "poniżej celu",
"glucoseAboveTarget": "powyżej celu",
"practiceLabel": "Gabinet",
"dialog": {
"title": "Raport medyczny (PDF)",
"description": "Ustaw okres analizy i (opcjonalnie) nazwę gabinetu — oba pojawią się na stronie tytułowej.",
"startLabel": "Od",
"endLabel": "Do",
"practiceLabel": "Gabinet / klinika (opcjonalnie)",
"practicePlaceholder": "np. dr Müller — lekarz rodzinny",
"preset90d": "Ostatnie 90 dni",
"preset180d": "Ostatnie 6 miesięcy",
"preset365d": "Ostatnie 12 miesięcy",
"submit": "Wygeneruj PDF",
"cancel": "Anuluj",
"errorEndBeforeStart": "Data końcowa nie może być wcześniejsza niż początkowa.",
"errorRangeTooLong": "Okres analizy nie może przekraczać 2 lat.",
"errorInvalidDate": "Wybierz poprawną datę początku i końca."
},
"sections": {
"title": "Wybierz zawartość",
"bp": "Ciśnienie krwi",
"weight": "Waga",
"pulse": "Tętno spoczynkowe",
"bmi": "Wskaźnik masy ciała (BMI)",
"mood": "Nastrój",
"moodSensitive": "Wrażliwe — domyślnie wyłączone.",
"compliance": "Przestrzeganie leków",
"sleep": "Czas snu",
"empty": "Brak danych dla wybranego okresu. Raport zachowa stronę tytułową.",
"unavailableHint": "Brak danych w tym okresie"
},
"insurer": "Ubezpieczyciel zdrowotny",
"insuranceNumber": "Nr ubezpieczonego",
"summaryTitle": "Podsumowanie kliniczne",
"summaryReadings": "Zarejestrowano w ciągu {days} dni: {count} pomiarów w {params} parametrach.",
"summaryTrend": "{label}: ostatnio {latest} {arrow}",
"summaryAdherence": "Przestrzeganie zaleceń lekowych: {rate}% (średnia ważona).",
"chartsTitle": "Wykresy trendów",
"aiSummaryTitle": "Podsumowanie AI — niezweryfikowane klinicznie",
"aiSummaryDisclaimer": "Ta sekcja została wygenerowana automatycznie przez model AI i nie jest zweryfikowana klinicznie. Nie zastępuje oceny lekarskiej.",
"packageReadme": "Dokumentacja zdrowotna HealthLog\n\nTen pakiet zawiera:\n- report.pdf: raport zdrowotny dla lekarza.\n- bundle.json: te same dane jako dokument HL7 FHIR R4 (Bundle), zgodny z ePA.\n\nWygenerowano w HealthLog."
},
"errorBoundary": {
"title": "Coś poszło nie tak",
"description": "Wystąpił nieoczekiwany błąd. Możesz spróbować ponownie, skopiować szczegóły techniczne lub otworzyć zgłoszenie błędu."
},
"notFound": {
"title": "Ta strona nie istnieje.",
"backToDashboard": "Powrót do panelu"
},
"offlineBanner": {
"message": "Brak połączenia — twoje zmiany zostaną zapisane, gdy ponownie pojawisz się online."
},
"nav": {
"dashboard": "Panel",
"measurements": "Pomiary",
"medications": "Leki",
"insights": "Insights",
"targets": "Cele",
"achievements": "Osiągnięcia",
"settings": "Ustawienia",
"bugreport": "Zgłoszenie błędu",
"admin": "Konsola administratora",
"logout": "Wyloguj",
"login": "Zaloguj",
"about": "O HealthLog",
"notifications": "Centrum powiadomień",
"theme": "Wygląd",
"themeSystem": "Systemowy",
"themeDark": "Ciemny",
"themeLight": "Jasny",
"collapseSidebar": "Zwiń",
"userMenu": "Menu użytkownika",
"mood": "Nastrój",
"skipToContent": "Przejdź do treści",
"sidebar": "Pasek boczny",
"mainNavigation": "Nawigacja główna",
"mobileNavigation": "Nawigacja mobilna",
"breadcrumb": "Nawigacja okruszkami",
"loadingScreen": "Ładowanie…",
"more": "Więcej",
"moreSheetTitle": "Więcej",
"moreSheetDescription": "Strony, które nie mieszczą się w dolnym pasku."
},
"auth": {
"login": "Zaloguj się",
"register": "Zarejestruj się",
"username": "Nazwa użytkownika",
"password": "Hasło",
"email": "Adres e-mail",
"emailPlaceholder": "imie@przyklad.pl",
"emailOrUsername": "Adres e-mail lub nazwa użytkownika",
"emailOrUsernamePlaceholder": "imie@przyklad.pl lub nazwauzytkownika",
"loginWithPasskey": "Zaloguj się za pomocą passkey",
"loginWithPassword": "Zaloguj się hasłem",
"noAccount": "Nie masz jeszcze konta?",
"hasAccount": "Masz już konto?",
"loginFailed": "Logowanie nie powiodło się",
"registerFailed": "Rejestracja nie powiodła się",
"createAccount": "Utwórz konto",
"newAccount": "Utwórz nowe konto",
"backToPasskey": "Wróć do passkey",
"passkeySetupLater": "Passkey możesz skonfigurować później w ustawieniach.",
"passwordMinLength": "Min. 12 znaków",
"passwordTooShort": "Hasło musi mieć co najmniej {minLength} znaków.",
"privacyPolicy": "Polityka prywatności"
},
"dashboard": {
"title": "Pulpit",
"greeting": {
"morning": "Dzień dobry",
"day": "Cześć",
"evening": "Dobry wieczór"
},
"welcomeBack": "{greeting}, witaj ponownie.",
"welcomeBackWithName": "{greeting} {name}, witaj ponownie.",
"greetingSalutation": "Cześć, {name}",
"streakLabel": "dni z rzędu",
"weight": "Waga",
"bloodPressure": "Ciśnienie krwi",
"pulse": "Tętno",
"bodyFat": "Tkanka tłuszczowa",
"sleep": "Sen",
"steps": "Kroki",
"vo2Max": "VO₂ max",
"vo2MaxUnit": "mL/(kg·min)",
"bpInTarget": "RR w zakresie docelowym",
"weightShort": "Waga",
"bloodPressureSysShort": "RR (Sk)",
"bloodPressureDiaShort": "RR (Rk)",
"pulseShort": "Tętno",
"bodyFatShort": "TT",
"moodShort": "Nastrój",
"sleepShort": "Sen",
"stepsShort": "Kroki",
"vo2MaxShort": "VO₂ max",
"bpInTargetShort": "RR-cel",
"medications": "Leki",
"quickAddMeasurement": "Zarejestruj pomiar",
"quickAddMood": "Zarejestruj nastrój",
"quickAddMedicationIntake": "Zarejestruj przyjęcie",
"medicationIntakeQuickAdd": {
"sheetTitle": "Zarejestruj przyjęcie leku",
"sheetDescription": "Zapisz dawkę, godzinę i lek w kilku stuknięciach.",
"medicationLabel": "Lek",
"medicationPlaceholder": "Wybierz lek",
"doseLabel": "Dawka",
"dosePlaceholder": "np. 5 mg",
"doseHint": "Obecnie zapisywana jest dawka standardowa. Dawki zmienne pojawią się w jednej z kolejnych wersji.",
"timeLabel": "Godzina przyjęcia",
"saveError": "Nie udało się zapisać przyjęcia.",
"emptyTitle": "Brak leków",
"emptyDescription": "Najpierw dodaj lek z harmonogramem, a potem wróć tutaj, aby zarejestrować jego przyjęcie.",
"emptyCta": "Dodaj lek"
},
"compliance7d": "Przestrzeganie (7 dni)",
"mood": "Nastrój",
"customizeTitle": "Układ panelu",
"layoutReset": "Przywróć wartości domyślne",
"layoutSaveSuccess": "Układ panelu zapisany",
"layoutSaveError": "Nie udało się zapisać układu",
"layoutResetSuccess": "Przywrócono układ domyślny",
"layoutUsingDefaults": "Aktywny układ domyślny",
"layoutCustomized": "Aktywny układ niestandardowy",
"moveUp": "W górę",
"moveDown": "W dół",
"layoutTileColumn": "Kafelek",
"layoutChartColumn": "Wykres",
"dragHandle": "Przeciągnij, aby zmienić kolejność",
"dragHandleHint": "Strzałki Góra/Dół, lub Spacja plus strzałki na zaznaczonym uchwycie.",
"emptyTitle": "Twój panel jest pusty",
"emptyDescription": "Zarejestruj pierwszy pomiar lub nastrój. Kafelki i wykresy pojawią się automatycznie, gdy będą dane.",
"emptyAddMeasurement": "Zarejestruj pierwszy pomiar",
"staleHint": "Ostatni odczyt {count} d temu",
"staleHintWeeksOne": "Ostatni odczyt 1 tydzień temu",
"staleHintWeeksOther": "Ostatni odczyt {count} tygodni temu",
"staleHintMonthsOne": "Ostatni odczyt 1 miesiąc temu",
"staleHintMonthsOther": "Ostatni odczyt {count} miesięcy temu",
"coachCta": "Zapytaj coacha",
"recentWorkouts": {
"title": "Ostatnie treningi",
"viewAll": "Zobacz wszystkie",
"loading": "Wczytywanie treningów…",
"empty": {
"title": "Brak treningów",
"cta": "Otwórz aplikację Apple Zdrowie na iPhonie, aby zsynchronizować treningi."
}
},
"metric": {
"title": {
"weight": "Waga",
"bloodPressure": "Ciśnienie krwi",
"pulse": "Tętno",
"bodyFat": "Tkanka tłuszczowa",
"glucose": "Glikemia",
"sleep": "Sen",
"steps": "Kroki",
"totalBodyWater": "Całkowita woda w organizmie",
"boneMass": "Masa kostna",
"oxygenSaturation": "Saturacja tlenem"
},
"unit": {
"weight": "kg",
"bloodPressure": "mmHg",
"pulse": "bpm",
"bodyFat": "%",
"glucose": "mg/dL",
"sleep": "h",
"steps": "kroki",
"totalBodyWater": "kg",
"boneMass": "kg",
"oxygenSaturation": "%"
}
}
},
"measurements": {
"title": "Pomiary",
"subtitle": "Waga, ciśnienie tętnicze, tętno i więcej",
"addMeasurement": "Dodaj",
"editMeasurement": "Edytuj pomiar",
"type": "Typ",
"value": "Wartość",
"date": "Data",
"source": "Źródło",
"notes": "Notatki",
"typeWeight": "Waga",
"typeBloodPressure": "Ciśnienie krwi",
"typeBpSys": "Skur",
"typeBpDia": "Rozk",
"typePulse": "Tętno",
"typeBodyFat": "Tkanka tłuszczowa",
"typeSleep": "Sen",
"typeSteps": "Kroki",
"typeBloodGlucose": "Glikemia",
"typeTotalBodyWater": "Całkowita woda w organizmie",
"typeBoneMass": "Masa kostna",
"typeOxygenSaturation": "Saturacja tlenem",
"typeHeartRateVariability": "Zmienność rytmu serca",
"typeRestingHeartRate": "Tętno spoczynkowe",
"typeActiveEnergyBurned": "Aktywna energia",
"typeFlightsClimbed": "Pokonane piętra",
"typeWalkingRunningDistance": "Dystans marszu i biegu",
"typeVo2Max": "VO₂ max",
"typeBodyTemperature": "Temperatura ciała",
"typeFatFreeMass": "Masa beztłuszczowa",
"typeFatMass": "Masa tłuszczu",
"typeMuscleMass": "Masa mięśniowa",
"typeSkinTemperature": "Temperatura skóry",
"typePulseWaveVelocity": "Prędkość fali tętna",
"typeVascularAge": "Wiek naczyniowy",
"typeVisceralFat": "Tłuszcz trzewny",
"typeAudioExposureEnv": "Ekspozycja na hałas (otoczenie)",
"typeAudioExposureHeadphone": "Ekspozycja na hałas (słuchawki)",
"typeTimeInDaylight": "Czas w świetle dziennym",
"typeWalkingSteadiness": "Stabilność chodu",
"typeAudioExposureEvent": "Zdarzenie głośnego słuchania",
"typeRespiratoryRate": "Częstość oddechów",
"typeBodyMassIndex": "Wskaźnik masy ciała",
"typeLeanBodyMass": "Masa beztłuszczowa",
"typeWalkingHeartRateAverage": "Tętno przy chodzeniu (śr.)",
"typeWalkingAsymmetry": "Asymetria chodu",
"typeWalkingDoubleSupport": "Podwójna podpora chodu",
"typeWalkingStepLength": "Długość kroku",
"typeWalkingSpeed": "Prędkość chodu",
"glucoseContext": "Kontekst",
"glucoseContextFasting": "Na czczo (≥8 godz. bez jedzenia)",
"glucoseContextPostprandial": "Po posiłku (2 godz. po jedzeniu)",
"glucoseContextRandom": "Dowolny / bez kontekstu",
"glucoseContextBedtime": "Przed snem",
"unitHours": "Godziny",
"unitSteps": "Kroki",
"sourceManual": "Ręcznie",
"sourceWithings": "Withings",
"sourceImport": "Importuj",
"sourceAppleHealth": "Apple Health",
"systolicLabel": "Skurczowe (mmHg)",
"diastolicLabel": "Rozkurczowe (mmHg)",
"pulseLabel": "Tętno (uderz./min)",
"valueWithUnit": "Wartość ({unit})",
"timestamp": "Czas",
"notesPlaceholder": "np. po jedzeniu",
"formReset": "Resetuj formularz",
"saveError": "Błąd zapisu",
"duplicateTimestamp": "Pomiar tego typu już istnieje dla wybranej daty.",
"deleteError": "Błąd usuwania",
"invalidValue": "Wprowadź poprawną wartość.",
"invalidTimestamp": "Wybierz poprawną datę i godzinę.",
"loginRequired": "Zaloguj się, aby zobaczyć pomiary.",
"allTypes": "Wszystkie typy",
"filterByType": "Filtruj według typu",
"measurementCount": "{count} pomiarów",
"emptyTitle": "Brak pomiarów",
"emptyDescription": "Zarejestruj wagę, ciśnienie, tętno lub inne wartości, aby zauważyć trendy.",
"emptyFilteredTitle": "Żaden pomiar nie pasuje do filtra",
"emptyFilteredDescription": "Wybierz inny typ lub usuń filtr, aby zobaczyć wszystkie pomiary.",
"emptyAddFirst": "Zarejestruj pierwszy pomiar",
"emptyResetFilter": "Pokaż wszystkie typy",
"comment": "Komentarz",
"actions": "Akcje",
"deleteConfirmTitle": "Usunąć pomiar?",
"deleteConfirmDescription": "Ten pomiar zostanie nieodwracalnie usunięty.",
"pageInfo": "Strona {page} z {total}",
"previousPage": "Poprzednia strona",
"nextPage": "Następna strona",
"dailyTotalCaption": "({count} pomiarów)",
"expandDay": "Pokaż pomiary z tego dnia",
"collapseDay": "Ukryj pomiary z tego dnia",
"loadError": "Nie udało się załadować pomiarów."
},
"mood": {
"title": "Nastrój",
"subtitle": "Trend i wpisy nastroju",
"addEntry": "Dodaj",
"editEntry": "Edytuj wpis",
"moodLevel": "Nastrój",
"tags": "Tagi",
"tagsPlaceholder": "np. sport, praca, rodzina",
"tagsHelp": "Oddziel przecinkami",
"timestamp": "Czas",
"date": "Data",
"source": "Źródło",
"levelSuperGut": "Świetnie",
"levelGut": "Dobrze",
"levelOkay": "OK",
"levelSchlecht": "Źle",
"levelLausig": "Fatalnie",
"sourceMoodlog": "moodLog",
"allMoods": "Wszystkie nastroje",
"entryCount": "{count} wpisów",
"emptyTitle": "Brak wpisów nastroju",
"emptyDescription": "Zapisz, jak się dziś czujesz, aby z czasem dostrzec wzorce.",
"emptyFilteredTitle": "Żaden wpis nie pasuje do filtra",
"emptyFilteredDescription": "Wybierz inny poziom lub usuń filtr, aby zobaczyć wszystkie wpisy.",
"emptyAddFirst": "Zapisz pierwszy nastrój",
"emptyResetFilter": "Pokaż wszystkie nastroje",
"actions": "Akcje",
"formReset": "Resetuj formularz",
"saveError": "Błąd zapisu",
"deleteError": "Błąd usuwania",
"invalidTimestamp": "Wybierz poprawną datę i godzinę.",
"deleteConfirmTitle": "Usunąć wpis?",
"deleteConfirmDescription": "Ten wpis nastroju zostanie nieodwracalnie usunięty.",
"pageInfo": "Strona {page} z {total}",
"loginRequired": "Zaloguj się, aby zobaczyć wpisy nastroju."
},
"medications": {
"title": "Leki",
"subtitle": "Leki, harmonogramy i przyjęcia",
"loginRequired": "Zaloguj się, aby zarządzać lekami.",
"addMedication": "Dodaj",
"editMedication": "Edytuj lek",
"newMedication": "Nowy lek",
"firstMedication": "Dodaj pierwszy lek",
"emptyTitle": "Brak leków",
"emptyDescription": "Utwórz leki, dawki i okna czasowe, aby śledzić przestrzeganie.",
"loadFailed": "Nie udało się załadować leków",
"retryLoad": "Spróbuj ponownie",
"name": "Nazwa",
"dose": "Dawka",
"scheduleFrom": "Od",
"scheduleTo": "Do",
"scheduleLabel": "Etykieta",
"scheduleDays": "Dni",
"scheduleDaily": "Codziennie",
"inactive": "Wstrzymany",
"intakeHistory": "Historia przyjęć",
"openDetailPage": "Open medication detail page",
"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",
"categoryBloodPressure": "Ciśnienie krwi",
"categoryVitamin": "Witaminy",
"categoryThyroid": "Tarczyca",
"categoryHormone": "Hormony",
"categorySupplement": "Suplement",
"categoryPainRelief": "Przeciwbólowy",
"categoryAllergy": "Alergia",
"categoryDigestive": "Trawienne",
"categorySkin": "Pielęgnacja skóry",
"categorySleepAid": "Na sen",
"categoryDiabetes": "Diabetes",
"categoryAntibiotic": "Antibiotic",
"categoryOther": "Inne",
"daysSun": "Nd",
"daysMon": "Pn",
"daysTue": "Wt",
"daysWed": "Śr",
"daysThu": "Czw",
"daysFri": "Pt",
"daysSat": "Sob",
"back": "Wstecz",
"today": "Dzisiaj",
"yesterday": "Wczoraj",
"tomorrow": "Jutro",
"withoutNotification": "Bez powiadomienia",
"pausedSince": "Wstrzymane od",
"takeNow": "Przyjmij teraz",
"overdue": "Po terminie",
"veryOverdue": "Mocno po terminie",
"compliance7d": "Przestrzeganie 7 dni",
"compliance30d": "Przestrzeganie 30 dni",
"lastIntake": "Ostatnie przyjęcie:",
"nextIntake": "Następne przyjęcie:",
"dayStreak": "dni serii",
"taken": "Przyjęte",
"skipped": "Pominięte",
"intakeToastTaken": "{name} oznaczone jako przyjęte",
"intakeToastSkipped": "{name} pominięte",
"weekdaySunday": "Niedziela",
"weekdayMonday": "Poniedziałek",
"weekdayTuesday": "Wtorek",
"weekdayWednesday": "Środa",
"weekdayThursday": "Czwartek",
"weekdayFriday": "Piątek",
"weekdaySaturday": "Sobota",
"weekdaySundayPlural": "Niedziele",
"weekdayMondayPlural": "Poniedziałki",
"weekdayTuesdayPlural": "Wtorki",
"weekdayWednesdayPlural": "Środy",
"weekdayThursdayPlural": "Czwartki",
"weekdayFridayPlural": "Piątki",
"weekdaySaturdayPlural": "Soboty",
"formType": "Typ",
"formDose": "Dawka",
"formUnit": "Jednostka",
"formSchedule": "Okno czasowe",
"formTreatmentClass": "Klasa terapii",
"formTreatmentClassHelp": "Wybierz „Iniekcja GLP-1” dla cotygodniowych iniekcji jak Mounjaro, Ozempic, Wegovy, Zepbound. Odblokowuje kartę ciała i dziennik GLP-1.",
"treatmentClassGeneric": "Lek standardowy",
"treatmentClassGlp1": "Iniekcja GLP-1",
"glp1WeeklyPresetTitle": "Raz w tygodniu, w…",
"glp1WeeklyPresetHelp": "Większość agonistów receptora GLP-1 podawana jest raz w tygodniu. Stuknij dzień, aby ustawić rytm.",
"glp1WeeklyPresetSuggest": "Przejmij ostatnio wybrany dzień",
"glp1DosesPerUnit": "Dawki na pen / fiolkę",
"glp1DosesPerUnitPlaceholder": "np. 4 dla pena Mounjaro KwikPen",
"glp1DosesPerUnitHelp": "Opcjonalne — Mounjaro KwikPen = 4, Ozempic 0,25/0,5 mg = 4, Wegovy pen jednorazowy = 1. Zostaw puste, jeśli nie chcesz śledzić dawek na pen.",
"glp1LastInjection": "Ostatni termin: {label}",
"glp1LastInjectionWithSite": "Ostatni termin: {label} · {site}",
"glp1NextInjectionDays": "Następnie: {label} (za {days} dni)",
"glp1NextInjectionToday": "Następny termin: dziś",
"glp1NextInjectionTomorrow": "Następny termin: jutro",
"glp1RotationLast": "Ostatnie miejsce: {site}",
"glp1RotationSuggested": "Sugerowane: {site}",
"glp1LogSideEffect": "Zapisz działanie niepożądane",
"sideEffects": {
"section": "Skutki uboczne",
"addCta": "Dodaj",
"sheetTitle": "Zarejestruj skutek uboczny",
"categoryLabel": "Kategoria",
"entryLabel": "Objaw",
"severityLabel": "Nasilenie",
"severity": {
"mild": "Łagodne",
"moderate": "Umiarkowane",
"significant": "Wyraźne",
"severe": "Silne",
"verySevere": "Bardzo silne"
},
"notesLabel": "Notatka (opcjonalnie)",
"notesPlaceholder": "Cokolwiek warto zapamiętać, maks. 280 znaków",
"submitCta": "Zapisz",
"cancelCta": "Anuluj",
"emptyState": "Nie zarejestrowano jeszcze skutków ubocznych. Śledzenie może pomóc lekarzowi i ujawnić wzorce w czasie.",
"recentTitle": "Ostatnie 30 dni",
"loading": "Ładowanie…",
"deleteCta": "Usuń",
"deleteConfirm": "Usunąć ten wpis?",
"errorSeverity": "Nasilenie musi mieścić się w zakresie 1–5",
"errorEntry": "Wybierz objaw",
"categories": {
"gi": "Żołądkowo-jelitowe",
"metabolic": "Metaboliczne",
"injectionSite": "Miejsce wstrzyknięcia",
"cognitive": "Poznawcze",
"glp1Specific": "Specyficzne dla GLP-1"
},
"entries": {
"nausea": "Nudności",
"vomiting": "Wymioty",
"diarrhea": "Biegunka",
"constipation": "Zaparcia",
"abdominalPain": "Ból brzucha",
"hypoglycemiaSymptoms": "Objawy hipoglikemii",
"dehydration": "Odwodnienie",
"anorexia": "Utrata apetytu",
"electrolyteFatigue": "Zmęczenie elektrolitowe",
"injectionRedness": "Zaczerwienienie miejsca wstrzyknięcia",
"injectionSwelling": "Obrzęk miejsca wstrzyknięcia",
"injectionBruising": "Siniak w miejscu wstrzyknięcia",
"injectionInduration": "Stwardnienie miejsca wstrzyknięcia",
"brainFog": "Mgła umysłowa",
"dizziness": "Zawroty głowy",
"lowMood": "Obniżony nastrój",
"lowEnergy": "Brak energii",
"earlySatiety": "Wczesne uczucie sytości",
"gastroparesisLike": "Spowolnione opróżnianie żołądka",
"dysgeusia": "Zmiana smaku",
"gallbladderDiscomfort": "Dolegliwości pęcherzyka żółciowego"
}
},
"scheduling": {
"naturalLanguage": {
"title": "Opisz lek",
"description": "Opisz lek własnymi słowami, a my wstępnie wypełnimy formularz za Ciebie.",
"placeholder": "np. Mounjaro 5 mg co tydzień w środę rano od najbliższego poniedziałku",
"submit": "Wyodrębnij",
"submitBusy": "Wyodrębnianie…",
"cancel": "Anuluj",
"examples": {
"label": "Wypróbuj jeden z tych przykładów",
"weekly": "Mounjaro 5 mg co tydzień w środę rano",
"daily": "Ibuprofen 200 mg codziennie, 3 razy dziennie",
"rolling": "Metotreksat 7,5 mg co 7 dni od ostatniego wstrzyknięcia"
},
"error": {
"empty": "Najpierw wpisz opis.",
"tooLong": "Utrzymuj opis poniżej 2000 znaków.",
"rateLimit": "Zbyt wiele żądań — poczekaj chwilę i spróbuj ponownie.",
"noProvider": "Brak skonfigurowanego dostawcy AI — skonfiguruj go w Ustawieniach.",
"budget": "Osiągnięto dzienny limit AI — spróbuj jutro.",
"network": "Nie udało się połączyć z dostawcą AI — spróbuj ponownie."
}
},
"cadence": {
"section": "Cadence",
"label": "How often",
"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"
},
"weekdays": {
"label": "Days of the week",
"short": {
"mo": "Mo",
"tu": "Tu",
"we": "We",
"th": "Th",
"fr": "Fr",
"sa": "Sa",
"su": "Su"
},
"long": {
"mo": "Monday",
"tu": "Tuesday",
"we": "Wednesday",
"th": "Thursday",
"fr": "Friday",
"sa": "Saturday",
"su": "Sunday"
}
},
"intervalWeeks": {
"suffix": "weeks"
},
"dayOfMonth": {
"label": "Day"
},
"intervalMonths": {
"suffix": "months",
"dayOnLabel": "on day"
},
"yearly": {
"date": {
"label": "Date"
}
},
"rollingDays": {
"suffix": "days"
}
},
"timesOfDay": {
"section": "Times of day",
"label": "Times of day",
"empty": {
"cta": "Add the first time."
},
"add": "Add time",
"remove": "Remove",
"presets": {
"morning": "Morning",
"noon": "Noon",
"evening": "Evening",
"night": "Night"
},
"max": {
"reached": "Maximum reached — remove a time before adding another."
}
},
"courseWindow": {
"section": "Course window",
"startsOn": {
"label": "Starts on"
},
"endsOn": {
"label": "Ends on"
},
"noEndDate": "No end date",
"oneShotCaption": "(one-time dose)",
"invalidRange": "End date must be on or after the start date."
}
},
"wizard": {
"header": {
"stepOf": "Step {current} of {total}",
"createTitle": "New medication",
"editTitle": "Edit {name}"
},
"nav": {
"back": "Back",
"next": "Next",
"save": "Save",
"saveEdit": "Save changes"
},
"nl": {
"button": "Describe"
},
"steps": {
"step1": {
"title": "What's the medication called?",
"subline": "Exactly as it appears on the box.",
"label": "Name",
"placeholder": "e.g. Ramipril"
},
"step2": {
"title": "What kind of medication is it?",
"subline": "We use this for the right templates and analytics."
},
"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",
"unit": {
"mg": "mg",
"ml": "ml",
"iu": "IU",
"mcg": "µg",
"g": "g",
"tablets": "tablet(s)",
"capsules": "capsule(s)",
"drops": "drops",
"puffs": "puff",
"sprays": "spray",
"pieces": "pieces",
"other": "other"
},
"deliveryFormLabel": "Droga podania",
"deliveryForm": {
"ORAL": "Doustnie",
"INJECTION": "Iniekcja",
"OTHER": "Inna"
},
"dosesPerUnitLabel": "Dawki na jednostkę",
"dosesPerUnitPlaceholder": "np. 4",
"dosesPerUnitHint": "Dawki na wstrzykiwacz / fiolkę — zostaw puste, aby nie śledzić zapasów.",
"injectionSiteToggle": "Rotacja miejsc wstrzyknięcia",
"injectionSiteHint": "Opcjonalny przewodnik rotacji. Miejsce każdej dawki zapisywane jest przy rejestrowaniu przyjęcia."
},
"step4": {
"title": "Over what period are you taking it?",
"subline": "A start date is enough for today. You can add an end date later."
},
"step5": {
"title": "How often do you take it?",
"subline": "Pick the cadence — the details follow on the next step."
},
"step6": {
"title": "What does that look like in detail?",
"subline": "Set weekdays, intervals, or the day of the month.",
"intervalWeeks": {
"label": "Every",
"suffix": "weeks"
},
"dayOfMonth": {
"label": "On",
"suffix": "day of the month"
},
"rollingDays": {
"label": "Every",
"suffix": "days from the last intake"
}
},
"step7": {
"title": "When do you take it?",
"subline": "One or more times of day — reminders follow this list.",
"presetsLabel": "Time-of-day presets",
"presets": {
"morning": "Morning",
"noon": "Noon",
"evening": "Evening",
"night": "Night"
}
},
"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."
}
},
"classRow": {
"bloodPressure": "Blood pressure",
"diabetes": "Diabetes",
"hormone": "Hormones",
"glp1": "GLP-1 injection",
"painRelief": "Pain",
"allergy": "Allergy",
"vitamin": "Vitamins",
"supplement": "Supplement",
"antibiotic": "Antibiotic",
"other": "Other"
},
"cadence": {
"daily": {
"label": "Daily",
"description": "Every day at the same time."
},
"weekdays": {
"label": "Specific weekdays",
"description": "E.g. Monday, Wednesday, Friday."
},
"everyNWeeks": {
"label": "Every few weeks",
"description": "E.g. every 2 weeks on Thursdays (GLP-1, biologics)."
},
"monthly": {
"label": "Monthly",
"description": "On a fixed day each month (e.g. always the 1st)."
},
"rolling": {
"label": "Flexible from last dose",
"description": "Leave the next dose open. When you tap 'taken', the counter starts again from that moment."
},
"oneShot": {
"label": "Single dose",
"description": "One administration, e.g. a vaccine or an antibiotic course."
}
},
"summary": {
"title": "Summary",
"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"
},
"weekdaysDetail": ", on {days}",
"dayOfMonthDetail": ", on day {day}.",
"times": "at {times}",
"startsOn": "Starts: {date}",
"endsOn": "Ends: {date}",
"noEndDate": "No end date"
},
"compose": {
"scheduleIndex": "Schedule {n} of {total}",
"list": {
"add": "Add another schedule",
"edit": "Edit",
"remove": "Remove",
"removeDisabled": "At least one schedule is required.",
"empty": "No schedule yet."
}
},
"errors": {
"submitFailed": "Could not save the medication — please retry."
}
},
"titration": {
"section": "Schemat titracji",
"loading": "Wczytywanie danych titracji",
"loadFailed": "Nie udało się wczytać danych titracji.",
"drugLadderHeader": "Standardowy schemat (referencja EMA)",
"typicalWeeksOnStep": "≥ {weeks} tyg. typowo",
"youAreHere": "Jesteś tutaj",
"nextStepCaption": "Następny stopień (typowo): {dose} mg po ~{weeks} tygodniach na obecnym stopniu.",
"ceilingMessage": "Jesteś na najwyższym stopniu schematu standardowego.",
"escalationDueHint": "Jesteś na tym stopniu od {weeks} tygodni; schemat zwykle przewiduje przejście wyżej po ~{typical} tygodniach.",
"currentStepDwell": "Na tym stopniu od {weeks} tygodni",
"doseUnitMg": "mg",
"emptyState": "Brak historii dawek. Zarejestruj dawkę, aby zobaczyć swoją pozycję w schemacie.",
"nonStandardDose": "Aktualna dawka jest poza standardowymi stopniami schematu.",
"disclaimer": "Wartości referencyjne EMA. Skonsultuj się z lekarzem przed zmianą dawki.",
"emaSourceCta": "Źródło EMA",
"stepLabel": "Stopień {n}"
},
"injectionSiteBodyOutlineAriaLabel": "Sylwetka ciała",
"injectionSitePickerAriaLabel": "Wybór miejsca iniekcji",
"siteAbdomenLeft": "Brzuch, dolny lewy",
"siteAbdomenRight": "Brzuch, dolny prawy",
"siteAbdomenUpperLeft": "Brzuch, górny lewy",
"siteAbdomenUpperRight": "Brzuch, górny prawy",
"siteThighLeft": "Lewe udo",
"siteThighRight": "Prawe udo",
"siteUpperArmLeft": "Lewe ramię",
"siteUpperArmRight": "Prawe ramię",
"sideEffectTagsHelp": "Stuknij chip, aby dodać go do tagów nastroju.",
"sideEffectTagNausea": "Nudności",
"sideEffectTagConstipation": "Zaparcia",
"sideEffectTagDiarrhea": "Biegunka",
"sideEffectTagFatigue": "Zmęczenie",
"sideEffectTagAppetiteLoss": "Utrata apetytu",
"sideEffectTagHeartburn": "Zgaga",
"sideEffectTagHeadache": "Ból głowy",
"newSchedule": "Nowe okno czasowe",
"removeSchedule": "Usuń okno czasowe",
"advancedEditing": "Edycja zaawansowana",
"advancedEditingHide": "Ukryj edycję zaawansowaną",
"scheduleInterval": "Interwał",
"scheduleEveryWeek": "co tydzień",
"scheduleEveryNWeeks": "co {n} tygodni",
"scheduleIntervalPrefix": "Interwał:",
"nextSchedulePrefix": "Następne okno:",
"nextScheduleDaily": "codziennie",
"importIntakesAction": "Importuj przyjęcia",
"apiEndpointAction": "Endpoint API",
"pause": "Wstrzymaj",
"activate": "Aktywuj",
"disableNotifications": "Wyłącz powiadomienia",
"enableNotifications": "Włącz powiadomienia",
"purgeRecords": "Usuń zapisy",
"formReset": "Resetuj formularz",
"createMedication": "Utwórz lek",
"deleteConfirmDescription": "Ten lek i wszystkie jego przyjęcia zostaną nieodwracalnie usunięte.",
"purgeConfirmTitle": "Usunąć wszystkie przyjęcia?",
"purgeConfirmDescription": "Wszystkie zarejestrowane przyjęcia tego leku zostaną nieodwracalnie usunięte.",
"saveError": "Błąd zapisu",
"deleteError": "Błąd usuwania",
"purgeError": "Błąd czyszczenia rekordów",
"invalidTimestamp": "Wybierz poprawną datę i godzinę.",
"noIntakesYet": "Brak zarejestrowanych przyjęć.",
"actions": "Akcje",
"pageInfo": "Strona {page} z {total}",
"previousPage": "Poprzednia strona",
"nextPage": "Następna strona",
"loginRequiredIntakes": "Zaloguj się, aby zobaczyć historię przyjęć.",
"phaseConfig": "Fazy przypomnień",
"phaseConfigDescription": "Skonfiguruj momenty przypomnień.",
"phaseGreen": "Zielony",
"phaseYellow": "Żółty",
"phaseOrange": "Pomarańczowy",
"phaseRed": "Czerwony",
"phaseMinutes": "Min",
"phasePercent": "%",
"phaseBeforeEnd": "przed końcem",
"phaseAfterEnd": "po końcu",
"phaseResetDefaults": "Przywróć wartości domyślne",
"phaseSaved": "Fazy przypomnień zapisane",
"phaseReset": "Przywrócono wartości domyślne",
"sourceWeb": "Web",
"sourceApi": "Aplikacja iOS",
"sourceReminder": "Przypomnienie",
"sourceImport": "Import",
"intakeSourceVia": "przez {origin}",
"intakeHistoryEmptyTitle": "Brak przyjęć",
"intakeHistoryEmptyDescription": "Gdy tylko zarejestrujesz przyjęcie, pojawi się tu wraz z godziną i źródłem.",
"intakeHistoryEmptyAction": "Zarejestruj przyjęcie",
"intakeHistoryColTaken": "Przyjęty",
"intakeHistoryColScheduled": "Zaplanowany",
"intakeHistoryColStatus": "Status",
"intakeHistoryColSource": "Źródło",
"intakeHistoryStatusTaken": "Przyjęty",
"intakeHistoryStatusSkipped": "Pominięty",
"intakeHistorySortByTaken": "Sortuj wg czasu przyjęcia",
"intakeHistorySortByScheduled": "Sortuj wg czasu zaplanowanego",
"intakeHistoryPageInfo": "Strona {page} z {total} · {count} wpisów",
"intakeHistoryPrev": "Poprzednia",
"intakeHistoryNext": "Następna",
"unitDrops": "kropli",
"unitTablets": "tabletek",
"unitCapsules": "kapsułek",
"unitPieces": "sztuk",
"namePlaceholder": "np. Ramipril",
"dosePlaceholder": "np. 5 mg",
"labelPlaceholder": "np. Rano",
"defaultDose": "Dawka standardowa",
"dayDeactivate": "Wyłącz {day}",
"dayActivate": "Włącz {day}",
"glp1": {
"drug": {
"tirzepatide": {
"name": "Tyrzepatyd"
},
"semaglutide": {
"name": "Semaglutyd"
},
"liraglutide": {
"name": "Liraglutyd"
},
"dulaglutide": {
"name": "Dulaglutyd"
},
"exenatide": {
"name": "Eksenatyd"
}
}
},
"researchMode": {
"dialog": {
"title": "Włącz tryb Badawczy",
"intro": "Tryb Badawczy dodaje szacowany wykres poziomu leku do twojej strony GLP-1. Przed jego włączeniem przeczytaj granicę poniżej — wykres jest pomocą edukacyjną, nigdy pomiarem i nigdy poradą medyczną.",
"whatItIsHeader": "Czym to jest",
"whatItIs": "Piłokształtną krzywą, która symuluje nakładanie się twoich zarejestrowanych dawek w czasie, na podstawie jednokompartmentowego modelu Batemana z parametrami absorpcji i okresu półtrwania opublikowanymi w EPAR EMA dla każdego zatwierdzonego agonisty GLP-1. Oś pionowa jest bezjednostkowa i nieopisana. To kształt, a nie liczba, jest tym, co pokazuje wykres.",
"whatItIsntHeader": "Czym to nie jest",
"whatItIsnt": "Nie jest poziomem we krwi. Nie jest pomiarem. Nie jest prognozą faktycznej reakcji twojego organizmu. Nie jest podstawą żadnej decyzji o dawce, czasie ani eskalacji. We wszystkim, co dotyczy sposobu przyjmowania leku, porozmawiaj z lekarzem prowadzącym.",
"whyEstimateHeader": "Dlaczego to oszacowanie",
"whyEstimate": "Farmakokinetyka populacyjna opisuje typowego pacjenta. Zmienność osobnicza jest duża — model Schneck/Urva 2024 dla tirzepatydu raportuje około 22 % międzyosobniczej zmienności absorpcji i około 49 % objętości dystrybucji. Krzywa z podręcznika nie uchwyci ani twojej masy ciała, ani funkcji nerek, ani techniki iniekcji, ani precyzji czasu. Czytaj krzywą jako rytm dawkowania, a nie twój poziom.",
"mdrBoundaryHeader": "Granica regulacyjna",
"mdrBoundary": "HealthLog wyświetla publiczne dane regulacyjne i twoje własne wpisy. Aplikacja nie prognozuje, nie diagnozuje, nie leczy i nie rekomenduje żadnej terapii. Rozporządzenie UE 2017/745 (Medical Device Regulation, MDR) oraz dokument MDCG 2021-24 wyznaczają granicę przy oprogramowaniu interpretującym dane do celów medycznych — ten wykres pozostaje zdecydowanie po edukacyjnej stronie tej granicy. Jeśli kiedykolwiek poczujesz, że kieruje cię w stronę decyzji klinicznej, zamknij go.",
"citationsHeader": "Źródła",
"citations": "European Public Assessment Reports EMA dla Mounjaro, Ozempic, Wegovy, Saxenda, Trulicity, Byetta i Bydureon (Sekcja 5.2). Schneck K, Urva S. Population pharmacokinetics of the GIP/GLP receptor agonist tirzepatide. CPT Pharmacometrics Syst Pharmacol 2024;13(3):494-503 (DOI 10.1002/psp4.13099).",
"versionLine": "Wersja disclaimera: {version}",
"acknowledgeCta": "Rozumiem — włącz",
"cancelCta": "Anuluj",
"successToast": "Tryb Badawczy włączony. Krzywa poziomu leku jest teraz widoczna na twojej stronie GLP-1.",
"errorToast": "Nie udało się włączyć trybu Badawczego. Spróbuj ponownie.",
"staleVersionToast": "Disclaimer został zaktualizowany od czasu wczytania tej strony. Odśwież, aby przeczytać aktualną wersję."
},
"chart": {
"title": "Szacowany poziom leku",
"axisLabel": "Szacowany poziom (względny)",
"emptyState": "Brak zarejestrowanych przyjęć.",
"emptyStateCta": "Zarejestruj dawkę, aby zobaczyć kształtującą się krzywą szacunkową.",
"estimateNote": "Edukacyjne oszacowanie z opublikowanej przez EMA farmakokinetyki populacyjnej. To nie jest pomiar.",
"gatedTitle": "Tryb Badawczy wyłączony",
"gatedBody": "Włącz tryb Badawczy w Ustawieniach, aby zobaczyć szacowaną krzywą poziomu leku. Krzywa jest opt-in, ponieważ to pomoc edukacyjna, a nie pomiar kliniczny.",
"gatedStaleTitle": "Disclaimer wymaga ponownego potwierdzenia",
"gatedStaleBody": "Disclaimer trybu Badawczego został zaktualizowany od czasu twojego ostatniego potwierdzenia. Przeczytaj go ponownie w Ustawieniach i potwierdź, aby krzywa znów się pojawiła.",
"gatedCta": "Otwórz tryb Badawczy w Ustawieniach",
"unknownDrug": "{name} nie znajduje się w katalogu GLP-1 zatwierdzonym przez EMA, więc HealthLog nie może wyrysować krzywej farmakokinetyki populacyjnej."
}
},
"detail": {
"status": {
"active": "Active",
"paused": "Paused",
"ended": "Ended"
},
"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."
},
"cadence": {
"oneShotOn": "One-time dose on {date}.",
"oneShotPending": "One-time dose pending."
},
"intake": {
"title": "Intake history",
"importButton": "Import",
"rowActions": {
"openMenu": "Open row actions",
"edit": "Edit",
"delete": "Delete"
},
"selection": {
"rowToggleLabel": "Select row"
},
"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."
},
"edit": {
"dialogTitle": "Edit intake",
"takenAtLabel": "Taken at",
"skippedLabel": "Skipped",
"noteLabel": "Note",
"save": "Save",
"cancel": "Cancel",
"savedToast": "Intake updated",
"failed": "Could not update the intake."
},
"deleteRow": {
"confirmTitle": "Delete this intake?",
"confirmBody": "The entry is removed permanently.",
"confirmAction": "Delete",
"toast": "Intake deleted",
"failed": "Could not delete the intake."
}
},
"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."
},
"settings": {
"title": "Settings",
"phases": {
"openButton": "Configure phases",
"requiresCourseWindow": "Phases are available once a course window is set."
},
"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."
}
},
"zone": {
"title": "Manage & danger zone",
"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."
},
"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."
},
"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."
},
"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."
}
},
"phases": {
"modeLabel": "{phase} mode",
"saveFailed": "Could not save the reminder phases."
},
"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."
},
"edit": {
"planOption": "Edytuj plan",
"advancedOption": "Ustawienia zaawansowane"
},
"advanced": {
"title": "Ustawienia zaawansowane",
"group": {
"data": "Dane",
"reminders": "Przypomnienia",
"lifecycle": "Cykl życia",
"danger": "Strefa zagrożenia"
},
"dataPortability": {
"import": {
"title": "Importuj przyjęcia",
"helper": "Wczytaj wcześniejsze przyjęcia z pliku JSON lub wklejonego JSON.",
"button": "Importuj JSON"
},
"export": {
"title": "Eksportuj lek",
"helper": "Pobierz ten lek jako plik CSV.",
"includeIntake": "Dołącz historię przyjęć",
"button": "Eksportuj CSV"
}
}
},
"header": {
"historyLabel": "Zobacz historię przyjęć",
"advancedLabel": "Ustawienia zaawansowane"
},
"history": {
"back": "Powrót do leku",
"subtitle": "Pełna historia przyjęć",
"plannedSuffix": "zaplanowane",
"drugLevelDisclosure": "Pokaż szacowaną krzywą stężenia leku"
}
}
},
"charts": {
"loadingLabel": "Ładowanie wykresu…",
"loadingSlowHint": "Obliczanie analiz — to może chwilę potrwać.",
"weight": "Waga",
"bloodPressure": "Ciśnienie tętnicze",
"pulse": "Tętno",
"bodyFat": "Tkanka tłuszczowa",
"sleep": "Sen",
"steps": "Kroki",
"noData": "Brak danych w wybranym okresie",
"bucketWeekly": "Średnia tygodniowa",
"bucketMonthly": "Średnia miesięczna",
"points7Label": "7 pkt",
"points7Title": "Ostatnie 7 punktów",
"points30Label": "30 pkt",
"points30Title": "Ostatnie 30 punktów",
"points90Label": "90 pkt",
"points90Title": "Ostatnie 90 punktów",
"pointsAllLabel": "Wszystkie",
"pointsAllTitle": "Wszystkie dostępne punkty",
"systolic": "Skurczowe",
"diastolic": "Rozkurczowe",
"bodyWater": "Woda w organizmie",
"boneMass": "Masa kostna",
"spo2": "SpO₂",
"movingAverage7d": "Trend 7-dniowy",
"avg7dShort": "7D",
"avg30dShort": "30D",
"trend7dShort": "Trend 7-dniowy",
"trend": "Trend",
"perWeek": "/tydzień",
"totalDelta": "Łącznie",
"colorGreen": "Zielony:",
"colorOrange": "Pomarańczowy:",
"colorRed": "Czerwony:",
"mood": "Nastrój",
"moodScore": "Wynik nastroju",
"weekdays": {
"mon": "Pon",
"wed": "Śr",
"fri": "Pt",
"sun": "Nd"
},
"months": {
"jan": "Sty",
"feb": "Lut",
"mar": "Mar",
"apr": "Kwi",
"may": "Maj",
"jun": "Cze",
"jul": "Lip",
"aug": "Sie",
"sep": "Wrz",
"oct": "Paź",
"nov": "Lis",
"dec": "Gru"
},
"heatmapOnTime": "na czas",
"heatmapLate": "spóźniona",
"heatmapVeryLate": "mocno spóźniona",
"legendOnTime": "Na czas",
"legendLate": "Spóźniona",
"legendVeryLate": "Mocno spóźniona",
"legendMissed": "Pominięta",
"emptyStateTitle": "Zarejestruj więcej pomiarów, aby zobaczyć trendy",
"emptyStateDescription": "Zarejestruj co najmniej 3 wpisy, aby odblokować linię trendu.",
"needMoreDistinctDaysTitle": "Potrzeba więcej różnych dni",
"needMoreDistinctDaysDescription": "Rejestruj w więcej dni, aby odblokować linię trendu.",
"noDataInRangeTitle": "Brak danych w tym zakresie",
"noDataInRangeDescription": "Żadne pomiary nie mieszczą się w wybranym zakresie. Zmień zakres lub dodaj nowy pomiar.",
"personalBaseline": "Twoja średnia",
"deltaVsBaseline": "{delta} vs. twoja średnia",
"deltaUnchanged": "odpowiada twojej średniej",
"deltaVsTarget": "{delta} vs. cel"
},
"chart": {
"overlay": {
"controls": {
"title": "Warstwy wykresu",
"trendIndicator": "Trend 7-dniowy",
"trendArrow": "Strzałka trendu",
"targetRange": "Zakres docelowy",
"comparisonBaseline": "Porównanie",
"comparisonUnavailable": "Brak dostępnego poprzedniego okresu",
"tooltip": {
"openSettings": "Ustawienia warstw wykresu"
}
}
}
},
"comparison": {
"toggleLabel": "Porównaj z",
"toggleHint": "Porównuje bieżący okres z tym samym okresem rok wcześniej.",
"baseline": {
"none": "Wyłączone",
"lastMonth": "Poprzedni miesiąc",
"lastYear": "Poprzedni rok"
},
"captionLastMonth": "vs. poprzedni miesiąc",
"captionLastYear": "vs. poprzedni rok",
"deltaVs": {
"lastMonth": "{delta} vs. poprzedni miesiąc",
"lastYear": "{delta} vs. poprzedni rok"
},
"tooltipPrior": "Poprzedni okres",
"unavailable": {
"lastMonth": "Porównanie niedostępne — brak danych z poprzedniego miesiąca",
"lastYear": "Porównanie niedostępne — brak danych z poprzedniego roku"
},
"notAvailableForCompliance": "Porównanie niedostępne dla przestrzegania"
},
"insights": {
"noAnalysisYet": "Brak analizy.",
"assessmentPreparing": "Przygotowywanie oceny…",
"emptyTitle": "Jeszcze za mało danych",
"emptyDescription": "Insights pojawią się, gdy zarejestrujesz kilka pomiarów. Zacznij od wagi lub ciśnienia.",
"emptyAddMeasurement": "Zarejestruj pomiar",
"bmiEmptyTitle": "Dodaj wzrost, aby obliczyć BMI",
"bmiEmptyDescription": "BMI wymaga twojego wzrostu. Zapisz go w Ustawieniach → Konto.",
"bmiEmptyAction": "Otwórz ustawienia konta",
"noProviderConfigured": "Analiza niedostępna.",
"startAnalysis": "Uruchom analizę",
"refreshAnalysis": "Odśwież analizę",
"keyTakeaway": "Najważniejsze",
"findingsTitle": "Wnioski",
"heroFindingPositive": "Najważniejszy wniosek",
"heroFindingNeutral": "Najważniejszy wniosek",
"heroFindingAttention": "Do uwagi",
"heroFindingWarning": "Najważniejszy alert",
"correlationsTitle": "Korelacje",
"recommendationsTitle": "Rekomendacje",
"personalRecord": {
"badge": "PR",
"tooltip": "Rekord osobisty: {value} {unit} dnia {date}"
},
"recommendation": {
"source": "Źródło",
"viewSource": "Otwórz wytyczne w nowej karcie",
"rationale": "Dlaczego ta rekomendacja",
"rationaleWindow": "Okno",
"rationaleComparedTo": "W porównaniu z",
"rationaleDeviation": "Odchylenie",
"rationaleExpand": "Pokaż uzasadnienie",
"rationaleCollapse": "Ukryj uzasadnienie",
"legacyPayloadCta": "Insights zaktualizowane — wygeneruj ponownie, aby aktywować nowe wyjaśnienia",
"feedbackHelpful": "Przydatne",
"feedbackNotHelpful": "Mało przydatne",
"feedbackThanks": "Dzięki za opinię",
"feedbackConfirmed": "Opinia zapisana",
"feedbackAlreadyRated": "Już ocenione",
"confidence": "Pewność",
"confidenceAria": "Pewność: {value} na 100",
"confidenceHigh": "Wysoka pewność",
"confidenceMedium": "Średnia pewność",
"confidenceLow": "Niska pewność — mało danych",
"confidenceDraft": "Wersja robocza"
},
"dataFoundation": "Podstawa danych",
"dataGaps": "Braki danych:",
"lastUpdated": "Ostatnia aktualizacja",
"confidenceHoch": "Wysoka",
"confidenceMittel": "Średnia",
"confidenceGering": "Niska",
"loadError": "Nie udało się załadować analiz",
"heroGenerated": "Wygenerowano {time}",
"heroPersonalBaseline": "Na podstawie ostatnich 90 dni",
"heroRegenerate": "Wygeneruj ponownie",
"heroRegenerating": "Generowanie",
"regenerateAnalysis": "Uruchom analizę ponownie",
"regenerateSuccess": "Analiza wygenerowana ponownie",
"heroFallbackSubtitle": "Codzienne spojrzenie na twoje trendy — prosto z liczb, które rejestrujesz.",
"heroGreetingMorning": "Dzień dobry",
"heroGreetingAfternoon": "Dzień dobry",
"heroGreetingEvening": "Dobry wieczór",
"heroComingSoonTooltip": "Wkrótce",
"heroActionAskCoach": "Zapytaj coacha",
"healthScore": {
"label": "Wynik zdrowia",
"progressAria": "Postęp wyniku zdrowia",
"deltaVsLastWeek": "{delta} w porównaniu z ubiegłym tygodniem",
"deltaUnavailable": "Brak historii — zajrzyj w przyszłym tygodniu.",
"componentBp": "RR",
"componentWeight": "Waga",
"componentMood": "Nastrój",
"componentCompliance": "Przestrzeganie",
"disclaimer": "Wskazówka — nie ocena medyczna.",
"deltaExplainer": {
"trigger": "Co oznacza ta zmiana?",
"title": "Jak liczona jest ta zmiana",
"description": "Zmiana względem ubiegłego tygodnia: {delta}",
"body": "Wynik łączy ciśnienie, wagę, nastrój i przyjmowanie leków. Porównujemy dzisiejszy wynik z tym samym momentem tydzień wcześniej. Dodaj świeży pomiar lub wpis o nastroju, żeby pchnąć go w górę."
},
"provenance": {
"toggle": "Składa się z",
"weightLabel": "udział",
"mixedBanner": "Niektóre komponenty łączą wiele źródeł. Zestawienie pokazuje najświeższą wartość dla każdego komponentu.",
"footnote": "Wagi są przeskalowywane do dostępnych danych.",
"asOfLabel": "stan na {date}",
"provisional": "Wstępny — dostępne {count} z {total} danych",
"provisionalBadge": "Wstępne",
"sourceAria": "Źródło: {source}",
"sources": {
"manual": "Ręczne",
"withings": "Withings",
"appleHealth": "Apple Health",
"mixed": "Mieszane",
"none": "Brak danych"
}
}
},
"suggestedPrompts": {
"label": "Zapytaj mnie",
"whyMonday": "Dlaczego moje ciśnienie było wyższe w poniedziałek?",
"weightVsPulse": "Jak spadek wagi wpłynął na moje tętno?",
"weekVsMonth": "Porównaj ten tydzień z poprzednim miesiącem",
"tellMyDoctor": "Co powinienem powiedzieć lekarzowi?",
"medicationWorking": "Czy mój lek działa?"
},
"dailyBriefing": {
"title": "Briefing dnia",
"keyFindingsTitle": "Kluczowe wnioski",
"emptyTitle": "Jeszcze brak briefingu",
"emptyDescription": "Wygeneruj dzisiejszy briefing, aby zobaczyć podsumowanie trendów.",
"emptyAction": "Wygeneruj briefing",
"loadingLabel": "Przygotowanie briefingu"
},
"therapyTimeline": {
"title": "Historia terapii GLP-1",
"description": "Chronologiczna lista: zmiany dawki, iniekcje, zapasy i dni z działaniami niepożądanymi.",
"empty": "Brak zdarzeń GLP-1 w ostatnich 90 dniach.",
"doseTo": "Dawka na",
"pens": "Peny",
"sideEffects": "Działania niepożądane"
},
"trendsRow": {
"title": "Trendy",
"subtitle": "Ostatnie 30 dni w skrócie"
},
"vo2Max": {
"statLatest": "Aktualne",
"statMin": "Min",
"statMax": "Maks",
"empty": "Brak danych VO₂ max — zsynchronizuj Apple Health, aby uzupełnić ten widok."
},
"trendAnnotation": {
"emptyBp": "Potrzeba więcej danych, aby skomentować ten trend.",
"emptyWeight": "Potrzeba więcej danych, aby skomentować ten trend.",
"emptyMood": "Potrzeba więcej danych, aby skomentować ten trend.",
"confidenceHigh": "Wysoka pewność",
"confidenceModerate": "Średnia pewność",
"confidenceLow": "Niska pewność",
"pendingLabel": "Komentarz trendu jest generowany"
},
"correlationRow": {
"title": "Korelacje",
"subtitle": "Hipotezy zdefiniowane wcześniej, z progiem n ≥ 14 i p < 0,05",
"disclaimer": "Korelacje są obserwacyjne, nie przyczynowe — porozmawiaj z lekarzem, jeśli ciśnienie jest wysokie.",
"experimentCta": "Uruchom 7-dniowy eksperyment",
"experimentTooltip": "Wkrótce",
"emptyTitle": "Potrzeba więcej danych, aby pokazać tę korelację",
"sourceChip": "na podstawie {n} sparowanych pomiarów · {window}",
"sourceWindowLast30": "Ostatnie 30 dni",
"confidenceHigh": "Wysoka pewność",
"confidenceModerate": "Średnia pewność",
"confidenceLow": "Niska pewność",
"card": {
"bpComplianceTitle": "RR × przestrzeganie leków",
"bpComplianceSubtitle": "Dzienne skurczowe wobec % przestrzegania",
"moodPulseTitle": "Nastrój × tętno spoczynkowe",
"moodPulseSubtitle": "Nastrój i tętno spoczynkowe w tym samym dniu",
"weightWeekdayTitle": "Waga × dzień tygodnia",
"weightWeekdaySubtitle": "Waga pogrupowana wg dnia tygodnia"
}
},
"coach": {
"refusalOutOfScope": "Mogę pomóc tylko w sprawach danych zdrowotnych z twojego logu — pomiarów, leków, nastroju, trendów. Pytań spoza tego zakresu nie podejmuję.",
"refusalInjection": "Twoja wiadomość zawiera instrukcje, które próbują nadpisać moje wytyczne. Jestem coachem HealthLog i podsumowuję wyłącznie twoje własne dane zdrowotne — przeformułuj pytanie w tych ramach.",
"errorBudget": "Osiągnięto dzienny limit coacha. Limit resetuje się o północy (UTC).",
"errorProvider": "Coach nie mógł teraz skontaktować się z dostawcą analizy. Spróbuj za chwilę.",
"errorNetwork": "Brak połączenia z Internetem — spróbuj ponownie, gdy wrócisz online.",
"tagline": "Osobisty coach zdrowia, oparty na twoich danych.",
"newChat": "Nowa rozmowa",
"send": "Wyślij",
"thinking": "Myślę…",
"composerPlaceholder": "Zapytaj o swoje dane…",
"composerHint": "Enter wysyła, Shift+Enter przechodzi do nowej linii.",
"composerDisclaimer": "Odpowiedzi są generowane. Decyzje kliniczne należą do lekarza.",
"voiceComingSoon": "Wejście głosowe pojawi się z aplikacją iOS w v1.5.",
"threadEmpty": "Zapytaj o swoje trendy, leki lub pomiary, aby zacząć.",
"historyTitle": "Rozmowy",
"historySearchPlaceholder": "Szukaj w rozmowach…",
"historyEmpty": "Twoje rozmowy pojawią się tutaj. Zadaj pytanie, aby zacząć.",
"historyDeleteAria": "Usuń rozmowę",
"historyDeleteConfirm": "Usunąć tę rozmowę? Tego nie da się cofnąć.",
"sourcesTitle": "Do czego mam dostęp",
"sourcesFresh": "Aktualne",
"sourcesStale": "Nieaktualne",
"sourcesFooter": "Coach czyta tylko dane, które podłączyłeś.",
"evidenceLabel": "Na czym to się opiera?",
"metric": {
"bp": "Ciśnienie krwi",
"weight": "Waga",
"pulse": "Tętno",
"mood": "Nastrój",
"compliance": "Przestrzeganie zaleceń",
"general": "Ogólne",
"hrv": "HRV",
"sleep": "Sen",
"resting_hr": "Tętno spoczynkowe",
"steps": "Kroki",
"active_energy": "Aktywna energia",
"flights": "Piętra",
"distance": "Dystans",
"vo2_max": "VO₂ max",
"body_temp": "Temperatura ciała",
"medications": "Leki",
"anthropometrics": "Profil (wzrost, wiek, płeć)",
"walking_hr": "Tętno podczas chodzenia",
"respiratory_rate": "Częstość oddechów",
"spo2": "Saturacja krwi",
"pulse_wave_velocity": "Prędkość fali tętna",
"vascular_age": "Wiek naczyniowy",
"body_fat": "Tkanka tłuszczowa",
"fat_mass": "Masa tłuszczowa",
"fat_free_mass": "Masa beztłuszczowa",
"muscle_mass": "Masa mięśniowa",
"lean_body_mass": "Beztłuszczowa masa ciała",
"bone_mass": "Masa kostna",
"total_body_water": "Woda w organizmie",
"bmi": "BMI",
"visceral_fat": "Tłuszcz trzewny",
"glucose": "Glukoza",
"walking_steadiness": "Stabilność chodu",
"walking_asymmetry": "Asymetria chodu",
"walking_double_support": "Czas podwójnego podparcia",
"walking_step_length": "Długość kroku",
"walking_speed": "Prędkość chodu",
"audio_env": "Dźwięk otoczenia",
"audio_headphone": "Dźwięk słuchawek",
"audio_event": "Zdarzenia głośnego dźwięku",
"daylight": "Czas w świetle dziennym",
"skin_temp": "Temperatura skóry",
"workouts": "Treningi"
},
"window": {
"last7days": "Ostatnie 7 dni",
"last30days": "Ostatnie 30 dni",
"last90days": "Ostatnie 90 dni",
"lastYear": "od początku roku",
"allTime": "Cały okres"
},
"windowLabel": "Okres",
"settingsAriaLabel": "Ustawienia coacha",
"settingsTitle": "Ustawienia coacha",
"settingsDescription": "Ustaw, jak coach do ciebie mówi.",
"settingsToneLabel": "Ton",
"settingsToneWarm": "Ciepły",
"settingsToneNeutral": "Neutralny",
"settingsToneConcise": "Zwięzły",
"settingsVerbosityLabel": "Długość odpowiedzi",
"settingsVerbosityBrief": "Krótka",
"settingsVerbosityDefault": "Standardowa",
"settingsVerbosityDetailed": "Szczegółowa",
"settingsExcludeLabel": "Wyklucz metryki",
"settingsExcludeHint": "Coach nie zobaczy danych wybranych metryk.",
"settingsEvidenceLabel": "Pokazuj dowody domyślnie",
"settingsEvidenceHint": "Automatycznie otwiera pole dowodów pod każdą odpowiedzią.",
"settingsDefaultWindowLabel": "Domyślny okres analizy",
"settingsDefaultWindowHint": "Coach czyta ten okres na rozmowę, chyba że wybierzesz inny w nagłówku panelu.",
"settingsSave": "Zapisz",
"settingsSaved": "Zapisano.",
"settingsCancel": "Anuluj",
"feedbackHelpful": "Przydatne",
"feedbackUnhelpful": "Mało przydatne",
"feedbackThanks": "Dzięki za sygnał.",
"dailyLimitTitle": "Osiągnięto dzienny limit",
"dailyLimitBody": "Osiągnięto dzienny limit; reset o 00:00 UTC.",
"providerRateLimitTitle": "Dostawca z ograniczeniem",
"providerRateLimitBody": "Dostawca jest tymczasowo przeciążony; reset za ~5 min.",
"settingsContextLabel": "Wysyłaj kontekst",
"settingsContextHint": "Opcjonalne bloki, na których coach może się opierać. Wyłączenie pominie blok w każdej odpowiedzi.",
"cluster": {
"cardio": {
"label": "Sercowo-naczyniowe",
"hint": "Ciśnienie · tętno · HRV · tętno spoczynkowe i marszowe"
},
"body": {
"label": "Skład ciała",
"hint": "Waga · tłuszcz · mięśnie · BMI"
},
"activity": {
"label": "Aktywność",
"hint": "Kroki · energia · dystans · VO₂ max"
},
"workouts": {
"label": "Treningi",
"hint": "Biegi · przejażdżki · sesje"
},
"sleep": {
"label": "Sen",
"hint": "Czas trwania · fazy"
},
"mood": {
"label": "Nastrój",
"hint": "Codzienne wpisy nastroju"
},
"glucose": {
"label": "Glukoza",
"hint": "Pomiary na czczo i poposiłkowe"
},
"medication": {
"label": "Leki",
"hint": "Przestrzeganie · kontekst GLP-1"
},
"mobility": {
"label": "Mobilność i chód",
"hint": "Stabilność · asymetria · chód"
},
"environment": {
"label": "Środowisko",
"hint": "Hałas · światło · temp. skóry"
}
},
"settingsClustersLabel": "Dane widziane przez Coacha",
"settingsClustersHint": "Wybierz, które grupy danych Coach może czytać. Więcej danych to bogatsze odpowiedzi i większy prompt.",
"settingsClusterNoData": "Brak danych",
"sourcesMemberCount": "{count} wskaźników"
},
"relativeJustNow": "przed chwilą",
"relativeMinutesAgoOne": "{count} minutę temu",
"relativeMinutesAgoOther": "{count} minut temu",
"relativeHoursAgoOne": "{count} godzinę temu",
"relativeHoursAgoOther": "{count} godzin temu",
"relativeDaysAgoOne": "{count} dzień temu",
"relativeDaysAgoOther": "{count} dni temu",
"navOverview": "Przegląd",
"navBloodPressure": "Ciśnienie krwi",
"navWeight": "Waga",
"navPulse": "Tętno",
"navMood": "Nastrój",
"navMedication": "Lek",
"navBmi": "BMI",
"navSleep": "Sen",
"navHrv": "HRV",
"navRestingHr": "Tętno spoczynkowe",
"navOxygenSaturation": "Tlen",
"navBodyTemperature": "Temperatura",
"navActiveEnergy": "Energia czynna",
"navAriaLabel": "Przejdź do sekcji",
"tabStrip": {
"vitalsParent": {
"label": "Witalne",
"header": "Parametry witalne"
},
"bodyParent": {
"label": "Ciało",
"header": "Skład ciała"
},
"activityParent": {
"label": "Aktywność",
"header": "Aktywność i mobilność"
},
"cardiovascularParent": {
"label": "Sercowo-naczyniowe",
"header": "Markery sercowo-naczyniowe"
},
"hearingParent": {
"label": "Słuch",
"header": "Słuch i ekspozycja na dźwięk"
},
"environmentParent": {
"label": "Środowisko",
"header": "Środowisko"
},
"metabolicParent": {
"label": "Metaboliczne",
"header": "Metaboliczne"
}
},
"hrv": {
"title": "HRV",
"description": "Zmienność rytmu serca w czasie — sygnał regeneracji układu nerwowego, rejestrowany nocą przez Apple Watch i inne zgodne wearable.",
"chartTitle": "Zmienność rytmu serca",
"emptyState": {
"title": "Brak wartości HRV",
"description": "Wartości HRV pojawią się tutaj, gdy Apple Watch (lub zgodne urządzenie Withings) zsynchronizuje pomiary nocne."
}
},
"restingHr": {
"title": "Tętno spoczynkowe",
"description": "Dzienna linia bazowa rytmu serca — różna od tętna punktowego na stronie Pulse. Apple Zdrowie podaje jedną wartość na dobę.",
"chartTitle": "Tętno spoczynkowe",
"emptyState": {
"title": "Brak tętna spoczynkowego",
"description": "Tętno spoczynkowe pojawi się, gdy Apple Watch lub zgodne urządzenie Withings spędzi spokojny dzień na nadgarstku."
}
},
"oxygenSaturation": {
"title": "Saturacja tlenu",
"description": "Tlen we krwi (SpO₂) — kliniczny zakres normy 95–100 %, ze strefami docelowymi zacienionymi na wykresie.",
"chartTitle": "Saturacja tlenu",
"emptyState": {
"title": "Brak próbek SpO₂",
"description": "Próbki SpO₂ trafią tutaj, gdy zgodne wearable (Apple Watch, Withings ScanWatch) wykona pomiar."
}
},
"bodyTemperature": {
"title": "Temperatura ciała",
"description": "Trend temperatury rdzenia ciała w stopniach Celsjusza. Temperatura skóry z Withings działa na osobnej metryce.",
"chartTitle": "Temperatura ciała",
"emptyState": {
"title": "Brak temperatury ciała",
"description": "Zarejestruj pomiar lub pozwól wearable zsynchronizować jeden — trend pojawi się tutaj.",
"cta": "Zarejestruj temperaturę ciała"
}
},
"activeEnergy": {
"title": "Energia czynna",
"description": "Dzienna suma energii czynnej w kilokaloriach — jeden wiersz na dobę, z Apple Zdrowie lub aktywności Withings.",
"chartTitle": "Energia czynna",
"emptyState": {
"title": "Brak danych o energii czynnej",
"description": "Sumy energii czynnej pojawią się tutaj, gdy Apple Zdrowie lub urządzenie Withings zsynchronizuje pełny dzień."
}
},
"subPage": {
"blutdruckDescription": "Twój przebieg skurczowego/rozkurczowego z zakresami docelowymi dopasowanymi do wieku i oceną tekstową.",
"gewichtDescription": "Przebieg wagi na tle zdrowego pasma wyliczonego z twojego wzrostu, z oceną.",
"pulsDescription": "Resting pulse vs. the personalised Karvonen target band, plus a written assessment.",
"stimmungDescription": "Dzienne wartości nastroju w czasie wraz z oceną tekstową.",
"stimmungEmptyTitle": "Zarejestruj pierwszy nastrój",
"stimmungEmptyDescription": "Insights nastroju pojawiają się, gdy zarejestrujesz kilka wpisów. Stuknij poniżej, aby zacząć.",
"stimmungEmptyAction": "Otwórz dziennik nastroju",
"medikamenteDescription": "Kalendarz przyjęć dla każdego leku plus ocena tekstowa.",
"medikamenteEmptyTitle": "Dodaj pierwszy lek",
"medikamenteEmptyDescription": "Insights przestrzegania wymagają przynajmniej jednego zarejestrowanego leku.",
"medikamenteEmptyAction": "Otwórz leki",
"therapyTimelineDescription": "Chronologiczny protokół terapii GLP-1 — zmiany dawki, iniekcje, stan, działania niepożądane.",
"bmiDescription": "BMI obliczone z twojej wagi i wzrostu, z oceną.",
"target": {
"range": "Cel: {min}–{max} {unit}",
"bpRange": "Cel: {sysMin}–{sysMax} / {diaMin}–{diaMax} {unit}",
"inTargetShare": "{pct}% zarejestrowanych dni w zakresie celu",
"adjustLink": "Dostosuj zakres docelowy"
},
"explainer": {
"trigger": "Czym jest {title}?",
"bloodPressureTitle": "Ciśnienie krwi",
"bloodPressureBody": "Ciśnienie krwi to siła, z jaką krew napiera na ściany tętnic, zapisywana jako skurczowe do rozkurczowego (szczyt podczas uderzenia serca do wartości spoczynkowej między uderzeniami). Stale wysokie wartości z czasem obciążają serce i naczynia.",
"pulseTitle": "Tętno",
"pulseBody": "Tętno to liczba uderzeń serca na minutę. Pojedynczy pomiar odzwierciedla to, co robiłeś w danej chwili — w spoczynku wynosi zwykle 60–100 uderzeń na minutę i naturalnie rośnie przy ruchu, stresie lub kofeinie.",
"weightTitle": "Waga",
"weightBody": "Masa ciała to jeden z najprostszych sygnałów długoterminowego bilansu energetycznego i ogólnego zdrowia. Trend na przestrzeni tygodni liczy się znacznie bardziej niż pojedynczy odczyt, który zmienia się wraz z nawodnieniem, jedzeniem i porą dnia.",
"bmiTitle": "Wskaźnik masy ciała (BMI)",
"bmiBody": "BMI to waga podzielona przez wzrost do kwadratu — jedna liczba przypisująca Cię do szerokiej kategorii wagowej. To badanie przesiewowe dla populacji, a nie diagnoza, i nie odróżnia mięśni od tłuszczu.",
"sleepTitle": "Sen",
"sleepBody": "Długość snu to czas, który faktycznie przespałeś w nocy, podzielony na fazy lekką, głęboką i REM. Większość dorosłych potrzebuje około siedmiu do dziewięciu godzin; stała ilość i jakość wspierają regenerację, nastrój i metabolizm.",
"moodTitle": "Nastrój",
"moodBody": "Śledzenie nastroju rejestruje Twoje samopoczucie w czasie na prostej skali. Regularne zapisywanie ujawnia wzorce — jak sen, aktywność czy leki łączą się z samopoczuciem — których pojedynczy dzień nigdy nie pokaże.",
"medicationsTitle": "Przestrzeganie zaleceń lekowych",
"medicationsBody": "Przestrzeganie zaleceń to rzetelność przyjmowania leków zgodnie z zaleceniami, pokazana tu jako odsetek oczekiwanych dawek, które zarejestrowałeś. Regularne przyjmowanie często decyduje o tym, czy terapia działa zgodnie z zamierzeniem.",
"restingHrTitle": "Tętno spoczynkowe",
"restingHrBody": "Tętno spoczynkowe to częstość uderzeń serca w pełnym spoczynku, zwykle mierzona w nocy. Niższe tętno zwykle wskazuje na lepszą wydolność krążeniową, a rosnący trend może być wczesnym sygnałem stresu lub choroby.",
"hrvTitle": "Zmienność rytmu serca (HRV)",
"hrvBody": "HRV to drobna zmienność czasu między kolejnymi uderzeniami serca. Wyższa zmienność zwykle odzwierciedla dobrze zregenerowany, elastyczny układ nerwowy, a utrzymujący się spadek może sygnalizować zmęczenie, stres lub niewystarczającą regenerację.",
"oxygenSaturationTitle": "Saturacja tlenem (SpO₂)",
"oxygenSaturationBody": "SpO₂ to odsetek czerwonych krwinek przenoszących tlen. Wartości 95–100% są normalne w spoczynku; wartości utrzymujące się poniżej 90% wymagają uwagi, choć krótkie nocne spadki są częste.",
"bodyTemperatureTitle": "Temperatura ciała",
"bodyTemperatureBody": "Temperatura ciała odzwierciedla stan cieplny rdzenia, zwykle około 37 °C z niewielkimi dobowymi wahaniami. Utrzymujący się wzrost może wskazywać na infekcję, podczas gdy nocne pomiary na nadgarstku śledzą głównie zmiany względne, a nie wartość kliniczną.",
"activeEnergyTitle": "Energia aktywna",
"activeEnergyBody": "Energia aktywna to kalorie spalane przez ruch, ponad podstawowy wydatek w spoczynku. To bezpośrednia miara tego, jak aktywny fizycznie był Twój dzień.",
"workoutsTitle": "Treningi",
"workoutsBody": "Treningi to ustrukturyzowane sesje ćwiczeń rejestrowane przez Twoje urządzenia, wraz z typem, czasem trwania i energią. Ich śledzenie pokazuje, jak regularny trening kumuluje się przez tygodnie i jak wiąże się z innymi sygnałami zdrowotnymi.",
"respiratoryRateTitle": "Częstość oddechów",
"respiratoryRateBody": "Częstość oddechów to liczba wdechów na minutę. W spoczynku większość dorosłych oddycha około dwunastu do dwudziestu razy na minutę; utrzymujący się wzrost może towarzyszyć chorobie, wysiłkowi lub stresowi.",
"bodyWaterTitle": "Całkowita woda w organizmie",
"bodyWaterBody": "Całkowita woda w organizmie to udział płynów w masie ciała, wewnątrz i wokół komórek. Zmienia się wraz z nawodnieniem, posiłkami i aktywnością, więc trend w ciągu tygodni mówi więcej niż pojedynczy pomiar.",
"boneMassTitle": "Masa kostna",
"boneMassBody": "Masa kostna to szacowana waga minerałów w szkielecie. Pomiary z wagi są przybliżone, ale stabilny lub rosnący trend sprzyja długotrwałej wytrzymałości kości.",
"fatFreeMassTitle": "Masa beztłuszczowa",
"fatFreeMassBody": "Masa beztłuszczowa to wszystko w ciele, co nie jest tłuszczem — mięśnie, kości, narządy i woda. Utrzymanie lub jej budowanie przy spadku wagi zwykle wskazuje na zdrowszy skład ciała.",
"fatMassTitle": "Masa tłuszczowa",
"fatMassBody": "Masa tłuszczowa to łączna waga tłuszczu w ciele. Pewna ilość tłuszczu jest niezbędna dla hormonów i magazynowania energii, ale jego nadmiar — zwłaszcza w okolicy brzucha — zwiększa długoterminowe ryzyko zdrowotne.",
"muscleMassTitle": "Masa mięśniowa",
"muscleMassBody": "Masa mięśniowa to szacowana waga mięśni w ciele. Więcej mięśni wspiera siłę, metabolizm i sprawność, a ich utrzymanie z wiekiem zwykle wymaga aktywnego wysiłku.",
"visceralFatTitle": "Tłuszcz trzewny",
"visceralFatBody": "Tłuszcz trzewny to tłuszcz gromadzony głęboko w jamie brzusznej wokół narządów. W odróżnieniu od tłuszczu podskórnego jego wysoki poziom jest ściśle powiązany z chorobami serca i cukrzycą typu 2, więc im niżej, tym lepiej.",
"leanBodyMassTitle": "Beztłuszczowa masa ciała",
"leanBodyMassBody": "Beztłuszczowa masa ciała to całkowita waga pomniejszona o tłuszcz — mięśnie, kości, narządy i woda razem. Śledzenie jej obok wagi pokazuje, czy zmiany wynikają z mięśni, czy z tłuszczu.",
"flightsClimbedTitle": "Pokonane piętra",
"flightsClimbedBody": "Pokonane piętra liczą kondygnacje, które pokonujesz w górę każdego dnia, gdzie jedno piętro to około trzech metrów wzniesienia. To prosty wskaźnik codziennej aktywności i wysiłku nóg.",
"walkingDistanceTitle": "Dystans marszu i biegu",
"walkingDistanceBody": "Dystans marszu i biegu to droga, jaką pokonujesz pieszo każdego dnia. Uzupełnia liczbę kroków, pokazując, jak daleko się poruszałeś, a nie tylko jak często stawiałeś kroki.",
"walkingSteadinessTitle": "Stabilność chodu",
"walkingSteadinessBody": "Stabilność chodu szacuje, jak stabilny i zrównoważony jest twój sposób chodzenia, w skali od dobrej do niskiej. Niski poziom wskazuje na większe ryzyko upadku i warto omówić go z lekarzem.",
"walkingHeartRateTitle": "Tętno podczas chodzenia",
"walkingHeartRateBody": "Tętno podczas chodzenia to średni puls w trakcie równego marszu. Niższa wartość w czasie często odzwierciedla poprawę wydolności krążeniowej przy tym samym wysiłku.",
"walkingAsymmetryTitle": "Asymetria chodu",
"walkingAsymmetryBody": "Asymetria chodu to odsetek czasu, w którym kroki są nierówne między lewą a prawą nogą. Wyższy procent może wskazywać na ból, kontuzję lub problem z chodem wart sprawdzenia.",
"doubleSupportTimeTitle": "Czas podwójnego podparcia",
"doubleSupportTimeBody": "Czas podwójnego podparcia to udział każdego cyklu chodu, w którym obie stopy dotykają ziemi jednocześnie. Wyższy procent zwykle oznacza ostrożniejszy, mniej stabilny chód.",
"stepLengthTitle": "Długość kroku",
"stepLengthBody": "Długość kroku to średnia odległość od jednego postawienia stopy do następnego. Krótszy krok w czasie może odzwierciedlać zmęczenie, ostrożność lub zmianę sprawności ruchowej.",
"walkingSpeedTitle": "Prędkość chodu",
"walkingSpeedBody": "Prędkość chodu to tempo poruszania się po płaskim terenie. To dobrze zbadany wskaźnik ogólnego zdrowia i sprawności, a stałe lub rosnące tempo to dobry znak.",
"pulseWaveVelocityTitle": "Prędkość fali tętna",
"pulseWaveVelocityBody": "Prędkość fali tętna mierzy, jak szybko fala ciśnienia z każdego uderzenia serca przemieszcza się przez tętnice. Szybsza fala wskazuje na sztywniejsze tętnice, co wiąże się z wyższym ryzykiem sercowo-naczyniowym.",
"vascularAgeTitle": "Wiek naczyniowy",
"vascularAgeBody": "Wiek naczyniowy szacuje, jak stare zachowują się twoje tętnice w porównaniu z rzeczywistym wiekiem, na podstawie sztywności tętnic. Wiek naczyniowy niższy od rzeczywistego sugeruje zdrowsze naczynia krwionośne.",
"environmentalAudioTitle": "Poziom dźwięku otoczenia",
"environmentalAudioBody": "Poziom dźwięku otoczenia śledzi głośność otoczenia w decybelach. Długotrwała ekspozycja powyżej około 70 dB może z czasem uszkodzić słuch, więc niższe średnie dzienne są bezpieczniejsze.",
"headphoneAudioTitle": "Poziom dźwięku w słuchawkach",
"headphoneAudioBody": "Poziom dźwięku w słuchawkach śledzi w decybelach, jak głośno słuchasz przez słuchawki. Ściszanie głośności i robienie przerw chroni słuch w dłuższej perspektywie.",
"audioEventsTitle": "Zdarzenia głośnego dźwięku",
"audioEventsBody": "Zdarzenia głośnego dźwięku oznaczają momenty, gdy hałas wokół ciebie osiągnął poziom mogący przy wystarczającej ekspozycji uszkodzić słuch. Częste zdarzenia to sygnał, by poszukać cichszego otoczenia lub ochrony słuchu.",
"daylightTitle": "Czas w świetle dziennym",
"daylightBody": "Czas w świetle dziennym to ilość czasu spędzanego w świetle na zewnątrz każdego dnia. Regularne światło dzienne wspiera zdrowy rytm snu i czuwania oraz nastrój, a czas na świeżym powietrzu wiąże się ze zdrowiem oczu.",
"bloodGlucoseTitle": "Poziom glukozy we krwi",
"bloodGlucoseBody": "Poziom glukozy we krwi to ilość cukru we krwi, głównego źródła energii organizmu. Rośnie po jedzeniu i ustala się między posiłkami; wartości utrzymujące się wysoko mogą sygnalizować cukrzycę lub stan przedcukrzycowy.",
"skinTemperatureTitle": "Temperatura skóry",
"skinTemperatureBody": "Temperatura skóry to tutaj niewielka nocna zmiana temperatury nadgarstka względem twojej własnej wartości bazowej, a nie bezwzględny pomiar gorączki. Zmiany mogą odzwierciedlać sen, otoczenie, chorobę lub fazę cyklu menstruacyjnego."
}
},
"sleep": {
"title": "Sen",
"description": "Podział na fazy i nocna długość snu, dane z Apple Health.",
"headlineTitle": "Średnia na noc",
"headlineCaption": "Uśrednione z {count} nocy — {suffix}",
"headlineCaptionSuffix": "na noc",
"compositionTitle": "Rozkład faz",
"compositionSubtitle": "Ostatnie {nights} nocy",
"compositionAriaLabel": "Rozkład faz snu w {nights} nocach",
"stages": {
"deep": "Głęboki",
"rem": "REM",
"core": "Lekki",
"asleep": "Śpi",
"awake": "Czuwa",
"inBed": "W łóżku",
"unavailable": "Brak danych o fazach — synchronizacja faz przez Apple Health pojawi się w v1.5."
},
"empty": {
"title": "Brak danych o śnie",
"description": "Synchronizacja Apple Health pojawi się w v1.5 i wypełni ten widok automatycznie.",
"action": "Zarządzaj urządzeniami"
}
},
"correlations": "Korelacje",
"medicationCompliance": "Przestrzeganie leków",
"dayStreak": "{count} dni serii",
"compliance7d": "Przestrzeganie 7 dni",
"compliance30d": "Przestrzeganie 30 dni",
"taken": "Przyjęte",
"skipped": "Pominięte",
"missed": "Pominięte",
"generalStatusBadge": {
"good": "Dobrze",
"watch": "Obserwuj",
"critical": "Krytyczny"
},
"assessmentTitle": "Ocena",
"bloodPressureSectionTitle": "Ciśnienie krwi",
"weightSectionTitle": "Waga",
"pulseSectionTitle": "Tętno",
"bmiSectionTitle": "BMI",
"complianceNoData": "Brak danych o przestrzeganiu",
"generate": "Wygeneruj nową analizę",
"moodSectionTitle": "Nastrój",
"confidence": "Pewność",
"cached": "Z pamięci podręcznej",
"emptyState": {
"bloodPressure": {
"title": "Brak pomiarów ciśnienia krwi",
"description": "Zarejestruj pomiar ciśnienia, a pojawi się tu trend, udział w zakresie docelowym i klasyfikacja WHO.",
"cta": "Zarejestruj ciśnienie"
},
"weight": {
"title": "Brak pomiarów wagi",
"description": "Zarejestruj wagę, a trend, średnia krocząca i zakres docelowy pojawią się automatycznie.",
"cta": "Zarejestruj wagę"
},
"pulse": {
"title": "Brak pomiarów tętna",
"description": "Zarejestruj tętno, a w tym widoku pojawi się tętno spoczynkowe, HRV i VO₂ max.",
"cta": "Zarejestruj tętno"
},
"bmi": {
"title": "BMI jeszcze nie obliczone",
"description": "Po wpisaniu wzrostu i co najmniej jednej wagi pojawi się tu trend BMI z zakresami WHO.",
"cta": "Zarejestruj wagę"
},
"mood": {
"title": "Brak wpisów nastroju",
"description": "Zarejestruj nastrój, a pojawi się trend, pasmo stabilności i korelacje.",
"cta": "Zarejestruj nastrój"
},
"medication": {
"title": "Brak skonfigurowanych leków",
"description": "Skonfiguruj lek, a pojawi się adherencja, poziom we krwi i schemat titracji.",
"cta": "Dodaj lek"
},
"sleep": {
"title": "Brak danych o śnie",
"description": "Gdy pojawią się dane o śnie (ręcznie lub przez Withings / Apple Health), wyświetli się tu rozkład faz na noc.",
"cta": "Połącz Withings"
}
},
"navWorkouts": "Treningi",
"workouts": {
"title": "Treningi",
"description": "Ostatnie biegi, jazdy, marsze i treningi siłowe — zdeduplikowane między Apple Watch a Withings.",
"emptyState": {
"title": "Brak treningów",
"description": "Otwórz aplikację Apple Zdrowie na iPhonie, aby zsynchronizować treningi. Import aktywności z Withings także dorzuca marsze i przejażdżki."
},
"row": {
"duration": "Czas trwania",
"distance": "Dystans",
"energy": "Energia czynna"
},
"detail": {
"backToList": "Powrót do treningów",
"statsTitle": "Statystyki",
"statsDuration": "Czas trwania",
"statsDistance": "Dystans",
"statsActiveEnergy": "Energia czynna",
"statsAvgHr": "Średnie tętno",
"statsMaxHr": "Maks. tętno",
"statsMinHr": "Min. tętno",
"statsStepCount": "Kroki",
"statsElevation": "Przewyższenie",
"statsPace": "Tempo",
"statsSource": "Źródło",
"routeTitle": "Trasa",
"routeUnavailable": "Dla tego treningu nie zapisano trasy GPS.",
"hrChartTitle": "Tętno",
"hrChartUnavailable": "Próbki tętna co sekundę nie są zapisywane dla tego treningu.",
"notFound": "Nie znaleziono treningu.",
"loading": "Wczytywanie treningu…"
},
"sport": {
"walking": "Marsz",
"running": "Bieg",
"cycling": "Rower",
"hiking": "Górska wędrówka",
"swimming": "Pływanie",
"rowing": "Wioślarstwo",
"elliptical": "Orbitrek",
"stairClimber": "Stepper",
"yoga": "Joga",
"mindAndBody": "Mind and body",
"strength": "Siła",
"hiit": "HIIT",
"dance": "Taniec",
"golf": "Golf",
"tennis": "Tenis",
"basketball": "Koszykówka",
"soccer": "Piłka nożna",
"crossTraining": "Cross-trening",
"mixedCardio": "Cardio mieszane",
"other": "Inne"
}
},
"bloodGlucose": {
"title": "Poziom glukozy",
"description": "Twoje odczyty glukozy w czasie, w mg/dL.",
"chartTitle": "Poziom glukozy",
"emptyState": {
"title": "Brak danych o glukozie",
"description": "Odczyty glukozy pojawią się tutaj po zapisaniu jednego lub synchronizacji urządzenia."
}
},
"navBloodGlucose": "Glukoza",
"totalBodyWater": {
"title": "Całkowita woda w organizmie",
"description": "Twoja całkowita woda w organizmie w czasie, w kilogramach.",
"chartTitle": "Całkowita woda w organizmie",
"emptyState": {
"title": "Brak danych o wodzie",
"description": "Odczyty wody pojawią się tutaj po synchronizacji wagi analitycznej."
}
},
"navTotalBodyWater": "Woda w organizmie",
"boneMass": {
"title": "Masa kostna",
"description": "Twoja masa kostna w czasie, w kilogramach.",
"chartTitle": "Masa kostna",
"emptyState": {
"title": "Brak danych o masie kostnej",
"description": "Odczyty masy kostnej pojawią się tutaj po synchronizacji wagi analitycznej."
}
},
"navBoneMass": "Masa kostna",
"flightsClimbed": {
"title": "Pokonane piętra",
"description": "Kondygnacje schodów pokonane każdego dnia.",
"chartTitle": "Pokonane piętra dziennie",
"emptyState": {
"title": "Brak danych o piętrach",
"description": "Sumy pięter pojawią się tutaj po synchronizacji dnia przez Apple Health."
}
},
"navFlightsClimbed": "Piętra",
"walkingRunningDistance": {
"title": "Dystans marsz + bieg",
"description": "Dystans marszu i biegu pokonany każdego dnia, w kilometrach.",
"chartTitle": "Dystans dziennie",
"emptyState": {
"title": "Brak danych o dystansie",
"description": "Dzienny dystans pojawi się tutaj po synchronizacji dnia przez Apple Health."
}
},
"navWalkingRunningDistance": "Dystans",
"fatFreeMass": {
"title": "Masa beztłuszczowa",
"description": "Twoja masa beztłuszczowa w czasie, w kilogramach.",
"chartTitle": "Masa beztłuszczowa",
"emptyState": {
"title": "Brak danych",
"description": "Odczyty pojawią się tutaj po synchronizacji wagi analitycznej."
}
},
"navFatFreeMass": "Masa beztłuszczowa",
"fatMass": {
"title": "Masa tłuszczowa",
"description": "Twoja masa tłuszczowa w czasie, w kilogramach.",
"chartTitle": "Masa tłuszczowa",
"emptyState": {
"title": "Brak danych",
"description": "Odczyty pojawią się tutaj po synchronizacji wagi analitycznej."
}
},
"navFatMass": "Masa tłuszczowa",
"muscleMass": {
"title": "Masa mięśniowa",
"description": "Twoja masa mięśniowa w czasie, w kilogramach.",
"chartTitle": "Masa mięśniowa",
"emptyState": {
"title": "Brak danych",
"description": "Odczyty pojawią się tutaj po synchronizacji wagi analitycznej."
}
},
"navMuscleMass": "Masa mięśniowa",
"skinTemperature": {
"title": "Temperatura skóry",
"description": "Temperatura skóry nadgarstka w czasie, w stopniach Celsjusza.",
"chartTitle": "Temperatura skóry",
"emptyState": {
"title": "Brak danych",
"description": "Odczyty pojawią się tutaj po synchronizacji nocnej temperatury przez urządzenie."
}
},
"navSkinTemperature": "Temp. skóry",
"pulseWaveVelocity": {
"title": "Prędkość fali tętna",
"description": "Prędkość fali tętna tętniczego w czasie, w m/s — wyższe wartości sugerują sztywniejsze tętnice.",
"chartTitle": "Prędkość fali tętna",
"emptyState": {
"title": "Brak danych",
"description": "Odczyty pojawią się tutaj po synchronizacji zgodnego urządzenia Withings."
}
},
"navPulseWaveVelocity": "Prędkość fali tętna",
"vascularAge": {
"title": "Wiek naczyniowy",
"description": "Twój szacowany wiek naczyniowy w czasie, w latach.",
"chartTitle": "Wiek naczyniowy",
"emptyState": {
"title": "Brak danych",
"description": "Szacunki pojawią się tutaj po synchronizacji zgodnego urządzenia Withings."
}
},
"navVascularAge": "Wiek naczyniowy",
"visceralFat": {
"title": "Tłuszcz trzewny",
"description": "Twój wskaźnik tłuszczu trzewnego w czasie.",
"chartTitle": "Tłuszcz trzewny",
"emptyState": {
"title": "Brak danych",
"description": "Wskaźniki pojawią się tutaj po synchronizacji zgodnej wagi analitycznej."
}
},
"navVisceralFat": "Tłuszcz trzewny",
"audioExposureEnv": {
"title": "Hałas otoczenia",
"description": "Twoja średnia dzienna ekspozycja na dźwięk otoczenia, w dBA.",
"chartTitle": "Ekspozycja na dźwięk otoczenia",
"emptyState": {
"title": "Brak danych",
"description": "Poziomy dźwięku pojawią się tutaj po synchronizacji Apple Health."
}
},
"navAudioExposureEnv": "Hałas otoczenia",
"audioExposureHeadphone": {
"title": "Dźwięk słuchawek",
"description": "Twoja średnia dzienna ekspozycja na dźwięk słuchawek, w dBA.",
"chartTitle": "Ekspozycja słuchawek",
"emptyState": {
"title": "Brak danych",
"description": "Poziomy pojawią się tutaj po synchronizacji Apple Health."
}
},
"navAudioExposureHeadphone": "Dźwięk słuchawek",
"timeInDaylight": {
"title": "Czas w świetle dziennym",
"description": "Minuty spędzone w świetle dziennym każdego dnia.",
"chartTitle": "Światło dzienne dziennie",
"emptyState": {
"title": "Brak danych",
"description": "Sumy pojawią się tutaj po synchronizacji dnia przez Apple Health."
}
},
"navTimeInDaylight": "Światło dzienne",
"walkingSteadiness": {
"title": "Stabilność chodu",
"description": "Twoja stabilność chodu w czasie, w procentach.",
"chartTitle": "Stabilność chodu",
"emptyState": {
"title": "Brak danych",
"description": "Odczyty pojawią się tutaj po synchronizacji Apple Health."
}
},
"navWalkingSteadiness": "Stabilność chodu",
"audioExposureEvent": {
"title": "Głośne zdarzenia dźwiękowe",
"description": "Dni ze zdarzeniem ekspozycji na głośny hałas.",
"chartTitle": "Zdarzenia hałasu dziennie",
"emptyState": {
"title": "Brak danych",
"description": "Zdarzenia pojawią się tutaj po synchronizacji Apple Health."
}
},
"navAudioExposureEvent": "Zdarzenia hałasu",
"respiratoryRate": {
"title": "Częstość oddechów",
"description": "Twoja częstość oddechów w czasie, w oddechach na minutę.",
"chartTitle": "Częstość oddechów",
"emptyState": {
"title": "Brak danych",
"description": "Odczyty pojawią się tutaj po synchronizacji oddechu snu lub treningu przez Apple Health."
}
},
"navRespiratoryRate": "Częstość oddechów",
"leanBodyMass": {
"title": "Beztłuszczowa masa ciała",
"description": "Twoja beztłuszczowa masa ciała w czasie, w kilogramach.",
"chartTitle": "Beztłuszczowa masa ciała",
"emptyState": {
"title": "Brak danych",
"description": "Odczyty pojawią się tutaj po synchronizacji wagi analitycznej."
}
},
"navLeanBodyMass": "Beztłuszczowa masa ciała",
"walkingHeartRateAverage": {
"title": "Tętno podczas chodu",
"description": "Twoje średnie tętno podczas chodzenia, w ud./min.",
"chartTitle": "Średnie tętno podczas chodu",
"emptyState": {
"title": "Brak danych",
"description": "Odczyty pojawią się tutaj po synchronizacji Apple Health."
}
},
"navWalkingHeartRateAverage": "Tętno podczas chodu",
"walkingAsymmetry": {
"title": "Asymetria chodu",
"description": "Twoja asymetria chodu w czasie, w procentach.",
"chartTitle": "Asymetria chodu",
"emptyState": {
"title": "Brak danych",
"description": "Odczyty pojawią się tutaj po synchronizacji Apple Health."
}
},
"navWalkingAsymmetry": "Asymetria chodu",
"walkingDoubleSupport": {
"title": "Czas podwójnego podparcia",
"description": "Odsetek każdego kroku z obiema stopami na ziemi.",
"chartTitle": "Czas podwójnego podparcia",
"emptyState": {
"title": "Brak danych",
"description": "Odczyty pojawią się tutaj po synchronizacji Apple Health."
}
},
"navWalkingDoubleSupport": "Podwójne podparcie",
"walkingStepLength": {
"title": "Długość kroku",
"description": "Twoja średnia długość kroku w czasie, w metrach.",
"chartTitle": "Długość kroku",
"emptyState": {
"title": "Brak danych",
"description": "Odczyty pojawią się tutaj po synchronizacji Apple Health."
}
},
"navWalkingStepLength": "Długość kroku",
"walkingSpeed": {
"title": "Prędkość chodu",
"description": "Twoja średnia prędkość chodu w czasie, w km/h.",
"chartTitle": "Prędkość chodu (km/h)",
"emptyState": {
"title": "Brak danych",
"description": "Odczyty pojawią się tutaj po synchronizacji Apple Health."
}
},
"navWalkingSpeed": "Prędkość chodu"
},
"thresholds": {
"defaultLabel": "Domyślne",
"autoModeLabel": "Auto",
"overrideModeLabel": "Niestandardowe",
"overrideToggleLabel": "Własne wartości",
"resetAction": "Przywróć wartość domyślną",
"resetAllAction": "Przywróć wszystkie wartości domyślne",
"minLabel": "Min",
"maxLabel": "Maks",
"unitSuffix": "({unit})",
"outOfBoundsHint": "Dozwolony zakres: {min}–{max} {unit}",
"overrideWarning": "Wartości poza wytycznymi mogą prowadzić do niezdrowych celów. Personalizuj tylko po konsultacji z lekarzem.",
"saveSuccess": "Cele zaktualizowane",
"saveError": "Nie udało się zapisać celów",
"resetSuccess": "Przywrócono wartość domyślną",
"sourceOverride": "Własna wartość",
"metricWeight": "Waga",
"metricBpSys": "Ciśnienie tętnicze (skurczowe)",
"metricBpDia": "Ciśnienie tętnicze (rozkurczowe)",
"metricPulse": "Tętno spoczynkowe",
"metricBodyFat": "Tkanka tłuszczowa",
"metricSleep": "Czas snu",
"metricSteps": "Kroki/dzień",
"metricGlucoseFasting": "Glikemia — na czczo",
"metricGlucosePostprandial": "Glikemia — po posiłku",
"metricGlucoseRandom": "Glikemia — dowolna",
"metricGlucoseBedtime": "Glikemia — przed snem",
"metricBodyWater": "Woda w organizmie",
"metricBoneMass": "Masa kostna",
"metricOxygenSaturation": "Saturacja tlenem (SpO₂)",
"unsetExplanation": "Brak własnej wartości — aktywna jest wartość domyślna."
},
"onboarding": {
"errorGeneric": "Coś poszło nie tak podczas kończenia konfiguracji. Spróbuj ponownie.",
"tour": {
"stepOf": "Krok {current} z {total}",
"next": "Dalej",
"back": "Wstecz",
"skip": "Pomiń tour",
"done": "Rozumiem",
"restart": "Uruchom tour ponownie",
"restartHint": "Pokaż tour panelu przy następnym wejściu.",
"restartConfirmation": "Tour ruszy ponownie przy twojej następnej wizycie w panelu.",
"steps": {
"tileStrip": {
"title": "Twoje wartości dzienne",
"body": "Pasek kafelków pokazuje ostatnią wartość i 7-dniowy trend dla każdej metryki — waga, ciśnienie, tętno, nastrój. Niepotrzebne wyłączysz w Ustawienia → Panel."
},
"quickAdd": {
"title": "Zarejestrowane w dwóch stuknięciach",
"body": "Przyciskiem Dodaj zapisujesz pomiary lub nastroje bez opuszczania panelu. Formularz zapamiętuje ostatni kontekst i tagi."
},
"insights": {
"title": "Automatyczne insights",
"body": "Insights zamienia twoje wartości w przejrzysty przegląd zdrowia, z oceną ciśnienia, wagi i nastroju. Własny klucz lub domyślny — ty decydujesz."
},
"integrations": {
"title": "Połącz urządzenia",
"body": "W ustawieniach łączysz Withings (auto-sync wagi, ciśnienia i tętna), moodLog lub dostawcę analizy. Wszystko zostaje opcjonalne i zaszyfrowane."
},
"achievements": {
"title": "Zbieraj serie i odznaki",
"body": "Strona Osiągnięć śledzi codzienne serie zapisów, kamienie milowe ciśnienia i odznaki konsekwencji. Drobna motywacja do trzymania się planu."
}
}
},
"shell": {
"back": "Wstecz",
"skip": "Pomiń",
"next": "Dalej",
"step1of4": "Krok 1 z 4",
"step2of4": "Krok 2 z 4",
"step3of4": "Krok 3 z 4",
"step4of4": "Krok 4 z 4"
},
"goals": {
"title": "Co chcesz śledzić?",
"body": "Wybierz obszary, które są dla Ciebie ważne. Pulpit i przypomnienia dostosują się do Twojego wyboru.",
"helpHint": "Od jednego do trzech priorytetów zwykle sprawdza się najlepiej — możesz dodać kolejne w dowolnej chwili.",
"options": {
"weightManagement": "Kontrola wagi",
"bpTracking": "Ciśnienie",
"glucoseTracking": "Glukoza",
"sleepImprovement": "Lepszy sen",
"medicationCompliance": "Leki",
"generalWellness": "Ogólna forma"
}
},
"source": {
"title": "Połącz źródło",
"body": "Pobieraj pomiary automatycznie lub zostań przy wpisywaniu ręcznym — Twój wybór.",
"recommended": "Polecane",
"manual": {
"title": "Wpis ręczny",
"body": "Rejestruj pomiary samodzielnie, kiedy Ci pasuje. Działa na każdym urządzeniu, bez konta u podmiotu trzeciego."
},
"withings": {
"title": "Withings",
"body": "Wagi, ciśnieniomierze i trackery Withings synchronizują się automatycznie.",
"cta": "Połącz Withings"
},
"appleHealth": {
"title": "Apple Health",
"body": "Dane z iPhone'a i Apple Watch trafiają tu poprzez aplikację HealthLog na iOS.",
"badge": "Wraz z v1.5 (iOS)",
"disabledHint": "Dostępne po wydaniu aplikacji iOS."
}
},
"baseline": {
"title": "Kilka słów o Tobie",
"body": "Cztery opcjonalne pola doprecyzują wartości docelowe, BMI i przypomnienia. Wszystko możesz później zmienić w ustawieniach.",
"displayNameLabel": "Nazwa wyświetlana",
"displayNamePlaceholder": "Jak HealthLog ma się do Ciebie zwracać?",
"displayNameHint": "Pojawia się w powitaniu na pulpicie i w raportach.",
"heightLabel": "Wzrost (cm)",
"genderLabel": "Płeć",
"genderNone": "Wolę nie podawać",
"genderMale": "Mężczyzna",
"genderFemale": "Kobieta",
"dateOfBirthLabel": "Data urodzenia",
"dateOfBirthHint": "Używana wyłącznie do analiz zależnych od wieku.",
"saveCta": "Zapisz i kontynuuj"
},
"done": {
"title": "Wszystko gotowe",
"body": "Witaj na pokładzie. Pulpit czeka na Ciebie.",
"returnCta": "Otwórz pulpit"
},
"welcomeBack": {
"title": "Witaj ponownie",
"body": "Wstępne kroki masz już za sobą. Aby coś zmienić, otwórz ustawienia — wszystko, co skonfigurowałeś, da się tam edytować.",
"cta": "Otwórz pulpit"
},
"welcome": {
"title": "Witaj w HealthLog",
"carouselLabel": "Karuzela powitalna",
"slideOf": "Slajd {current} z {total}",
"prevSlide": "Poprzedni slajd",
"nextSlide": "Następny slajd",
"gotoSlide": "Przejdź do slajdu {index}",
"cta": "Zaczynamy",
"slide1": {
"title": "Śledź każdy sygnał",
"body": "Waga, ciśnienie, glukoza, sen, nastrój — wszystko w jednym dzienniku, który należy do Ciebie."
},
"slide2": {
"title": "Połącz swoje źródła",
"body": "Synchronizuj z Apple Health i Withings lub dodawaj odczyty ręcznie. Twoje dane zostają na Twoim serwerze."
},
"slide3": {
"title": "Zobacz wzorce",
"body": "Codzienne podsumowania, wykresy trendów i coach, który wskazuje co się zmieniło — wszystko na Twoim urządzeniu."
}
}
},
"gettingStarted": {
"title": "Pierwsze kroki",
"subtitle": "Szybkie zwycięstwa, aby wycisnąć z HealthLog maksimum.",
"progress": "{done} z {total} wykonanych",
"dismissAll": "Ukryj listę",
"dismissTooltip": "Ukryj ten punkt",
"items": {
"profileTitle": "Skonfiguruj profil",
"profileDescription": "Wzrost, data urodzenia i płeć odblokowują spersonalizowane cele.",
"profileCta": "Otwórz profil",
"measurementTitle": "Zarejestruj pierwszy pomiar",
"measurementDescription": "Jeden pomiar aktywuje kafelek — trend rysuje się od 5. pomiaru.",
"measurementCta": "Dodaj pomiar",
"medicationTitle": "Dodaj lek",
"medicationDescription": "Śledź przestrzeganie i otrzymuj przypomnienia dokładnie wtedy, kiedy ich potrzebujesz.",
"medicationCta": "Dodaj lek",
"withingsTitle": "Połącz Withings (opcjonalnie)",
"withingsDescription": "Automatycznie synchronizuj wagę, ciśnienie i tętno z urządzeń Withings.",
"withingsCta": "Połącz",
"notificationsTitle": "Skonfiguruj powiadomienia",
"notificationsDescription": "Wybierz, jak HealthLog ma ci przypominać — Telegram, ntfy lub Web Push.",
"notificationsCta": "Otwórz powiadomienia"
}
},
"trendHints": {
"title": "Pierwszy trend po 5 pomiarach",
"remainingOne": "Jeszcze 1 pomiar do trendu.",
"remainingMany": "Jeszcze {count} pomiarów do trendu."
},
"settings": {
"researchMode": {
"sectionTitle": "Tryb Badawczy",
"subtitle": "Opcjonalne wyświetlanie szacowanej krzywej poziomu leku GLP-1, wyprowadzonej z farmakokinetyki populacyjnej opublikowanej przez EMA. Tylko do odczytu — nigdy pomiar ani porada medyczna.",
"toggleLabel": "Pokaż szacowaną krzywą poziomu leku",
"disabledStatus": "Wyłączone. Krzywa jest ukryta.",
"enabledStaleStatus": "Disclaimer został zaktualizowany. Potwierdź ponownie poniżej, aby przywrócić krzywą.",
"acknowledgedOn": "Potwierdzono {date}.",
"rePromptTitle": "Zaktualizowano disclaimer",
"rePromptBody": "Disclaimer trybu Badawczego został zaktualizowany od czasu twojego ostatniego potwierdzenia. Przeczytaj go ponownie i potwierdź, aby krzywa pozostała widoczna.",
"rePromptCta": "Potwierdź ponownie disclaimer",
"disableError": "Nie udało się wyłączyć trybu Badawczego. Spróbuj ponownie."
},
"shell": {
"sectionsNav": "Settings sections"
},
"sections": {
"account": {
"title": "Konto",
"description": "Profile, password, passkeys, and your onboarding tour."
},
"integrations": {
"title": "Integracje",
"description": "Withings, moodLog, and other connected services."
},
"notifications": {
"title": "Kanały powiadomień",
"description": "Live overview of every configured channel."
},
"dashboard": {
"title": "Pulpit",
"description": "Tile layout and order."
},
"thresholds": {
"title": "Cele i źródła",
"description": "Dla każdej metryki: własny zakres docelowy i które źródło wygrywa, gdy kilka rejestruje tę samą wartość tego samego dnia."
},
"sources": {
"title": "Sources",
"description": "Pick which ingest source wins when more than one records the same metric for the same day.",
"redirectNotice": "Źródła są teraz częścią „Cele i źródła”.",
"cardTitle": "Source priority by metric",
"help": "When more than one source delivers the same value on the same day (e.g. Withings and Apple Health both report 1,200 steps), the top source counts as the canonical reading. Other sources stay stored for the audit trail.",
"resetDefaults": "Reset to defaults",
"moveUp": "Move up",
"moveDown": "Move down",
"saveSuccess": "Source priority saved.",
"saveError": "Saving the source priority failed.",
"resetSuccess": "Source priority reset to defaults.",
"perMetricToggle": "Per-metric overrides ({count})",
"perMetricHelp": "Metrics you have customised away from the default ladder. Use this list to roll any single metric back to its constant default without touching the rest.",
"perMetricEmpty": "No per-metric overrides set — every metric uses the global ladder above.",
"resetMetric": "Resetuj",
"deviceTypeToggle": "Device-type priority ({count})",
"deviceTypeHelp": "Within a source, which device wins. When an Apple Watch and an iPhone both record steps, the higher-ranked device-type counts as the canonical reading.",
"deviceTypeDefault": "Default device-type ladder",
"resetDeviceTypes": "Reset device-types",
"metrics": {
"steps": "Kroki",
"activeEnergy": "Active energy",
"walkingRunningDistance": "Walking + running distance",
"flightsClimbed": "Flights climbed",
"sleep": "Sen",
"weight": "Waga",
"bloodPressure": "Ciśnienie krwi",
"pulse": "Tętno",
"bodyFat": "Tkanka tłuszczowa",
"bodyTemperature": "Body temperature",
"spo2": "Oxygen saturation",
"hrv": "Heart-rate variability",
"restingHeartRate": "Tętno spoczynkowe",
"vo2Max": "VO2 max"
},
"sourceLabels": {
"WITHINGS": "Withings",
"APPLE_HEALTH": "Apple Health",
"MANUAL": "Manual entry",
"IMPORT": "Importuj"
},
"deviceLabels": {
"watch": "Watch",
"band": "Band",
"ring": "Ring",
"phone": "Phone",
"scale": "Scale",
"other": "Other",
"unknown": "Nieznane"
}
},
"ai": {
"title": "Insights",
"description": "Provider, model, key."
},
"api": {
"title": "API & Tokens",
"description": "Bearer tokens for your own scripts and apps — log measurements or medication intake from anywhere."
},
"advanced": {
"title": "Zaawansowane",
"description": "Opt-in przełącznika trybu Badawczego oraz strefa zagrożenia umożliwiająca nieodwracalne wymazanie wszystkich danych zdrowotnych."
},
"export": {
"title": "Eksportuj",
"description": "Download your health data as PDF, CSV, or a full JSON backup.",
"otherOptionsHeading": "Inne opcje eksportu",
"hero": {
"eyebrow": "Wizyta u lekarza",
"valueStatement": "Raport PDF do druku na wizytę u lekarza — parametry życiowe, BMI, klasyfikacja ciśnienia, przestrzeganie leczenia oraz (opcjonalnie) zapis nastroju, na kilku stronach.",
"cta": "Skonfiguruj i wygeneruj raport",
"formatHint": "PDF · gotowe do druku"
},
"actions": {
"download": "Download"
},
"filters": {
"since": "Od",
"until": "Until"
},
"cards": {
"doctorReport": {
"title": "Doctor Report",
"description": "Printable PDF for the doctor's appointment — vitals, BMI, BP classification, medication compliance, mood."
},
"measurementsCsv": {
"title": "Measurements",
"description": "Weight, blood pressure, pulse, glucose, and every other measurement as comma-separated values."
},
"medicationsCsv": {
"title": "Leki",
"description": "Your medication list with dosage, schedules, and (optionally) the full intake history.",
"includeIntake": "Include intake history"
},
"moodCsv": {
"title": "Nastrój",
"description": "Daily mood entries with score, tags, and timestamps."
},
"fullBackup": {
"title": "Full backup",
"description": "Single JSON file with everything — same shape as the weekly auto-backup. Useful for self-restore via admin upload."
}
}
},
"about": {
"title": "About",
"description": "Version, license, links."
}
},
"profile": "Profil",
"language": "Język",
"languageDescription": "Choose the display language of the application.",
"username": "Nazwa użytkownika",
"height": "Height (cm)",
"dateOfBirth": "Data urodzenia",
"dateOfBirthHint": "Used for automatic blood pressure target calculations.",
"gender": "Płeć",
"genderNone": "Not specified",
"genderMale": "Mężczyzna",
"genderFemale": "Kobieta",
"genderHint": "Used for gender-specific target values.",
"timezone": "Strefa czasowa",
"timezoneHint": "Used for chart axis labels, reminder times, export timestamps, and Coach context. Stored data is unchanged.",
"timezoneInvalid": "Not a valid IANA timezone.",
"profileSaved": "Profile saved",
"avatar": {
"title": "Zdjęcie profilowe",
"description": "Prześlij zdjęcie przechowywane na własnym serwerze. Pojawia się w całej aplikacji zamiast zewnętrznej usługi awatarów.",
"upload": "Prześlij zdjęcie",
"replace": "Zmień zdjęcie",
"remove": "Usuń",
"hint": "JPEG, PNG lub WebP. Do 2 MB i 2048×2048 pikseli.",
"uploaded": "Zaktualizowano zdjęcie profilowe",
"removed": "Usunięto zdjęcie profilowe",
"invalidType": "Nieobsługiwany typ obrazu. Użyj JPEG, PNG lub WebP.",
"tooLarge": "Obraz przekracza limit 2 MB.",
"error": "Nie udało się zaktualizować zdjęcia profilowego. Spróbuj ponownie."
},
"changePassword": "Change password",
"changePasswordDescription": "Replace your current password with a new one.",
"passwordReset": "Password reset",
"currentPassword": "Current password",
"newPassword": "New password",
"confirmNewPassword": "Confirm new password",
"passwordMismatch": "New passwords do not match",
"passwordUpdated": "Password updated successfully",
"passkeys": "Passkeys",
"registeredPasskeys": "Registered Passkeys",
"passkeysDescription": "Passkeys allow secure login without a password.",
"passkeyName": "Nazwa",
"passkeyDevice": "Device",
"passkeyBackup": "Backup",
"passkeyCreated": "Created",
"passkeyActions": "Akcje",
"noPasskeys": "No passkeys registered.",
"addPasskey": "Add passkey",
"passkeyAdded": "Passkey added successfully!",
"passkeyOptionsError": "Could not load passkey options",
"passkeyRegistrationFailed": "Passkey registration failed",
"passkeyRegistrationCancelled": "Passkey registration cancelled",
"passkeyNotSupported": "Your browser or device doesn't support passkeys yet. Try a different browser or device.",
"passkeyAlreadyRegistered": "This device is already registered as a passkey for your account.",
"passkeySecurityBlocked": "Your browser blocked the passkey request for security reasons. Make sure you're on a trusted HTTPS origin and try again.",
"passkeyTimeout": "The passkey prompt timed out. Please try again.",
"passkeyUnknownError": "Passkey registration failed: {message}",
"deletePasskey": "Delete passkey?",
"deletePasskeyDescription": "The passkey will be permanently deleted.",
"singleDevice": "Single device",
"multiDevice": "Multi-device",
"backedUp": "backed up",
"telegram": "Telegram Notifications",
"telegramDescription": "Get reminders for missed medication intake via Telegram.",
"telegramSaved": "Telegram settings saved",
"botToken": "Bot Token",
"chatId": "Chat ID",
"enableNotifications": "Enable notifications",
"testMessage": "Test message",
"testSent": "Test message sent!",
"telegramStep1": "1. Create a bot via @BotFather in Telegram and copy the token.",
"telegramStep2": "2. Send /start to your bot to activate the chat.",
"telegramStep3": "3. Find your Chat ID via @userinfobot or the Bot API.",
"ntfy": "ntfy",
"ntfyDescription": "Notifications via ntfy (self-hosted or ntfy.sh).",
"ntfyEnable": "Enable ntfy",
"ntfyServer": "Server URL",
"ntfyTopic": "Topic",
"ntfyAuthToken": "Auth Token (optional)",
"ntfyAuthTokenHint": "Only needed for private topics with access control.",
"webPush": "Browser Push",
"webPushDescription": "Receive notifications directly in your browser, even when HealthLog is not open.",
"webPushNotSupported": "Your browser does not support push notifications.",
"webPushDenied": "Push notifications are blocked. Allow them in your browser settings.",
"webPushNotConfigured": "Web Push is not configured on the server.",
"webPushSubscribe": "Enable push",
"webPushUnsubscribe": "Disable push",
"webPushSubscribed": "Push notifications enabled!",
"webPushUnsubscribed": "Push notifications disabled.",
"webPushSubscribeFailed": "Activation failed",
"webPushActive": "Aktywne",
"kiInsightsDescription": "Optional: Save your OpenAI key for daily, automatic evaluations in Insights.",
"codexConnected": "ChatGPT connected successfully! Insights are now active.",
"codexDisconnected": "ChatGPT connection removed.",
"codexConnectionFailed": "ChatGPT connection failed. Please try again.",
"rawData": "Send raw data",
"rawDataOnDescription": "Aggregated metrics plus anonymized raw points from the last 30 days are sent. This includes per-metric measurements (for example weight, blood pressure, pulse) with time context so the provider can detect patterns, outliers, and correlations more reliably. Name, email, and direct account identifiers are not transmitted.",
"rawDataOffDescription": "Only summarized metrics are sent (for example averages, trends, minimum/maximum). No individual points and no exact time context. This is more privacy-preserving, but the provider can be less precise for short-term patterns and fluctuations.",
"rawDataWarning": "Raw mode enabled: the provider receives additional anonymized points from the last 30 days for higher analysis accuracy.",
"regenerateInsights": "Regenerate reports",
"regenerateSuccess": "Reports regenerated successfully",
"regenerateRateLimit": "Please wait — you've hit the hourly limit for analyses.",
"lastGeneratedAt": "Last generated",
"ai": {
"chatgptConnectedBadge": "ChatGPT connected",
"adminAiActiveBadge": "Admin provider active",
"connectionExpiredBadge": "Connection expired",
"connectedSince": "Connected since {when}.",
"deviceCodeHeading": "Finish connecting on chatgpt.com",
"deviceCodeStep1": "Open this link on any device:",
"deviceCodeStep2": "Enter this one-time code:",
"deviceCodeStep3": "Approve the connection — this page updates automatically.",
"deviceCodeCopy": "Kopiuj",
"deviceCodeWaiting": "Waiting for approval…",
"deviceCodeCancel": "Anuluj",
"oauthNotConfigured": "ChatGPT OAuth is not configured on this instance — use your own API key below instead.",
"modelLabel": "Model",
"modelOptionDefault": "— Default —",
"modelOptionCustom": "Custom…",
"customModelLabel": "Custom model name",
"anthropicKeyLabel": "Anthropic API key",
"baseUrlLabel": "Base URL",
"localKeyLabel": "API key (optional)",
"savedPreview": "(saved {preview})",
"savedShort": "(saved)",
"saveCta": "Zapisz",
"saved": "Zapisano",
"saveFailed": "Save failed",
"errorGeneric": "Błąd",
"providerChain": {
"types": {
"codex": "ChatGPT (Codex)",
"openai": "OpenAI (your key)",
"anthropic": "Anthropic (Claude)",
"local": "Local model",
"admin-openai": "Admin OpenAI"
},
"title": "Fallback chain",
"description": "If the primary provider fails, HealthLog walks the chain in order. Drag the rows to reorder, toggle the switch to disable a provider without removing it.",
"moveUp": "Move up",
"moveDown": "Move down",
"removeFromChain": "Remove from chain",
"addProvider": "Add provider",
"addNoneAvailable": "All providers already in chain",
"saveOrder": "Save chain order",
"saved": "Chain saved",
"saveFailed": "Saving the chain failed",
"resetDefaults": "Reset to defaults",
"resetConfirmTitle": "Reset chain to defaults?",
"resetConfirmBody": "The chain reverts to Codex → OpenAI → Anthropic → Local → Admin OpenAI. Your saved credentials are not touched."
},
"activeProviderHeading": "Active provider",
"activeProviderBody": "Pick the provider you want to use first. The form below configures only the selected provider; the fallback chain at the bottom decides what happens if it fails.",
"activeProviderLabel": "Primary provider",
"providerConfigTitle": "Provider configuration",
"providerSelect": {
"codex": "ChatGPT account (Codex)",
"openai": "OpenAI (your API key)",
"anthropic": "Anthropic (Claude)",
"local": "Local model (OpenAI-compatible)",
"admin-openai": "Admin-provided OpenAI"
},
"openai": {
"modelSelect": "Model",
"modelOptionCustom": "Custom slug…",
"modelCustomLabel": "Custom model slug",
"modelCustomPlaceholder": "gpt-5",
"baseUrlLabel": "Base URL (advanced)",
"baseUrlPlaceholder": "https://api.openai.com/v1",
"baseUrlHelp": "Override only when using an OpenAI-compatible gateway. Leave blank for OpenAI itself.",
"showAdvanced": "Show advanced",
"hideAdvanced": "Hide advanced",
"apiKey": "API key",
"apiKeyPlaceholder": "sk-…"
},
"codex": {
"statusConnected": "Connected",
"statusDisconnected": "Not connected",
"statusExpired": "Connection expired",
"connectButton": "Connect with ChatGPT",
"disconnectButton": "Disconnect",
"modelSlugLabel": "Model slug",
"modelSlugBody": "Codex uses the model your ChatGPT subscription routes to. The CODEX_MODEL environment variable lets ops override this on the instance.",
"lastInsight": "Last insight: {when}"
},
"adminOpenai": {
"title": "Admin OpenAI",
"body": "Operator-provided OpenAI key. Used as a last-ditch fallback when no personal provider is configured. There is nothing to configure on this row — visibility means the operator has set it up.",
"notConfigured": "The operator has not configured a shared OpenAI key on this instance."
},
"testProvider": "Test active provider",
"testSuccess": "OK — {provider} ({model})",
"testFailedShort": "Test failed: {message}",
"disableCoach": {
"title": "Ukryj Coacha",
"description": "Ukrywa przycisk Coacha i panel na wszystkich stronach.",
"toggleAria": "Ukryj przycisk Coacha i panel",
"savedHidden": "Coach ukryty.",
"savedShown": "Coach widoczny.",
"saveError": "Nie udało się zapisać zmiany. Spróbuj ponownie."
}
},
"dashboard": {
"units": {
"title": "Jednostki",
"description": "Wybierz sposób wyświetlania odległości i prędkości na wykresach i kafelkach.",
"metric": "Metryczne",
"imperial": "Imperialne",
"saved": "Zapisano preferencję jednostek.",
"saveError": "Nie udało się zapisać preferencji jednostek."
}
},
"withings": "Withings",
"withingsDescription": "Connect your Withings scale and blood pressure monitors.",
"withingsCredentials": "API Credentials",
"withingsClientId": "Client ID",
"withingsClientSecret": "Client Secret",
"withingsCredentialsSaved": "Credentials saved",
"withingsCredentialsSavedPlaceholder": "Saved — enter new to replace",
"withingsCredentialsSavedPlaceholderSecret": "Saved — enter new to replace",
"withingsSaveCredentials": "Save credentials",
"configured": "Configured",
"withingsSync": "Sync now",
"withingsFullSync": "Sync all data",
"withingsFullSyncTitle": "Full synchronization?",
"withingsFullSyncDescription": "All available Withings data will be fully synchronized. This may take some time depending on your history.",
"withingsSyncResult": "{count} measurements synchronized",
"withingsFullSyncResult": "{count} measurements fully synchronized",
"withingsSyncFailed": "Sync failed",
"withingsSynchronize": "Synchronize",
"withingsDisconnect": "Disconnect",
"withingsDisconnectTitle": "Disconnect Withings?",
"withingsDisconnectDescription": "The connection to Withings will be disconnected. Previously synced data will be preserved.",
"withingsConnect": "Connect with Withings",
"withingsNoCredentials": "Please enter your API credentials above to connect Withings.",
"integrations": {
"withings": {
"reconnect": {
"banner": {
"title": "Activity sync available",
"body": "Your Withings connection was authorised before activity sync was added. Reconnect once to enable steps, active energy, walking + running distance, and floors-climbed ingest from your Withings devices.",
"action": "Reconnect Withings"
}
}
}
},
"integrationPill": {
"connected": "Połączono",
"errorReconnect": "Błąd — połącz ponownie",
"warningServerError": "Połączono, błąd serwera",
"parkedReconnect": "Wstrzymane — połącz ręcznie",
"notConnected": "Nie połączono",
"justNow": "just now",
"minutesAgo": "{count} min ago",
"hoursAgo": "{count} h ago",
"daysAgo": "{count} d ago",
"ariaLabel": "Integration status",
"resumeCta": "Połącz ponownie",
"resumeSuccess": "Integracja wznowiona",
"resumeError": "Ponowne połączenie nieudane"
},
"apiTokens": "API Tokens",
"apiTokensDescription": "Create API tokens for external medication intake (e.g., Shortcuts, automations).",
"tokenNamePlaceholder": "Token name (e.g., iPhone Shortcut)",
"tokenCreated": "Token created — copy it now! It won't be shown again.",
"tokenRevoke": "Revoke token?",
"tokenRevokeDescription": "The token will be permanently deactivated. Applications using it will lose access.",
"tokenRevoked": "Revoked",
"tokenExpired": "Expired",
"tokenActive": "Aktywne",
"activeTokensTitle": "Active tokens",
"revokedTokensTitle": "Revoked tokens ({count})",
"tokenTableName": "Nazwa",
"tokenTablePermissions": "Permissions",
"tokenTableStatus": "Status",
"tokenTableCreated": "Created",
"tokenTableLastUsed": "Last used",
"tokenTableActions": "Akcje",
"noActiveTokens": "No active tokens available.",
"tokenNeverUsed": "Never",
"apiEndpointsTitle": "API endpoints",
"apiEndpointsDescription": "Overview of currently available external endpoint(s) for token-based ingestion.",
"apiEndpointMethod": "Method",
"apiEndpointPath": "Path",
"apiEndpointAuth": "Authentication",
"apiEndpointExample": "Body example",
"collapse": "Collapse",
"expand": "Expand",
"dangerZone": "Delete All Data",
"dangerZoneTitle": "Danger zone",
"dangerZoneDescription": "Deletes all your health data and integrations. Your user account will be preserved.",
"dangerZoneConfirm": "Delete all data?",
"dangerZoneConfirmDescription": "This will permanently delete all your health data and integrations. Your user account will be preserved.",
"dangerZoneSuccess": "All personal data has been deleted",
"dangerZoneDeleteFailed": "Deletion failed",
"finalDelete": "Delete permanently",
"deleteAccountCardTitle": "Delete account entirely",
"deleteAccountCardDescription": "Deletes your account along with passkeys, audit log, and sessions. This cannot be undone.",
"deleteAccountCta": "Delete account",
"deleteAccountConfirmTitle": "Delete account permanently?",
"deleteAccountConfirmDescription": "Your account, all health data, passkeys, sessions, and audit entries will be permanently deleted. You will be signed out immediately after.",
"deleteAccountSuccess": "Account deleted — signing you out.",
"deleteAccountFailed": "Account could not be deleted",
"deleteAccountFinal": "Delete permanently",
"saved": "Zapisano",
"savingError": "Error saving",
"moodLogTitle": "moodLog",
"moodLogDescription": "Import mood data from moodLog",
"moodLogUrl": "moodLog URL",
"moodLogUrlPlaceholder": "https://mood.example.com",
"moodLogApiKey": "API Key",
"moodLogApiKeyPlaceholder": "ml_...",
"moodLogWebhookSecret": "Webhook Secret",
"moodLogWebhookSecretHelp": "Enter this secret in moodLog as webhook secret",
"moodLogSync": "Start sync",
"moodLogFullSync": "Full sync",
"moodLogFullSyncConfirm": "Synchronize fully",
"moodLogFullSyncTitle": "Full sync?",
"moodLogFullSyncDescription": "All available mood data will be fully synchronized.",
"moodLogDisconnect": "Disconnect",
"moodLogDisconnectTitle": "Disconnect moodLog?",
"moodLogDisconnectDescription": "The connection will be removed and all imported mood data will be deleted.",
"moodLogEntries": "Entries",
"moodLogSyncResult": "{count} entries synchronized",
"moodLogSyncFailed": "Sync failed",
"moodLogSaved": "moodLog connection saved",
"moodLogDisconnected": "moodLog disconnected",
"about": {
"version": "App version",
"gitSha": "Build",
"builtAt": "Built {time}",
"builtAtLabel": "Built",
"license": "License",
"repository": "Source code",
"changelog": "Changelog",
"docs": "Documentation",
"linksHeading": "Źródła i dokumentacja",
"newerAvailable": "Nowa wersja: {tag}",
"tourReplay": "Obejrzyj samouczek",
"tourReplayHint": "Zobacz przewodnik po panelu — przydatne, jeśli pominąłeś go przy pierwszej wizycie."
},
"testConnection": {
"test": "Test connection",
"testing": "Testing…",
"ok": "Connected (latency {latency} ms)",
"errors": {
"credentials_rejected": "Credentials rejected — check your token",
"rate_limited": "Rate-limited by the upstream",
"timeout": "Request timed out",
"upstream_error": "Upstream returned an error",
"connection_failed": "Connection failed",
"not_configured": "Not configured",
"url_not_public": "URL is not a public endpoint",
"url_invalid": "URL is invalid",
"redirected": "Endpoint redirects — check the URL",
"endpoint_not_found": "Endpoint not found at the URL",
"credentials_unreadable": "Credentials cannot be decrypted",
"upstream_invalid_json": "Upstream sent invalid JSON",
"vapid_not_configured": "Web Push not configured (VAPID keys missing)",
"rate_limited_self": "Too many test requests",
"generic": "Test failed"
}
},
"notificationStatus": {
"title": "Channel reliability",
"description": "Live status of every notification channel — Auto-disabled means HealthLog stopped retrying after a permanent error.",
"emptyDescription": "No channels configured yet. Add a channel below to start tracking its delivery health.",
"stateActive": "Aktywne",
"stateAutoDisabled": "Auto-disabled",
"stateSendingPaused": "Sending paused",
"stateManuallyDisabled": "Wyłączone",
"lastSuccess": "Last successful send",
"lastFailure": "Last failure",
"consecutiveFailures": "Consecutive failures",
"disabledReason": "Reason",
"nextRetry": "Next retry",
"reEnable": "Re-enable",
"sendTest": "Send test"
},
"identity": {
"description": "Opcjonalne dane do eksportu dokumentacji zdrowotnej (okładka PDF + eksport FHIR). Wszystkie pola są opcjonalne.",
"fullName": "Imię i nazwisko",
"fullNamePlaceholder": "np. Anna Kowalska",
"insurer": "Ubezpieczyciel zdrowotny",
"insurerPlaceholder": "np. AOK Bayern",
"insuranceNumber": "Numer ubezpieczonego (KVNR)",
"insuranceNumberHint": "10 znaków: jedna litera + dziewięć cyfr (np. A123456780)."
},
"healthRecord": {
"title": "Eksportuj dokumentację zdrowotną",
"description": "Wygeneruj pełną dokumentację zdrowotną dla lekarza — jako PDF, ustrukturyzowaną (FHIR) lub łączny pakiet.",
"format": "Format",
"format_pdf": "PDF",
"format_fhir": "Ustrukturyzowany (FHIR)",
"format_package": "Pakiet: PDF + FHIR",
"range": "Okres",
"range90": "Ostatnie 90 dni",
"range180": "Ostatnie 6 miesięcy",
"range365": "Ostatnie 12 miesięcy",
"practiceName": "Gabinet (opcjonalnie)",
"practiceNamePlaceholder": "np. dr Kowalski",
"includedData": "Uwzględnione dane",
"groupVitals": "Parametry życiowe",
"groupCardio": "Serce i kondycja",
"groupActivity": "Aktywność i sen",
"weight": "Waga",
"bp": "Ciśnienie krwi",
"pulse": "Tętno",
"oxygenSaturation": "Saturacja tlenem",
"bodyFat": "Tkanka tłuszczowa",
"bodyComposition": "Skład ciała",
"restingHeartRate": "Tętno spoczynkowe",
"hrv": "Zmienność rytmu serca",
"vo2max": "VO₂max",
"steps": "Kroki",
"distance": "Dystans",
"sleep": "Sen",
"glucose": "Glukoza we krwi",
"medications": "Leki i przestrzeganie zaleceń",
"mood": "Nastrój (domyślnie wyłączony — dane wrażliwe)",
"bmi": "BMI",
"includeCharts": "Osadź wykresy trendów (tylko PDF)",
"includeAiSummary": "Dołącz podsumowanie AI (niezweryfikowane klinicznie)",
"fhirNote": "Dane ustrukturyzowane są zgodne ze standardem FHIR R4 (kompatybilne z ePA).",
"generate": "Generuj",
"error": "Eksport nie powiódł się ({code})."
}
},
"admin": {
"title": "Administration",
"subtitle": "System status, users, and settings",
"settingsSaveError": "Failed to save settings",
"systemStatus": "System Status",
"database": "Database",
"databaseConnected": "Connected",
"databaseError": "Błąd",
"startedAt": "Started",
"users": "Users",
"measurementsCount": "Measurements",
"activeTokens": "Active API Tokens",
"activeSessions": "Active Sessions",
"loadingStatus": "Loading status...",
"systemStatusLoadError": "Failed to load system status.",
"systemStatusRetry": "Spróbuj ponownie",
"adminSettingsLoadError": "Failed to load admin settings. Toggles below may not reflect the live state — refresh the page.",
"hostMetrics": {
"title": "Host load",
"load1": "Load (1m)",
"memUsedPercent": "Memory",
"diskBusyPercent": "Disk I/O",
"last2hours": "Last 2 hours",
"empty": "Sampling started — data appears in 1–2 minutes.",
"loadError": "Failed to load host metrics. Try refreshing the page."
},
"aiQuality": {
"title": "Insights Quality",
"loading": "Loading feedback summary...",
"loadError": "Failed to load Insights quality summary. Try refreshing the page.",
"empty": "No feedback yet. The aggregator runs daily at 04:00 — once users start rating recommendations, helpful-rate bands appear here.",
"windowLabel": "Last {days} days",
"generatedAtLabel": "Generated",
"colSeverity": "Severity",
"colMetric": "Metric",
"colProvider": "Provider",
"colPromptVersion": "Prompt",
"colHelpful": "Helpful",
"colNotHelpful": "Not helpful",
"colHelpfulRate": "Helpful rate"
},
"coachFeedback": {
"title": "Coach Feedback",
"loading": "Loading Coach feedback summary...",
"loadError": "Failed to load Coach feedback summary. Try refreshing the page.",
"empty": "No Coach feedback yet. The aggregator runs daily at 04:00 — once users rate Coach replies, helpful-rate bands appear here.",
"windowLabel": "Last {days} days",
"generatedAtLabel": "Generated",
"colPromptVersion": "Prompt version",
"colTone": "Tone",
"colVerbosity": "Verbosity",
"colHelpful": "Helpful",
"colNotHelpful": "Not helpful",
"colN": "n",
"colHelpfulRate": "Helpful rate"
},
"workerStatus": "Job Worker",
"workerRunning": "Running",
"workerStopped": "Stopped",
"lastReminderCheck": "Last Reminder Check",
"appSettings": "Application Settings",
"registrationEnabled": "Allow registration",
"registrationEnabledDescription": "When disabled, new users cannot register.",
"defaultLanguage": "Default language",
"defaultLanguageDescription": "Used for new users and as fallback.",
"defaultUserTimezone": "Default timezone for new accounts",
"defaultUserTimezoneDescription": "Used for new accounts that don't carry a browser-detected zone. Does not affect existing users.",
"defaultUserTimezoneFallback": "Europe/Berlin (default)",
"servicesGlobal": "Services (global)",
"servicesGlobalDescription": "Disabled services are not available to any user.",
"telegramGlobal": "Allow Telegram notifications.",
"ntfyGlobal": "Allow ntfy notifications.",
"webPushGlobal": "Allow browser push notifications.",
"moodLogGlobal": "Allow mood-log reminders.",
"integrationWebPush": "Web Push",
"integrationBugReport": "Bug Report",
"offlineGeoLabel": "Dane geograficzne",
"offlineGeoEnabled": "Offline (GeoLite2)",
"offlineGeoFallback": "Awaryjne (ipwho.is) — ustaw MAXMIND_LICENSE_KEY w CI",
"apiGlobal": "Allow API endpoints and API tokens.",
"umamiTitle": "Umami",
"umamiDescription": "Web analytics with Umami",
"glitchtipTitle": "GlitchTip",
"glitchtipDescription": "Error tracking with GlitchTip",
"webPushVapidTitle": "Web Push VAPID",
"umamiEnabled": "Enable Umami tracking.",
"umamiScriptUrl": "Umami script URL",
"umamiScriptUrlPlaceholder": "https://analytics.example.com/script.js",
"umamiWebsiteId": "Umami website ID",
"umamiWebsiteIdPlaceholder": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"glitchtipEnabled": "Enable GlitchTip error tracking.",
"glitchtipDsn": "GlitchTip DSN",
"glitchtipDsnPlaceholder": "https://<public-key>@glitchtip.example.com/<project-id>",
"glitchtipEnvironment": "GlitchTip environment",
"glitchtipEnvironmentPlaceholder": "production",
"webPushVapidDescription": "Configure VAPID keys and subject here so browser push works without environment variables.",
"webPushVapidPublicKey": "VAPID public key",
"webPushVapidPublicKeyPlaceholder": "BElx... (Base64URL)",
"webPushVapidPrivateKey": "VAPID private key",
"webPushVapidPrivateKeyPlaceholder": "Optional: enter a new private key",
"webPushVapidSubject": "VAPID subject",
"webPushVapidSubjectPlaceholder": "mailto:you@example.com",
"configured": "Configured",
"monitoringTestSuccess": "Test event sent",
"monitoringTestFailed": "Monitoring test failed",
"bugReportGithub": "Bug report (GitHub Issues)",
"bugReportGithubDescription": "Configure GitHub issue token and repository for incoming bug reports.",
"bugReportEnabledLabel": "Bug reports enabled",
"bugReportEnabledDescription": "When off, the in-app report button hides — token and repository stay configured.",
"assistant": {
"title": "Powierzchnie asystenta",
"description": "Każdy przełącznik ukrywa powierzchnię opartą na modelu w całej aplikacji bez usuwania konfiguracji dostawcy. Główny wyłącznik wymusza wyłączenie każdej opcji podrzędnej.",
"master": {
"title": "Asystent włączony",
"description": "Główny wyłącznik dla każdej powierzchni opartej na modelu. Gdy wyłączony, każda opcja podrzędna jest wymuszana na off."
},
"coach": {
"title": "Coach",
"description": "Szuflada czatu, przycisk uruchamiający i mobilny FAB na każdej stronie Insights."
},
"briefing": {
"title": "Codzienny briefing",
"description": "Karta briefingu, narracja hero strip, siatka rekomendacji i akcja Regeneruj."
},
"insightStatus": {
"title": "Karty statusu",
"description": "Karty statusu na metrykę na każdej podstronie /insights."
},
"correlations": {
"title": "Korelacje",
"description": "Narracja kafelka korelacji w przeglądzie Insights."
},
"healthScoreExplainer": {
"title": "Objaśnienie Health-Score",
"description": "Ikona ? obok linii delty Health-Score. Cyfra delty pozostaje widoczna niezależnie."
}
},
"bugReportRepo": "Repository",
"bugReportRepoPlaceholder": "owner/repo",
"bugReportToken": "Issue token",
"bugReportTokenPlaceholder": "ghp_...",
"userManagement": "User Management",
"userName": "Nazwa",
"userEmail": "E-mail",
"userRole": "Role",
"userPasskeys": "Passkeys",
"userCreated": "Created",
"userActions": "Akcje",
"editUser": "Edit user",
"editUserTitle": "Edit user: {name}",
"demoteToUser": "Demote to user",
"promoteToAdmin": "Promote to admin",
"toUser": "Make user",
"toAdmin": "Make admin",
"ownRoleUnchangeable": "Cannot change own role",
"resetPassword": "Reset password",
"resetPasswordTitle": "Reset password: {name}",
"newPassword": "New password",
"newPasswordPlaceholder": "At least 12 characters",
"passwordReset": "Password has been reset",
"reset": "Resetuj",
"loadingUsers": "Loading users...",
"apiTokens": "API Tokens",
"tokenUser": "User",
"tokenName": "Nazwa",
"tokenPermissions": "Permissions",
"tokenPermissionAll": "Wszystko",
"tokenPermissionAllTooltip": "Wildcard permission — this token can call every API route.",
"tokenStatus": "Status",
"tokenLastUsed": "Last used",
"tokenCreated": "Created",
"tokenNeverUsed": "Never",
"tokensEmptyTitle": "No API tokens yet",
"tokensEmptyDescription": "Tokens are issued when a native client signs in or via Settings → Account.",
"loginOverview": "Login Overview",
"allAuthEvents": "All auth events",
"failedOnly": "Failed only",
"loginEmptyDescription": "Sign-ins, sign-outs, and passkey changes will show up here.",
"loginEmptyFailedTitle": "No failed sign-in attempts",
"loginEmptyFailedDescription": "That's the safe state. Switch to all events to see successful sign-ins.",
"loginEmptyResetFilter": "Show all events",
"showingEntries": "Wyświetlanie {count} z {total} wpisów uwierzytelniania",
"status": "Status",
"action": "Action",
"ip": "IP",
"location": "Location",
"timestamp": "Czas",
"provider": "Provider",
"providerPassword": "Hasło",
"providerPasskey": "Passkey",
"providerApiToken": "API token",
"providerWithings": "Withings",
"providerUnknown": "Nieznane",
"outcome": "Outcome",
"outcomeSuccess": "Sukces",
"outcomeFailed": "Failed",
"auditDetails": "Details",
"deleteAllData": "Delete all data globally",
"deleteAllDescription": "Deletes all measurement, medication, integration, and log data for all users. User accounts will be preserved.",
"deleteAllConfirm": "Really delete all data?",
"deleteAllConfirmDescription": "This will permanently delete all measurements, medications, intake events, API tokens, Withings connections, open authentication challenges, notification channels (Telegram, ntfy, Web Push), push subscriptions, and queued Telegram message deletions for all users. User accounts, the audit log, and submitted feedback are preserved so the wipe itself remains traceable and bug reports stay triageable.",
"deleteButton": "Delete all data",
"finalDelete": "Delete permanently",
"deletedResult": "Deleted: {measurements} measurements, {medications} Leki,{intakeEvents} intakes, {apiTokens} API tokens, {withingsConnections} Withings connections, {authChallenges} auth challenges, {notificationChannels} notification channels, {pushSubscriptions} push subscriptions, {telegramScheduledDeletions} queued Telegram deletions. Feedback rows preserved.",
"authRegister": "Registration",
"authLogin": "Zaloguj",
"authLoginPasskey": "Passkey login",
"authLoginPassword": "Password login",
"authLoginFailed": "Failed",
"authLogout": "Wyloguj",
"authPasskeyRegister": "Passkey added",
"authPasskeyDelete": "Passkey deleted",
"authTokenAutoissueNative": "Native client token issued",
"authTokenRefresh": "Token refreshed",
"authTokenRevoke": "Token revoked",
"medicationReminders": "Medication Reminders",
"medicationRemindersDescription": "Thresholds for reminder badge color transitions on medication cards.",
"reminderLateMinutes": "Late threshold (minutes)",
"reminderLateMinutesDescription": "Minutes after window end until the badge changes from yellow to orange.",
"reminderMissedMinutes": "Missed threshold (minutes)",
"reminderMissedMinutesDescription": "Minutes after window end until the intake is considered missed.",
"notificationTestSend": "Send test",
"notificationTestSuccess": "Test notification sent",
"notificationTestFailed": "Failed to send test notification",
"reminderCheckRun": "Run reminder check",
"reminderCheckSuccess": "Reminder check completed",
"reminderCheckFailed": "Failed to run reminder check",
"reminderCheckResults": "Results",
"reminderCheckNotifOn": "Notifications on",
"reminderCheckNotifOff": "Notifications off",
"reminderCheckEventsToday": "Events today",
"reminderCheckNotifSent": "Sent",
"feedback": {
"tabOpen": "Open",
"tabAcknowledged": "Acknowledged",
"tabResolved": "Resolved",
"tabArchived": "Archived",
"subject": "Subject",
"category": "Category",
"user": "User",
"createdAt": "Submitted",
"actions": "Akcje",
"details": "Details",
"emptyTitle": "All caught up",
"emptyDescription": "No user feedback in this status. Submitted bugs, questions, and feature requests will appear here.",
"loading": "Loading feedback...",
"anonymous": "anonymous",
"categoryBug": "Bug",
"categoryFeature": "Feature",
"categoryQuestion": "Question",
"categoryOther": "Other",
"metadataHeading": "Metadata",
"metaUrl": "URL",
"metaLocale": "Locale",
"metaUserAgent": "User agent",
"metaAppVersion": "App version",
"screenshotHeading": "Screenshot",
"adminNote": "Admin note",
"adminNotePlaceholder": "Internal note (not visible to user)",
"saveNote": "Save note",
"noteSaved": "Note saved",
"actionAcknowledge": "Acknowledge",
"actionResolve": "Resolve",
"actionArchive": "Archive",
"actionPublishGithub": "Publish to GitHub",
"publishedToGithub": "Published to GitHub",
"viewIssue": "View issue",
"publishSuccess": "Issue created",
"publishFailed": "GitHub publish failed",
"updateFailed": "Update failed",
"archiveConfirm": "Archive this feedback entry?",
"submittedBy": "Submitted by"
},
"shell": {
"overview": "Przegląd",
"sectionsNav": "Admin sections"
},
"overview": {
"welcomeTitle": "Witamy,{name}",
"welcomeSubtitle": "You are signed in as administrator. Pick a section to manage HealthLog.",
"snapshotTitle": "System snapshot",
"snapshotVersion": "Version",
"snapshotDatabase": "Database",
"snapshotWorker": "Worker",
"snapshotStarted": "Started",
"snapshotBuildSha": "Build SHA",
"snapshotBuiltAt": "Built at",
"snapshotOfflineGeo": "Dane geograficzne",
"snapshotOfflineGeoOn": "Offline (GeoLite2)",
"snapshotOfflineGeoOff": "Awaryjne (ipwho.is)",
"snapshotLoadError": "Failed to load system snapshot.",
"snapshotLoading": "Loading snapshot...",
"auditTitle": "Recent activity",
"auditEmpty": "No recent audit entries.",
"auditLoadError": "Failed to load recent activity.",
"auditLoading": "Loading activity...",
"auditViewAll": "View all"
},
"section": {
"system-status": {
"title": "System Status",
"subtitle": "Worker, database, and integration health at a glance."
},
"general": {
"title": "General",
"subtitle": "Registration, default language, and other app-wide toggles."
},
"services": {
"title": "Services",
"subtitle": "Enable or disable notification channels and integrations system-wide."
},
"integrations": {
"title": "Integracje",
"subtitle": "Configure Umami, GlitchTip, Web Push, and bug reports."
},
"ai-quality": {
"title": "Insights Quality",
"subtitle": "Helpfulness scores grouped by severity and provider, from the last 30 days of user feedback."
},
"assistant": {
"title": "Powierzchnie asystenta",
"subtitle": "Włącz lub wyłącz każdą powierzchnię opartą na modelu bez usuwania konfiguracji dostawcy."
},
"coach-feedback": {
"title": "Coach Feedback",
"subtitle": "Helpful-rate per Coach prompt version, tone, and verbosity from the last 30 days."
},
"feedback": {
"title": "Feedback",
"subtitle": "Triage user feedback, bug reports, and feature requests."
},
"reminders": {
"title": "Reminders",
"subtitle": "Tune medication reminder thresholds and run a manual check."
},
"users": {
"title": "Users",
"subtitle": "Manage user accounts, roles, and active sessions.",
"filter": {
"all": "Wszystko",
"admin": "Admins",
"user": "Users"
},
"forceLogout": "Force logout",
"forceLogoutConfirmTitle": "Force logout {name}?",
"forceLogoutConfirmBody": "All active sessions for this user will be revoked. They will need to sign in again on every device.",
"forceLogoutSuccess": "Logged {name} out of {count} session(s)",
"forceLogoutFailed": "Failed to force logout",
"cannotLogoutSelf": "Cannot force-logout yourself",
"emptyTitle": "No users in this view",
"emptyDescription": "There are no users matching the current filter.",
"emptyResetFilter": "Show all users"
},
"api-tokens": {
"title": "API Tokens",
"subtitle": "Active bearer tokens issued to native clients and integrations."
},
"login-overview": {
"title": "Login Overview",
"subtitle": "Audit trail of authentication and admin events."
},
"auditLog": {
"filterActor": "Actor (user id or username)",
"filterAction": "Action",
"filterActionAll": "All actions",
"filterTarget": "Target (id or path)",
"filterDate": "Date range",
"range24h": "Last 24 hours",
"range7d": "Ostatnie 7 dni",
"range30d": "Ostatnie 30 dni",
"rangeAll": "Cały okres",
"perPage": "Per page",
"prev": "Previous",
"next": "Dalej",
"pageOf": "Strona {page} z {total}",
"export": "Export CSV",
"empty": "No audit entries match the current filters."
},
"app-logs": {
"title": "App Logs",
"subtitle": "Tail the most recent structured wide-events emitted by this process.",
"processNote": "Showing app-process logs only — worker-process logs go to Loki when that integration is configured. Buffer is volatile and capped at 500 entries.",
"filterTraceId": "Trace ID",
"filterAction": "Action contains…",
"filterLevel": "Level",
"levelAll": "All levels",
"filterRange": "Time window",
"range15m": "Last 15 minutes",
"range1h": "Last hour",
"range6h": "Last 6 hours",
"rangeAll": "Whole buffer",
"colLevel": "Level",
"colTimestamp": "Timestamp",
"colAction": "Action",
"colDuration": "Duration",
"colTraceId": "Trace",
"showing": "Showing {count} of up to {bufferMax} buffered events",
"empty": "Buffer is empty",
"emptyDescription": "No events match the current filters yet. Hit refresh after triggering some traffic.",
"refresh": "Refresh",
"eventDetails": "Event details",
"closeDetails": "Close details"
},
"backups": {
"title": "Backups",
"subtitle": "Weekly per-user data snapshots stored in PostgreSQL.",
"description": "Each user gets one rolling snapshot per backup type. Sizes show the encrypted blob — payloads are not downloadable from this page.",
"runNow": "Backup now",
"runEnqueued": "Backup job enqueued",
"runFailed": "Failed to enqueue backup",
"loading": "Loading backups...",
"loadError": "Failed to load backups.",
"emptyTitle": "No backups yet",
"emptyDescription": "Backups run automatically every Sunday at 03:00 — or trigger one now to create the first snapshot.",
"colUser": "User",
"colType": "Typ",
"typeWeeklyAuto": "Weekly (auto)",
"typeManual": "Manual",
"colSize": "Size",
"colCreatedAt": "Last snapshot",
"colActions": "Akcje",
"retentionLabel": "Retention: {days} days",
"download": "Download",
"downloadAria": "Download backup for {username}",
"downloadFailed": "Download failed",
"downloadStarted": "Download started",
"uploadTitle": "Upload backup",
"uploadDescription": "Validate a backup file and store it as a manual snapshot. Restoring is a separate step.",
"uploadButton": "Upload file",
"uploadHelp": "JSON file matching the current backup schema. Max 10 MB.",
"uploadSuccess": "Backup uploaded ({count} records)",
"uploadFailed": "Upload failed",
"restore": "Restore",
"restoreAria": "Restore from backup for {username}",
"restoreTitle": "Restore from backup",
"restoreDescription": "This will replace ALL current data for {username} with the snapshot from {when}. Existing measurements, medications, intake events, mood entries, notification channels, push subscriptions and queued Telegram deletions will be deleted.",
"restorePromptLabel": "Type RESTORE to continue",
"restoreConfirm": "Restore now",
"restoreInProgress": "Restoring...",
"restoreSuccess": "Restore complete",
"restoreFailed": "Restore failed",
"docsLink": "Documentation"
},
"danger-zone": {
"title": "Danger Zone",
"subtitle": "Destructive system-wide operations."
},
"about": {
"title": "About",
"subtitle": "Version, license, source, and update check."
}
},
"carrier": "Operator",
"carrierUnknown": "Nieznany operator",
"carrierUnavailableGeoFallback": "{location} — carrier unavailable"
},
"achievements": {
"title": "Achievements",
"subtitle": "Earn achievements by tracking your health and taking your meds on time.",
"loginRequired": "Please sign in to view achievements.",
"points": "Points",
"unlocked": "Unlocked",
"nextGoal": "Next goal",
"allCompleted": "All achievements unlocked!",
"completed": "Completed",
"goalReached": "Goal reached",
"remainingUnlocks": "{count} still unlockable",
"noneUnlockedYet": "No achievements unlocked yet.",
"pointsValue": "{points} points",
"metricCount": "{count}",
"metricDays": "{count} days",
"metricPercent": "{count}%",
"badges": {
"intakeTotal1": {
"title": "First intake",
"description": "Record your first taken medication event."
},
"intakeTotal10": {
"title": "Intake starter",
"description": "Record 10 taken medication events."
},
"intakeTotal50": {
"title": "Intake routine",
"description": "Record 50 taken medication events."
},
"intakeTotal150": {
"title": "Intake expert",
"description": "Record 150 taken medication events."
},
"intakeTotal300": {
"title": "Intake legend",
"description": "Record 300 taken medication events."
},
"overIntake1": {
"title": "Double take",
"description": "Take medication at least once more than planned."
},
"skippedIntake1": {
"title": "Stepped back",
"description": "Skip at least one planned intake."
},
"passkeyCreated1": {
"title": "Passkey set up",
"description": "Create your first passkey."
},
"passkeyLogin1": {
"title": "Passkey login",
"description": "Sign in at least once with a passkey."
},
"passwordLogin1": {
"title": "Old school",
"description": "Sign in at least once with username and password."
},
"bugReport1": {
"title": "Bug hunter",
"description": "Submit a bug report."
},
"loginStreak7": {
"title": "Login streak 7d",
"description": "Sign in on 7 consecutive days."
},
"loginStreak30": {
"title": "Login streak 30d",
"description": "Sign in on 30 consecutive days."
},
"onTimePerfect1": {
"title": "On-time 1d",
"description": "Take all medications on time for 1 day."
},
"compliance801": {
"title": "80% adherence · 1d",
"description": "Reach at least 80% 30-day adherence for 1 day."
},
"bmiGreen1": {
"title": "BMI green · 1d",
"description": "Keep your BMI in the normal range for 1 day."
},
"bpGreen1": {
"title": "BP green · 1d",
"description": "Keep your blood pressure in the normal range for 1 day."
},
"pulseGreen1": {
"title": "Pulse green · 1d",
"description": "Keep your resting pulse in the normal range for 1 day."
},
"onTimePerfect7": {
"title": "On-time 7d",
"description": "Take all medications on time for 7 consecutive days."
},
"compliance807": {
"title": "80% adherence · 7d",
"description": "Reach at least 80% 30-day adherence for 7 consecutive days."
},
"bmiGreen7": {
"title": "BMI green · 7d",
"description": "Keep your BMI in the normal range for 7 consecutive days."
},
"bpGreen7": {
"title": "BP green · 7d",
"description": "Keep your blood pressure in the normal range for 7 consecutive days."
},
"pulseGreen7": {
"title": "Pulse green · 7d",
"description": "Keep your resting pulse in the normal range for 7 consecutive days."
},
"onTimePerfect30": {
"title": "On-time 30d",
"description": "Take all medications on time for 30 consecutive days."
},
"compliance8030": {
"title": "80% adherence · 30d",
"description": "Reach at least 80% 30-day adherence for 30 consecutive days."
},
"bmiGreen30": {
"title": "BMI green · 30d",
"description": "Keep your BMI in the normal range for 30 consecutive days."
},
"bpGreen30": {
"title": "BP green · 30d",
"description": "Keep your blood pressure in the normal range for 30 consecutive days."
},
"pulseGreen30": {
"title": "Pulse green · 30d",
"description": "Keep your resting pulse in the normal range for 30 consecutive days."
},
"onTimePerfect180": {
"title": "On-time 180d",
"description": "Take all medications on time for 180 consecutive days."
},
"compliance80180": {
"title": "80% adherence · 180d",
"description": "Reach at least 80% 30-day adherence for 180 consecutive days."
},
"bmiGreen180": {
"title": "BMI green · 180d",
"description": "Keep your BMI in the normal range for 180 consecutive days."
},
"bpGreen180": {
"title": "BP green · 180d",
"description": "Keep your blood pressure in the normal range for 180 consecutive days."
},
"pulseGreen180": {
"title": "Pulse green · 180d",
"description": "Keep your resting pulse in the normal range for 180 consecutive days."
},
"onTimePerfect360": {
"title": "On-time 360d",
"description": "Take all medications on time for 360 consecutive days."
},
"compliance80360": {
"title": "80% adherence · 360d",
"description": "Reach at least 80% 30-day adherence for 360 consecutive days."
},
"bmiGreen360": {
"title": "BMI green · 360d",
"description": "Keep your BMI in the normal range for 360 consecutive days."
},
"bpGreen360": {
"title": "BP green · 360d",
"description": "Keep your blood pressure in the normal range for 360 consecutive days."
},
"pulseGreen360": {
"title": "Pulse green · 360d",
"description": "Keep your resting pulse in the normal range for 360 consecutive days."
},
"moodFirst": {
"title": "First mood",
"description": "Log your first mood entry."
},
"moodStreak7": {
"title": "Mood diarist 7d",
"description": "Log a mood entry on 7 consecutive days."
},
"moodStreak30": {
"title": "Mood diarist 30d",
"description": "Log a mood entry on 30 consecutive days."
},
"moodUp7": {
"title": "Brighter week",
"description": "Your 7-day mood average improved by at least 1.0 point compared to the previous week."
},
"weightFirst": {
"title": "First weigh-in",
"description": "Record your first weight measurement."
},
"weight50": {
"title": "Fifty weigh-ins",
"description": "Record 50 weight measurements."
},
"weight200": {
"title": "200 weigh-ins",
"description": "Record 200 weight measurements."
},
"bpFirst": {
"title": "First reading",
"description": "Record your first blood-pressure measurement."
},
"bp50": {
"title": "Fifty BP readings",
"description": "Record 50 blood-pressure measurements."
},
"bp200": {
"title": "200 BP readings",
"description": "Record 200 blood-pressure measurements."
},
"pulseFirst": {
"title": "First pulse",
"description": "Record your first pulse measurement."
},
"consistentMonth": {
"title": "Consistent month",
"description": "Log entries on at least 25 distinct days within a single calendar month."
},
"entryStreak7": {
"title": "Tracker streak 7d",
"description": "Log at least one entry on 7 consecutive days."
},
"entryStreak30": {
"title": "Tracker streak 30d",
"description": "Log at least one entry on 30 consecutive days."
},
"weekendWarrior": {
"title": "Weekend tracker",
"description": "Log entries on 4 consecutive Saturday + Sunday weekend pairs."
},
"hiddenNightOwl": {
"title": "Night owl",
"description": "Logged an entry between 02:00 and 04:00 in the morning."
},
"hiddenEarlyBird": {
"title": "Early bird",
"description": "Logged an entry between 04:00 and 06:00 in the morning."
},
"hiddenLeapDay": {
"title": "Leap-day legend",
"description": "Logged an entry on February 29."
},
"hiddenDoctorPdf": {
"title": "House call",
"description": "Exported your first doctor-report PDF."
},
"hiddenLocaleFlip": {
"title": "Polyglot",
"description": "Switched the app language at least once."
},
"hiddenBugBuddy": {
"title": "Bug buddy",
"description": "Submitted at least 5 bug reports — the project loves you."
}
},
"nextProgressLabel": "Progress to unlock",
"completedOn": "Completed on {date}",
"locked": "Locked",
"criterionHint": "{current} / {target}",
"progressPercent": "{percent}%",
"categories": {
"medication": "Lek",
"vitals": "Vitals",
"mood": "Nastrój",
"security": "Account & security",
"engagement": "Engagement",
"hidden": "Hidden"
},
"hiddenCard": {
"title": "Hidden achievement",
"description": "Keep tracking — you might just stumble across it.",
"ariaLabel": "Hidden locked achievement"
},
"hiddenUnlockToast": {
"title": "You unlocked a hidden achievement!"
},
"dashboardCard": {
"title": "Recent unlocks",
"viewAll": "View all",
"empty": "No achievements yet — keep logging to unlock your first."
}
},
"bugreport": {
"title": "Zgłoszenie błędu",
"subtitle": "Wyślij zgłoszenie błędu, sugestię funkcji lub pytanie. Administrator serwera zobaczy twoje zgłoszenie.",
"loginRequired": "Zaloguj się, aby zgłosić błąd.",
"bugTitle": "Tytuł",
"description": "Opis",
"submit": "Wyślij",
"success": "Dziękujemy! Twoje zgłoszenie zostało wysłane.",
"errorCreating": "Błąd tworzenia",
"category": "Rodzaj",
"categoryBug": "Błąd",
"categoryFeature": "Propozycja funkcji",
"categoryQuestion": "Pytanie",
"categoryOther": "Inna opinia",
"bugTitlePlaceholder": "Krótkie podsumowanie (opcjonalnie)",
"githubEscalationNote": "Twoja opinia zapisuje się lokalnie. Jeśli administrator włączy integrację z GitHubem, może zostać opublikowana jako publiczne issue na życzenie.",
"internalOnlyNote": "Twoja opinia zapisuje się lokalnie i jest widoczna tylko dla administratora tego serwera.",
"disabledTitle": "Bug reports are turned off",
"disabledBody": "The administrator has disabled bug reports on this server."
},
"notifications": {
"title": "Centrum powiadomień",
"breadcrumbInbox": "Centrum powiadomień",
"breadcrumbChannels": "Kanały powiadomień",
"breadcrumbSettings": "Ustawienia",
"eventColumn": "Zdarzenie",
"subtitle": "Wybierz, które powiadomienia chcesz otrzymywać i którym kanałem.",
"loadError": "Nie udało się załadować ustawień powiadomień.",
"noChannels": "Najpierw skonfiguruj kanał powiadomień w ustawieniach.",
"goToSettings": "Przejdź do ustawień kanału",
"channelDisabled": "Wyłączone",
"admin": {
"deployFailedTitle": "Wdrożenie nie powiodło się: {application}",
"deployFailedBody": "Wystąpił błąd podczas wdrażania {application} (#{deployment}): {error}. Zobacz logi: {logsUrl}",
"testNotificationTitle": "HealthLog powiadomienie testowe",
"testNotificationBody": "To powiadomienie testowe zostało wywołane z panelu administracyjnego. Jeśli je widzisz, kanał działa.",
"reminderCheckMissedTitle": "Pominięte przypomnienie: {medication}",
"reminderCheckMissedBody": "{medication} ({dose}) nie zostało zarejestrowane w przedziale {window}.",
"reminderCheckOverdueTitle": "Dawka opóźniona: {medication}",
"reminderCheckOverdueBody": "{medication} ({dose}) w przedziale {window} jest opóźnione o {minutes} minut.",
"offlineGeoUnavailableTitle": "Bazy geolokalizacji offline nie zostały załadowane",
"offlineGeoUnavailableBody": "HealthLog rozwiązuje lokalizacje logowania przez awaryjne źródło online ipwho.is. Aby włączyć bazy offline GeoLite2-City i GeoLite2-ASN, ustaw MAXMIND_LICENSE_KEY w sekretach GitHub Actions pod adresem {secretsUrl} i ponownie wdroż. Do tego czasu kolumna operatora w przeglądzie logowań pozostaje pusta."
},
"user": {
"telegramTestBody": "HealthLog: połączenie udane. Powiadomienia Telegram są aktywne."
},
"moodReminder": {
"title": "Codzienne przypomnienie o nastroju",
"description": "Delikatne przypomnienie o wybranej przez Ciebie godzinie, jeśli dziś jeszcze nie zapisano nastroju. Wysyłane tylko skonfigurowanymi już kanałami (Telegram, ntfy, Web Push, Apple Push) i milknie, gdy dziś zapisano nastrój.",
"toggleAria": "Włącz lub wyłącz codzienne przypomnienie o nastroju",
"statusOn": "Aktywne o wybranej godzinie",
"statusOff": "Wyłączone",
"enabledToast": "Przypomnienie o nastroju włączone.",
"disabledToast": "Przypomnienie o nastroju wyłączone.",
"saveError": "Zapis nieudany. Spróbuj ponownie.",
"hourLabel": "Godzina przypomnienia",
"hourAria": "Godzina przypomnienia o nastroju",
"hourSavedToast": "Godzina przypomnienia zaktualizowana."
},
"eventMedicationReminder": "Przypomnienie o leku",
"eventMedicationReminderDesc": "Wysyłane o każdej zaplanowanej godzinie dawki.",
"eventMeasurementAnomaly": "Nietypowy pomiar",
"eventMeasurementAnomalyDesc": "Wysyłane, gdy odczyt znacznie odbiega od Twojego zwykłego zakresu.",
"eventComplianceLow": "Niska zgodność",
"eventComplianceLowDesc": "Wysyłane, gdy odsetek przyjętych dawek z ostatnich dni spadnie poniżej 80 %.",
"eventWithingsSyncFailed": "Synchronizacja Withings nie powiodła się",
"eventWithingsSyncFailedDesc": "Wysyłane, gdy synchronizacja Withings nie powiedzie się kilka razy z rzędu.",
"eventSystemAlert": "Powiadomienie systemowe",
"eventSystemAlertDesc": "Ogólne komunikaty z serwera HealthLog, na przykład okna serwisowe lub uwagi do konta.",
"eventPersonalRecord": "Rekord osobisty",
"eventPersonalRecordDesc": "Wysyłane, gdy odczyt pobije Twój dotychczasowy rekord.",
"eventMoodReminder": "Przypomnienie o nastroju",
"eventMoodReminderDesc": "Codzienne przypomnienie, aby zapisać swój aktualny nastrój."
},
"i18n": {
"maintainershipBanner": {
"notice": "Ta wersja językowa jest tłumaczona maszynowo, w tym instrukcje krytyczne dla bezpieczeństwa Coacha. Automatyczna kontrola dryftu działa w CI; proszę zgłaszać wszelkie regresje Coacha na GitHubie.",
"cta": "Zgłoś na GitHubie",
"dismiss": "Zamknij"
}
},
"targets": {
"title": "Wartości docelowe",
"introText": "Twoje aktualne wartości na tle zalecanych zakresów docelowych. Źródła wytycznych podlinkowane na każdej karcie.",
"bmi": "BMI",
"average30d": "Średnia 30-dniowa:",
"consistency": {
"ariaLabel": "Ostatnie 7 dni, status w/poza zakresem na dzień",
"daysInRange": "{count} z {total} w zakresie",
"daysLogged": "{count} z {total} zarejestrowanych",
"dotInRange": "w zakresie",
"dotNearRange": "blisko zakresu",
"dotOutOfRange": "poza zakresem",
"dotNotLogged": "nie zarejestrowano",
"insufficientData": "Za mało danych — rejestruj dalej.",
"relativeDay": {
"today": "Dzisiaj",
"yesterday": "Wczoraj",
"twoDaysAgo": "2 dni temu",
"threeDaysAgo": "3 dni temu",
"fourDaysAgo": "4 dni temu",
"fiveDaysAgo": "5 dni temu",
"sixDaysAgo": "6 dni temu"
}
},
"card": {
"lastMet": "Ostatnio w celu: {when}",
"streak": "{count} dni z rzędu"
},
"relativeDay": {
"today": "Dzisiaj",
"yesterday": "Wczoraj",
"daysAgo": "{count} dni temu"
},
"summary": {
"weekTitle": "{met} z {total} celów osiągniętych w tym tygodniu",
"weekTitleAll": "Wszystko{total} targets met this week",
"streakHighlight": "{count} dni z rzędu: {metric}"
},
"coach": {
"cta": "Zapytaj coacha"
},
"edit": {
"openLabel": "Edytuj zakres docelowy dla {metric}",
"title": "Edytuj zakres docelowy — {metric}",
"description": "Dostosuj zakres docelowy używany w wykresach, insights i raporcie medycznym. Wartości w {unit}.",
"derivedHint": "Ta karta jest wyprowadzona z innych metryk. Edytuj cele bazowe (np. ciśnienie lub waga).",
"minLabel": "Min",
"maxLabel": "Maks",
"systolicMin": "Skurczowe min",
"systolicMax": "Skurczowe maks",
"diastolicMin": "Rozkurczowe min",
"diastolicMax": "Rozkurczowe maks",
"boundsHint": "Dozwolony zakres: {min}–{max} {unit}",
"resetToDefault": "Przywróć wartość domyślną",
"saveSuccess": "Zakres docelowy zaktualizowany",
"saveError": "Nie udało się zapisać zakresu docelowego",
"resetSuccess": "Zakres docelowy przywrócono do domyślnego"
},
"mood": {
"stability": {
"stable": "stabilny",
"variable": "zmienny",
"highlyVariable": "bardzo zmienny"
}
},
"currentValue": "Aktualnie: {value} {unit}",
"targetRangeValue": "Zakres docelowy: {min}–{max} {unit}",
"sourceLabel": "Źródło: {source}",
"inTarget": "W zakresie docelowym",
"aboveTarget": "{delta} {unit} powyżej zakresu",
"belowTarget": "{delta} {unit} poniżej zakresu",
"diastolic": "Rozkurczowe",
"noMeasurementYet": "Brak pomiarów",
"noMeasurementData": "Brak danych pomiarowych. Dodaj pomiary, aby zobaczyć cele.",
"profileIncomplete": "Profil niekompletny",
"profileIncompleteHeight": "Wpisz swój wzrost w profilu, aby aktywować cele BMI.",
"profileIncompleteAge": "Wpisz datę urodzenia w profilu, aby aktywować cele zależne od wieku.",
"profileIncompleteHeightAge": "Wpisz wzrost i datę urodzenia w profilu, aby zobaczyć spersonalizowane cele.",
"compliancePerMedication": "Przestrzeganie według leku",
"glucoseFasting": "Glikemia — na czczo",
"glucosePostprandial": "Glikemia — po posiłku",
"glucoseRandom": "Glikemia — dowolna",
"glucoseBedtime": "Glikemia — przed snem",
"loadError": "Nie udało się załadować wartości docelowych",
"label": {
"WEIGHT": "Waga",
"BLOOD_PRESSURE": "Ciśnienie krwi",
"BLOOD_PRESSURE_IN_TARGET": "Ciśnienie w zakresie",
"PULSE": "Tętno spoczynkowe",
"SLEEP_DURATION": "Czas snu",
"BMI": "BMI",
"BODY_FAT": "Tkanka tłuszczowa",
"ACTIVITY_STEPS": "Kroki/dzień",
"MEDICATION_COMPLIANCE": "Przestrzeganie",
"MOOD_SCORE": "Nastrój",
"MOOD_STABILITY": "Stabilność nastroju"
},
"status": {
"underweight": "Niedowaga",
"normal": "Normal",
"overweight": "Nadwaga",
"obesityGrade1": "Otyłość I stopnia",
"obesityGrade2": "Otyłość II stopnia",
"obesityGrade3": "Otyłość III stopnia",
"optimal": "Optymalne",
"highNormal": "Wysokie prawidłowe",
"hypertensionGrade1": "Nadciśnienie 1 stopnia",
"hypertensionGrade2": "Nadciśnienie 2 stopnia",
"hypertensionGrade3": "Nadciśnienie 3 stopnia",
"bradycardia": "Bradykardia",
"elevated": "Podwyższone",
"tachycardia": "Tachykardia",
"significantlyLow": "Znacząco niskie",
"slightlyLow": "Lekko niskie",
"onTarget": "W zakresie docelowym",
"slightlyElevated": "Lekko podwyższone",
"significantlyElevated": "Znacząco podwyższone",
"farTooShort": "Zdecydowanie zbyt krótki",
"tooShort": "Zbyt krótki",
"slightlyLong": "Lekko zbyt długi",
"farTooLong": "Zdecydowanie zbyt długi",
"belowEssential": "Poniżej niezbędnego",
"essential": "Niezbędny",
"athletic": "Atletyczny",
"fitness": "Fitness",
"acceptable": "Akceptowalny",
"obese": "Otyły",
"veryLow": "Bardzo niski",
"lowActive": "Mało aktywny",
"moderatelyActive": "Umiarkowanie aktywny",
"active": "Aktywny",
"veryActive": "Bardzo aktywny",
"good": "Dobre",
"moderate": "Umiarkowane",
"low": "Niskie",
"high": "Wysokie",
"veryGood": "Bardzo dobre",
"veryStable": "Bardzo stabilny",
"stable": "Stabilny",
"fluctuating": "Zmienny"
}
},
"passwordStrength": {
"veryWeak": "Bardzo słabe",
"weak": "Słabe",
"acceptable": "Akceptowalne",
"strong": "Silne",
"veryStrong": "Bardzo silne",
"tooShort": "Za krótkie",
"characters": "znaków",
"minLength": "Wymagane co najmniej {count} znaków."
},
"telegram": {
"errorInvalidAction": "Nieprawidłowa akcja.",
"errorMedicationNotFound": "Nie znaleziono leku.",
"errorMedicationInactive": "Nie znaleziono leku lub jest nieaktywny.",
"errorUnknownAction": "Nieznana akcja.",
"snoozeOneHour": "1 godzina",
"snoozeThreeHours": "3 godziny",
"snoozedFor": "{name} odłożone o {duration}.",
"skipped": "{name} pominięte.",
"alreadyRecorded": "{name} było już zarejestrowane.",
"recordedAsTaken": "{name} zarejestrowane jako przyjęte.",
"confirmed": "{name} potwierdzone.",
"genericConfirmed": "Potwierdzone.",
"cancelled": "Anulowane.",
"noActiveMedications": "Nie znaleziono aktywnych leków.",
"whichMedication": "<b>Który lek został przyjęty?</b>",
"cancelButton": "Anuluj",
"askMedicationName": "Podaj lek, np. <b>przyjęty Ramipril</b>.",
"medicationNotFoundExact": "Nie znaleziono leku. Wyślij nazwę dokładnie tak, jak w HealthLog.",
"helpHeader": "<b>Available commands:</b>",
"helpBody": "/help — show this help\n/add — record an intake\n/start — start the bot\n\n<b>Text commands:</b>\ntaken &lt;name&gt; — confirm an intake\n\n<b>Buttons in reminders:</b>\n• Taken — confirm intake\n• 🕐 1h / 🕐 3h — postpone reminder\n• ⏭ Skip — skip intake\n• ✓ Confirm — confirm a missed intake"
},
"medicationReminders": {
"phaseGreenTitle": "🟢 Reminder: {medName}",
"phaseGreenMessage": "🟢 Reminder:\n<b>{medName}</b> ({doseInfo}, {timeWindow})\nWindow closes in {minutes} Min.",
"phaseYellowTitle": "🟡 Due soon: {medName}",
"phaseYellowMessage": "🟡 Due soon:\n<b>{medName}</b> ({doseInfo}, {timeWindow})\n{minutes} min left.",
"phaseOrangeTitle": "🟠 Overdue: {medName}",
"phaseOrangeMessage": "🟠 Overdue:\n<b>{medName}</b> ({doseInfo}, {timeWindow})\nOverdue by {minutes} Min.",
"phaseRedTitle": "🔴 Missed: {medName}",
"phaseRedMessage": "🔴 Missed:\n<b>{medName}</b> ({doseInfo}, {timeWindow})\nMarked as missed.",
"buttonTaken": "Przyjęty",
"buttonConfirm": "✓ Potwierdź",
"buttonSnoozeOneHour": "🕐 1h",
"buttonSnoozeThreeHours": "🕐 3h",
"buttonSkip": "⏭ Pomiń"
},
"moodReminders": {
"dailyTitle": "Zapisz nastrój",
"dailyBody": "Jak się dzisiaj czujesz?"
}
}