diff --git a/.github/ISSUE_TEMPLATE/translation.yml b/.github/ISSUE_TEMPLATE/translation.yml index 65b56c608..4e481ce85 100644 --- a/.github/ISSUE_TEMPLATE/translation.yml +++ b/.github/ISSUE_TEMPLATE/translation.yml @@ -1,12 +1,12 @@ name: Translation feedback -description: Report a wording, grammar, or register problem in HealthLog's AI-initial locales (FR / ES / IT / PL). +description: Report a wording, grammar, or register problem in HealthLog's AI-initial locales (FR / ES / IT / PL / KO / NL). title: "[Translation] " labels: ["i18n", "translation-feedback"] body: - type: markdown attributes: value: | - HealthLog ships German and English as maintainer-curated translations. French, Spanish, Italian, and Polish ship as **AI-initial translations** — the prose passes the locale-integrity test (full key parity, no empty values) but has not been hand-reviewed for register or regional vocabulary. + HealthLog ships German and English as maintainer-curated translations. French, Spanish, Italian, Polish, Korean, and Dutch ship as **AI-initial translations** — the prose passes the locale-integrity test (full key parity, no empty values) but has not been hand-reviewed for register or regional vocabulary. This template captures concrete fixes you would like to see. Phrasing nuance, regional vocabulary (e.g. "Tú" vs "Usted"), gendered forms, and domain-specific health terms are all in scope. The maintainer applies fixes during the regular release cycle. @@ -20,6 +20,8 @@ body: - Spanish (es) - Italian (it) - Polish (pl) + - Korean (ko) + - Dutch (nl) - Other (specify under "Surface") validations: required: true diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c00ba213f..4424d2695 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -121,7 +121,7 @@ Contributors: branch off `main`; PRs target `main`. ## Translations -HealthLog ships with English (`en`) and German (`de`) maintained by the project, plus French (`fr`), Spanish (`es`), Italian (`it`), Polish (`pl`), and Korean (`ko`) that are **AI-initial, community-maintained**. The maintained locales are reviewed line-by-line; the community-maintained ones surface a small banner inviting users to improve them. +HealthLog ships with English (`en`) and German (`de`) maintained by the project, plus French (`fr`), Spanish (`es`), Italian (`it`), Polish (`pl`), Korean (`ko`), and Dutch (`nl`) that are **AI-initial, community-maintained**. The maintained locales are reviewed line-by-line; the community-maintained ones surface a small banner inviting users to improve them. ### Improving an existing locale @@ -136,7 +136,7 @@ To suggest a fix or improvement: ### Adding a new locale -If you want to introduce a locale that isn't shipped (e.g. `nl`, `pt-BR`, `cs`): +If you want to introduce a locale that isn't shipped (e.g. `pt-BR`, `cs`): 1. Open an issue first using the **Translation request** template. We'll confirm the locale is in scope and decide whether it joins the AI-initial-community-maintained tier or the maintained tier. 2. Copy `messages/en.json` to `messages/.json`. diff --git a/README.md b/README.md index ecc15faeb..64b04c63e 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ Try the [live demo](https://demo.healthlog.dev) to see a working install — sig - **AI insights you own.** Daily briefing, health scores, correlations, and a conversational coach grounded in your own measurements and interpreted against cited guideline reference bands — where a value sits and what that means in plain words, never a diagnosis. The coach proposes concrete if-then plans you accept or decline, and suppresses proactive check-ins when there's nothing genuine to say. Bring your own OpenAI or Anthropic key, or point at a local endpoint (Ollama, LM Studio, vLLM) so AI requests stay on your network. - **Clinician-ready output.** A doctor-report PDF rendered on your server, a read-only HL7 FHIR R4 API, and scoped, time-limited share links you revoke after the visit. - **Private by construction.** AES-256-GCM encryption at rest for notes and other free text, documents, questionnaire answers, AI-written text and credentials, with zero-downtime key rotation. Measurement values, lab values, medication names and mood scores are stored unencrypted in the database, so the database volume and its backups need the same protection as the host. Passkey login, server-side sessions, strict CSP, and no third-party tracking anywhere. -- **Built to be lived in.** Installable PWA with offline support, medication reminders over APNs, Telegram, ntfy, and Web Push, a sub-second dashboard on years of imported history — in English, German, Spanish, French, Italian, Polish, and Korean end to end. +- **Built to be lived in.** Installable PWA with offline support, medication reminders over APNs, Telegram, ntfy, and Web Push, a sub-second dashboard on years of imported history — in English, German, Spanish, French, Italian, Polish, Korean, and Dutch end to end. The full feature tour, integration guides, and API reference live at [docs.healthlog.dev](https://docs.healthlog.dev). diff --git a/docs/api/openapi.yaml b/docs/api/openapi.yaml index af613a5d8..d0c8cfe4f 100644 --- a/docs/api/openapi.yaml +++ b/docs/api/openapi.yaml @@ -25902,6 +25902,7 @@ components: - it - pl - ko + - nl practiceName: type: string maxLength: 120 @@ -28360,6 +28361,7 @@ components: - it - pl - ko + - nl today: description: "Optional override of the reference date used to resolve relative phrases (\"tomorrow\", \"next Monday\"). Format: `YYYY-MM-DD`. Defaults to the account's own day in its time zone." @@ -29310,6 +29312,7 @@ components: - it - pl - ko + - nl description: One of the interface locales this build ships. required: - locale @@ -34599,6 +34602,7 @@ components: - it - pl - ko + - nl timezone: type: string minLength: 1 @@ -34653,6 +34657,7 @@ components: - it - pl - ko + - nl timezone: type: string minLength: 1 @@ -34870,6 +34875,7 @@ components: - it - pl - ko + - nl - type: "null" timezone: type: string @@ -55782,6 +55788,7 @@ components: - it - pl - ko + - nl required: - locale additionalProperties: false @@ -82785,6 +82792,7 @@ components: - it - pl - ko + - nl - type: "null" timezone: type: string diff --git a/e2e/setup-flow-locale-overflow.spec.ts b/e2e/setup-flow-locale-overflow.spec.ts index 81977d71c..239a49a6f 100644 --- a/e2e/setup-flow-locale-overflow.spec.ts +++ b/e2e/setup-flow-locale-overflow.spec.ts @@ -33,7 +33,7 @@ import { type SetupScreen, } from "./setup-flow-helpers"; -const LOCALES = ["en", "de", "es", "fr", "it", "pl", "ko"] as const; +const LOCALES = ["en", "de", "es", "fr", "it", "pl", "ko", "nl"] as const; const VIEWPORTS = [ { label: "desktop 1280", width: 1280, height: 800 }, diff --git a/messages/nl.json b/messages/nl.json new file mode 100644 index 000000000..f866fe648 --- /dev/null +++ b/messages/nl.json @@ -0,0 +1,13356 @@ +{ + "common": { + "save": "Opslaan", + "conflictReloaded": "Opnieuw geladen van de server. Voer je wijziging opnieuw uit.", + "cancel": "Annuleren", + "delete": "Verwijderen", + "undo": "Ongedaan maken", + "edit": "Bewerken", + "moreOptions": "Meer opties", + "create": "Aanmaken", + "close": "Sluiten", + "loading": "Laden…", + "loadFailed": "Kan niet worden geladen", + "error": "Fout", + "saved": "Opgeslagen", + "pullToRefresh": "Vernieuwen…", + "no": "Nee", + "noData": "Geen gegevens beschikbaar", + "optional": "Optioneel", + "active": "Actief", + "inactive": "Inactief", + "disabled": "Uitgeschakeld", + "networkError": "Netwerkfout", + "openDatePicker": "Datumkiezer openen", + "openTimePicker": "Tijdkiezer openen", + "hours": "Uren", + "minutes": "Minuten", + "feet": "ft", + "inches": "in", + "heightFeet": "Lengte in feet", + "heightInches": "Lengte in inches", + "period": "AM/PM", + "am": "AM", + "pm": "PM", + "unknownError": "Onbekende fout", + "copied": "Gekopieerd!", + "or": "of", + "unknown": "Onbekend", + "add": "Toevoegen", + "import": "Importeren", + "test": "Testen", + "reset": "Herstellen", + "copy": "Kopiëren", + "copyDetails": "Details kopiëren", + "retry": "Opnieuw proberen", + "showPassword": "Wachtwoord tonen", + "hidePassword": "Wachtwoord verbergen", + "learnMore": "Meer informatie", + "dismiss": "Sluiten", + "moreInfo": "Meer informatie", + "durationHoursMinutes": "{hours} u {minutes} min", + "durationMinutes": "{minutes} min", + "durationClockMinutes": "{time} min", + "durationClockHours": "{time} u", + "errorIdLabel": "Fout-ID", + "errorIdCopy": "Fout-ID kopiëren", + "errorIdCopied": "Fout-ID gekopieerd" + }, + "apiErrors": { + "measurement": { + "create": { + "invalid": "Controleer de gegevens van de meting en probeer het opnieuw." + }, + "duplicate_timestamp": "Er bestaat al een meting voor dit tijdstip." + }, + "mood": { + "list": { + "invalid": "De filters voor de stemmingslijst zijn ongeldig." + }, + "create": { + "invalid": "Controleer de stemmingsregistratie en probeer het opnieuw." + }, + "update": { + "invalid": "Controleer de stemmingsregistratie en probeer het opnieuw." + }, + "duplicate_timestamp": "Er bestaat al een stemmingsregistratie voor dit tijdstip.", + "not_found": "Deze stemmingsregistratie is niet meer beschikbaar.", + "ratedFactor": { + "out_of_range": "Een factorbeoordeling valt buiten het toegestane bereik." + } + }, + "labs": { + "create": { + "invalid": "Controleer de labuitslag en probeer het opnieuw." + }, + "result": { + "notFound": "Deze labuitslag is niet meer beschikbaar." + }, + "biomarker": { + "notFound": "Deze biomarker is niet meer beschikbaar.", + "duplicate": "Er bestaat al een biomarker met deze naam.", + "create": { + "invalid": "Controleer de gegevens van de biomarker en probeer het opnieuw." + }, + "update": { + "invalid": "Controleer de gegevens van de biomarker en probeer het opnieuw.", + "referenceRangeInvalid": "De onderste referentiewaarde mag niet hoger zijn dan de bovenste." + } + }, + "update": { + "invalid": "Controleer de labuitslag en probeer het opnieuw.", + "linkedFieldsImmutable": "Bewerk de biomarker om de naam, eenheid, het panel of het referentiebereik te wijzigen.", + "qualitativeExpected": "Voer een tekstuitslag in voor deze kwalitatieve meting.", + "numericExpected": "Voer een getal in voor deze numerieke meting.", + "referenceRangeInvalid": "De onderste referentiewaarde mag niet hoger zijn dan de bovenste." + } + }, + "onboarding": { + "disclaimer": { + "invalid": "Bevestig de medische disclaimer opnieuw." + }, + "tour": { + "invalid": "De voortgang van de rondleiding kon niet worden opgeslagen." + }, + "complete": { + "invalid": "Controleer de profielgegevens en probeer het opnieuw." + }, + "user": { + "notFound": "Je account kon niet worden gevonden." + }, + "step": { + "rateLimited": "Te veel pogingen. Wacht even en probeer het opnieuw.", + "invalid": "Deze stap van de introductie kon niet worden opgeslagen.", + "completed": "De introductie is al voltooid.", + "outOfOrder": "Je voortgang in de introductie is gewijzigd. Vernieuw de pagina en ga verder.", + "concurrent": "Je voortgang in de introductie is gewijzigd. Vernieuw de pagina en ga verder." + } + }, + "profile": { + "update": { + "nothingSaved": "Er is niets opgeslagen. Controleer het gemarkeerde veld en probeer het opnieuw.", + "invalidBody": "De profielwijziging kon niet worden gelezen.", + "emailInUse": "Dit e-mailadres is al in gebruik.", + "emailRateLimited": "Te veel wijzigingen van het e-mailadres. Probeer het later opnieuw.", + "emailSecondFactorRequired": "Bevestig met je tweede factor of een passkey om het e-mailadres te wijzigen." + } + }, + "auth": { + "reproof": { + "required": "Bevestig je huidige wachtwoord om dit te wijzigen.", + "failed": "De verificatie is mislukt. Er is niets gewijzigd." + } + }, + "biomarkers": { + "unit": { + "locked": "Deze marker heeft al meetwaarden, dus de eenheid kan niet worden gewijzigd. De opgeslagen waarden zouden zonder omrekening in de nieuwe eenheid worden getoond." + } + }, + "symptoms": { + "definition": { + "limitReached": "Je hebt 8 symptomen. Verberg er een om een ander toe te voegen.", + "notFound": "Dit symptoom bestaat niet meer." + }, + "episode": { + "notOpen": "Die ziekte is niet meer open. Kies een andere of geen." + }, + "event": { + "notFound": "Deze registratie bestaat niet meer." + } + }, + "medications": { + "notFound": "Dit medicijn is niet meer beschikbaar.", + "ingredients": { + "invalid": "Controleer de samenstelling en probeer het opnieuw.", + "unitMismatch": "Deze eenheid is niet beschikbaar voor deze voedingsstof.", + "extract": { + "fileType": "Upload een JPEG, PNG, WebP of PDF.", + "fileTooLarge": "Het bestand is groter dan 10 MB.", + "rateLimited": "Te veel etiketten gelezen. Probeer het over een uur opnieuw.", + "budgetExceeded": "Je AI-gebruiksbudget voor vandaag is bereikt.", + "failed": "Het etiket kon niet worden gelezen. Probeer een scherpere foto." + } + } + } + }, + "doctorReport": { + "title": "Gezondheidsrapport", + "anamnesisTitle": "Gezondheidsprofiel", + "anamnesisNotRecorded": "Niet vastgelegd", + "anamnesisUnreadable": "Opgeslagen waarde kon niet worden gelezen", + "anamnesisConditions": "Chronische aandoeningen", + "anamnesisSmoking": "Rookstatus", + "anamnesisAlcohol": "Alcoholgebruik", + "anamnesisShiftSchedule": "Werkrooster", + "anamnesisColFact": "Profielonderdeel", + "anamnesisColValue": "Vastgelegde waarde", + "subtitle": "HealthLog: persoonlijk gezondheidsrapport", + "patient": "Patiënt", + "dateOfBirth": "Geboortedatum", + "gender": "Geslacht", + "genderMale": "Man", + "genderFemale": "Vrouw", + "genderOther": "Non-binair", + "height": "Lengte", + "period": "Rapportageperiode", + "createdOn": "Aangemaakt op", + "emergency": { + "title": "Noodinformatie", + "subtitle": "Voor gebruik in een acute situatie. Door de patiënt zelf opgegeven; bevestig waar mogelijk.", + "none": "Niet vastgelegd", + "unreadable": "Opgeslagen waarde kon niet worden gelezen", + "bloodType": "Bloedgroep", + "bloodTypeUnknown": "Onbekend", + "bloodTypeValues": { + "A_POS": "A positief", + "A_NEG": "A negatief", + "B_POS": "B positief", + "B_NEG": "B negatief", + "AB_POS": "AB positief", + "AB_NEG": "AB negatief", + "O_POS": "O positief", + "O_NEG": "O negatief" + }, + "severeAllergies": "Ernstige allergieën", + "activeMedications": "Huidige medicatie", + "chronicConditions": "Chronische aandoeningen", + "implants": "Implantaten en hulpmiddelen", + "advanceDirective": "Wilsverklaring", + "advanceDirectiveValues": { + "EXISTS": "Aanwezig", + "NONE": "Geen", + "UNKNOWN": "Niet opgegeven" + }, + "organDonor": "Orgaandonor", + "organDonorValues": { + "YES": "Ja", + "NO": "Nee", + "UNKNOWN": "Niet opgegeven" + }, + "contacts": "Contactpersonen voor noodgevallen", + "notes": "Aanvullende opmerkingen" + }, + "vitalsTitle": "Vitale functies: overzicht", + "colParameter": "Parameter", + "colCurrent": "Huidig", + "colAvgPeriod": "Gem. periode", + "colMin": "Min", + "colMax": "Max", + "colN": "n", + "bpClassificationTitle": "Bloeddruk: ESH-classificatie (2023)", + "avgBp": "Gemiddelde bloeddruk", + "classification": "Classificatie", + "bmiTitle": "Body-mass-index (BMI)", + "bmiRow": "BMI: {bmi} kg/m², classificatie: {class} (WHO)", + "complianceTitle": "Therapietrouw medicatie", + "glp1Title": "GLP-1-therapie", + "glp1WeightSummary": "Gewicht in de rapportageperiode: {start} kg → {end} kg ({delta} kg)", + "glp1CurrentDose": "Huidige dosis: {value} {unit} (sinds {since})", + "glp1Compliance": "Therapietrouw: {taken} / {total} ({rate}%)", + "glp1SideEffectsTitle": "Vastgelegde bijwerkingen", + "colGlp1Date": "Datum", + "colGlp1Dose": "Dosis", + "colGlp1Note": "Notitie", + "colGlp1SideEffect": "Bijwerking", + "colMedication": "Medicijn", + "colTaken": "Ingenomen", + "colSkipped": "Overgeslagen", + "colMissed": "Gemist", + "colExpected": "Verwacht", + "colComplianceRate": "Therapietrouw (%)", + "moodTitle": "Verloop van de stemming", + "moodSummary": "Gemiddeld {avg} / 5,0, {count} registraties, bereik {min}–{max}", + "colMood": "Stemming", + "colCount": "Aantal", + "colShare": "Aandeel", + "footerDisclaimer1": "Dit rapport is automatisch gegenereerd uit zelf bijgehouden gegevens en is bedoeld ter ondersteuning van", + "footerDisclaimer2": "het gesprek tussen arts en patiënt. Het vervangt geen medische diagnose. Correlaties wijzen niet op een oorzakelijk verband.", + "footerSource": "Bron: HealthLog | Tijdzone: {timezone} | Aangemaakt: {timestamp}", + "unitSteps": "stappen", + "bmiUnderweight": "Ondergewicht", + "bmiNormal": "Normaal gewicht", + "bmiOverweight": "Overgewicht (pre-obesitas)", + "bmiObeseGrade1": "Obesitas graad I", + "bmiObeseGrade2": "Obesitas graad II", + "bmiObeseGrade3": "Obesitas graad III", + "bpOptimal": "Optimaal", + "bpNormal": "Normaal", + "bpHighNormal": "Hoog-normaal", + "bpHypertensionGrade1": "Hypertensie graad 1", + "bpHypertensionGrade2": "Hypertensie graad 2", + "bpHypertensionGrade3": "Hypertensie graad 3", + "moodAwful": "Zeer slecht", + "moodBad": "Slecht", + "moodNeutral": "Neutraal", + "moodGood": "Goed", + "moodGreat": "Zeer goed", + "typeGlucoseFasting": "Glucose (nuchter)", + "typeGlucosePostprandial": "Glucose (postprandiaal)", + "typeGlucoseRandom": "Glucose (willekeurig)", + "typeGlucoseBedtime": "Glucose (voor het slapengaan)", + "typeGlucoseUnspecified": "Glucose (zonder context)", + "glucoseClassificationTitle": "Bloedglucose: referentiebereiken (ADA 2024 / DDG)", + "glucoseRow": "{label}: gem. {avg} {unit} (doel {rangeMin}–{rangeMax}), {class}", + "glucoseInTarget": "binnen doel", + "glucoseBelowTarget": "onder doel", + "glucoseAboveTarget": "boven doel", + "practiceLabel": "Praktijk", + "insurer": "Zorgverzekeraar", + "insuranceNumber": "Verzekeringsnr.", + "summaryTitle": "Klinische samenvatting", + "summaryReadings": "Vastgelegd over {days} dagen: {count} metingen van {params} parameters.", + "summaryTrend": "{label}: laatste {latest} {arrow}", + "summaryAdherence": "Therapietrouw medicatie: {rate}% (gewogen gemiddelde).", + "chartsTitle": "Trendgrafieken", + "packageReadme": "HealthLog-gezondheidsdossier\n\nDit pakket bevat:\n- report.pdf: het gezondheidsrapport voor je arts.\n- bundle.json: dezelfde gegevens als HL7 FHIR R4-documentbundel (Bundle), compatibel met de ePA.\n\nGegenereerd met HealthLog.", + "wellnessTitle": "Overzicht welzijn", + "wellnessDisclaimer": "Dit zijn beschrijvende welzijnsscores, berekend uit je bijgehouden signalen (0–100). Het zijn geen klinische beoordelingen of diagnoses.", + "wellnessRecovery": "Herstel", + "wellnessStress": "Stress", + "wellnessStrain": "Belasting", + "cycleTitle": "Menstruatiecyclus", + "cycleLmp": "Laatste menstruatie", + "cycleAvgLength": "Gemiddelde cyclusduur", + "cycleAvgPeriod": "Gemiddelde menstruatieduur", + "cyclePhase": "Huidige fase", + "cycleDays": "dagen", + "cycleColStart": "Begin menstruatie", + "cycleColLength": "Cyclusduur (dagen)", + "cycleColPeriod": "Menstruatieduur (dagen)", + "cyclePhases": { + "MENSTRUAL": "Menstruatiefase", + "FOLLICULAR": "Folliculaire fase", + "OVULATORY": "Ovulatiefase", + "LUTEAL": "Luteale fase" + }, + "labsTitle": "Labuitslagen", + "labsColAnalyte": "Biomarker", + "labsColValue": "Waarde", + "labsColReference": "Referentie", + "labsColStatus": "Status", + "labsColDate": "Datum", + "glucoseClinical": { + "title": "Glucoseoverzicht (klinisch)", + "colMetric": "Maat", + "colValue": "Waarde", + "tirInRange": "Tijd binnen bereik ({low}–{high} {unit})", + "tirLow": "Laag (< {low} {unit})", + "tirVeryLow": "Zeer laag (< {veryLow} {unit})", + "tirHigh": "Hoog (> {high} {unit})", + "tirVeryHigh": "Zeer hoog (> {veryHigh} {unit})", + "mean": "Gemiddelde glucose", + "gmi": "Glucose Management Indicator (GMI)", + "eA1c": "Geschatte HbA1c", + "cv": "Variabiliteit (CV%)", + "spotCaveat": "Dit zijn schattingen op basis van losse metingen, geen profiel van continue glucosemonitoring. Lees ze als een richting, niet als een klinisch oordeel." + }, + "illnessTitle": "Aandoeningen en ziekten", + "illnessOngoing": "Lopend", + "illnessColCondition": "Aandoening", + "illnessColBodySite": "Lichaamsdeel", + "illnessColType": "Type", + "illnessColLifecycle": "Verloop", + "illnessColOnset": "Begin", + "illnessColResolved": "Hersteld", + "allergiesTitle": "Allergieën en intoleranties", + "reactionUnreadable": "Reactie vastgelegd, maar kon niet worden ontsleuteld", + "allergiesColSubstance": "Stof", + "allergiesColCategory": "Categorie", + "allergiesColKind": "Soort", + "allergiesColSeverity": "Ernst", + "allergiesColReaction": "Reactie", + "allergiesColStatus": "Status", + "familyHistoryTitle": "Familieanamnese", + "familyHistoryColRelationship": "Familielid", + "familyHistoryColCondition": "Aandoening", + "familyHistoryColAgeAtOnset": "Leeftijd bij begin", + "labsSourceRangeNote": "* Het referentiebereik komt uit het rapport zelf en wijkt af van het opgeslagen bereik:", + "labsCatalogRangeLabel": "opgeslagen bereik", + "visitsTitle": "Bezoeken", + "visitsColDate": "Datum", + "visitsColPractice": "Praktijk", + "visitsColKind": "Soort", + "visitsColReason": "Reden", + "visitsColOutcome": "Uitkomst", + "visitsColConditions": "Aandoeningen", + "surgicalHistoryTitle": "Operaties in het verleden", + "surgicalHistoryColDate": "Datum", + "surgicalHistoryColProcedure": "Ingreep", + "surgicalHistoryColBodySite": "Lichaamsdeel", + "surgicalHistoryColOutcome": "Uitkomst", + "immunizationsTitle": "Vaccinaties", + "immunizationsColDate": "Datum", + "immunizationsColVaccine": "Vaccin", + "immunizationsColDose": "Dosis", + "immunizationsColLot": "Batchnr.", + "courseRange": "Verloop van {start} tot {end}", + "courseSince": "Verloop sinds {start}", + "lifePackYears": "Pakjesjaren", + "lifeAuditC": "AUDIT-C (screeningstest)", + "lifeAuditCScore": "{score} van 12 op {date}.", + "lifeAuditCAbove": "Op of boven de afkapwaarde van {cutoff} ({source}).", + "lifeAuditCBelow": "Onder de afkapwaarde van {cutoff} ({source}).", + "lifeAuditCNoCutoff": "Geen geslachtsspecifieke afkapwaarde toegepast.", + "lifeActivity": "Lichamelijke activiteit", + "lifeActivityValue": "{minutes} minuten per week, zelf opgegeven", + "lifeSitting": "Zitten op een werkdag", + "lifeSittingValue": "{hours} uur, zelf opgegeven", + "lifeWork": "Werk", + "lifeNightWork": "nachtwerk", + "lifeExposures": "blootstellingen: {list}" + }, + "errorBoundary": { + "title": "Er is iets misgegaan", + "description": "Er is een onverwachte fout opgetreden. Je kunt het opnieuw proberen, de technische details kopiëren of een bugmelding openen." + }, + "notFound": { + "title": "Deze pagina bestaat niet.", + "backToDashboard": "Terug naar het dashboard" + }, + "offlineBanner": { + "message": "Geen verbinding: wijzigingen kunnen pas worden opgeslagen als je weer online bent.", + "saveFailed": "Opslaan is mislukt, je bent offline. Probeer het opnieuw zodra je weer online bent.", + "showingCached": "Je laatst gesynchroniseerde gegevens worden getoond." + }, + "demoBanner": { + "message": "Demomodus: wijzigingen worden niet opgeslagen." + }, + "nav": { + "dashboard": "Dashboard", + "measurements": "Metingen", + "medications": "Medicatie", + "insights": "Inzichten", + "achievements": "Prestaties", + "settings": "Instellingen", + "admin": "Beheeromgeving", + "logout": "Uitloggen", + "login": "Inloggen", + "notifications": "Meldingen", + "theme": "Thema", + "themeSystem": "Systeem", + "themeDark": "Donker", + "themeLight": "Licht", + "collapseSidebar": "Inklappen", + "expandSidebar": "Uitklappen", + "collapseSidebarLabel": "Zijbalk inklappen", + "expandSidebarLabel": "Zijbalk uitklappen", + "userMenu": "Gebruikersmenu", + "accountSettings": "Accountinstellingen", + "mood": "Stemming", + "coach": "Coach", + "skipToContent": "Naar de inhoud", + "breadcrumb": "Je bent hier", + "sidebar": "Zijbalk", + "mainNavigation": "Hoofdnavigatie", + "mobileNavigation": "Mobiele navigatie", + "loadingScreen": "Laden…", + "more": "Meer", + "moreSheetTitle": "Meer", + "moreSheetDescription": "Ga naar de rest van HealthLog.", + "capture": { + "title": "Vastleggen", + "description": "Wat wil je vastleggen?", + "measurement": "Meting", + "measurementDescription": "Gewicht, bloeddruk, hartslag en meer", + "medication": "Medicatie", + "medicationDescription": "Een dosis als ingenomen markeren", + "mood": "Stemming", + "moodDescription": "Je stemming en tags vastleggen", + "workout": "Training", + "workoutDescription": "Een sessie die je apparaten niet hebben geregistreerd", + "symptom": "Symptoom", + "symptomDescription": "Een van je eigen symptomen, met de ernst", + "lifeEventDescription": "Een verhuizing, een geboorte, een nieuwe baan", + "lifeEvent": "Levensgebeurtenis" + }, + "cycle": "Cyclus", + "labs": "Labwaarden", + "profile": "Profiel", + "vorsorge": "Controles", + "illness": "Ziekte", + "documents": "Documenten", + "vaccinations": "Vaccinaties", + "mentalWellbeing": "Mentaal welzijn", + "timeline": "Tijdlijn" + }, + "auth": { + "login": "Inloggen", + "register": "Registreren", + "username": "Gebruikersnaam", + "password": "Wachtwoord", + "email": "E-mailadres", + "emailPlaceholder": "naam@voorbeeld.nl", + "emailOrUsername": "E-mailadres of gebruikersnaam", + "emailOrUsernamePlaceholder": "naam@voorbeeld.nl of gebruikersnaam", + "loginWithPasskey": "Inloggen met passkey", + "loginWithPassword": "Inloggen met wachtwoord", + "noAccount": "Nog geen account?", + "hasAccount": "Heb je al een account?", + "loginFailed": "Inloggen mislukt", + "registerFailed": "Registratie mislukt", + "invitedBanner": "Je bent uitgenodigd. Maak je account aan, ook al is registratie verder gesloten.", + "alreadySignedIn": { + "title": "Je bent al ingelogd", + "body": "Je bent ingelogd als {username}. Met een uitnodiging maak je een nieuw account aan. Log uit om de uitnodiging te accepteren.", + "signOut": "Uitloggen en uitnodiging accepteren" + }, + "createAccount": "Account aanmaken", + "backToPasskey": "Terug naar passkey", + "passkeySetupLater": "Je kunt passkeys op elk moment instellen in Instellingen.", + "passwordMinLength": "Min. 12 tekens", + "passwordTooShort": "Het wachtwoord moet minstens {minLength} tekens lang zijn.", + "privacyPolicy": "Privacybeleid", + "passwordBreached": "Dit wachtwoord komt voor in bekende datalekken. Kies een ander wachtwoord.", + "oidc": { + "signInDefault": "Inloggen met SSO", + "errorDenied": "Inloggen is geannuleerd.", + "errorNoEmail": "Je identiteitsprovider heeft geen geverifieerd e-mailadres gedeeld.", + "errorEmailUnverified": "Je identiteitsprovider heeft je e-mailadres niet als geverifieerd gemarkeerd.", + "errorIdentityConflict": "Dat e-mailadres hoort bij een account dat al aan een andere SSO-identiteit is gekoppeld.", + "errorRegistrationDisabled": "Er is geen account dat bij die identiteit past, en nieuwe registraties zijn momenteel gesloten.", + "errorFailed": "Single sign-on is mislukt. Probeer het opnieuw.", + "errorLinkRequired": "Er bestaat hier al een account met dit e-mailadres. Log daar één keer in met het wachtwoord of de passkey om het aan single sign-on te koppelen." + }, + "native": { + "signingInToApp": "Inloggen bij de HealthLog-app" + }, + "mfa": { + "title": "Tweestapsverificatie", + "totpHint": "Voer de 6-cijferige code uit je authenticator-app in.", + "recoveryHint": "Voer een van je opgeslagen herstelcodes in.", + "securityKeyHint": "Gebruik je geregistreerde beveiligingssleutel om verder te gaan.", + "codeLabel": "Verificatiecode", + "recoveryLabel": "Herstelcode", + "verify": "Verifiëren", + "verifyFailed": "Verificatie mislukt. Probeer het opnieuw.", + "useSecurityKey": "Een beveiligingssleutel gebruiken", + "useRecoveryCode": "Een herstelcode gebruiken", + "useAuthenticator": "Je authenticator-app gebruiken", + "backToLogin": "Terug naar inloggen", + "rememberDevice": "Dit apparaat 30 dagen vertrouwen" + }, + "enrollMfa": { + "title": "Stel een tweede factor in", + "body": "Je beheerder vereist een tweede factor voor dit account. Voeg een authenticator-app of een beveiligingssleutel toe om verder te gaan.", + "signOut": "Uitloggen" + }, + "confirmAccess": { + "title": "Bevestig dat jij het bent", + "body": "Een assistent vraagt om verbinding te maken met je HealthLog-gegevens. Bevestig dat jij het bent. Daarna ga je terug om te beslissen of je dit toestaat.", + "action": "Bevestigen", + "failed": "Dat is niet gelukt. Probeer het opnieuw.", + "nothingToConfirm": "Er is hier niets te bevestigen. Start de verbinding opnieuw vanuit je assistent." + }, + "insecureTransport": { + "title": "Inloggen kan op deze pagina niet worden voltooid", + "body": "Deze server zet zijn inlogcookie alleen via https://, maar deze pagina is geopend via http://. De browser zou de cookie weggooien, dus inloggen is hier uitgeschakeld.", + "fixLan": "Server op een thuisnetwerk zonder TLS: stel SESSION_COOKIE_SECURE=false in bij de instellingen en start de server opnieuw.", + "fixHttps": "Server achter een HTTPS-proxy: open in plaats daarvan het https://-adres en zorg dat de proxy X-Forwarded-Proto: https doorstuurt.", + "localhostNote": "Deze pagina draait op http://localhost, terwijl de server zijn inlogcookie alleen voor https:// zet. De meeste browsers accepteren dat op localhost; als je na het inloggen steeds hier terugkomt, stel dan SESSION_COOKIE_SECURE=false in." + }, + "claim": { + "title": "Neem je gezondheidsdossier over", + "titleNamed": "Welkom, {name}", + "description": "Je gezondheidsdossier is tot nu toe voor je bijgehouden. Kies hoe je inlogt en het wordt je eigen account. Er wordt niets gekopieerd of verplaatst.", + "loading": "Je link wordt gecontroleerd…", + "invalid": "Deze link werkt niet meer", + "invalidHint": "De link is onbekend, verlopen, ingetrokken of al gebruikt. Vraag de persoon die hem heeft gestuurd om een nieuwe.", + "oidcOnly": "Deze server staat alleen single sign-on toe. Ga in plaats daarvan verder met je identiteitsprovider.", + "signedInTitle": "Log eerst uit", + "signedInBody": "Je bent ingelogd als {username}. Met deze link wordt een login voor iemand anders ingesteld, dus log uit voordat je hem gebruikt.", + "signOut": "Uitloggen en verdergaan", + "guardiansTitle": "Wie voorlopig toegang houdt", + "guardiansHint": "Voorgesteld door de mensen die je dossier hebben bijgehouden. Je beslist direct na het inloggen.", + "guardianUnnamed": "Een verzorger", + "usernameHint": "3 tot 30 letters, cijfers, _ of -.", + "usernameReserved": "Gebruikersnamen die met managed- beginnen, zijn gereserveerd.", + "emailHint": "Verplicht, zodat je weer toegang krijgt als je je wachtwoord vergeet.", + "consentNote": "Je bevestigt de disclaimer en elk gebruik van AI zelf. Tot je dat doet, wordt er niets uit je dossier naar een AI-provider gestuurd.", + "expires": "Deze link is geldig tot {date}.", + "submit": "Overnemen", + "submitting": "Overnemen…", + "errorTaken": "Die gebruikersnaam of dat e-mailadres is al in gebruik.", + "errorRateLimit": "Te veel pogingen. Wacht een paar minuten en probeer het opnieuw.", + "errorFailed": "Dat is niet gelukt. Probeer het zo opnieuw.", + "errorOffline": "De server is niet bereikt. Controleer je verbinding en probeer het opnieuw.", + "ssoContinue": "Doorgaan met {provider}", + "ssoStarting": "Doorsturen…", + "ssoHint": "Vanaf dan log je hier in met je {provider}-account.", + "ssoDivider": "of", + "ssoFallbackName": "SSO", + "errorTitle": "De overdracht is niet gelukt", + "errorSubjectBound": "Deze login hoort al bij een ander account op deze server. Open de link opnieuw en gebruik een ander account bij je identiteitsprovider.", + "errorEmailTaken": "Je identiteitsprovider gaf een e-mailadres door dat al door een ander account hier wordt gebruikt. Open de link opnieuw en gebruik een ander account, of vraag het de beheerder van de server.", + "errorUsernameTaken": "Iemand heeft die gebruikersnaam intussen al gekozen. Open de link opnieuw en kies een andere.", + "errorSignedIn": "Je was ingelogd toen je terugkwam. Log uit en open de link daarna opnieuw.", + "errorSso": "Inloggen via je identiteitsprovider is niet gelukt. Open de link opnieuw om het nog eens te proberen.", + "signInInstead": "Inloggen bij dat account" + }, + "inviteInvalid": { + "title": "Ongeldige uitnodiging", + "description": "Deze uitnodigingslink is onvolledig of verkeerd gekopieerd. Vraag de persoon die je heeft uitgenodigd om een nieuwe link.", + "toLogin": "Naar inloggen" + } + }, + "dashboard": { + "title": "Dashboard", + "greeting": { + "morning": "Goedemorgen", + "day": "Hallo", + "evening": "Goedenavond" + }, + "welcomeBack": "{greeting}, welkom terug.", + "welcomeBackWithName": "{greeting} {name}, welkom terug.", + "greetingSalutation": "Hoi {name}", + "streakLabel": "dagen op rij", + "weight": "Gewicht", + "bloodPressure": "Bloeddruk", + "pulse": "Hartslag", + "bodyFat": "Vetpercentage", + "sleep": "Slaap", + "steps": "Stappen", + "vo2Max": "VO₂max", + "vo2MaxUnit": "mL/(kg·min)", + "bpInTarget": "Bloeddruk binnen doel", + "weightShort": "Gewicht", + "bloodPressureSysShort": "Bloeddruk (sys)", + "bloodPressureDiaShort": "Bloeddruk (dia)", + "pulseShort": "Hartslag", + "bodyFatShort": "Vet%", + "moodShort": "Stemming", + "sleepShort": "Slaap", + "stepsShort": "Stappen", + "vo2MaxShort": "VO₂max", + "bpInTargetWindow90": "Bloeddruk binnen doel (90 d)", + "bpInTargetWindowDynamic": "Bloeddruk binnen doel ({days} d)", + "bpInTargetCollecting": "gegevens verzamelen", + "medications": "Medicatie", + "quickAddMeasurement": "Meting vastleggen", + "quickAddMood": "Stemming vastleggen", + "quickAddMedicationIntake": "Medicatie-inname vastleggen", + "quickAddWorkout": "Training vastleggen", + "quickAddLifeEvent": "Levensgebeurtenis vastleggen", + "customizeDashboard": "Dashboard aanpassen", + "medicationIntakeQuickAdd": { + "sheetDescription": "Leg dosis, tijdstip en medicijn vast met een paar tikken.", + "medicationLabel": "Medicijn", + "medicationPlaceholder": "Kies een medicijn", + "doseLabel": "Dosis", + "dosePlaceholder": "bijv. 5 mg", + "doseHint": "Vooraf ingevuld met de standaarddosis. Pas deze aan om alleen voor deze inname een afwijkende dosis vast te leggen.", + "timeLabel": "Tijdstip van inname", + "saveError": "De medicatie-inname kon niet worden opgeslagen.", + "emptyTitle": "Nog geen medicatie", + "emptyDescription": "Maak eerst een medicijn met een schema aan en kom dan hier terug om de inname vast te leggen.", + "emptyCta": "Medicijn toevoegen", + "noneActionableTitle": "Vandaag niets in te nemen", + "noneActionableDescription": "Je medicatie is gepauzeerd, wordt alleen als archief bewaard, of de kuur is nog niet begonnen of al afgelopen. Een eerdere dosis kun je nog toevoegen via de geschiedenis van een medicijn.", + "noneActionableCta": "Medicatie openen" + }, + "quickEntryDiscard": { + "title": "Deze invoer weggooien?", + "description": "Je hebt niet-opgeslagen invoer. Het formulier sluiten en verliezen wat je hebt getypt?", + "confirm": "Weggooien", + "cancel": "Verder bewerken" + }, + "compliance7d": "Therapietrouw (7 dagen)", + "mood": "Stemming", + "customizeTitle": "Dashboardindeling", + "heroItemsTitle": "Hoogtepunten van vandaag", + "heroItemsDescription": "Kies welke soorten items in Hoogtepunten van vandaag kunnen verschijnen.", + "heroItemsNotificationNote": "Meldingsinstellingen worden apart beheerd.", + "heroContentTitle": "Bovenste kaart toont", + "heroContentScore": "Gezondheidsscore en dagoverzicht", + "heroContentReminders": "Hoogtepunten van vandaag", + "heroItems": { + "coach_checkin": "Check-ins van de Coach", + "dose_window": "Medicatiedoses", + "preventive_care": "Preventieve zorg", + "sync_issue": "Synchronisatieproblemen", + "milestone": "Mijlpalen", + "ecg_new_recording": "Nieuwe ECG-opnames", + "tension_window": "Momenten van spanning", + "same_time_baseline": "Activiteit op hetzelfde tijdstip", + "upcoming_visit": "Afspraken" + }, + "layoutReset": "Standaardwaarden herstellen", + "layoutResetTitle": "Dashboardindeling herstellen?", + "layoutResetBody": "Je tegelindeling en je keuzes voor Hoogtepunten van vandaag worden teruggezet naar de standaardwaarden.", + "layoutResetConfirm": "Indeling herstellen", + "layoutSaveSuccess": "Dashboardindeling opgeslagen", + "layoutSaveError": "Dashboardindeling kon niet worden opgeslagen", + "layoutConflictReloaded": "Indeling opnieuw geladen van de server. Voer je wijziging opnieuw uit.", + "layoutResetSuccess": "Standaardindeling hersteld", + "layoutUsingDefaults": "Standaardindeling in gebruik", + "layoutCustomized": "Aangepaste indeling actief", + "moveUp": "Omhoog", + "moveDown": "Omlaag", + "layoutTileColumn": "Tegel", + "layoutChartColumn": "Grafiek", + "layoutNativeOnlyTitle": "Getoond in de mobiele app", + "layoutNativeOnlyHint": "Deze widgets worden door de mobiele app getoond, niet door deze pagina. Ze worden in dezelfde indeling opgeslagen, dus hier stel je in of ze zichtbaar zijn.", + "dragHandle": "Slepen om te herschikken", + "dragHandleHint": "Sleep de greep om deze widget te verplaatsen. Je kunt ook de pijlknoppen Omhoog en Omlaag gebruiken, of de greep selecteren en op Spatie en de pijltjestoetsen drukken.", + "emptyTitle": "Je dashboard is leeg", + "emptyDescription": "Leg je eerste meting of stemming vast. Tegels en grafieken verschijnen automatisch zodra er gegevens binnenkomen.", + "emptyAddMeasurement": "Je eerste meting toevoegen", + "staleHint": "Laatste meting {count} d geleden", + "staleHintWeeksOne": "Laatste meting 1 week geleden", + "staleHintWeeksOther": "Laatste meting {count} weken geleden", + "staleHintWeeksFew": "Laatste meting {count} weken geleden", + "staleHintMonthsOne": "Laatste meting 1 maand geleden", + "staleHintMonthsOther": "Laatste meting {count} maanden geleden", + "staleHintMonthsFew": "Laatste meting {count} maanden geleden", + "recentWorkouts": { + "title": "Recente trainingen", + "viewAll": "Alles bekijken", + "empty": { + "title": "Nog geen trainingen", + "cta": "Koppel een gegevensbron in Instellingen om hier trainingen te zien." + } + }, + "metric": { + "title": { + "weight": "Gewicht", + "bloodPressure": "Bloeddruk", + "pulse": "Hartslag", + "bodyFat": "Vetpercentage", + "glucose": "Bloedglucose", + "sleep": "Slaap", + "steps": "Stappen", + "totalBodyWater": "Totaal lichaamswater", + "boneMass": "Botmassa", + "oxygenSaturation": "Zuurstofsaturatie", + "mood": "Stemming", + "bmi": "BMI" + }, + "unit": { + "weight": "kg", + "bloodPressure": "mmHg", + "pulse": "bpm", + "bodyFat": "%", + "glucose": "mg/dL", + "sleep": "u", + "steps": "stappen", + "totalBodyWater": "kg", + "boneMass": "kg", + "oxygenSaturation": "%", + "mood": "/5", + "bmi": "kg/m²" + } + }, + "keyBackupBanner": { + "title": "Maak een back-up van je versleutelingssleutel", + "body": "Zonder een kopie van de sleutel kunnen je gegevens na een herinstallatie niet worden hersteld. Het kost een minuutje.", + "action": "Stap openen" + }, + "quickAddSymptom": "Symptoom vastleggen", + "todayCardVisible": "Bovenste kaart tonen" + }, + "measurements": { + "title": "Metingen", + "subtitle": "Leg meetwaarden vast en bekijk de volledige geschiedenis.", + "addMeasurement": "Toevoegen", + "editMeasurement": "Meting bewerken", + "type": "Type", + "value": "Waarde", + "date": "Datum", + "source": "Bron", + "notes": "Notities", + "typeWeight": "Gewicht", + "typeBloodPressure": "Bloeddruk", + "typeBpSys": "Sys", + "typeBpDia": "Dia", + "typePulse": "Hartslag", + "typeBodyFat": "Vetpercentage", + "typeSleep": "Slaap", + "typeSteps": "Stappen", + "typeBloodGlucose": "Bloedglucose", + "typeTotalBodyWater": "Totaal lichaamswater", + "typeBoneMass": "Botmassa", + "typeOxygenSaturation": "Zuurstofsaturatie", + "typeHeartRateVariability": "Hartslagvariabiliteit", + "typeRestingHeartRate": "Rusthartslag", + "typeActiveEnergyBurned": "Actieve energie", + "typeFlightsClimbed": "Beklommen verdiepingen", + "typeWalkingRunningDistance": "Afstand wandelen + hardlopen", + "typeVo2Max": "VO₂max", + "typeBodyTemperature": "Lichaamstemperatuur", + "typeFatFreeMass": "Vetvrije massa", + "typeFatMass": "Vetmassa", + "typeMuscleMass": "Spiermassa", + "typeSkinTemperature": "Huidtemperatuur", + "typePulseWaveVelocity": "Polsgolfsnelheid", + "typeVascularAge": "Vaatleeftijd", + "typeVisceralFat": "Visceraal vet", + "typeAudioExposureEnv": "Geluidsblootstelling (omgeving)", + "typeAudioExposureHeadphone": "Geluidsblootstelling (koptelefoon)", + "typeTimeInDaylight": "Tijd in daglicht", + "typeWalkingSteadiness": "Loopstabiliteit", + "typeAudioExposureEvent": "Melding hard geluid via koptelefoon", + "typeRespiratoryRate": "Ademhalingsfrequentie", + "typeBodyMassIndex": "Body-mass-index", + "typeLeanBodyMass": "Vetvrije lichaamsmassa", + "typeWalkingHeartRateAverage": "Hartslag tijdens wandelen (gem.)", + "typeWalkingAsymmetry": "Loopasymmetrie", + "typeWalkingDoubleSupport": "Dubbele steunfase bij lopen", + "typeWalkingStepLength": "Staplengte", + "typeWalkingSpeed": "Loopsnelheid", + "glucoseContext": "Context", + "glucoseContextFasting": "Nuchter (≥8 u zonder eten)", + "glucoseContextPostprandial": "Na de maaltijd (2 u na het eten)", + "glucoseContextRandom": "Willekeurig / tussendoor", + "glucoseContextBedtime": "Voor het slapengaan", + "unitHours": "uur", + "unitSteps": "stappen", + "sourceManual": "Handmatig", + "sourceWithings": "Withings", + "sourceImport": "Import", + "sourceAppleHealth": "Apple Health", + "systolicLabel": "Systolisch (mmHg)", + "diastolicLabel": "Diastolisch (mmHg)", + "pulseLabel": "Hartslag (bpm)", + "valueWithUnit": "Waarde ({unit})", + "timestamp": "Tijdstip", + "timestampBackdateHint": "Pas datum en tijd aan om een eerdere meting vast te leggen.", + "notesPlaceholder": "bijv. na een maaltijd", + "formReset": "Formulier herstellen", + "saveError": "Fout bij opslaan", + "duplicateTimestamp": "Er bestaat al een meting van dit type op het gekozen tijdstip.", + "serverOwnedSource": "Waarden van een gekoppelde bron kunnen niet worden bewerkt, maar het tijdstip en de notitie wel.", + "deleteError": "Fout bij verwijderen", + "deletedToast": "Meting verwijderd", + "restoredToast": "Meting teruggezet", + "restoreError": "Terugzetten mislukt", + "invalidValue": "Voer een geldige waarde in.", + "invalidTimestamp": "Kies een geldig tijdstip.", + "loginRequired": "Log in om metingen te bekijken.", + "allTypes": "Alle types", + "measurementCount": "{count} metingen", + "emptyTitle": "Nog geen metingen", + "emptyDescription": "Leg je gewicht, bloeddruk, hartslag of andere vitale waarden vast om trends te volgen.", + "emptyFilteredTitle": "Geen metingen die aan dit filter voldoen", + "emptyFilteredDescription": "Probeer een ander type of wis het filter om alle metingen te zien.", + "emptyAddFirst": "Je eerste meting toevoegen", + "emptyResetFilter": "Alle types tonen", + "comment": "Opmerking", + "actions": "Acties", + "deleteConfirmTitle": "Meting verwijderen?", + "deleteConfirmDescription": "Deze meting wordt verwijderd. Je kunt dit daarna nog even ongedaan maken.", + "pageInfo": "Pagina {page} van {total}", + "previousPage": "Vorige pagina", + "nextPage": "Volgende pagina", + "dailyTotalCaption": "({count} metingen)", + "openMetricInsights": "Inzichten voor {type} openen", + "sleepNapCaption": "+{count} dutje(s)", + "sleepAwakeningsCaption": "{count} keer wakker", + "expandDay": "Metingen van deze dag tonen", + "collapseDay": "Metingen van deze dag verbergen", + "loadError": "Metingen konden niet worden geladen.", + "typeCardioRecovery": "Hartslagherstel", + "typeWristTemperature": "Polstemperatuur", + "typeFallCount": "Valpartijen", + "typeSixMinuteWalkDistance": "Afstand zesminutenwandeltest", + "typeStairAscentSpeed": "Snelheid trap op", + "typeStairDescentSpeed": "Snelheid trap af", + "typeBreathingDisturbances": "Ademhalingsstoornissen tijdens slaap", + "typeIrregularRhythmNotification": "Melding onregelmatig ritme", + "typeHighHeartRateEvent": "Melding hoge hartslag", + "typeLowHeartRateEvent": "Melding lage hartslag", + "typeWalkingSteadinessEvent": "Waarschuwing loopstabiliteit", + "typeBreathingDisturbanceEvent": "Ademhalingsstoornis", + "typeRecoveryScore": "Herstelscore", + "typeStressScore": "Stressscore", + "typeStrainScore": "Belastingsscore", + "typeHrvRmssd": "HRV (RMSSD)", + "typeDayStrain": "Dagbelasting", + "typeWorkoutStrain": "Trainingsbelasting", + "typeSleepPerformance": "Slaapprestatie", + "typeSleepEfficiency": "Slaapefficiëntie", + "typeSleepConsistency": "Slaapregelmaat", + "typeSleepNeed": "Slaapbehoefte", + "typeEnergyExpenditureKj": "Energieverbruik", + "typeAverageHeartRate": "Gemiddelde hartslag", + "typeMaxHeartRate": "Maximale hartslag", + "typeSleepDisturbanceCount": "Slaapverstoringen", + "typeAnsCharge": "ANS-lading", + "typeCardioLoad": "Cardiobelasting", + "typeSleepScore": "Slaapscore", + "typeBodyTemperatureDeviation": "Afwijking lichaamstemperatuur", + "typeResilience": "Veerkracht", + "sourceComputed": "Berekend", + "sourceWhoop": "WHOOP", + "sourceFitbit": "Fitbit", + "sourceNightscout": "Nightscout", + "sourcePolar": "Polar", + "sourceOura": "Oura", + "sourceTelegram": "Telegram", + "sourceMcp": "MCP", + "sourceGoogleHealth": "Google Health", + "sourceStrava": "Strava", + "sourceExternal": "Extern apparaat", + "bulkDeleteSuccess": "{count} metingen verwijderd", + "bulkDeleteSuccessOne": "Meting verwijderd", + "bulkDeleteError": "Fout bij het verwijderen van de geselecteerde metingen", + "bulkDeleteConfirmTitle": "{count} metingen verwijderen?", + "bulkDeleteConfirmTitleOne": "Deze meting verwijderen?", + "bulkDeleteConfirmBody": "De {count} geselecteerde metingen worden verwijderd. Je kunt dit daarna nog even ongedaan maken.", + "bulkDeleteConfirmBodyOne": "De geselecteerde meting wordt verwijderd. Je kunt dit daarna nog even ongedaan maken.", + "typePhq9Score": "PHQ-9-score", + "typeGad7Score": "GAD-7-score", + "typeGripStrength": "Knijpkracht", + "typePainNrs": "Pijn (0–10)", + "typeWaistCircumference": "Middelomtrek", + "typeWaistToHeight": "Middel-lengteverhouding", + "unitScore": "pnt", + "unitRatio": "verhouding", + "unitRating": "beoordeling", + "typeWho5Score": "WHO-5-score", + "typeSciScore": "SCI-score", + "durationReadAs": "Gelezen als {duration}", + "durationHoursMinutes": "{hours} u {minutes} min", + "durationHoursOnly": "{hours} u", + "durationMinutesOnly": "{minutes} min", + "durationInvalid": "Voer een duur in, bijvoorbeeld 7,5, 7:30 of 7h 30m.", + "durationTooLong": "Eén registratie kan niet langer zijn dan 24 uur.", + "sourceHealthConnect": "Health Connect" + }, + "metricCatalog": { + "title": "Wat HealthLog kan bijhouden", + "description": "Alle meetdomeinen die HealthLog ondersteunt, of je er al gegevens voor hebt of niet, en welke bron ze kan leveren.", + "statusPresent": "Bijgehouden", + "statusAbsent": "Nog niet bijgehouden", + "statusModuleOff": "Uit", + "loadError": "Je trackingstatus kon niet worden geladen.", + "connectCta": "Bron koppelen", + "viewCta": "Bekijken", + "ecg": { + "source": "ECG-strips met één afleiding van een compatibel horloge (momenteel Withings ScanWatch), automatisch gesynchroniseerd." + }, + "watchdog": { + "title": "Automatische screening", + "description": "HealthLog houdt ook stil op de achtergrond een oogje in het zeil: meldingen over een onregelmatig ritme en ademhalingsstoornissen van een gekoppeld horloge, waarschuwingen over je gezondheidsstatus bij afwijkingen van je basislijn, en opvallende verschuivingen tussen je twee meest recente labpanels. Er verschijnt alleen een kaart als er iets opvalt. Is minstens één van die bronnen gekoppeld, dan is het ontbreken van een kaart een goed teken en geen ontbrekende functie; is er nog geen enkele gekoppeld, dan wordt er gewoon niets in de gaten gehouden." + } + }, + "mood": { + "title": "Stemming", + "subtitle": "Stemmingstracker en registraties", + "mentalWellbeingLink": "Doe een check-in voor mentaal welzijn", + "addEntry": "Toevoegen", + "editEntry": "Registratie bewerken", + "moodLevel": "Stemming", + "heroQuestion": "Hoe gaat het met je?", + "factorYes": "Ja", + "factorNo": "Nee", + "factorRatingOption": "{label}: {value} van {max}", + "tags": "Tags", + "tagsPlaceholder": "bijv. sport, werk, familie", + "tagsHelp": "Gescheiden door komma's", + "timestamp": "Tijdstip", + "date": "Datum", + "source": "Bron", + "levelSuperGut": "Geweldig", + "levelGut": "Goed", + "levelOkay": "Oké", + "levelSchlecht": "Slecht", + "levelLausig": "Vreselijk", + "sourceMoodlog": "moodLog", + "allMoods": "Alle stemmingen", + "entryCount": "{count} registraties", + "emptyTitle": "Nog geen stemmingsregistraties", + "emptyDescription": "Leg vast hoe je je vandaag voelt om na verloop van tijd patronen te ontdekken.", + "emptyFilteredTitle": "Geen stemmingsregistraties die aan dit filter voldoen", + "emptyFilteredDescription": "Probeer een ander stemmingsniveau of wis het filter om alle registraties te zien.", + "emptyAddFirst": "Je eerste stemming vastleggen", + "emptyResetFilter": "Alle stemmingen tonen", + "actions": "Acties", + "formReset": "Formulier herstellen", + "noteCharCount": "{count}/{max}", + "formResetConfirmTitle": "Dit formulier herstellen?", + "formResetConfirmBody": "Hiermee wis je de stemming, tags en notitie die je hebt ingevoerd. Dit kan niet ongedaan worden gemaakt.", + "formResetConfirmAction": "Herstellen", + "saveError": "Fout bij opslaan", + "tagsNotSaved": "Opgeslagen. Tags die niet meer beschikbaar zijn, zijn weggelaten.", + "deleteError": "Fout bij verwijderen", + "deletedToast": "Registratie verwijderd", + "restoredToast": "Registratie teruggezet", + "restoreError": "Terugzetten mislukt", + "invalidTimestamp": "Kies een geldig tijdstip.", + "deleteConfirmTitle": "Registratie verwijderen?", + "deleteConfirmDescription": "Deze stemmingsregistratie wordt verwijderd. Je kunt dit daarna nog even ongedaan maken.", + "pageInfo": "Pagina {page} van {total}", + "previousPage": "Vorige pagina", + "nextPage": "Volgende pagina", + "loginRequired": "Log in om stemmingsregistraties te bekijken.", + "note": "Notitie", + "noteCollapse": "Notitie inklappen", + "noteExpand": "Volledige notitie tonen", + "notePlaceholder": "Voeg een notitie toe over hoe je je voelt…", + "tagPicker": "Tags", + "tagCategory": { + "feelings": "Gevoelens", + "sleep": "Slaap", + "health": "Gezondheid", + "social": "Sociaal", + "work": "Werk", + "hobbies": "Hobby's", + "factors": "Factoren", + "custom": "Eigen" + }, + "tag": { + "happy": "blij", + "excited": "enthousiast", + "grateful": "dankbaar", + "relaxed": "ontspannen", + "content": "tevreden", + "tired": "moe", + "unsure": "onzeker", + "bored": "verveeld", + "tense": "gespannen", + "angry": "boos", + "stressed": "gestrest", + "sad": "verdrietig", + "sleptWell": "goed geslapen", + "sleptOk": "redelijk geslapen", + "sleptPoorly": "slecht geslapen", + "earlyNight": "vroeg naar bed", + "workedOut": "gesport", + "ateWell": "gezond gegeten", + "hydrated": "genoeg gedronken", + "walked": "gewandeld", + "alcohol": "alcohol", + "caffeine": "cafeïne", + "nicotine": "nicotine", + "family": "familie", + "friends": "vrienden", + "party": "feestje", + "alone": "alleen", + "productive": "productief", + "overtime": "overgewerkt", + "dayOff": "vrije dag", + "travel": "reizen", + "sickDay": "ziek thuis", + "movies": "films", + "reading": "lezen", + "gaming": "gamen", + "music": "muziek", + "outdoors": "buiten", + "fastFood": "fastfood", + "noSweets": "geen snoep", + "bigMeal": "uitgebreide maaltijd", + "factorWork": "werk", + "factorSocial": "sociaal", + "factorSleepQuality": "slaapkwaliteit", + "factorStress": "stress", + "factorConflict": "conflict", + "factorFamily": "familie", + "factorSadness": "verdriet", + "praise": "complimenten" + }, + "sourceManual": "Handmatig", + "sourceWeb": "Web", + "sourceTelegram": "Telegram", + "sourceDaylio": "Daylio", + "bulkDeleteSuccess": "{count} registraties verwijderd", + "bulkDeleteSuccessOne": "Registratie verwijderd", + "bulkDeleteError": "Fout bij het verwijderen van de geselecteerde registraties", + "bulkDeleteConfirmTitle": "{count} registraties verwijderen?", + "bulkDeleteConfirmTitleOne": "Deze registratie verwijderen?", + "bulkDeleteConfirmBody": "De {count} geselecteerde stemmingsregistraties worden verwijderd. Je kunt dit daarna nog even ongedaan maken.", + "bulkDeleteConfirmBodyOne": "De geselecteerde stemmingsregistratie wordt verwijderd. Je kunt dit daarna nog even ongedaan maken.", + "customize": "Stemmingstags aanpassen", + "addTagInline": "Tag toevoegen", + "manage": { + "groupsTitle": "Groepen", + "groupsDescription": "Maak je eigen groepen aan en bepaal in welke volgorde de kiezer ze toont.", + "newGroup": "Nieuwe groep", + "groupLabel": "Groepsnaam", + "groupIcon": "Pictogram", + "groupCreated": "Groep aangemaakt", + "groupRenamed": "Groep opgeslagen", + "groupDeleteTitle": "Groep verwijderen?", + "groupDeleteBody": "Tags in deze groep gaan terug naar hun oorspronkelijke groep. Er worden geen registraties verwijderd.", + "groupDeleted": "Groep verwijderd", + "groupEmpty": "Nog geen eigen groepen.", + "groupLimitReached": "Maximumaantal groepen bereikt", + "tagsTitle": "Tags", + "tagsDescription": "Verberg, orden, verplaats of bewerk de tags die de kiezer toont.", + "newTag": "Nieuwe tag", + "tagLabel": "Tagnaam", + "tagIcon": "Pictogram", + "tagGroup": "Groep", + "usageCount": "{count} registraties", + "hideTag": "Tag verbergen", + "showTag": "Tag tonen", + "moveToGroup": "Naar groep verplaatsen", + "archive": "Archiveren", + "restore": "Herstellen", + "archivedTitle": "Gearchiveerde tags", + "archivedDescription": "Gearchiveerde tags blijven in je eerdere registraties staan. Ze verdwijnen alleen uit de kiezer.", + "archivedEmpty": "Niets gearchiveerd.", + "purgeTitle": "Tag definitief verwijderen?", + "purgeBody": "Hiermee wordt de tag uit {count} eerdere registraties verwijderd. Dit kan niet ongedaan worden gemaakt.", + "purgeAction": "Definitief verwijderen", + "purged": "Tag verwijderd", + "tagLimitReached": "Maximumaantal tags bereikt", + "iconPickerTitle": "Kies een pictogram", + "iconSearchPlaceholder": "Pictogrammen zoeken…", + "iconSearchEmpty": "Geen passend pictogram gevonden.", + "iconSearchClear": "Zoekopdracht wissen", + "orderSave": "Volgorde opslaan", + "orderSaved": "Volgorde opgeslagen", + "moveUp": "Omhoog", + "moveDown": "Omlaag", + "iconGroupEmotions": "Emoties", + "iconGroupActivities": "Activiteiten", + "iconGroupHealth": "Gezondheid", + "iconGroupFood": "Eten en drinken", + "iconGroupWeather": "Weer", + "iconGroupPlaces": "Plaatsen", + "iconGroupMisc": "Overig" + }, + "sectionMoreTags": "Meer tags", + "sectionNoteDetails": "Notitie en details", + "quickTagsHelp": "Je vaakst gebruikte tags, met één tik", + "quickTagsExpand": "Meer", + "loadError": "Je stemmingsregistraties konden niet worden geladen.", + "sectionLevelA": "Gemoedstoestand", + "sectionLevelAHelp": "Optioneel. Wat je niet aanraakt, blijft leeg.", + "dimensionNotAnswered": "niet vastgelegd", + "dimensionClear": "wissen", + "dimensionValueText": "{value} van {max}: {low} tot {high}", + "dimension": { + "a1": { + "label": "Stemming", + "low": "heel onprettig", + "high": "heel prettig" + }, + "a2": { + "label": "Stress", + "low": "volledig ontspannen", + "high": "extreem gespannen" + }, + "a3": { + "label": "Energie", + "low": "uitgeput", + "high": "vol energie" + }, + "a4": { + "label": "Verbondenheid", + "low": "geïsoleerd", + "high": "begrepen en gesteund" + }, + "a5": { + "label": "Stabiliteit", + "low": "volledig overweldigd", + "high": "volledig in staat om te handelen" + } + }, + "context": { + "section": { + "work": "Werk", + "contacts": "Contact", + "leisure": "Vrije tijd", + "events": "Gebeurtenis" + }, + "field": { + "workStatus": "Werkdag", + "workMinutes": "Gewerkte tijd", + "overtimeMinutes": "Overuren", + "workLoad": "Werkdruk", + "workSatisfaction": "Tevredenheid met het werk", + "contactCircles": "Met wie het contact was", + "contactForm": "Vorm van contact", + "contactExtent": "Hoe lang het duurde", + "contactQuality": "Kwaliteit van het contact", + "contactSupport": "Ervaren steun", + "leisureCategories": "Waar de vrije tijd naartoe ging", + "leisureMinutes": "Tijd voor jezelf", + "leisureJoy": "Plezier", + "leisureRecovery": "Herstel", + "eventType": "Wat er gebeurde", + "eventValence": "Hoe het binnenkwam", + "eventAt": "Wanneer", + "notes": "Notitie" + }, + "workStatus": { + "off": "Niet gewerkt", + "partial": "Een deel van de dag", + "regular": "Een normale dag", + "overtime": "Langer dan normaal" + }, + "contactCircles": { + "partner": "Partner", + "child": "Kind", + "family": "Familie", + "friends": "Vrienden", + "colleagues": "Collega's", + "acquaintances": "Kennissen", + "professional": "Professionele hulp", + "other": "Anderen" + }, + "contactForm": { + "inPerson": "Persoonlijk", + "phone": "Telefoon", + "video": "Videogesprek", + "written": "Schriftelijk" + }, + "contactExtent": { + "brief": "Kort", + "medium": "Gemiddeld", + "extended": "Lang" + }, + "leisureCategories": { + "film": "Film of serie", + "reading": "Lezen", + "gaming": "Gamen", + "music": "Muziek", + "creative": "Iets creatiefs", + "outing": "Op pad", + "garden": "Tuin", + "cooking": "Koken", + "timeWithChild": "Tijd met het kind", + "relaxation": "Rust", + "other": "Iets anders" + }, + "eventType": { + "goodNews": "Goed nieuws", + "badNews": "Slecht nieuws", + "success": "Iets is gelukt", + "disappointment": "Een teleurstelling", + "conflict": "Een conflict", + "appointment": "Een afspraak", + "familyEvent": "Een familiegebeurtenis", + "change": "Een verandering", + "unexpected": "Iets onverwachts" + }, + "rating": { + "workLoad": { + "low": "geen druk", + "high": "onder hoge druk" + }, + "workSatisfaction": { + "low": "helemaal niet tevreden", + "high": "heel tevreden" + }, + "contactQuality": { + "low": "deed me niet goed", + "high": "deed me veel goed" + }, + "contactSupport": { + "low": "niet gesteund", + "high": "goed gesteund" + }, + "leisureJoy": { + "low": "geen plezier", + "high": "veel plezier" + }, + "leisureRecovery": { + "low": "niet herstellend", + "high": "heel herstellend" + }, + "eventValence": { + "low": "duidelijk slecht", + "high": "duidelijk goed" + } + } + }, + "dayContext": { + "minutesPlaceholder": "Minuten", + "contactsHelp": "Hoeveel mensen het waren, zegt niets over de dag. Het gaat erom hoe het contact voelde.", + "notePlaceholder": "Wat verder nog bij deze dag hoort", + "notRecorded": "niet vastgelegd", + "linkedTitle": "Uit je andere modules", + "linkedHelp": "Gelezen uit de plek waar het is opgeslagen. Pas je het daar aan, dan verandert het hier ook.", + "linkedSleep": "Geslapen", + "linkedInBed": "In bed", + "linkedSteps": "Stappen", + "linkedActiveEnergy": "Actieve energie", + "linkedRestingHeartRate": "Rusthartslag", + "linkedHrv": "Hartslagvariabiliteit", + "bodyLogged": "Vastgelegd in het ziektedagboek: {count} symptomen", + "bodyNotLogged": "Voor deze dag is niets vastgelegd in het ziektedagboek", + "openIllness": "Openen" + }, + "sourceNotification": "Melding" + }, + "medications": { + "title": "Medicatie", + "subtitle": "Medicatie, schema's en inname", + "loginRequired": "Log in om je medicatie te beheren.", + "addMedication": "Toevoegen", + "firstMedication": "Eerste medicijn toevoegen", + "addChoice": { + "logIntake": "Inname vastleggen", + "newMedication": "Nieuw medicijn" + }, + "takeAllDue": { + "button": "Alle geplande innemen", + "dialogTitle": "Geplande medicatie innemen", + "dialogDescription": "Deze medicijnen moeten nu worden ingenomen. Bevestig om ze allemaal als ingenomen te registreren.", + "confirm": "Alle innemen ({count})", + "successToast": "{count} innames geregistreerd", + "partialToast": "{taken} geregistreerd, {failed} mislukt. Probeer het opnieuw", + "failedToast": "Geen inname geregistreerd. Probeer het opnieuw" + }, + "logIntake": { + "dialogTitle": "Inname vastleggen", + "dialogDescription": "Registreer een dosis bij een bestaand medicijn. Je kunt een eerdere datum en tijd kiezen.", + "medicationLabel": "Medicijn", + "slotLabel": "Tijdstip in schema", + "slotNone": "Geen specifiek tijdstip", + "doseLabel": "Dosis", + "doseHint": "Vooraf ingevuld met de dosis van het medicijn of het tijdstip. Pas deze aan om alleen voor deze inname een afwijkende dosis te registreren.", + "takenAtLabel": "Datum en tijd", + "takenAtHint": "Standaard nu; kies een eerdere datum en tijd om een eerdere dosis vast te leggen.", + "skippedLabel": "Als overgeslagen vastleggen", + "noMedications": "Voeg eerst een medicijn toe, daarna kun je er innames bij vastleggen.", + "cancel": "Annuleren", + "submit": "Inname vastleggen", + "slotError": "Het gekozen tijdstip kon niet aan een tijd worden gekoppeld. Kies een ander tijdstip of “Geen specifiek tijdstip”." + }, + "emptyTitle": "Nog geen medicatie", + "emptyDescription": "Voeg medicijnen, doseringen en herinneringsvensters toe om je therapietrouw bij te houden.", + "loadFailed": "Medicatie kon niet worden geladen", + "retryLoad": "Opnieuw proberen", + "inactive": "Gepauzeerd", + "intakeHistory": "Innamegeschiedenis", + "openDetailPage": "Detailpagina van medicijn openen", + "compliance": "Therapietrouw", + "importIntakes": "Innames importeren", + "importDescription": "Plak een JSON-array met innamegegevens. Verwacht formaat:", + "importUploadFile": "JSON-bestand uploaden", + "importPaste": "Plak hier JSON…", + "importSelected": "Geselecteerd: {name}", + "importFileLoaded": "Bestand \"{name}\" geladen", + "importInvalidJson": "Bestand bevat geen geldige JSON", + "importNoArray": "Geen array gevonden", + "importFailed": "Importeren mislukt", + "importInvalidFormat": "Ongeldig JSON-formaat", + "requestExample": "Voorbeeldverzoek", + "categoryBloodPressure": "Bloeddruk", + "categoryVitamin": "Vitamines", + "categoryThyroid": "Schildklier", + "categoryHormone": "Hormonen", + "categorySupplement": "Supplement", + "categoryPainRelief": "Pijnstilling", + "categoryAllergy": "Allergie", + "categoryDigestive": "Maag en darmen", + "categorySkin": "Huidverzorging", + "categorySleepAid": "Slaapmiddel", + "categoryDiabetes": "Diabetes", + "categoryAntibiotic": "Antibioticum", + "categoryMentalHealth": "Mentale gezondheid", + "categoryOther": "Overig", + "daysSun": "zo", + "daysMon": "ma", + "daysTue": "di", + "daysWed": "wo", + "daysThu": "do", + "daysFri": "vr", + "daysSat": "za", + "back": "Terug", + "today": "Vandaag", + "yesterday": "Gisteren", + "tomorrow": "Morgen", + "asNeededMarker": "Zo nodig", + "recordOnlyBadge": "Alleen registratie", + "courseEndedBadge": "Beëindigd", + "trackIntake": { + "title": "Inname bijhouden", + "label": "Inname bijhouden", + "helperOn": "Doses worden volgens dit schema gepland, met herinneringen en therapietrouw.", + "helperOff": "Alleen ter registratie: niets wordt gepland, geen herinneringen, geen therapietrouw.", + "enabledToast": "Inname bijhouden aan", + "disabledToast": "Inname bijhouden uit", + "toggleFailed": "Inname bijhouden kon niet worden gewijzigd." + }, + "autoMarkTaken": { + "label": "Doses automatisch registreren", + "helper": "HealthLog registreert elke geplande dosis op het geplande tijdstip als ingenomen. Je kunt een dosis nog steeds handmatig wijzigen of overslaan. Er worden geen herinneringen verstuurd.", + "cardHint": "Automatisch geregistreerd", + "enabledToast": "Doses worden nu automatisch geregistreerd", + "disabledToast": "Doses worden niet meer automatisch geregistreerd", + "toggleFailed": "Automatisch registreren kon niet worden gewijzigd." + }, + "withoutNotification": "Zonder melding", + "pausedSince": "Gepauzeerd sinds", + "takeNow": "Nu innemen", + "lastDoseYesterday": "Laatste dosis gisteren", + "lastDoseDaysAgo": "Laatste dosis {count} dagen geleden", + "overdue": "Te laat", + "veryOverdue": "Ruim te laat", + "complianceWindow": "Therapietrouw ({days} dagen)", + "complianceUnavailable": "Therapietrouw kon niet worden geladen", + "complianceNotApplicable": "Therapietrouw niet van toepassing", + "complianceNotApplicableReason": "Er is geen lokaal schema opgeslagen in HealthLog.", + "complianceInfo": "Aandeel van de verwachte doses dat je hebt vastgelegd. Wekelijkse schema's tellen per week.", + "complianceInfoLabel": "Wat betekent therapietrouw?", + "lastIntake": "Laatste inname:", + "nextIntake": "Volgende inname:", + "nextIntakeOverdue": "Te laat sinds {time}, kan nog worden ingenomen", + "dayStreak": "dagen op rij", + "dayStreakOne": "dag op rij", + "cycleDueToday": "Vandaag gepland", + "cycleNoClosedCycles": "Nog geen afgeronde doseringscycli", + "taken": "Ingenomen", + "skipped": "Overgeslagen", + "intakeToastTaken": "{name} geregistreerd als ingenomen", + "intakeToastSkipped": "{name} overgeslagen", + "intakeToastFailed": "{name} kon niet worden geregistreerd. Probeer het opnieuw", + "intakeUndo": "Ongedaan maken", + "intakeUndone": "Registratie teruggedraaid", + "intakeUndoFailed": "Ongedaan maken mislukt. Open de geschiedenis om het te corrigeren", + "glp1LastInjection": "{label}", + "glp1NextInjectionDays": "{label} (over {days} dagen)", + "glp1NextInjectionToday": "vandaag", + "glp1NextInjectionTomorrow": "morgen", + "glp1RotationSuggested": "Volgende aanbevolen plek: {site}", + "glp1LogSideEffect": "Bijwerking vastleggen", + "sideEffects": { + "section": "Bijwerkingen", + "addCta": "Vastleggen", + "sheetTitle": "Bijwerking vastleggen", + "categoryLabel": "Categorie", + "entryLabel": "Symptoom", + "severityLabel": "Ernst", + "severity": { + "mild": "Licht", + "moderate": "Matig", + "significant": "Aanzienlijk", + "severe": "Ernstig", + "verySevere": "Zeer ernstig" + }, + "notesLabel": "Notities (optioneel)", + "notesPlaceholder": "Alles wat het onthouden waard is, max. 280 tekens", + "submitCta": "Opslaan", + "cancelCta": "Annuleren", + "emptyState": "Nog geen bijwerkingen vastgelegd. Bijhouden kan je arts helpen en na verloop van tijd patronen zichtbaar maken.", + "recentTitle": "Afgelopen 30 dagen", + "loading": "Laden…", + "loadMore": "Meer laden", + "deleteCta": "Verwijderen", + "deleteError": "De registratie kon niet worden verwijderd", + "errorSeverity": "Ernst moet tussen 1 en 5 liggen", + "errorEntry": "Kies een symptoom", + "categories": { + "gi": "Maag en darmen", + "metabolic": "Stofwisseling", + "injectionSite": "Injectieplaats", + "cognitive": "Cognitief", + "glp1Specific": "Specifiek voor GLP-1" + }, + "entries": { + "nausea": "Misselijkheid", + "vomiting": "Braken", + "diarrhea": "Diarree", + "constipation": "Obstipatie", + "abdominalPain": "Buikpijn", + "hypoglycemiaSymptoms": "Symptomen van lage bloedglucose", + "dehydration": "Uitdroging", + "anorexia": "Verminderde eetlust", + "electrolyteFatigue": "Vermoeidheid door verstoorde elektrolytenbalans", + "injectionRedness": "Roodheid op de injectieplaats", + "injectionSwelling": "Zwelling op de injectieplaats", + "injectionBruising": "Blauwe plek op de injectieplaats", + "injectionInduration": "Verharding op de injectieplaats", + "brainFog": "Hersenmist", + "dizziness": "Duizeligheid", + "lowMood": "Sombere stemming", + "lowEnergy": "Weinig energie", + "earlySatiety": "Snel vol zitten", + "gastroparesisLike": "Vertraagde maaglediging", + "dysgeusia": "Smaakverandering", + "gallbladderDiscomfort": "Galblaasklachten" + }, + "deleteConfirmTitle": "Deze registratie verwijderen?", + "deleteConfirmBody": "Deze bijwerkingregistratie wordt definitief verwijderd." + }, + "scheduling": { + "naturalLanguage": { + "title": "Beschrijf je medicijn", + "description": "Beschrijf het medicijn in je eigen woorden, dan vullen wij het formulier alvast voor je in.", + "placeholder": "bijv. Mounjaro 5 mg wekelijks op woensdagochtend vanaf volgende maandag", + "submit": "Uitlezen", + "submitBusy": "Uitlezen…", + "cancel": "Annuleren", + "examples": { + "label": "Probeer een van deze voorbeelden", + "weekly": "Mounjaro 5 mg wekelijks op woensdagochtend", + "daily": "Ibuprofen 200 mg elke dag, 3 keer per dag", + "rolling": "Methotrexaat 7,5 mg elke 7 dagen na de laatste injectie" + }, + "error": { + "empty": "Typ eerst een beschrijving.", + "tooLong": "Houd de beschrijving onder de 2000 tekens.", + "rateLimit": "Te veel verzoeken. Wacht even en probeer het opnieuw.", + "noProvider": "Geen AI-provider ingesteld. Stel er een in via Instellingen.", + "budget": "Dagelijks AI-budget bereikt. Probeer het morgen opnieuw.", + "network": "De AI-provider is niet bereikbaar. Probeer het opnieuw.", + "consent": "Om je beschrijving met AI te laten uitlezen, is eerst je toestemming nodig.", + "unavailable": "Beschrijvingen uitlezen met AI is hier op dit moment niet beschikbaar." + } + }, + "cadence": { + "section": "Frequentie", + "label": "Hoe vaak", + "kind": { + "daily": "Elke dag", + "weekdays": "Bepaalde dagen van de week", + "everyNWeeks": "Om de N weken op bepaalde dagen", + "monthly": "Maandelijks op een vaste dag", + "everyNMonths": "Om de N maanden op een vaste dag", + "yearly": "Eén keer per jaar", + "rolling": "Elke N dagen vanaf de laatste inname (flexibel)", + "rollingExplainer": "Telt vanaf je laatst vastgelegde inname; pauzeert als je een dosis overslaat.", + "oneShot": "Eenmalige dosis" + }, + "weekdays": { + "label": "Dagen van de week", + "short": { + "mo": "ma", + "tu": "di", + "we": "wo", + "th": "do", + "fr": "vr", + "sa": "za", + "su": "zo" + }, + "long": { + "mo": "maandag", + "tu": "dinsdag", + "we": "woensdag", + "th": "donderdag", + "fr": "vrijdag", + "sa": "zaterdag", + "su": "zondag" + } + }, + "intervalWeeks": { + "suffix": "weken" + }, + "dayOfMonth": { + "label": "Dag" + }, + "intervalMonths": { + "suffix": "maanden", + "dayOnLabel": "op dag" + }, + "yearly": { + "date": { + "label": "Datum" + } + }, + "rollingDays": { + "suffix": "dagen" + } + }, + "timesOfDay": { + "section": "Tijdstippen", + "label": "Tijdstippen", + "empty": { + "cta": "Voeg het eerste tijdstip toe." + }, + "add": "Tijdstip toevoegen", + "remove": "Verwijderen", + "presets": { + "morning": "Ochtend", + "noon": "Middag", + "evening": "Avond", + "night": "Nacht" + }, + "max": { + "reached": "Maximum bereikt. Verwijder een tijdstip voordat je een nieuw toevoegt." + } + }, + "courseWindow": { + "section": "Kuurperiode", + "startsOn": { + "label": "Begint op" + }, + "endsOn": { + "label": "Eindigt op" + }, + "noEndDate": "Geen einddatum", + "oneShotCaption": "(eenmalige dosis)", + "invalidRange": "De einddatum moet op of na de begindatum liggen." + } + }, + "wizard": { + "header": { + "stepOf": "Stap {current} van {total}", + "createTitle": "Nieuw medicijn", + "editTitle": "{name} bewerken" + }, + "nav": { + "back": "Terug", + "next": "Volgende", + "save": "Opslaan", + "saveEdit": "Wijzigingen opslaan", + "nextHint": "Volgende: {step}", + "reviewHint": "Volgende: Opslaan", + "jumpFirst": "Naar de eerste stap", + "jumpLast": "Naar controleren en opslaan" + }, + "nl": { + "button": "Beschrijven" + }, + "steps": { + "step1": { + "title": "Hoe heet het medicijn?", + "subline": "Precies zoals het op de verpakking staat.", + "label": "Naam", + "placeholder": "bijv. Ramipril", + "short": "Naam" + }, + "step2": { + "title": "Wat voor soort medicijn is het?", + "subline": "Dit gebruiken we voor de juiste sjablonen en analyses.", + "short": "Soort" + }, + "step3": { + "title": "Wat is de dosis?", + "subline": "Een tablet, een puf, een druppel, afhankelijk van de vorm.", + "amountLabel": "Hoeveelheid", + "amountPlaceholder": "bijv. 5", + "unitLabel": "Eenheid", + "unit": { + "mg": "mg", + "ml": "ml", + "iu": "IE", + "mcg": "µg", + "g": "g", + "tablets": "tablet(ten)", + "capsules": "capsule(s)", + "drops": "druppels", + "puffs": "puf", + "sprays": "spray", + "pieces": "stuks", + "other": "overig" + }, + "deliveryFormLabel": "Toedieningswijze", + "deliveryForm": { + "ORAL": "Oraal", + "INJECTION": "Injectie", + "OTHER": "Overig" + }, + "dosesPerUnitLabel": "Doses per eenheid", + "dosesPerUnitPlaceholder": "bijv. 4", + "dosesPerUnitHint": "Doses per pen of flacon. Laat leeg om de voorraad niet bij te houden.", + "short": "Dosis", + "unitsPerDoseLabel": "Eenheden per dosis", + "unitsPerDoseHint": "bijv. 2 tabletten van 2 mg voor een dosis van 4 mg, of ½ tablet voor een gedeelde dosis" + }, + "step4": { + "title": "Over welke periode neem je het in?", + "subline": "Een begindatum is voor nu genoeg. Je kunt later een einddatum toevoegen.", + "short": "Periode" + }, + "step5": { + "title": "Hoe vaak neem je het in?", + "subline": "Kies de frequentie. De details volgen in de volgende stap.", + "short": "Frequentie" + }, + "step6": { + "title": "Hoe ziet dat er precies uit?", + "subline": "Stel weekdagen, intervallen of de dag van de maand in.", + "intervalWeeks": { + "label": "Elke", + "suffix": "weken" + }, + "dayOfMonth": { + "label": "Op", + "suffix": "dag van de maand" + }, + "rollingDays": { + "label": "Elke", + "suffix": "dagen na de laatste inname" + }, + "short": "Details" + }, + "step7": { + "title": "Wanneer neem je het in?", + "subline": "Een of meer tijdstippen per dag. Herinneringen volgen deze lijst.", + "presetsLabel": "Standaardtijdstippen", + "presets": { + "morning": "Ochtend", + "noon": "Middag", + "evening": "Avond", + "night": "Nacht" + }, + "overrideHint": "Optioneel: stel alleen voor dit tijdstip een andere dosis of een ander aantal eenheden in. Laat leeg om de standaardwaarde van het medicijn te gebruiken.", + "doseOverrideLabel": "Dosis voor dit tijdstip (optioneel)", + "doseOverridePlaceholder": "bijv. een halve tablet", + "unitsOverrideLabel": "Verbruikte eenheden op dit tijdstip", + "unitsOverrideInherit": "Standaard", + "short": "Tijdstippen" + }, + "step8": { + "title": "Klaar. Moet HealthLog je eraan herinneren?", + "subline": "Controleer alles hieronder voordat je opslaat.", + "remindersLabel": "Herinneringen aan", + "remindersDescription": "Push, Telegram of ntfy, afhankelijk van je instellingen.", + "noChannelHint": "Voor herinneringen is een meldingskanaal nodig, en er is er op dit moment geen actief.", + "noChannelHintLink": "Meldingen instellen", + "short": "Klaar" + } + }, + "classRow": { + "bloodPressure": "Bloeddruk", + "diabetes": "Diabetes", + "hormone": "Hormonen", + "glp1": "GLP-1-injectie", + "painRelief": "Pijn", + "allergy": "Allergie", + "vitamin": "Vitamines", + "supplement": "Supplement", + "antibiotic": "Antibioticum", + "mentalHealth": "Mentale gezondheid", + "thyroid": "Schildklier", + "digestive": "Maag en darmen", + "skin": "Huidverzorging", + "sleepAid": "Slaapmiddel", + "other": "Overig" + }, + "cadence": { + "daily": { + "label": "Dagelijks", + "description": "Elke dag op hetzelfde tijdstip." + }, + "weekdays": { + "label": "Bepaalde weekdagen", + "description": "Bijv. maandag, woensdag, vrijdag." + }, + "everyNWeeks": { + "label": "Om de paar weken", + "description": "Bijv. om de 2 weken op donderdag (GLP-1, biologicals)." + }, + "monthly": { + "label": "Maandelijks", + "description": "Op een vaste dag per maand (bijv. altijd de 1e)." + }, + "rolling": { + "label": "Flexibel vanaf laatste dosis", + "description": "Laat de volgende dosis open. Als je op 'ingenomen' tikt, begint de teller vanaf dat moment opnieuw." + }, + "oneShot": { + "label": "Eenmalige dosis", + "description": "Eén toediening, bijv. een vaccin of een antibioticakuur." + }, + "asNeeded": { + "label": "Zo nodig", + "description": "Geen vast schema. Leg een inname vast wanneer je er een nodig hebt (bijv. pijnstilling)." + } + }, + "summary": { + "title": "Samenvatting", + "cadence": { + "daily": "Elke dag", + "weekdays": "Op bepaalde dagen van de week", + "biweekly": "Om de twee weken", + "monthly": "Maandelijks", + "quarterly": "Om de drie maanden", + "yearly": "Eén keer per jaar", + "rolling": "Elke {n} dagen na je laatste inname", + "oneShot": "Eenmalige dosis", + "asNeeded": "Zo nodig", + "everyNWeeks": "Om de {n} weken", + "everyNMonths": "Om de {n} maanden" + }, + "weekdaysDetail": ", op {days}", + "dayOfMonthDetail": ", op dag {day}.", + "times": "om {times}", + "startsOn": "Begint: {date}", + "endsOn": "Eindigt: {date}", + "noEndDate": "Geen einddatum" + }, + "compose": { + "scheduleIndex": "Schema {n} van {total}", + "list": { + "add": "Nog een schema toevoegen", + "edit": "Bewerken", + "remove": "Verwijderen", + "removeDisabled": "Er is minimaal één schema nodig." + } + }, + "errors": { + "submitFailed": "Het medicijn kon niet worden opgeslagen. Probeer het opnieuw." + } + }, + "doseStrength": { + "title": "Dosissterkte in de loop van de tijd", + "axisLabel": "Geregistreerde dosis ({unit})", + "tooltipLabel": "Dosis", + "currentDose": "Huidige dosis: {dose} {unit}", + "noCurrentDose": "Nog geen dosis geregistreerd.", + "empty": "Nog geen titratiegeschiedenis. Leg een dosiswijziging vast om de sterktecurve te zien." + }, + "titration": { + "title": "Titratieschema", + "empty": "Nog geen stappen voor dosisverhoging vastgelegd. Voeg gedateerde dosiswijzigingen toe om het schema weer te geven.", + "youAreHere": "Je bent hier", + "doseStep": "{dose} {unit}", + "plannedFor": "Gepland voor {date}" + }, + "injectionSiteBodyOutlineAriaLabel": "Lichaamsomtrek", + "injectionSitePickerAriaLabel": "Injectieplaats kiezen", + "injectionSiteRecommendedAriaLabel": "{site}: aanbevolen volgende plek", + "injectionSiteLegendAriaLabel": "Legenda van markeringen", + "injectionSiteLegendRecommended": "Aanbevolen volgende plek", + "injectionSiteLegendLastUsed": "Laatst gebruikte plek", + "siteAbdomenLeft": "Buik, linksonder", + "siteAbdomenRight": "Buik, rechtsonder", + "siteAbdomenUpperLeft": "Buik, linksboven", + "siteAbdomenUpperRight": "Buik, rechtsboven", + "siteThighLeft": "Linkerdij", + "siteThighRight": "Rechterdij", + "siteUpperArmLeft": "Linkerbovenarm", + "siteUpperArmRight": "Rechterbovenarm", + "sideEffectTagsHelp": "Tik op een label om het toe te voegen aan de tags van je stemmingsregistratie.", + "sideEffectTagNausea": "misselijkheid", + "sideEffectTagConstipation": "obstipatie", + "sideEffectTagDiarrhea": "diarree", + "sideEffectTagFatigue": "vermoeidheid", + "sideEffectTagAppetiteLoss": "eetlustverlies", + "sideEffectTagHeartburn": "brandend maagzuur", + "sideEffectTagHeadache": "hoofdpijn", + "phaseConfig": "Herinneringsfasen", + "phaseConfigDescription": "Stel de timing van herinneringen in.", + "phaseGreen": "Groen", + "phaseYellow": "Geel", + "phaseOrange": "Oranje", + "phaseRed": "Rood", + "phaseMinutes": "Min", + "phasePercent": "%", + "phaseResetDefaults": "Standaardwaarden herstellen", + "phaseSaved": "Herinneringsfasen opgeslagen", + "sourceWeb": "Web", + "sourceApi": "iOS-app", + "sourceReminder": "Herinnering", + "sourceImport": "Import", + "sourceAppleHealth": "Apple Health", + "intakeSourceVia": "via {origin}", + "intakeRecordedAutomatically": "Automatisch geregistreerd", + "intakeHistoryEmptyTitle": "Nog geen innames geregistreerd", + "intakeHistoryEmptyDescription": "Leg een dosis vast op de pagina met dagelijkse innames om de geschiedenis op te bouwen.", + "intakeHistoryEmptyAction": "Dagelijkse inname openen", + "intakeHistoryColTaken": "Ingenomen", + "intakeHistoryColScheduled": "Gepland", + "intakeHistoryColStatus": "Status", + "intakeHistoryColSource": "Bron", + "intakeHistoryStatusTaken": "Ingenomen", + "intakeHistoryStatusSkipped": "Overgeslagen", + "intakeHistorySortByTaken": "Sorteren op innametijd", + "intakeHistorySortByScheduled": "Sorteren op geplande tijd", + "intakeHistoryPageInfo": "Pagina {page} van {total}, {count} registraties", + "intakeHistoryPrev": "Vorige", + "intakeHistoryNext": "Volgende", + "glp1": { + "drug": { + "tirzepatide": { + "name": "Tirzepatide" + }, + "semaglutide": { + "name": "Semaglutide" + }, + "liraglutide": { + "name": "Liraglutide" + }, + "dulaglutide": { + "name": "Dulaglutide" + }, + "exenatide": { + "name": "Exenatide" + } + } + }, + "researchMode": { + "chart": { + "title": "Geschatte geneesmiddelspiegel", + "axisLabel": "Geschatte spiegel (relatief)", + "emptyState": "Nog geen innames.", + "emptyStateCta": "Leg een dosis vast om de geschatte spiegel vorm te zien krijgen.", + "estimateNote": "Educatieve schatting op basis van door het EMA gepubliceerde populatiefarmacokinetiek. Geen meting.", + "unknownDrug": "{name} staat niet in de catalogus van door het EMA goedgekeurde GLP-1-middelen, dus HealthLog kan er geen populatie-PK-curve voor weergeven." + } + }, + "detail": { + "status": { + "active": "Actief", + "paused": "Gepauzeerd", + "ended": "Beëindigd" + }, + "cadence": { + "oneShotOn": "Eenmalige dosis op {date}.", + "oneShotPending": "Eenmalige dosis nog niet ingenomen.", + "asNeeded": "Zo nodig, geen vast schema." + }, + "intake": { + "title": "Innamegeschiedenis", + "importButton": "Importeren", + "rowActions": { + "openMenu": "Rijacties openen", + "edit": "Bewerken", + "delete": "Verwijderen" + }, + "selection": { + "rowToggleLabel": "Rij selecteren" + }, + "bulkDelete": { + "selectionCount": "{count} registraties geselecteerd", + "deleteButton": "Selectie verwijderen", + "cancelButton": "Annuleren", + "confirmTitle": "Geselecteerde registraties verwijderen?", + "confirmBody": "{count} registraties worden definitief verwijderd. Het medicijn zelf blijft bestaan.", + "confirmAction": "Verwijderen", + "toast": "Selectie verwijderd", + "failed": "De selectie kon niet worden verwijderd." + }, + "edit": { + "dialogTitle": "Inname bewerken", + "takenAtLabel": "Ingenomen op", + "scheduledForHint": "Gepland: {dateTime}", + "farFromScheduledWarning": "Dit wijkt sterk af van het geplande tijdstip. Controleer de datum.", + "skippedLabel": "Overgeslagen", + "save": "Opslaan", + "cancel": "Annuleren", + "savedToast": "Inname bijgewerkt", + "failed": "De inname kon niet worden bijgewerkt." + }, + "deleteRow": { + "confirmTitle": "Deze inname verwijderen?", + "confirmBody": "De registratie wordt definitief verwijderd.", + "confirmAction": "Verwijderen", + "toast": "Inname verwijderd", + "failed": "De inname kon niet worden verwijderd." + }, + "viewRecent90": "Afgelopen 90 dagen", + "viewAll": "Volledige geschiedenis", + "viewToggleLabel": "Periode van de geschiedenis" + }, + "verlauf": { + "loading": "Geschiedenis laden…", + "loadError": "De geschiedenis kon niet worden geladen.", + "empty": "Nog geen innames in deze periode.", + "summaryEmpty": "Nog geen doses om te beoordelen.", + "adherenceLabel": "Therapietrouw", + "adherenceBarLabel": "{onTime} op tijd, {late} te laat, {missed} gemist", + "add": "Registratie", + "markTaken": "Ingenomen", + "markSkipped": "Overgeslagen", + "rowActionsLabel": "Acties voor {time}", + "markAsTaken": "Markeren als ingenomen", + "markAsSkipped": "Markeren als overgeslagen", + "adHocTag": "buiten schema", + "takenDetail": "gepland {planned}, ingenomen {taken}", + "doseTaken": "Dosis: {dose}", + "status": { + "taken_on_time": "op tijd", + "taken_late": "te laat", + "skipped": "overgeslagen", + "missed": "gemist", + "upcoming": "gepland", + "ad_hoc": "buiten schema" + }, + "addDialog": { + "title": "Inname toevoegen", + "description": "Registreer een dosis, ook een met een eerdere datum of een buiten het schema.", + "takenAtLabel": "Ingenomen op", + "skippedLabel": "Overgeslagen", + "nudgeHint": "Dicht bij het tijdstip {slot}. Bij het opslaan vragen we of je de inname daaraan wilt toewijzen.", + "cancel": "Annuleren", + "submit": "Opslaan" + }, + "nudge": { + "title": "Aan dit tijdstip toewijzen?", + "body": "Deze inname valt net buiten het venster van {slot}. Wil je hem aan dat tijdstip toewijzen, of als registratie buiten het schema bewaren?", + "keepAdHoc": "Buiten schema", + "pin": "Toewijzen" + }, + "pin": { + "action": "Toewijzen aan tijdstip {time}", + "release": "Toewijzing opheffen", + "pinnedTag": "toegewezen", + "pinnedToast": "Inname toegewezen aan tijdstip", + "unpinnedToast": "Toewijzing opgeheven", + "dueContext": "gepland om: {time} ({delta})", + "confirmTitle": "Toewijzen aan tijdstip {time}?", + "confirmBody": "De inname telt voor dit tijdstip precies zoals wanneer hij daar was vastgelegd: op tijd of te laat, afhankelijk van wanneer hij is ingenomen, zodat het percentage nooit mooier wordt voorgesteld. Je kunt de toewijzing op elk moment opheffen.", + "confirmCancel": "Annuleren", + "confirmAction": "Toewijzen" + } + }, + "notifications": { + "title": "Meldingen", + "switchLabel": "Herinnering sturen wanneer deze dosis gepland is", + "helperOn": "Herinneringen staan aan.", + "helperOff": "Herinneringen staan uit.", + "enabledToast": "Herinneringen aan", + "disabledToast": "Herinneringen uit", + "toggleFailed": "De herinneringsinstelling kon niet worden gewijzigd.", + "clientManagedChip": "Beheerd door iPhone", + "clientManagedHint": "Je iPhone beheert de herinneringen voor dit medicijn." + }, + "settings": { + "title": "Instellingen", + "phases": { + "openButton": "Fasen instellen", + "requiresCourseWindow": "Fasen zijn beschikbaar zodra er een kuurperiode is ingesteld." + }, + "grace": { + "label": "Herinneringsvenster", + "appliesToAllNote": "Geldt voor elk schema van dit medicijn.", + "unit": "minuten", + "saved": "Herinneringsvenster opgeslagen", + "failed": "Het herinneringsvenster kon niet worden opgeslagen." + }, + "codes": { + "label": "Klinische codes (ATC / RxNorm)", + "note": "Optioneel. Wordt gebruikt bij de FHIR-export van je gezondheidsdossier. Codes worden precies zo overgenomen als ingevoerd, nooit geraden.", + "atcLabel": "ATC", + "rxNormLabel": "RxNorm", + "saved": "Klinische codes opgeslagen", + "failed": "De klinische codes konden niet worden opgeslagen." + } + }, + "zone": { + "title": "Beheer en gevarenzone", + "pause": { + "title": "Pauzeren", + "helper": "Pauzeer herinneringen tot je ze weer aanzet. De geschiedenis blijft behouden.", + "pausedToast": "Herinneringen gepauzeerd", + "resumedToast": "Herinneringen hervat", + "failed": "De pauzestatus kon niet worden gewijzigd." + }, + "end": { + "title": "Medicijn beëindigen", + "helper": "Stop de herinneringen en markeer het medicijn als beëindigd. De geschiedenis blijft zichtbaar.", + "button": "Beëindigen", + "dialogTitle": "{name} beëindigen? Herinneringen stoppen, de geschiedenis blijft zichtbaar", + "dialogBody": "Geen herinneringen meer. Oude registraties blijven in de tijdlijn staan.", + "toast": "Medicijn beëindigd", + "failed": "Het medicijn kon niet worden beëindigd." + }, + "purge": { + "title": "Geschiedenis verwijderen", + "helper": "Voor dit medicijn zijn {count} innames opgeslagen.", + "button": "Geschiedenis verwijderen", + "dialogTitle": "De geschiedenis echt verwijderen?", + "dialogBody": "De {count} innames worden definitief verwijderd. Het medicijn zelf blijft bestaan.", + "toast": "Geschiedenis verwijderd", + "failed": "De geschiedenis kon niet worden verwijderd." + }, + "delete": { + "title": "Medicijn verwijderen", + "helper": "Verwijdert het medicijn en alle bijbehorende gegevens.", + "button": "Verwijderen", + "dialogTitle": "{name} verwijderen?", + "dialogBody": "Het medicijn, de schema's, de innamegeschiedenis, API-tokens, faseninstellingen en herinneringen worden definitief verwijderd.", + "toast": "Medicijn verwijderd", + "failed": "Het medicijn kon niet worden verwijderd." + } + }, + "phases": { + "modeLabel": "Modus {phase}", + "saveFailed": "De herinneringsfasen konden niet worden opgeslagen." + }, + "api": { + "caption": "Endpoint voor \"{name}\"", + "copyUrl": "URL kopiëren", + "urlCopied": "URL gekopieerd", + "mintToken": "Token aanmaken", + "mintAnotherToken": "Nog een token aanmaken", + "mintFailed": "Er kon geen token worden aangemaakt.", + "copyFailed": "Kopiëren mislukt.", + "tokenCopied": "Token gekopieerd", + "copyToken": "Token kopiëren", + "mintedHint": "Kopieer deze token nu. Hij wordt maar één keer getoond." + }, + "advanced": { + "dataPortability": { + "import": { + "title": "Innames importeren", + "helper": "Laad eerdere innames uit een JSON-bestand of geplakte JSON.", + "button": "JSON importeren" + }, + "export": { + "title": "Medicijn exporteren", + "helper": "Download dit medicijn als CSV-bestand.", + "includeIntake": "Innamegeschiedenis meenemen", + "button": "CSV exporteren" + } + } + }, + "header": { + "historyLabel": "Innamegeschiedenis bekijken" + }, + "history": { + "plannedSuffix": "gepland" + }, + "tabs": { + "uebersicht": "Overzicht", + "zeitplan": "Schema", + "bestand": "Voorraad", + "verlauf": "Geschiedenis", + "injektion": "Injectie", + "erweitert": "Geavanceerd", + "wirkung": "Effect" + }, + "shell": { + "loadFailed": "Dit medicijn kon niet worden geladen.", + "tablistLabel": "Onderdelen van de medicijndetails" + }, + "uebersicht": { + "statusTitle": "Status", + "nextDoseLabel": "Volgende dosis", + "nextDoseNone": "Geen geplande dosis.", + "nextDoseAsNeeded": "Zo nodig, geen geplande dosis.", + "nextDoseNotTracked": "Niet bijgehouden, alleen ter registratie.", + "pausedHint": "Gepauzeerd: geen herinneringen.", + "reminderLabel": "Herinnering", + "reminderOn": "Aan", + "reminderOff": "Uit", + "supplyLabel": "Voorraad", + "supplyRunway": "Nog genoeg voor ongeveer {days} dagen", + "jumpToZeitplan": "Schema openen", + "jumpToVerlauf": "Geschiedenis openen", + "jumpToBestand": "Voorraad openen", + "complianceTitle": "Therapietrouw", + "complianceEmpty": "Nog geen gegevens over therapietrouw." + }, + "bestand": { + "title": "Voorraad", + "summary": "Nog {remaining} van {total} doses over", + "itemsTitle": "Verpakkingen en houders", + "doses": "{remaining} / {total} doses", + "unknown": "Onbekend", + "state": { + "ACTIVE": "Ongeopend", + "IN_USE": "In gebruik", + "EXPIRED": "Verlopen", + "USED_UP": "Op" + }, + "empty": "Geen voorraad geregistreerd.", + "emptyHelper": "Registreer een verpakking of houder om de resterende voorraad en hoelang die nog meegaat bij te houden.", + "emptyCta": "Verpakking registreren", + "addButton": "Registreren", + "lowStockLinkOn": "Melding bij lage voorraad: onder {days} dagen", + "lowStockLinkOff": "Melding bij lage voorraad: uit", + "addTitle": "Verpakking of houder registreren", + "addDescription": "Registreer een nieuwe voorraad met het aantal eenheden; de vervaldatum is optioneel.", + "addQuantityLabel": "Hoeveelheid (eenheden)", + "addQuantityHelper": "1–1000 eenheden per verpakking of houder.", + "addExpiryLabel": "Vervaldatum (optioneel)", + "addSubmit": "Registreren", + "addSuccess": "Voorraad geregistreerd", + "addFailed": "De voorraad kon niet worden geregistreerd.", + "adjustButton": "Aanpassen", + "adjustTitle": "Houder corrigeren", + "adjustDescription": "Stel het resterende aantal eenheden in en corrigeer de datums die op deze houder staan of ervoor zijn vastgelegd. Bij 0 eenheden wordt hij als op gemarkeerd.", + "adjustQuantityLabel": "Resterende eenheden", + "adjustHelper": "Capaciteit: {total} eenheden.", + "adjustSubmit": "Opslaan", + "adjustSuccess": "Voorraad bijgewerkt", + "adjustFailed": "De voorraad kon niet worden bijgewerkt.", + "deleteTitle": "Houder verwijderen?", + "deleteDescription": "Verwijdert deze verpakking of houder definitief uit de voorraad. Vastgelegde innames blijven ongewijzigd.", + "deleteSuccess": "Voorraadregistratie verwijderd", + "deleteFailed": "De voorraadregistratie kon niet worden verwijderd.", + "containerTypeLabel": "Soort houder", + "containerType": { + "PEN": "Pen", + "AMPOULE": "Ampul", + "BLISTER": "Strip tabletten", + "INHALER": "Inhalator", + "BOTTLE": "Flacon", + "OTHER": "Overig" + }, + "unitsDetail": "{remaining} / {total} eenheden", + "quantityModeDoses": "Doses", + "quantityModeUnits": "Eenheden", + "quantityInUnits": "= {units} eenheden", + "quantityInDoses": "≈ {doses} doses", + "quantityUnderOneDose": "< 1 dosis", + "expiredSuffix": "+ {units} eenheden verlopen", + "packagingTitle": "Verpakking en dosis", + "packagingUnitsPerDose": "1 dosis = {units} eenheden", + "packagingDefaultPack": "Standaard verpakkingsgrootte: {units} eenheden", + "packagingNoDefaultPack": "Geen standaard verpakkingsgrootte ingesteld", + "packagingEdit": "Bewerken", + "packagingDescription": "Stel in hoeveel eenheden één dosis verbruikt en hoe groot een nieuwe verpakking meestal is, bijv. na een wissel van fabrikant met een andere stripgrootte.", + "packagingUnitsPerDoseLabel": "Eenheden per dosis", + "packagingUnitsPerDoseHelper": "Bijv. twee tabletten van 2 mg voor een dosis van 4 mg, of 1,5 voor anderhalve (meer dan 0, tot 100). Al geregistreerde doses blijven ongewijzigd.", + "packagingDefaultPackLabel": "Standaard verpakkingsgrootte (eenheden)", + "packagingDefaultPackHelper": "Vult de hoeveelheid vooraf in bij het registreren van nieuwe verpakkingen (1–1000). Laat leeg als dit niet van toepassing is.", + "packagingSuccess": "Verpakkingsgegevens opgeslagen", + "packagingFailed": "Opslaan mislukt", + "addManufacturerLabel": "Fabrikant", + "addDoseStrengthLabel": "Sterkte", + "addDoseStrengthHint": "Zoals op de houder staat, bijv. 5 mg/0,5 ml.", + "openedOn": "Geopend op {date}", + "expiresOn": "Verloopt op {date}", + "summaryAllExpired": "Geen bruikbare voorraad: {units} eenheden gemarkeerd als verlopen", + "editExpiryLabel": "Gedrukte vervaldatum", + "editExpiryHelper": "De datum die op de doos staat. Laat leeg als er geen is vastgelegd.", + "editOpenedLabel": "Geopend op", + "editOpenedHelper": "Laat leeg als de houder nog verzegeld is.", + "editOpenedHelperClock": "Een pen of ampul verloopt 30 dagen na opening. Laat leeg als hij nog verzegeld is." + }, + "erweitert": { + "group": { + "lifecycle": "Levenscyclus", + "externalApi": "Externe API", + "data": "Gegevens", + "danger": "Gevarenzone" + }, + "editor": { + "title": "Medicijn bewerken in de editor", + "helper": "Wijzig naam, behandelklasse, frequentie en schema's in de stapsgewijze editor.", + "button": "Editor openen" + } + }, + "zeitplan": { + "title": "Schema", + "timesTitle": "Innametijden", + "timesNote": "Pas per dosis het tijdstip en het venster voor op tijd aan. De frequentie (dagelijks, wekelijks…) bewerk je in de editor onder Geavanceerd.", + "scheduleLabel": "Schema {index}", + "fullEditNote": "Frequentie, behandelklasse en kuurperiode bewerk je in de editor onder Geavanceerd → Levenscyclus.", + "graceEcho": "Herinneringsvenster: {minutes} minuten", + "reminderTitle": "Herinnering", + "manageChannels": "Meldingskanalen beheren", + "history": { + "title": "Schemageschiedenis", + "currentSince": "Huidig schema sinds {date}", + "noTimes": "Geen vaste tijden", + "manualChip": "Handmatig toegevoegd", + "showErasOne": "1 eerdere periode tonen", + "showErasOther": "{count} eerdere periodes tonen", + "hideEras": "Eerdere periodes verbergen", + "addEra": "Eerdere periode toevoegen", + "addEraTitle": "Eerdere periode toevoegen", + "addEraDescription": "Leg de tijden vast waarop dit medicijn vroeger werd ingenomen, bijvoorbeeld voordat je het hier hebt aangepast.", + "editAria": "Periode bewerken", + "editEraTitle": "Periode bewerken", + "editEraDescription": "Pas de innametijden en de datums van deze periode aan.", + "archivedEditHint": "Deze periode is automatisch vastgelegd. Je wijziging corrigeert de vastgelegde geschiedenis; het origineel blijft intern bewaard als registratie.", + "updatedToast": "Periode bijgewerkt", + "updateError": "De periode kan niet worden bijgewerkt. Ze mag niet overlappen met andere periodes en moet eindigen vóór het huidige schema.", + "timesLabel": "Innametijden", + "fromLabel": "Van", + "untilLabel": "Tot", + "untilHint": "\"Tot\" is de dag waarop het volgende schema inging (die dag telt niet mee).", + "validationTimes": "Voeg minstens één tijd toe.", + "validationRangeMissing": "Vul zowel de begin- als de einddatum in.", + "validationRangeOrder": "De begindatum moet vóór de einddatum liggen.", + "cancel": "Annuleren", + "submit": "Periode opslaan", + "createdToast": "Eerdere periode opgeslagen", + "createError": "De periode kan niet worden opgeslagen. Ze mag niet overlappen met bestaande periodes en moet eindigen vóór het huidige schema.", + "deletedToast": "Periode verwijderd", + "deleteError": "De periode kan niet worden verwijderd", + "deleteAria": "Periode verwijderen", + "deleteConfirmTitle": "Periode verwijderen?", + "deleteConfirmBody": "Geschiedenis en therapietrouw voor deze periode worden dan weer berekend op basis van het huidige schema.", + "deleteConfirmAction": "Verwijderen", + "loadError": "De schemageschiedenis kan niet worden geladen" + }, + "save": "Schema opslaan", + "saved": "Schema opgeslagen", + "failed": "Het schema kan niet worden opgeslagen", + "window": { + "intro": "Stel per dosis in wanneer een inname nog als op tijd telt: een exact tijdstip (±1 u) of je eigen tijdvenster, zoals 07:00–09:00.", + "explicitToggle": "Eigen tijdvenster", + "startLabel": "Begin van tijdvenster", + "endLabel": "Einde van tijdvenster", + "onTimeBand": "Op tijd: {start}–{end}", + "lateUntil": "te laat tot {time}", + "lateDays": "te laat tot {days} dagen erna", + "orderError": "Het begin moet vóór het einde liggen.", + "noTimes": "Nog geen innametijden ingesteld." + } + } + }, + "logInjectionSiteTitle": "Injectieplaats vastleggen", + "logInjectionSiteDescription": "Waar heb je {name} geïnjecteerd? Optioneel: je kunt dit overslaan.", + "logInjectionSiteSkip": "Overslaan", + "logInjectionSiteConfirm": "Plaats opslaan", + "logInjectionSiteNoneAvailable": "Er is geen injectieplaats beschikbaar. Alle plaatsen zijn uitgesloten in je instellingen.", + "logInjectionSiteSaveFailed": "De injectieplaats kan niet worden opgeslagen. Probeer het opnieuw.", + "perSlotUnits": "{units} per dosis", + "trackInjectionSitesToggle": "Injectieplaatsen bijhouden", + "trackInjectionSitesHint": "Vraag na een ingenomen dosis welke plaats is gebruikt en stel de volgende plaats in de rotatie voor.", + "allowedSitesLabel": "Toegestane plaatsen", + "allowedSitesHint": "Laat alles geselecteerd voor geen beperking. Plaatsen die je algemeen hebt uitgesloten, worden nooit aangeboden.", + "viewToggleLabel": "Weergave", + "viewToggleHint": "Kies of je medicatie als kaarten of als tabel wordt weergegeven.", + "viewCards": "Kaartweergave", + "viewTable": "Tabelweergave", + "viewSaveFailed": "De weergave kan niet worden opgeslagen", + "tableCaption": "Medicatie als tabel met status, volgende dosis, therapietrouw en voorraad", + "tableColName": "Naam", + "tableColStatus": "Status", + "tableColNextDose": "Volgende dosis", + "tableColCompliance": "Therapietrouw", + "tableColStock": "Voorraad", + "tableColActions": "Acties", + "tableSortBy": "Sorteren op {column}", + "tableComplianceDays": "{days} d", + "tableStockDoseOne": "1 dosis", + "tableStockDoses": "{count} doses", + "tableStockRunway": "≈ {days} dagen over", + "cardLowStockRunway": "Voorraad: ≈ {days} dagen", + "takeActionFor": "{name} innemen", + "skipActionFor": "{name} overslaan", + "reorderDescription": "Bepaal de volgorde van je medicatie voor zowel de kaart- als de tabelweergave.", + "reorderSaved": "Volgorde opgeslagen", + "reorderSaveFailed": "De volgorde kan niet worden opgeslagen", + "customize": "Medicatie aanpassen", + "efficacy": { + "title": "Effect", + "intro": "Hoe de metingen die dit medicijn zou moeten beïnvloeden zich hebben ontwikkeld rond het moment dat je ermee begon. Het laat zien wat in de tijd samenvalt (een verband, geen oorzaak) en is nooit een advies over je behandeling of dosis.", + "notEligible": "Er is geen uitkomst waaraan dit medicijn kan worden gerelateerd.", + "startFallback": "Er is geen startdatum ingesteld, dus de vergelijking gebruikt je eerste vastgelegde meting als referentiepunt.", + "noStart": "Stel een startdatum in voor dit medicijn om de metingen van vóór en na de start te vergelijken.", + "disclaimer": "Alleen een verband: deze cijfers laten zien wat er in dezelfde periode is veranderd, niet dat het medicijn de verandering heeft veroorzaakt. Bespreek elke beslissing over je behandeling met je arts.", + "primaryBadge": "Hoofddoel", + "noSeries": "Nog geen metingen vastgelegd voor dit doel.", + "startMarker": "Start", + "adherenceLane": "Therapietrouw", + "typicalRange": "Gebruikelijk bereik", + "levelShift": "Rond {date} is een verschuiving in het niveau gedetecteerd.", + "plateau": { + "title": "Gewichtsplateau bij de huidige dosis", + "evidence": "Je gewicht is in de afgelopen {window} dagen met {delta} {unit} veranderd ({readings} metingen), na {days} dagen op {dose}." + }, + "retarget": { + "label": "Niet de juiste meting?", + "placeholder": "Vergelijken met…", + "apply": "Toepassen", + "reset": "Standaard herstellen", + "error": "Die wijziging kan niet worden opgeslagen. Probeer het opnieuw." + }, + "beforeAfter": { + "summary": "Ø {before} ervoor → Ø {after} sindsdien, een verandering van {delta}.", + "counts": "Op basis van {beforeCount} metingen ervoor en {afterCount} sindsdien.", + "needBefore": "Nog niet genoeg metingen van vóór de start. Om te vergelijken zijn ongeveer {weeks} weken ervoor en erna nodig.", + "needAfter": "Nog niet genoeg metingen sinds de start. Om te vergelijken zijn ongeveer {weeks} weken ervoor en erna nodig.", + "needStart": "Stel een startdatum in om de metingen van vóór en na de start te vergelijken.", + "needData": "Nog niet genoeg metingen. Om te vergelijken zijn ongeveer {weeks} weken vóór en na de start nodig." + }, + "insights": { + "title": "Effect van medicatie", + "subtitle": "Wat samenvalt met de metingen waarop je medicatie is gericht: alleen een verband, nooit een oordeel.", + "link": "Effectweergave openen", + "empty": "Nog niet genoeg gegevens om je medicatie te relateren aan de metingen waarop ze is gericht." + }, + "scaleAbsolute": "Absoluut", + "scalePercentSinceStart": "% sinds start", + "scaleToggleLabel": "Schaal van grafiek" + }, + "import": { + "resultSuccess": "{imported} innames geïmporteerd", + "resultPartial": "{imported} geïmporteerd, {skipped} overgeslagen.", + "resultNothing": "Er is niets geïmporteerd: alle {skipped} registraties zijn overgeslagen.", + "resultAlreadyRecorded": "{recorded} innames zijn al vastgelegd. Er is niets nieuws toegevoegd.", + "resultEmpty": "Dat bestand bevatte geen innames.", + "showSkipDetails": "Overgeslagen rijen tonen ({count})", + "skipDetailLine": "Regel {line}: {reason}", + "skipDetailsOmitted": "{count} andere overgeslagen rijen worden niet getoond.", + "skipGroupOne": "{count} registratie overgeslagen: {reason}", + "skipGroupFew": "{count} registraties overgeslagen: {reason}", + "skipGroupOther": "{count} registraties overgeslagen: {reason}", + "reasonDuplicateInFile": "een andere registratie in hetzelfde bestand heeft dezelfde datum en tijd", + "reasonAlreadyRecorded": "voor die datum en tijd is al een inname vastgelegd", + "reasonUnknown": "reden niet vastgelegd", + "reasonMedicationNotFound": "geen vastgelegd medicijn komt overeen met de naam in het bestand", + "reasonMedicationAmbiguous": "de naam in het bestand komt overeen met meer dan één vastgelegd medicijn", + "reasonMedicationIsMirrored": "het medicijn is een alleen-lezen kopie uit de lijst van een andere app", + "reasonStatusUnknown": "de status in het bestand wordt niet door het formaat gedefinieerd", + "reasonMissingTimestamp": "de rij bevat geen tijd", + "reasonMissingOffset": "de tijd heeft geen UTC-verschuiving, dus het exacte tijdstip is onbekend", + "reasonUnreadableTimestamp": "de tijd heeft niet het formaat dat de export beschrijft", + "reasonImplausibleTimestamp": "de tijd is geen bestaand tijdstip of ligt in de toekomst", + "reasonMissingMedication": "de rij noemt geen medicijn", + "reasonUnreadableDosage": "de dosering is geen getal", + "reasonUnreadableRow": "de rij heeft minder kolommen dan de koptekst", + "reasonStatusNoDoseInformation": "het bestand legt niets over die dosis vast; niemand heeft gereageerd en er is niets geregistreerd", + "reasonStatusReminderEvent": "de rij gaat over een uitgestelde herinnering, die niets zegt over de dosis", + "reasonStatusNotificationNotSent": "de rij vermeldt dat er geen melding is verstuurd, wat over de app gaat en niet over de dosis" + }, + "unitsPerDoseField": { + "other": "Anders…", + "inputLabel": "Eenheden per dosis, andere waarde", + "placeholder": "bijv. 1,5 of 1 1/2", + "invalid": "Voer een getal in groter dan 0 en maximaal 100, bijvoorbeeld 1,5 of 1 1/2.", + "preview": "Telt als {value} per dosis" + }, + "category": { + "custom": { + "add": "Nieuwe categorie", + "label": "Naam van categorie", + "labelPlaceholder": "bijv. Reisset", + "create": "Toevoegen", + "limitReached": "Je hebt het maximum van 20 eigen categorieën bereikt.", + "saveFailed": "Dat is niet opgeslagen. Probeer het opnieuw.", + "bpGateNote": "Bloeddrukinzichten tellen alleen medicatie mee in de ingebouwde categorie Bloeddruk.", + "manage": "Categorieën beheren", + "manageDescription": "Je eigen categorieën, weergegeven naast de ingebouwde.", + "hidden": "Verborgen", + "count": "{count} medicijnen", + "rename": "Naam wijzigen", + "hide": "Verbergen in de keuzelijst", + "show": "Tonen in de keuzelijst", + "delete": "Verwijderen", + "deleteTitle": "Deze categorie verwijderen?", + "deleteBody": "{count} medicijnen in deze categorie worden verplaatst naar Overig. De medicijnen zelf blijven bestaan.", + "movedToOther": "Categorie verwijderd. {count} medicijnen zijn verplaatst naar Overig." + }, + "filter": { + "label": "Categorie", + "all": "Alle categorieën" + } + }, + "course": { + "endedOn": "Laatste kuur geëindigd op {date}", + "nth": "Kuur {n}", + "startNew": "Nieuwe kuur starten", + "editTitle": "Kuur bewerken", + "startsOn": "Eerste dag", + "endsOn": "Laatste dag (optioneel)", + "note": "Notitie (optioneel)", + "notePlaceholder": "bijv. de griep in maart", + "title": "Kuren", + "helper": "Wanneer je het hebt ingenomen. Doses worden alleen binnen een kuur verwacht.", + "none": "Doorlopend ingenomen, geen afzonderlijke kuren.", + "range": "{start} tot {end}", + "since": "Sinds {start}", + "meta": "Kuur {n}, {status}, {taken} doses ingenomen", + "status": { + "current": "lopend", + "upcoming": "gepland", + "ended": "beëindigd" + }, + "delete": "Kuur verwijderen", + "deleteTitle": "Deze kuur verwijderen?", + "deleteBody": "De datums verdwijnen; de doses die je hebt vastgelegd, blijven in de geschiedenis.", + "deleteLastConfirm": "Dit is de enige kuur. Zonder deze kuur telt het medicijn als doorlopend ingenomen sinds je het hebt toegevoegd. De vastgelegde doses blijven bewaard.", + "error": { + "overlap": "Deze kuur overlapt in dagen met een andere kuur.", + "currentOpen": "Beëindig de lopende kuur voordat je er een na toevoegt.", + "oneShot": "Een eenmalig medicijn heeft één kuur.", + "invalidRange": "De laatste dag kan niet vóór de eerste liggen.", + "generic": "Dat is niet opgeslagen. Probeer het opnieuw." + } + }, + "composition": { + "title": "Samenstelling", + "empty": "Voeg toe wat één tablet of capsule bevat, zodat elke ingenomen dosis meetelt in je micronutriënten.", + "perUnitNote": "Per tablet of capsule; elke ingenomen dosis telt dit op bij de micronutriënten van die dag.", + "add": "Toevoegen", + "edit": "Bewerken", + "rowHelper": "Wat één tablet of capsule bevat, voor de micronutriënten.", + "sheetTitle": "Wat één eenheid bevat", + "sheetDescription": "Voer de hoeveelheden per tablet of capsule in zoals ze op het etiket staan.", + "nutrientLabel": "Voedingsstof", + "amountLabel": "Hoeveelheid", + "unitLabel": "Eenheid", + "choose": "Kies een voedingsstof", + "addRow": "Voedingsstof toevoegen", + "removeRow": "{name} verwijderen", + "editorEmpty": "Nog geen voedingsstof. Voeg er een toe per regel van het etiket.", + "labelPhoto": "Uitlezen van een foto van het etiket", + "labelReading": "Etiket wordt gelezen…", + "labelWaiting": "Nog aan het wachten tot het achtergrondproces dit oppakt.", + "labelReviewNote": "Controleer elke regel aan de hand van het etiket voordat je opslaat.", + "lowConfidence": "Deze regel was moeilijk te lezen; controleer hem aan de hand van het etiket.", + "unmatchedTitle": "Regels zonder bijpassende voedingsstof, voer ze zo nodig handmatig in:", + "servingNote": "Op het etiket staat: {note}. De hoeveelheden worden per afzonderlijke eenheid getoond.", + "labelError": "Het etiket kan niet worden gelezen", + "saveError": "De samenstelling kan niet worden opgeslagen", + "catalogError": "De lijst met voedingsstoffen kan niet worden geladen", + "invalidRow": "Kies in elke regel een voedingsstof en voer een hoeveelheid groter dan nul in." + } + }, + "charts": { + "loadingLabel": "Grafiek laden…", + "loadingSlowHint": "Analyses worden berekend. Dit kan even duren.", + "weight": "Gewicht", + "bloodPressure": "Bloeddruk", + "pulse": "Hartslag", + "bodyFat": "Vetpercentage", + "sleep": "Slaap", + "steps": "Stappen", + "hrv": "HRV", + "restingHeartRate": "Rusthartslag", + "activeEnergy": "Actieve energie", + "flights": "Trappen gelopen", + "distance": "Afstand wandelen + hardlopen", + "vo2Max": "VO₂max", + "bodyTemperature": "Lichaamstemperatuur", + "noData": "Geen gegevens in de geselecteerde periode", + "bucketWeekly": "Weekgemiddelde", + "bucketMonthly": "Maandgemiddelde", + "bucketWeeklyDaily": "Daggemiddelde per week", + "bucketMonthlyDaily": "Daggemiddelde per maand", + "days7Label": "7 d", + "days7Title": "Afgelopen 7 dagen", + "days30Label": "30 d", + "daysNLabel": "{days} d", + "days30Title": "Afgelopen 30 dagen", + "days90Label": "90 d", + "days90Title": "Afgelopen 90 dagen", + "daysAllLabel": "Alles", + "daysAllTitle": "Alle tijd", + "systolic": "Systolisch", + "diastolic": "Diastolisch", + "bodyWater": "Lichaamsvocht", + "boneMass": "Botmassa", + "spo2": "SpO₂", + "movingAverage7d": "Trend over 7 dagen", + "avg7dShort": "7 d", + "avg30dShort": "30 d", + "trend7dShort": "Trend over 7 dagen", + "trend": "Trend", + "perWeek": "/week", + "totalDelta": "Totaal", + "colorGreen": "Groen:", + "colorOrange": "Oranje:", + "colorRed": "Rood:", + "mood": "Stemming", + "moodScore": "Stemmingsscore", + "weekdays": { + "mon": "ma", + "wed": "wo", + "fri": "vr", + "sun": "zo" + }, + "months": { + "jan": "jan", + "feb": "feb", + "mar": "mrt", + "apr": "apr", + "may": "mei", + "jun": "jun", + "jul": "jul", + "aug": "aug", + "sep": "sep", + "oct": "okt", + "nov": "nov", + "dec": "dec" + }, + "heatmapOnTime": "op tijd", + "heatmapLate": "te laat", + "heatmapVeryLate": "veel te laat", + "legendOnTime": "Op tijd", + "legendLate": "Te laat", + "legendVeryLate": "Veel te laat", + "legendMissed": "Gemist", + "emptyStateTitle": "Voeg meer metingen toe om trends te zien", + "emptyStateDescription": "Leg minstens 3 metingen vast om de trendlijn te ontgrendelen.", + "needMoreDistinctDaysTitle": "Meer verschillende dagen nodig", + "needMoreDistinctDaysDescription": "Leg op meer dagen metingen vast om de trendlijn te ontgrendelen.", + "noDataInRangeTitle": "Geen gegevens in deze periode", + "noDataInRangeDescription": "Er vallen geen metingen binnen de geselecteerde periode. Kies een andere periode of leg een nieuwe meting vast.", + "errorTitle": "Gegevens kunnen niet worden geladen", + "loadErrorTitle": "Grafiek kan niet worden geladen", + "loadErrorReload": "Opnieuw laden", + "sparseDataCaption": "Met meer dagen wordt de trend vollediger.", + "tooltipHourlyMean": "{metric} (gemiddelde van de uren)", + "dataTable": { + "toggle": "Datapunten ({count})", + "columnDate": "Datum", + "noValue": "Geen waarde", + "captionDay": "Eén rij per dag voor {metric}, dezelfde punten die de grafiek tekent.", + "captionWeek": "Eén rij per week voor {metric}, het gemiddelde van de dagen in die week, dezelfde punten die de grafiek tekent.", + "captionMonth": "Eén rij per maand voor {metric}, het gemiddelde van de dagen in die maand, dezelfde punten die de grafiek tekent.", + "hourlyMeanNote": "{metric} is het gemiddelde per dag, waarbij elk uur één keer meetelt, zodat een training niet zwaarder weegt dan de rest van de dag." + }, + "personalBaseline": "Jouw normaal", + "deltaVsBaseline": "{delta} t.o.v. jouw normaal", + "deltaUnchanged": "gelijk aan jouw normaal", + "deltaVsTarget": "{delta} t.o.v. doel", + "weekdaysFull": { + "mon": "Maandag", + "tue": "Dinsdag", + "wed": "Woensdag", + "thu": "Donderdag", + "fri": "Vrijdag", + "sat": "Zaterdag", + "sun": "Zondag" + }, + "rangeBand": "Bereik", + "a11y": { + "summary": "Grafiek van {metric}. Bereik {min} tot {max}, laatste waarde {latest}, trend {trend}.", + "noData": "Grafiek van {metric}. Geen gegevens beschikbaar.", + "trendUp": "stijgend", + "trendDown": "dalend", + "trendFlat": "stabiel", + "scatterSummary": "Correlatiegrafiek, {count} punten van {xLabel} uitgezet tegen {yLabel}.", + "scatterNoData": "Correlatiegrafiek van {xLabel} tegen {yLabel}. Geen gegevens beschikbaar.", + "moodHeatmap": "Heatmap van stemming van {start} tot {end}, {days} dagen vastgelegd.", + "moodHeatmapEmpty": "Heatmap van stemming, nog geen dagen vastgelegd.", + "complianceHeatmap": "Heatmap van therapietrouw van {start} tot {end}, {days} actieve dagen.", + "complianceHeatmapEmpty": "Heatmap van therapietrouw, nog geen actieve dagen." + }, + "medicationsEmptyAction": "Medicijn toevoegen" + }, + "chart": { + "overlay": { + "controls": { + "title": "Grafiekoverlays", + "trendIndicator": "Trend over 7 dagen", + "trendArrow": "Trendpijl", + "targetRange": "Doelbereik", + "comparisonBaseline": "Vergelijking", + "comparisonUnavailable": "Nog geen gegevens uit de vorige periode", + "tooltip": { + "openSettings": "Instellingen voor grafiekoverlays" + } + } + } + }, + "comparison": { + "baseline": { + "none": "Geen", + "lastMonth": "Vorige maand", + "lastYear": "Vorig jaar" + }, + "captionLastMonth": "t.o.v. vorige maand", + "captionLastYear": "t.o.v. vorig jaar", + "deltaVs": { + "lastMonth": "{delta} t.o.v. vorige maand", + "lastYear": "{delta} t.o.v. vorig jaar" + }, + "tooltipPrior": "Vorige periode", + "unavailable": { + "lastMonth": "Vergelijking niet beschikbaar: nog geen gegevens van vorige maand", + "lastYear": "Vergelijking niet beschikbaar: nog geen gegevens van vorig jaar" + }, + "notAvailableForCompliance": "Vergelijking n.v.t. voor therapietrouw" + }, + "insights": { + "pattern": { + "dismiss": "Negeren", + "dismissed": "Dit patroon wordt genegeerd totdat het onderliggende bewijs verandert.", + "restore": "Opnieuw tonen", + "dismissError": "Dit patroon kan niet worden genegeerd.", + "restoreError": "Dit patroon kan niet worden hersteld.", + "loadError": "Patronen kunnen niet worden geladen.", + "empty": "Geen enkel huidig patroon haalt de drempelwaarde voor bewijs.", + "seasonalNote": "Sinds versie 1.42 haalt HealthLog seizoensinvloeden en langetermijntrends weg voordat waarden worden vergeleken. Je ziet minder verbanden, maar de verbanden die overblijven zijn betrouwbaarder. Veel van de eerdere patronen kwamen gewoon door de kalender.", + "seasonalNoteDismiss": "Opmerking sluiten" + }, + "correlation": { + "direction": { + "higher": "hoger", + "lower": "lager" + }, + "weekdayDirection": { + "above": "boven", + "below": "onder" + }, + "channelFactor": "beoordeelde {factor}", + "channel": { + "WEIGHT": "gewicht", + "BLOOD_GLUCOSE": "bloedglucose", + "BLOOD_PRESSURE_SYS": "systolische bloeddruk", + "BLOOD_PRESSURE_DIA": "diastolische bloeddruk", + "ACTIVITY_STEPS": "dagelijkse stappen", + "SLEEP_DURATION": "slaapduur", + "HEART_RATE_VARIABILITY": "hartslagvariabiliteit", + "RESTING_HEART_RATE": "rusthartslag", + "TIME_IN_DAYLIGHT": "tijd in daglicht", + "MOOD": "stemming", + "PULSE": "hartslag in rust", + "MEDICATION_COMPLIANCE": "therapietrouw", + "SYMPTOM_SEVERITY": "ernst van symptomen", + "ENV_TEMP_MEAN": "dagtemperatuur", + "ENV_TEMP_MIN": "laagste nachttemperatuur", + "ENV_SUNSHINE": "zonneschijn", + "ENV_DAYLIGHT": "daglicht", + "ENV_PRECIP": "neerslag", + "ENV_PRESSURE_MEAN": "luchtdruk", + "ENV_PRESSURE_DELTA": "luchtdrukschommeling gedurende de dag", + "ENV_PM25": "fijnstof (PM2.5)", + "ENV_OZONE_8H": "ozon", + "ENV_POLLEN_MAX": "pollen" + }, + "daily": { + "high": "Bij hogere waarden voor {behaviour} ligt {outcome} de volgende dag in je gegevens vaak {direction}. Het is een patroon om in de gaten te houden, geen oorzaak.", + "moderate": "Op basis van het bewijs tot nu toe lijkt {outcome} de volgende dag in je gegevens {direction} te liggen bij hogere waarden voor {behaviour}. Het is een patroon om in de gaten te houden, geen oorzaak.", + "faint": "Bij hogere waarden voor {behaviour} is er in je gegevens hooguit een zwakke aanwijzing dat {outcome} de volgende dag {direction} ligt. Het is te klein om op te bouwen en nooit een oorzaak." + }, + "lab": { + "default": "Hogere waarden voor {lab} vallen in je gegevens in dezelfde perioden samen met {outcome} dat {direction} ligt. Dit is een verband om samen met je zorgverlener in de gaten te houden, nooit een oorzaak.", + "faint": "Hogere waarden voor {lab} geven in je gegevens in dezelfde perioden hooguit een zwakke aanwijzing dat {outcome} {direction} ligt. Het is te klein om op te bouwen en nooit een oorzaak, maar wel de moeite waard om met je zorgverlener te bespreken." + }, + "hypothesis": { + "bpCompliance": { + "support": "Een hogere therapietrouw valt samen met lagere systolische waarden, een patroon om in de gaten te houden.", + "surprising": "Therapietrouw en systolische bloeddruk stijgen en dalen in je gegevens samen, wat verrassend is. Overleg met je arts voordat je iets aanpast.", + "none": "Therapietrouw en systolische bloeddruk bewegen in deze periode niet sterk samen." + }, + "moodPulse": { + "support": "Dagen met een lagere stemming vallen samen met een hogere hartslag in rust, een patroon om in de gaten te houden.", + "surprising": "Dagen met een betere stemming vallen in je gegevens samen met een hogere hartslag in rust, wat verrassend is.", + "none": "Stemming en hartslag in rust bewegen in deze periode niet sterk samen." + }, + "weightWeekday": "{weekday}: je gewicht ligt {delta} kg {direction} je gemiddelde op andere dagen, een patroon om in de gaten te houden." + }, + "dailySameDay": { + "high": "Bij hogere waarden voor {behaviour} op dezelfde dag en de dag ervoor ligt {outcome} in je gegevens vaak {direction}. Het is een patroon om in de gaten te houden, geen oorzaak.", + "moderate": "Op basis van het bewijs tot nu toe lijkt {outcome} in je gegevens {direction} te liggen bij hogere waarden voor {behaviour} op dezelfde dag en de dag ervoor. Het is een patroon om in de gaten te houden, geen oorzaak.", + "faint": "Bij hogere waarden voor {behaviour} op dezelfde dag en de dag ervoor is er in je gegevens hooguit een zwakke aanwijzing dat {outcome} {direction} ligt. Het is te klein om op te bouwen en nooit een oorzaak." + } + }, + "noAnalysisYet": "Nog geen beoordeling.", + "assessmentPreparing": "Je beoordeling wordt voorbereid…", + "emptyTitle": "Nog niet genoeg gegevens", + "emptyDescription": "Inzichten verschijnen zodra je een handvol metingen hebt vastgelegd. Begin met gewicht of bloeddruk.", + "emptyAddMeasurement": "Meting toevoegen", + "editMode": { + "done": "Klaar", + "reset": "Herstellen", + "resetTitle": "Overzicht herstellen?", + "resetBody": "De volgorde van de secties en de secties die je hebt verborgen, gaan terug naar de standaardinstellingen. Je indeling wordt nergens anders bewaard.", + "resetConfirm": "Overzicht herstellen", + "title": "Overzicht aanpassen", + "description": "Sleep om de volgorde te wijzigen, tik op het oog om te tonen of te verbergen.", + "dragHandle": "Sleep om de volgorde te wijzigen", + "show": "Tonen", + "hide": "Verbergen", + "manageInSettings": "Chips en detailpagina's beheren in Instellingen", + "groupSleep": "Slaap", + "groupMood": "Stemming", + "groupEvents": "Gebeurtenissen", + "gatedHint": "Verschijnt zodra er gegevens zijn of de functie beschikbaar is", + "allHiddenHint": "Alle secties zijn verborgen. Toon er minstens één om je overzicht te zien.", + "saveSuccess": "Indeling van overzicht opgeslagen", + "saveError": "De indeling van je overzicht kan niet worden opgeslagen", + "resetSuccess": "Overzicht teruggezet naar standaard", + "emptyTitle": "Alle kaarten zijn verborgen", + "emptyDescription": "Je hebt alle secties verborgen. Open Aanpassen om kaarten terug te halen." + }, + "bmiEmptyTitle": "Stel je lengte in om je BMI te zien", + "bmiEmptyDescription": "Voor de BMI is je lengte nodig. Voeg die toe onder Instellingen → Account.", + "bmiEmptyAction": "Accountinstellingen openen", + "personalRecord": { + "badge": "PR", + "tooltip": "Persoonlijk record: {value} {unit} op {date}", + "benchmark": "Gebruikelijk op die leeftijd: {low} tot {high} {unit} ({source})" + }, + "loadError": "Inzichten kunnen niet worden geladen", + "heroPersonalBaseline": "Op basis van je afgelopen 90 dagen", + "heroRegenerating": "Opnieuw genereren", + "regenerateAnalysis": "Beoordeling opnieuw uitvoeren", + "regenerateSuccess": "Beoordeling vernieuwd", + "narrativeTitle": "Terugblik", + "narrativeWeek": "Deze week", + "narrativeMonth": "Deze maand", + "narrativeUpdating": "Bijwerken…", + "heroFallbackSubtitle": "Een dagelijkse kijk op je trends, rechtstreeks gebaseerd op de cijfers die je hebt vastgelegd.", + "heroGreetingMorning": "Goedemorgen", + "heroGreetingAfternoon": "Goedemiddag", + "heroGreetingEvening": "Goedenavond", + "heroActionAskCoach": "Vraag het de Coach", + "healthScore": { + "label": "Gezondheidsscore", + "band": { + "green": "Binnen het referentiebereik", + "yellow": "Sommige pijlers vragen aandacht", + "red": "Een of meer pijlers liggen buiten het referentiebereik" + }, + "insufficient": "Er zijn nog nergens genoeg recente gegevens om een score te berekenen. Eén gezondheidsgebied is genoeg om te beginnen, en de score geeft aan op welke gebieden hij is gebaseerd.", + "basis": "Gebaseerd op {count} van {recommended} gezondheidsgebieden.", + "compositionNotice": { + "item": "{pillar} ({reason})", + "left": "Telt niet meer mee voor de score: {pillars}.", + "joined": "Telt nu mee voor de score: {pillars}." + }, + "anatomyToggle": "Hoe deze score tot stand komt", + "notScored": "Nog niet gescoord ({count})", + "method": "De score is het gelijk gewogen gemiddelde van de pijlers die meetellen, op een schaal van 0 tot 100. Elke pijler wordt beoordeeld aan de hand van een gepubliceerde referentieband, en de zwakste pijler kan de algemene band bepalen. Een pijler zonder genoeg recente gegevens wordt weggelaten in plaats van als nul meegeteld. De referentiebanden komen uit gepubliceerde bronnen; welke pijlers meetellen, kies je zelf, dus het gecombineerde getal is zelf geen klinische standaard.", + "bandSetter": "Algemene band bepaald door {pillar}", + "versionAndNoise": "Methodeversie {version}. Ondergrens voor wekelijkse vergelijking: {noise} punten.", + "methodVersion": "Methodeversie {version}.", + "configured": "Je hebt zelf gekozen welke pijlers meetellen voor deze score.", + "none": "geen", + "delta": "{delta} t.o.v. de vorige vergelijkbare periode", + "deltaReason": { + "algorithm_changed": "Geen vergelijking, omdat de scoremethode is gewijzigd.", + "config_changed": "Geen vergelijking, omdat je hebt gewijzigd wat meetelt voor je score.", + "composition_changed": "Geen vergelijking, omdat de meegetelde pijlers zijn gewijzigd.", + "first_eligibility_window": "Geen vergelijking, omdat dit de eerste geschikte periode is.", + "below_noise_floor": "De verandering valt binnen de gecombineerde meetruis.", + "no_previous_window": "Er is geen vergelijkbare eerdere periode beschikbaar.", + "no_current_score": "Geen vergelijking, omdat de huidige periode niet geschikt is." + }, + "restMode": "Rustmodus actief sinds {since}. De score wordt ter context getoond en niet bestraft.", + "pillar": { + "bloodPressure": "Bloeddruk", + "glycaemia": "Glykemie", + "activity": "Activiteit", + "sleep": "Slaap", + "adiposity": "Lichaamsvet", + "wellbeing": "Welzijn", + "lipids": "Bloedvetten" + }, + "observed": "Gemeten: {value}", + "reference": "Referentie: {value}", + "fastingObserved": "Nuchtere glucose: {value} {unit}", + "fastingReference": "{low} tot {high} {unit} nuchter", + "personalReference": "Jouw streefwaarde: {value}", + "bpBasisAbove": "{axis} bepaalt deze score: ongeveer {offset} mmHg boven de bovengrens van {boundary} mmHg.", + "bpBasisBelowFloor": "{axis} bepaalt deze score: ongeveer {offset} mmHg onder de ondergrens voor lage bloeddruk van {boundary} mmHg.", + "bpBasisInBand": "Beide waarden liggen op of onder hun referentiebovengrens.", + "bpScale": "Op de bovengrens is de score 85; 100 betekent ongeveer 12 mmHg daaronder.", + "bpRepresentative": "Gebaseerd op een gemiddelde van de afgelopen {days} dagen waarin recente metingen zwaarder wegen, dus het komt mogelijk met geen enkele afzonderlijke meting overeen.", + "source": "Bron: {source}, per {date}", + "observedActivity": "{value} stappen per dag", + "observedSleep": "{value} minuten per nacht", + "observedAdiposity": "Taille-lengteratio {value}", + "referenceActivity": "Het voordeel vlakt af bij {high} stappen per dag", + "referenceSleep": "Minstens {low} minuten per nacht; langer slapen wordt niet bestraft", + "referenceAdiposity": "Taille-lengteratio onder {high}", + "referenceHba1c": "HbA1c {low} tot {high}%", + "referenceDetail": "{label}: {low} tot {high} ({kind}, {source})", + "openBound": "open", + "laboratoryReferenceSource": "Referentiebereiken van het rapporterende laboratorium", + "personalTargetSource": "Persoonlijke streefwaarde", + "referenceKind": { + "clinical": "Klinische drempelwaarde", + "population": "Populatiepercentiel", + "guideline": "Richtlijnband" + }, + "reason": { + "readFailed": "Gegevens kunnen niet worden geladen", + "notTracked": "Niet bijgehouden", + "missingProfile": "Leeftijd of referentieprofiel ontbreekt", + "missingHeight": "Lengte ontbreekt", + "incompletePanel": "Er is een recent, volledig labpanel met referentiebereiken nodig", + "crisis": "In plaats van een score worden veiligheidsadviezen getoond", + "insufficientHistory": "Niet genoeg recente bruikbare gegevens", + "unavailable": "Deze pijler komt momenteel niet in aanmerking" + }, + "tension": "De signalen voor je paraatheid lopen uiteen. Ondersteunend: {positive}. Onder druk: {negative}.", + "returnToBand": "{metric} ligt al {days} dagen weer binnen je gebruikelijke bereik.", + "weightGoal": { + "title": "Persoonlijk gewichtsdoel", + "value": "Nu {current} {unit}. Doel {min} tot {max} {unit}. Afstand tot doel: {distance} {unit}.", + "delta": "De afstand tot je doel is sinds de vorige meting met {delta} {unit} veranderd.", + "noDelta": "Er is geen eerdere gewichtsmeting beschikbaar om mee te vergelijken.", + "no_personal_goal": "Stel een persoonlijk gewichtsdoel in om hier je voortgang te zien.", + "weight_not_tracked": "Leg een gewichtsmeting vast om je voortgang richting je doel te zien.", + "read_failed": "Gewichtsgegevens kunnen niet worden geladen. Probeer het opnieuw.", + "notScored": "De voortgang richting je gewichtsdoel is persoonlijke context en heeft geen invloed op de Gezondheidsscore." + }, + "configureLink": "Kies wat meetelt voor je score", + "coverage": { + "recommendedMet": "Omvat de drie gebieden die de score aanbeveelt", + "areas": "{present} van {required} gezondheidsgebieden" + }, + "historyLink": "Geschiedenis" + }, + "dailyBriefing": { + "title": "Dagelijkse briefing", + "keyFindingsTitle": "Belangrijkste bevindingen", + "signalsTitle": "Signalen van de dag", + "emptyTitle": "Nog geen briefing", + "emptyDescription": "Genereer de briefing van vandaag voor een beschrijvende kijk op je trends.", + "emptyAction": "Briefing genereren", + "loadingLabel": "De briefing van vandaag wordt samengesteld", + "refreshFailedHint": "De briefing kan niet worden vernieuwd. De laatste wordt getoond.", + "retryAction": "Opnieuw proberen", + "failedTitle": "De briefing kan niet worden gegenereerd", + "failedDescription": "De AI-provider reageerde niet op tijd of gaf een fout. Probeer het opnieuw of verhoog bij een traag lokaal model de time-out voor antwoorden in de AI-instellingen.", + "failedDescriptionTimeout": "Het AI-verzoek duurde te lang en de briefing was niet op tijd klaar. Verhoog bij een traag lokaal model de time-out voor AI-antwoorden in Instellingen en probeer het daarna opnieuw.", + "failedDescriptionProvider": "De AI-provider heeft het verzoek geweigerd. Controleer de provider en de API-sleutel in de AI-instellingen en probeer het daarna opnieuw.", + "failedDescriptionRateLimit": "De AI-provider beperkt op dit moment het aantal verzoeken. Probeer het over een tijdje opnieuw.", + "omittedTitle": "Briefing achtergehouden", + "omittedUngroundedDescription": "De gegenereerde briefing noemde een cijfer dat niet aan de hand van je gegevens kon worden gecontroleerd, dus is hij niet getoond. Probeer het opnieuw." + }, + "trendsRow": { + "title": "Trends", + "subtitle": "De afgelopen 30 dagen in één oogopslag", + "caption": { + "bp": "Systolische en diastolische metingen van de afgelopen 30 dagen.", + "weight": "Trend van het lichaamsgewicht over de afgelopen 30 dagen.", + "pulse": "Hartslag in rust over de afgelopen 30 dagen.", + "mood": "Dagelijkse stemmingsscore over de afgelopen 30 dagen.", + "sleep": "Slaapduur per nacht over de afgelopen 30 dagen.", + "steps": "Aantal stappen per dag over de afgelopen 30 dagen.", + "hrv": "Hartslagvariabiliteit over de afgelopen 30 dagen.", + "resting_hr": "Rusthartslag over de afgelopen 30 dagen.", + "active_energy": "Verbruikte actieve energie over de afgelopen 30 dagen.", + "flights": "Gelopen trappen over de afgelopen 30 dagen.", + "distance": "Afstand wandelen en hardlopen over de afgelopen 30 dagen.", + "vo2_max": "VO₂max over de afgelopen 30 dagen.", + "body_temp": "Lichaamstemperatuur over de afgelopen 30 dagen." + }, + "viewDetail": "Details van {metric} bekijken" + }, + "vo2Max": { + "cardioLinkTitle": "Cardiofitheid (VO₂max)", + "cardioLinkBody": "VO₂max is de belangrijkste maat voor aerobe fitheid. De volledige grafiek en beoordeling staan op een eigen pagina.", + "cardioLinkCta": "Cardiofitheid openen" + }, + "trendAnnotation": { + "emptyBp": "Wachten op meer gegevens om deze trend toe te lichten.", + "emptyWeight": "Wachten op meer gegevens om deze trend toe te lichten.", + "emptyMood": "Wachten op meer gegevens om deze trend toe te lichten.", + "confidenceHigh": "Hoge betrouwbaarheid", + "confidenceModerate": "Gemiddelde betrouwbaarheid", + "confidenceLow": "Lage betrouwbaarheid", + "pendingLabel": "Toelichting bij trend wordt gegenereerd" + }, + "correlationRow": { + "title": "Verbanden", + "experimentCta": "Probeer een experiment van 7 dagen", + "experimentTooltip": "Binnenkort beschikbaar", + "emptyTitle": "Meer gegevens nodig om dit verband te zien", + "sourceChip": "gebaseerd op {n} gekoppelde metingen ({window})", + "sourceWindowLast30": "afgelopen 30 dagen", + "confidenceHigh": "Hoge betrouwbaarheid", + "confidenceModerate": "Gemiddelde betrouwbaarheid", + "confidenceLow": "Lage betrouwbaarheid", + "card": { + "bpComplianceTitle": "Bloeddruk × therapietrouw", + "bpComplianceSubtitle": "Dagelijkse systolische waarde tegen therapietrouw in %", + "moodPulseTitle": "Stemming × hartslag in rust", + "moodPulseSubtitle": "Stemming en hartslag in rust op dezelfde dag", + "weightWeekdayTitle": "Gewicht × weekdag", + "weightWeekdaySubtitle": "Gewicht gegroepeerd per dag van de week" + } + }, + "coach": { + "refusalOutOfScope": "Ik kan alleen helpen met de gezondheidsgegevens in je logboek: metingen, medicatie, stemming, trends. Vragen daarbuiten kan ik niet beantwoorden.", + "refusalInjection": "Ik zie formuleringen die proberen mijn instructies te omzeilen. Ik ben de HealthLog Coach en vat alleen je eigen gezondheidsgegevens samen. Formuleer je vraag opnieuw binnen dat kader.", + "errorBudget": "Je hebt de gebruikslimiet van de Coach voor vandaag bereikt. Het budget wordt om middernacht in jouw tijdzone vernieuwd.", + "errorProvider": "De Coach kan op dit moment geen provider voor Inzichten bereiken. Probeer het zo opnieuw.", + "errorDemo": "De Coach geeft in de demo geen antwoord.", + "errorNoProvider": "De Coach leest je vastgelegde gezondheidsgegevens en beantwoordt vragen daarover (geen medisch advies). Daarvoor heeft HealthLog een AI-provider nodig. Koppel je eigen sleutel of een lokaal model.", + "errorNoProviderAction": "AI-provider koppelen", + "errorNetwork": "Geen internetverbinding. Probeer het opnieuw zodra je weer online bent.", + "prefsSaveError": "Je voorkeuren voor de Coach kunnen niet worden opgeslagen. Probeer het opnieuw.", + "errorCredentialExpired": "De verbinding met je AI-provider is verlopen. Maak in Instellingen opnieuw verbinding om de Coach te blijven gebruiken.", + "tagline": "Persoonlijke gezondheidscoach, gebaseerd op jouw gegevens.", + "newChat": "Nieuwe chat", + "docScope": { + "badge": "Document", + "chattingAbout": "Chat over: {title}", + "chattingAboutMore": "Chat over: {titles} en {count} andere", + "notIndexedHint": "Laat dit document eerst in de kluis met AI lezen, zodat de Coach er vragen over kan beantwoorden." + }, + "actionsMenu": "Acties", + "maximizeAriaLabel": "Openen als volledige pagina", + "minimizeAriaLabel": "Terug naar het zijpaneel", + "send": "Versturen", + "stop": "Stoppen", + "thinking": "Denkt na…", + "unverifiedFiguresNotice": "Sommige cijfers konden niet aan de hand van je gegevens worden gecontroleerd en zijn weggelaten.", + "composerPlaceholder": "Vraag me wat je wilt…", + "nudgeBubbleLabel": "Nieuw bericht van de Coach. Chat openen", + "fabLabel": "Coach openen", + "readAloud": "Voorlezen", + "readAloudStop": "Stoppen met voorlezen", + "messageTimeLabel": "Bericht verstuurd om {time}", + "copyMessage": "Kopiëren", + "copyMessageError": "Kopiëren mislukt", + "regenerate": "Opnieuw proberen", + "selfContextAdopt": { + "offer": "Dit antwoord toevoegen aan je persoonlijke context?", + "confirm": "Toevoegen", + "dismiss": "Negeren", + "done": "Toegevoegd aan je persoonlijke context", + "duplicate": "Staat al in je persoonlijke context", + "failed": "Toevoegen mislukt. Probeer het opnieuw." + }, + "rememberMessage": { + "action": "Onthouden", + "failed": "Opslaan mislukt. Probeer het opnieuw.", + "alreadyKept": "De Coach onthoudt dit al." + }, + "guided": { + "offerTitle": "De Coach heeft {count} vervolgvragen voor je", + "offerTitleOne": "De Coach heeft een vervolgvraag voor je", + "offerBody": "Korte antwoorden maken je persoonlijke context scherper, één vraag tegelijk, gewoon hier in de chat.", + "offerStart": "Nu beantwoorden", + "offerLater": "Later", + "offerDismiss": "Niet meer vragen", + "dismissError": "De vragen kunnen niet worden genegeerd. Probeer het opnieuw.", + "progress": "Vraag {current} van {total}", + "skip": "Overslaan", + "later": "Later", + "dismissRemaining": "Niet meer vragen", + "answerPlaceholder": "Typ je antwoord…", + "summaryTitle": "Klaar, bedankt voor je antwoorden!", + "summaryAnswered": "{answered} van {total} beantwoord", + "summaryAdopted": "{adopted} toegevoegd aan je persoonlijke context", + "summaryAdoptedNone": "niets nieuws toegevoegd aan je persoonlijke context", + "summaryLink": "Je persoonlijke context bekijken" + }, + "threadEmpty": "Stel een vraag over je trends, medicatie of metingen om een gesprek te beginnen.", + "historyTitle": "Gesprekken", + "historySearchPlaceholder": "Gesprekken zoeken…", + "historyEmpty": "Je gesprekken verschijnen hier. Stel een vraag om te beginnen.", + "historyDeleteAria": "Gesprek verwijderen", + "historyDeleted": "Gesprek verwijderd", + "historyDeleteFailed": "Het gesprek kon niet worden verwijderd.", + "rename": { + "action": "Gesprek hernoemen", + "input": "Titel van gesprek", + "save": "Titel opslaan", + "cancel": "Hernoemen annuleren", + "error": "De titel van het gesprek kon niet worden opgeslagen." + }, + "historySearchEmpty": "Geen gesprekken gevonden die overeenkomen met je zoekopdracht.", + "historyLoadingMore": "Meer laden…", + "sourcesTitle": "Wat ik kan zien", + "sourcesFresh": "Actueel", + "sourcesStale": "Verouderd", + "sourcesFooter": "De Coach leest alleen de gegevens die je hebt gekoppeld.", + "metric": { + "bp": "Bloeddruk", + "weight": "Gewicht", + "pulse": "Hartslag", + "mood": "Stemming", + "compliance": "Therapietrouw", + "general": "Algemeen", + "hrv": "HRV", + "sleep": "Slaap", + "resting_hr": "Rusthartslag", + "steps": "Stappen", + "active_energy": "Actieve energie", + "flights": "Beklommen verdiepingen", + "distance": "Afstand", + "vo2_max": "VO₂ max", + "body_temp": "Lichaamstemperatuur", + "medications": "Medicatie", + "anthropometrics": "Profiel (lengte, leeftijd, geslacht)", + "walking_hr": "Hartslag tijdens wandelen", + "respiratory_rate": "Ademhalingsfrequentie", + "spo2": "Bloedzuurstof", + "pulse_wave_velocity": "Polsgolfsnelheid", + "vascular_age": "Vaatleeftijd", + "body_fat": "Vetpercentage", + "fat_mass": "Vetmassa", + "fat_free_mass": "Vetvrije massa", + "muscle_mass": "Spiermassa", + "lean_body_mass": "Vetvrije lichaamsmassa", + "bone_mass": "Botmassa", + "total_body_water": "Lichaamsvocht", + "bmi": "BMI", + "visceral_fat": "Visceraal vet", + "glucose": "Glucose", + "walking_steadiness": "Loopstabiliteit", + "walking_asymmetry": "Loopasymmetrie", + "walking_double_support": "Dubbele steuntijd", + "walking_step_length": "Staplengte", + "walking_speed": "Loopsnelheid", + "audio_env": "Omgevingsgeluid", + "audio_headphone": "Koptelefoongeluid", + "audio_event": "Momenten met hard geluid", + "daylight": "Tijd in daglicht", + "skin_temp": "Huidtemperatuur", + "workouts": "Trainingen" + }, + "settingsAriaLabel": "Coach-instellingen", + "settingsTitle": "Coach-instellingen", + "settingsDescription": "Stel in hoe de Coach met je praat.", + "settingsToneLabel": "Toon", + "settingsToneWarm": "Warm", + "settingsToneNeutral": "Neutraal", + "settingsToneConcise": "Beknopt", + "settingsVerbosityLabel": "Lengte van antwoorden", + "settingsVerbosityBrief": "Kort", + "settingsVerbosityDefault": "Standaard", + "settingsVerbosityDetailed": "Uitgebreid", + "settingsVerbosityConciseHint": "De beknopte toon houdt antwoorden al kort. Daarom staat de lengte vast op Kort zolang die toon actief is.", + "settingsSourcesSummary": "De Coach ziet {count} van {total} gegevensgebieden en kijkt {window} terug.", + "settingsSourcesSummaryAll": "De Coach ziet {count} van {total} gegevensgebieden en je volledige geschiedenis.", + "settingsSourcesPointerLink": "Coach-instellingen openen", + "settingsExcludeLabel": "Meetwaarden uitsluiten", + "settingsExcludeHint": "De Coach ziet geen gegevens van de geselecteerde meetwaarden.", + "settingsContextLabel": "Context meenemen", + "settingsContextHint": "Optionele blokken waarop de Coach kan terugvallen. Zet je er een uit, dan wordt dat blok bij elke beurt weggelaten.", + "settingsEvidenceLabel": "Onderbouwing standaard tonen", + "settingsEvidenceHint": "Het uitklapgedeelte onder elk antwoord automatisch openen.", + "settingsDefaultWindowLabel": "Standaard analyseperiode", + "settingsDefaultWindowHint": "De Coach leest per chat zoveel geschiedenis, tenzij je dit wijzigt in de kop van het zijpaneel.", + "settingsSave": "Opslaan", + "settingsSaved": "Opgeslagen", + "settingsCancel": "Annuleren", + "dailyLimitTitle": "Daglimiet bereikt", + "dailyLimitBody": "Daglimiet bereikt. Het budget wordt om middernacht in jouw tijdzone vernieuwd.", + "providerRateLimitTitle": "Provider tijdelijk begrensd", + "providerRateLimitBody": "De provider begrenst tijdelijk het aantal verzoeken; probeer het over ~5 min opnieuw.", + "cluster": { + "cardio": { + "label": "Hart en bloedvaten", + "hint": "Bloeddruk, hartslag, HRV, rusthartslag en hartslag tijdens wandelen" + }, + "body": { + "label": "Lichaamssamenstelling", + "hint": "Gewicht, vetpercentage, spiermassa en BMI" + }, + "activity": { + "label": "Activiteit", + "hint": "Stappen, energie, afstand en VO₂ max" + }, + "workouts": { + "label": "Trainingen", + "hint": "Hardlopen, fietsen en andere sessies" + }, + "sleep": { + "label": "Slaap", + "hint": "Duur en slaapfasen" + }, + "mood": { + "label": "Stemming", + "hint": "Dagelijkse stemmingsregistraties" + }, + "glucose": { + "label": "Glucose", + "hint": "Nuchtere metingen en metingen na de maaltijd" + }, + "medication": { + "label": "Medicatie", + "hint": "Therapietrouw en GLP-1-context" + }, + "mobility": { + "label": "Mobiliteit en looppatroon", + "hint": "Stabiliteit, asymmetrie en looppatroon" + }, + "environment": { + "label": "Omgeving", + "hint": "Geluid, daglicht en huidtemperatuur" + } + }, + "settingsClustersLabel": "Gegevens die de Coach ziet", + "settingsClustersHint": "Kies welke groepen gegevens de Coach mag lezen. Meer gegevens betekent rijkere antwoorden en een grotere prompt.", + "settingsClusterNoData": "Nog geen gegevens", + "sourcesMemberCountOne": "1 meetwaarde", + "sourcesMemberCountFew": "{count} meetwaarden", + "sourcesMemberCountOther": "{count} meetwaarden", + "lookback": { + "label": "Hoe ver de Coach terug mag kijken", + "option": { + "last7days": "{days} dagen", + "last30days": "{days} dagen", + "last90days": "{days} dagen", + "lastYear": "{months} maanden", + "allTime": "Alles" + }, + "detailDays": "De Coach leest in geen enkel antwoord iets dat ouder is dan {days} dagen.", + "detailMonths": "De Coach leest in geen enkel antwoord iets dat ouder is dan {months} maanden.", + "detailAll": "Alles wat je hebt vastgelegd: {dailyMonths} maanden per dag, oudere metingen als maandwaarden tot {years} jaar terug en labuitslagen van de afgelopen {labMonths} maanden.", + "note": "Je profiel, je huidige medicatie, een lopende ziekte en komende afspraken blijven zichtbaar; samenvattingen die meer geschiedenis nodig hebben, worden ingekort of weggelaten. Antwoorden die de Coach eerder in oudere gesprekken gaf, kunnen nog oudere waarden noemen." + }, + "showConversations": "Gesprekken tonen", + "hideConversations": "Gesprekken verbergen", + "heroGreeting": "Vraag me alles over je gegevens", + "heroSubline": "Stel een vraag over je trends, medicatie of metingen.", + "thinkingDuration": "{seconds} s nagedacht", + "thinkingExpandAria": "Tonen wat de Coach heeft overwogen", + "thinkingDetail": "Beantwoord op basis van je gezondheidsoverzicht.", + "tokensUsed": "{count} tokens", + "askAboutThis": "Vraag de Coach hiernaar", + "readStrip": { + "label": "Gebruikelijk bereik", + "baselineWithin": "Je gebruikelijke bereik is {low}–{high} {unit}; vandaag ligt {value} daarbinnen.", + "baselineAbove": "Je gebruikelijke bereik is {low}–{high} {unit}; vandaag ligt {value} daarboven.", + "baselineBelow": "Je gebruikelijke bereik is {low}–{high} {unit}; vandaag ligt {value} daaronder.", + "sameHoursWithin": "Rond dit tijdstip zit je meestal op {low}–{high} {unit}; vandaag ligt {value} tot nu toe daarbinnen.", + "sameHoursAbove": "Rond dit tijdstip zit je meestal op {low}–{high} {unit}; vandaag ligt {value} tot nu toe daarboven.", + "sameHoursBelow": "Rond dit tijdstip zit je meestal op {low}–{high} {unit}; vandaag ligt {value} tot nu toe daaronder.", + "steadyWithin": "Je metingen liggen meestal rond {low} {unit}; vandaag komt {value} daarmee overeen.", + "steadyAbove": "Je metingen liggen meestal rond {low} {unit}; vandaag ligt {value} daarboven.", + "steadyBelow": "Je metingen liggen meestal rond {low} {unit}; vandaag ligt {value} daaronder.", + "latestWithin": "Je gebruikelijke bereik is {low}–{high} {unit}; je laatste meting ({date}) was {value}, binnen dat bereik.", + "latestAbove": "Je gebruikelijke bereik is {low}–{high} {unit}; je laatste meting ({date}) was {value}, boven dat bereik.", + "latestBelow": "Je gebruikelijke bereik is {low}–{high} {unit}; je laatste meting ({date}) was {value}, onder dat bereik.", + "steadyLatestWithin": "Je metingen liggen meestal rond {low} {unit}; je laatste meting ({date}) was {value} en komt daarmee overeen.", + "steadyLatestAbove": "Je metingen liggen meestal rond {low} {unit}; je laatste meting ({date}) was {value}, hoger dan dat.", + "steadyLatestBelow": "Je metingen liggen meestal rond {low} {unit}; je laatste meting ({date}) was {value}, lager dan dat.", + "insufficient": "Je gebruikelijke bereik wordt nog bepaald. Blijf nog een paar dagen metingen vastleggen.", + "driver": "{note}" + }, + "scope": { + "prefix": "De Coach kijkt al naar {metric}" + }, + "settings": "Instellingen", + "history": { + "groupToday": "Vandaag", + "groupYesterday": "Gisteren", + "groupThisWeek": "Deze week", + "groupEarlier": "Eerder" + }, + "seed": { + "bloodPressure": "Neem mijn bloeddruktrend van de afgelopen 30 dagen met me door. Is er iets waar ik op moet letten?", + "weight": "Hoe ontwikkelt mijn gewicht zich de laatste tijd, en moet ik iets met die richting doen?", + "bmi": "Wat zegt mijn BMI-trend, en hoe moet ik die lezen?", + "pulse": "Neem mijn hartslagmetingen met me door. Is er iets ongewoons?", + "restingHr": "Hoe ontwikkelt mijn rusthartslag zich, en wat zegt die over mijn conditie?", + "hrv": "Wat zegt mijn hartslagvariabiliteit de laatste tijd over herstel en stress?", + "sleep": "Neem mijn slaap van de laatste tijd met me door: duur, regelmaat en wat ik eventueel zou kunnen veranderen.", + "mood": "Welke patronen zie je in mijn stemming over de afgelopen weken?", + "medications": "Hoe staat het met mijn therapietrouw, en past die bij hoe ik me heb gevoeld?", + "steps": "Hoe actief ben ik de laatste tijd geweest op basis van mijn stappen, en hoe verhoudt dat zich tot een gezond niveau?", + "activeEnergy": "Wat zegt mijn trend in actieve energie over mijn activiteitsniveau de laatste tijd?", + "cardioFitness": "Wat betekent de trend van mijn cardiofitheid (VO₂ max), en hoe krijg ik die de goede kant op?", + "bloodGlucose": "Neem mijn recente glucosemetingen met me door. Liggen ze binnen een gezond bereik?", + "oxygenSaturation": "Wat zegt mijn trend in bloedzuurstof (SpO₂)?", + "respiratoryRate": "Wat zegt mijn trend in ademhalingsfrequentie over mijn gezondheid?", + "workouts": "Neem mijn recente trainingen met me door: belasting, frequentie en hoe ik ertussen herstel.", + "recoveryPage": "Waarom staat mijn herstel nu waar het staat, en wat bepaalt dat?", + "briefing": "Neem de briefing van vandaag met me door. Waar moet ik me op richten, en is er iets waar ik iets mee moet?", + "healthScore": "Waarom is mijn gezondheidsscore {score} van de 100, en wat zou die het meest verbeteren?", + "periodWeek": "Neem met me door hoe mijn afgelopen week verliep over al mijn gezondheidswaarden. Wat valt op?", + "periodMonth": "Neem met me door hoe mijn afgelopen maand verliep over al mijn gezondheidswaarden. Wat valt op?", + "correlationBpCompliance": "Hoe hangt mijn therapietrouw samen met mijn bloeddruk? Leg uit wat deze correlatie voor mij betekent.", + "correlationMoodPulse": "Is er echt een verband tussen mijn stemming en mijn hartslag? Help me deze correlatie te interpreteren.", + "correlationWeightWeekday": "Volgt mijn gewicht een weekpatroon? Wat zegt deze correlatie met de dag van de week?", + "recommendation": "Vertel me meer over deze aanbeveling: \"{text}\" Waarom geldt die voor mij, en wat moet ik ermee doen?" + }, + "assessmentPrompt": "Neem mijn beoordeling van {metric} met me door. Wat betekent die en wat moet ik ermee doen?", + "attach": { + "menuChooseFromDocuments": "Kiezen uit documenten", + "menuUploadNew": "Nieuw document uploaden", + "trigger": "Documenten bijvoegen", + "pickerTitle": "Documenten bijvoegen", + "pickerDescription": "De Coach leest alleen de documenten die je bijvoegt, niet je gezondheidsgegevens.", + "pickerSearchPlaceholder": "Documenten zoeken…", + "pickerEmpty": "Nog geen documenten in je kluis.", + "pickerNotIndexed": "Nog niet geïndexeerd", + "pickerCap": "Je kunt er nog maximaal {max} bijvoegen.", + "pickerConfirm": "Bijvoegen ({count})", + "pillRemove": "{title} verwijderen", + "indexing": "Indexeren…", + "indexingHint": "Er wordt nog een document geïndexeerd. Je kunt versturen zodra het klaar is.", + "fencedHint": "Dit gesprek heeft geen toegang tot je gezondheidsgegevens. De Coach leest alleen de bijgevoegde documenten.", + "documentsAttachedOne": "1 document bijgevoegd", + "documentsAttachedOther": "{count} documenten bijgevoegd", + "railBadge": "Afgeschermde documentchat", + "uploadError": "Uploaden mislukt. Probeer het opnieuw.", + "notFoundError": "Die documentlink is niet meer geldig. Er wordt in plaats daarvan een gewone chat gestart." + }, + "interrupted": { + "note": "Dit antwoord is onderbroken voordat het klaar was.", + "retry": "Opnieuw vragen" + }, + "historyReadOnlyNote": "De Coach is nu niet beschikbaar, maar je kunt je gesprekken nog wel lezen en verwijderen.", + "transcriptYou": "Jij", + "transcriptCoach": "Coach", + "errorConsent": "De Coach heeft je toestemming voor AI nodig voordat hij kan antwoorden. Je kunt die geven bij Instellingen, AI.", + "errorNotPermitted": "De Coach is niet beschikbaar in een dossier dat iemand met je heeft gedeeld.", + "errorUnavailable": "De Coach kon zijn instellingen zojuist niet controleren. Probeer het zo meteen opnieuw.", + "errorOperatorOff": "AI is uitgeschakeld op deze server, dus de Coach kan niet antwoorden.", + "errorCoachOff": "De Coach is uitgeschakeld. Je kunt hem weer inschakelen bij Instellingen, Modules.", + "frame": { + "showPanel": "Gesprekken tonen", + "hidePanel": "Gesprekken verbergen", + "panelDescription": "Je gesprekken met de Coach, nieuwste eerst.", + "rowActions": "Acties voor {title}", + "rename": "Hernoemen", + "delete": "Verwijderen", + "modelSection": "Model", + "provider": "Antwoordt met", + "modelManaged": "Het model voor deze provider stel je in bij de AI-instellingen.", + "noProvider": "Geen provider beschikbaar", + "saving": "Opslaan…", + "saveFailed": "Die wijziging kon niet worden opgeslagen.", + "allSettings": "Alle AI-instellingen", + "providerNotActive": "{provider} kon het niet overnemen: er is geen werkende aanmelding of sleutel. Stel deze provider in bij de AI-instellingen.", + "operatorCodex": "ChatGPT (gedeeld door de serverbeheerder)", + "operatorManaged": "De beheerder van je server beheert deze verbinding. Zodra een van je eigen providers is ingesteld, antwoordt die als eerste." + }, + "answer": { + "scrollToBottom": "Naar het nieuwste bericht", + "rememberDone": "Onthouden", + "timeYesterday": "gisteren {time}", + "timeEarlier": "{date}, {time}", + "info": "Details van antwoord", + "infoModel": "Model: {model}" + }, + "activity": { + "thinking": "Nadenken…", + "fetching": "{domain} ophalen, {window}…", + "digestOne": "{count} meting samenvatten…", + "digestFew": "{count} metingen samenvatten…", + "digestOther": "{count} metingen samenvatten…", + "digestDoneOne": "{count} meting uit {areas}", + "digestDoneFew": "{count} metingen uit {areas}", + "digestDoneOther": "{count} metingen uit {areas}", + "areasOne": "{count} gebied", + "areasFew": "{count} gebieden", + "areasOther": "{count} gebieden", + "memoryOne": "Herinnert zich {count} ding dat je hebt verteld", + "memoryFew": "Herinnert zich {count} dingen die je hebt verteld", + "memoryOther": "Herinnert zich {count} dingen die je hebt verteld", + "remember": "Iets onthouden…", + "plan": "Plan opstellen…", + "asking": "Jou iets vragen…", + "answer": "Antwoord schrijven…", + "stop": { + "budget": "Budget bereikt, antwoordt met wat er is", + "time": "Tijdslimiet bereikt, antwoordt met wat er is", + "cap": "Veel stappen, wordt afgerond", + "noProgress": "Geen nieuwe gegevens, wordt afgerond" + }, + "thoughtProcessOne": "Denkproces ({count} stap)", + "thoughtProcessFew": "Denkproces ({count} stappen)", + "thoughtProcessOther": "Denkproces ({count} stappen)", + "awaitingAnswer": "Antwoord nodig" + }, + "memory": { + "saved": "Onthouden: {fact}", + "undo": "Ongedaan maken", + "accept": "Ja, onthoud het", + "decline": "Nee", + "confirmed": "Begrepen, ik onthoud het.", + "declined": "Oké, dan niet." + }, + "plan": { + "accept": "Dit plan volgen", + "decline": "Niet nu", + "confirmed": "Genoteerd. Over {days} dagen kom ik bij je terug.", + "declined": "Oké, niet nu." + }, + "assumption": { + "line": "Aangenomen: {value}", + "change": "Wijzigen" + }, + "suggestedReplies": { + "groupLabel": "Voorgestelde antwoorden" + }, + "chart": { + "compare": { + "periods": "{a} vs. {b}" + } + }, + "reasoning": { + "label": "Denkdiepte", + "hint": "Dieper nadenken betekent preciezere antwoorden en iets langer wachten.", + "off": "Uit", + "minimal": "Minimaal", + "low": "Laag", + "medium": "Gemiddeld", + "high": "Hoog", + "capped": "(beperkt door de beheerder)", + "disabled": "De beheerder heeft dieper nadenken uitgeschakeld." + }, + "memoryLink": "Geheugen ({count})", + "newConversation": "Nieuw gesprek" + }, + "relativeJustNow": "zo-even", + "relativeMinutesAgoOne": "{count} minuut geleden", + "relativeMinutesAgoOther": "{count} minuten geleden", + "relativeMinutesAgoFew": "{count} minuten geleden", + "relativeHoursAgoOne": "{count} uur geleden", + "relativeHoursAgoOther": "{count} uur geleden", + "relativeHoursAgoFew": "{count} uur geleden", + "relativeDaysAgoOne": "{count} dag geleden", + "relativeDaysAgoOther": "{count} dagen geleden", + "relativeDaysAgoFew": "{count} dagen geleden", + "navOverview": "Overzicht", + "navCatalog": "Alle meetwaarden", + "navBloodPressure": "Bloeddruk", + "navWeight": "Gewicht", + "navPulse": "Hartslag", + "navMood": "Stemming", + "navMedication": "Medicatie", + "navNutrients": "Voedingsstoffen", + "navBmi": "BMI", + "navSleep": "Slaap", + "navHrv": "HRV", + "navRestingHr": "Rusthartslag", + "navOxygenSaturation": "Zuurstof", + "navBodyTemperature": "Temperatuur", + "navSteps": "Stappen", + "navActiveEnergy": "Actieve energie", + "navAriaLabel": "Naar sectie springen", + "pillScrollLeft": "Tabbladen naar links scrollen", + "pillScrollRight": "Tabbladen naar rechts scrollen", + "tabStrip": { + "vitalsParent": { + "label": "Vitaal", + "header": "Vitale functies" + }, + "bodyParent": { + "label": "Lichaam", + "header": "Lichaamssamenstelling" + }, + "activityParent": { + "label": "Activiteit", + "header": "Activiteit en mobiliteit" + }, + "heartParent": { + "label": "Hart", + "header": "Hartgezondheid" + }, + "hearingParent": { + "label": "Gehoor", + "header": "Gehoor en geluidsblootstelling" + }, + "environmentParent": { + "label": "Omgeving", + "header": "Omgeving" + }, + "metabolicParent": { + "label": "Stofwisseling", + "header": "Stofwisseling" + } + }, + "hrv": { + "title": "HRV", + "description": "Hartslagvariabiliteit door de tijd: het herstelsignaal van je zenuwstelsel, tijdens de slaap gemeten door Apple Watch en andere compatibele wearables.", + "chartTitle": "Hartslagvariabiliteit", + "emptyState": { + "title": "Nog geen HRV-metingen", + "description": "HRV-metingen verschijnen hier zodra Apple Watch (of een compatibel Withings-apparaat) nachtelijke metingen begint te synchroniseren." + } + }, + "restingHr": { + "title": "Rusthartslag", + "description": "Het dagelijkse laagste niveau waarop je hart tot rust komt, los van de losse hartslagmetingen op de hartslagpagina. Apple Health levert één waarde per dag.", + "chartTitle": "Rusthartslag", + "emptyState": { + "title": "Nog geen rusthartslag", + "description": "De rusthartslag verschijnt zodra je een Apple Watch of compatibel Withings-apparaat een rustige dag lang hebt gedragen." + }, + "coachPrefill": "Ik heb nog geen rusthartslag vastgelegd. Waarom verschilt de dagelijkse rustwaarde van een losse hartslagmeting, en hoe kan ik die verbeteren?" + }, + "oxygenSaturation": { + "title": "Zuurstofverzadiging", + "description": "Bloedzuurstof (SpO₂): klinisch normaal is 95–100 %, met de streefzones gearceerd in de grafiek.", + "chartTitle": "Zuurstofverzadiging", + "emptyState": { + "title": "Nog geen SpO₂-metingen", + "description": "SpO₂-metingen verschijnen hier zodra een compatibele wearable (Apple Watch, Withings ScanWatch) een meting vastlegt." + } + }, + "bodyTemperature": { + "title": "Lichaamstemperatuur", + "description": "Trend van je kerntemperatuur in graden Celsius. Huidtemperatuurmetingen van Withings staan bij een aparte meetwaarde.", + "chartTitle": "Lichaamstemperatuur", + "emptyState": { + "title": "Nog geen lichaamstemperatuur", + "description": "Leg een temperatuurmeting vast of laat je wearable er een synchroniseren, dan verschijnt de trend hier.", + "cta": "Lichaamstemperatuur vastleggen" + } + }, + "steps": { + "title": "Stappen", + "description": "Dagelijks aantal stappen, één rij per dag, afkomstig uit Apple Health of een gekoppeld activiteitsapparaat.", + "chartTitle": "Stappen per dag", + "emptyState": { + "title": "Nog geen stappengegevens", + "description": "Dagtotalen van je stappen verschijnen hier zodra Apple Health of een activiteitsapparaat een volledige dag beweging synchroniseert." + } + }, + "activeEnergy": { + "title": "Actieve energie", + "description": "Dagtotaal aan actieve energie in kilocalorieën, één rij per dag, afkomstig uit Apple Health of Withings-activiteit.", + "chartTitle": "Actieve energie", + "emptyState": { + "title": "Nog geen gegevens over actieve energie", + "description": "Dagtotalen van actieve energie verschijnen hier zodra Apple Health of een Withings-activiteitsapparaat een volledige dag beweging synchroniseert." + } + }, + "subPage": { + "loadError": "Deze meetwaarde kan nu niet worden geladen.", + "blutdruckDescription": "Je systolische en diastolische trend met op je leeftijd afgestemde streefzones en een geschreven beoordeling.", + "gewichtDescription": "Je gewichtstrend afgezet tegen een gezond bereik op basis van je lengte, plus een geschreven beoordeling.", + "pulsDescription": "Je hartslag in rust afgezet tegen een referentieband op basis van leeftijd en geslacht uit populatiepercentielen van CDC/NCHS, plus een geschreven beoordeling.", + "stimmungDescription": "Dagelijkse stemmingsscores door de tijd met een geschreven beoordeling.", + "medikamenteDescription": "Therapietrouwkalenders per medicijn en een geschreven beoordeling.", + "bmiDescription": "BMI berekend uit je gewicht en lengte, met een geschreven beoordeling.", + "target": { + "adjustLink": "Streefbereik aanpassen" + }, + "explainer": { + "bloodPressureBody": "Bloeddruk is de kracht die je bloed uitoefent op de wanden van de slagaders, genoteerd als systolisch over diastolisch (de piek tijdens een hartslag over de rustwaarde tussen de slagen). Aanhoudend hoge waarden belasten op den duur je hart en bloedvaten.", + "pulseBody": "Je hartslag is het aantal keren dat je hart per minuut klopt. Een losse meting weerspiegelt wat je op dat moment aan het doen was. In rust ligt die meestal tussen 60–100 slagen per minuut, en hij stijgt vanzelf door beweging, stress of cafeïne.", + "weightBody": "Lichaamsgewicht is een van de eenvoudigste signalen van je energiebalans op lange termijn en je algehele gezondheid. De trend over weken is veel belangrijker dan een losse meting, die schommelt door vochtbalans, eten en tijdstip van de dag.", + "bmiBody": "BMI is je gewicht gedeeld door je lengte in het kwadraat. Dat levert één getal op dat je in een brede gewichtscategorie plaatst. Het is een screeningsmaat op bevolkingsniveau, geen diagnose, en maakt geen onderscheid tussen spieren en vet.", + "sleepBody": "Slaapduur is hoe lang je 's nachts daadwerkelijk hebt geslapen, verdeeld over lichte slaap, diepe slaap en REM-slaap. De meeste volwassenen hebben ongeveer zeven tot negen uur nodig; zowel een vaste hoeveelheid als goede kwaliteit ondersteunen herstel, stemming en stofwisseling.", + "moodBody": "Bij het bijhouden van je stemming leg je op een eenvoudige schaal vast hoe je je voelt. Door dit regelmatig te doen, zie je patronen (hoe slaap, activiteit of medicatie samenhangen met hoe je je voelt) die één dag nooit laat zien.", + "medicationsBody": "Therapietrouw is hoe consequent je je medicatie inneemt zoals voorgeschreven, hier weergegeven als het aandeel verwachte doses dat je daadwerkelijk hebt vastgelegd. Een regelmatige inname is vaak wat ervoor zorgt dat een behandeling werkt zoals bedoeld.", + "restingHrBody": "Rusthartslag is je hartslag wanneer je volledig in rust bent, meestal 's nachts gemeten, en verschilt van je hartslag tijdens activiteit. Een lagere rusthartslag wijst over het algemeen op een betere cardiovasculaire conditie, en een stijgende trend kan een vroeg teken zijn van stress of ziekte. Als algemene richtlijn ligt een normale rusthartslag bij volwassenen tussen 60–100 slagen per minuut (AHA 2024); een getraind hart kan zonder problemen op 40–60 liggen.", + "hrvBody": "HRV is de kleine variatie in tijd tussen opeenvolgende hartslagen. Een hogere variabiliteit weerspiegelt meestal een goed hersteld, flexibel zenuwstelsel, terwijl een aanhoudende daling kan wijzen op vermoeidheid, stress of onvoldoende herstel.", + "oxygenSaturationBody": "SpO₂ is het percentage van je rode bloedcellen dat zuurstof vervoert. Waarden van 95–100% zijn normaal in rust; waarden die onder 90% blijven, verdienen aandacht, al zijn korte dipjes 's nachts gebruikelijk.", + "bodyTemperatureBody": "Lichaamstemperatuur weerspiegelt de temperatuur van je lichaamskern. Als algemene richtlijn ligt het bevolkingsgemiddelde rond 36,6 °C (niet 37,0 °C), met een normaal orale bereik van ongeveer 35,7–37,4 °C en koorts vanaf 38,0 °C (J Gen Intern Med 2019). De temperatuur schommelt gedurende de dag met ongeveer 0,5 °C en verschilt per meetplek tot ~1 °C, dus geef aan waar je hebt gemeten. Nachtelijke metingen aan de pols volgen relatieve veranderingen, geen klinische koortswaarde.", + "activeEnergyBody": "Actieve energie zijn de calorieën die je verbrandt door te bewegen, bovenop wat je lichaam in rust verbruikt. Het is een directe maat voor hoe lichamelijk actief je dag was.", + "workoutsBody": "Trainingen zijn de gestructureerde sportsessies die je apparaten vastleggen, met soort, duur en energie. Door ze bij te houden zie je hoe regelmatig trainen zich over weken opbouwt en hoe het samenhangt met je andere gezondheidssignalen.", + "respiratoryRateBody": "Ademhalingsfrequentie is het aantal ademhalingen per minuut. Als algemene richtlijn ademen de meeste volwassenen in rust 12–20 keer per minuut (American Lung Association); de waarde is alleen zinvol in echte rust of tijdens de slaap. Een aanhoudende stijging van ongeveer +3 boven je eigen nachtelijke basiswaarde kan een vroeg signaal van ziekte zijn; klinische escalatiegrenzen zijn hulpmiddelen voor ziekenhuizen, geen alarmen voor jezelf.", + "bodyWaterBody": "Lichaamsvocht is het deel van je lichaamsgewicht dat uit vocht bestaat, in en rond je cellen. Het verschuift met vochtinname, eten en activiteit, dus de trend over weken zegt meer dan een losse meting.", + "boneMassBody": "Botmassa is het geschatte gewicht van de mineralen in je skelet. Schattingen van een weegschaal zijn bij benadering, maar een stabiele of stijgende trend ondersteunt sterke botten op lange termijn.", + "fatFreeMassBody": "Vetvrije massa is alles in je lichaam wat geen vet is: spieren, botten, organen en water. Als je die behoudt of opbouwt terwijl je afvalt, wijst dat meestal op een gezondere lichaamssamenstelling.", + "fatMassBody": "Vetmassa is het totale gewicht aan vet in je lichaam. Een deel van het vet is onmisbaar voor hormonen en energieopslag, maar te veel, vooral rond de buik, verhoogt het gezondheidsrisico op lange termijn (WHO 2024).", + "bodyFatBody": "Vetpercentage is het deel van je gewicht dat uit vet bestaat. Gezonde bereiken hangen af van geslacht en leeftijd, en weegschalen thuis schatten het via bio-impedantie, dus de trend over enkele weken zegt meer dan een losse meting.", + "muscleMassBody": "Spiermassa is het geschatte gewicht van de spieren in je lichaam. Meer spiermassa ondersteunt kracht, stofwisseling en mobiliteit, en het kost meestal actieve inspanning om die te behouden naarmate je ouder wordt.", + "visceralFatBody": "Visceraal vet is het vet dat diep in de buik rond je organen ligt opgeslagen. Anders dan vet onder de huid hangt een hoog niveau sterk samen met hart- en vaatziekten en diabetes type 2, dus lager is over het algemeen beter.", + "leanBodyMassBody": "Vetvrije lichaamsmassa is je totale gewicht min je lichaamsvet: spieren, botten, organen en water samen. Als je die naast je gewicht bijhoudt, zie je of veranderingen uit spieren of uit vet komen.", + "flightsClimbedBody": "Beklommen verdiepingen telt hoeveel verdiepingen je per dag omhoog gaat, waarbij één verdieping ongeveer drie meter hoogteverschil is. Het is een eenvoudige maat voor bijkomende activiteit en inspanning van je onderlichaam.", + "walkingDistanceBody": "Wandel- en hardloopafstand is de afstand die je per dag te voet aflegt. Het vult het aantal stappen aan doordat het laat zien hoe ver je bewoog, niet alleen hoe vaak je een stap zette.", + "walkingSteadinessBody": "Loopstabiliteit schat hoe stabiel en evenwichtig je looppatroon is, ingedeeld van OK tot laag. Een lager niveau wijst op een grotere kans op vallen en is het bespreken waard met een zorgverlener.", + "walkingHeartRateBody": "Hartslag tijdens wandelen is je gemiddelde hartslag tijdens een rustige wandeling. Een lagere wandelhartslag door de tijd weerspiegelt vaak een betere cardiovasculaire conditie bij dezelfde inspanning.", + "walkingAsymmetryBody": "Loopasymmetrie is het deel van de tijd dat je stappen ongelijk zijn tussen je linker- en rechterbeen. Een hoger percentage kan wijzen op pijn, een blessure of een loopprobleem dat het onderzoeken waard is.", + "doubleSupportTimeBody": "Dubbele steuntijd is het deel van elke loopcyclus waarin beide voeten tegelijk de grond raken. Een hoger percentage betekent meestal een voorzichtiger, minder stabiel looppatroon.", + "stepLengthBody": "Staplengte is de gemiddelde afstand van de ene voetstap naar de volgende. Een kortere stap door de tijd kan wijzen op vermoeidheid, voorzichtigheid of een verandering in mobiliteit.", + "walkingSpeedBody": "Loopsnelheid is hoe snel je je verplaatst tijdens een wandeling op vlak terrein. Het is een goed onderzochte maat voor je algehele gezondheid en mobiliteit, en een stabiel of stijgend tempo is een goed teken.", + "pulseWaveVelocityBody": "Polsgolfsnelheid meet hoe snel de drukgolf van elke hartslag zich door je slagaders verplaatst. Een snellere golf wijst op stijvere slagaders, wat samenhangt met een hoger cardiovasculair risico. Als algemene richtlijn markeert de Europese klinische referentie een carotis-femorale snelheid boven 10 m/s (ESC/ESH 2018), maar een schatting van een consumentenapparaat is een benadering en niet uitwisselbaar met die klinische meting.", + "vascularAgeBody": "Vaatleeftijd schat hoe oud je slagaders zich gedragen vergeleken met je werkelijke leeftijd, op basis van de stijfheid van de slagaders. Een vaatleeftijd onder je werkelijke leeftijd wijst op gezondere bloedvaten.", + "environmentalAudioBody": "Omgevingsgeluidsniveaus geven in decibel aan hoe luid je omgeving is. Langdurige blootstelling boven ongeveer 70 dB kan op den duur je gehoor beschadigen, dus lagere daggemiddelden zijn veiliger.", + "headphoneAudioBody": "Geluidsniveaus van je koptelefoon geven in decibel aan hoe hard je luistert via oordopjes of een koptelefoon. Het volume laag houden en pauzes nemen beschermt je gehoor op lange termijn.", + "audioEventsBody": "Momenten met hard geluid markeren wanneer het geluid om je heen een niveau bereikte dat bij voldoende blootstelling je gehoor kan beschadigen. Komen ze vaak voor, zoek dan een rustigere omgeving op of gebruik gehoorbescherming.", + "daylightBody": "Tijd in daglicht is hoe lang je per dag in het licht buiten doorbrengt. Regelmatig daglicht ondersteunt een gezond slaap-waakritme en je stemming (CDC 2024), en tijd buiten wordt in verband gebracht met gezonde ogen.", + "bloodGlucoseBody": "Bloedglucose is de hoeveelheid suiker in je bloed, de belangrijkste energiebron van het lichaam. Het stijgt na het eten en daalt weer tussen de maaltijden. Als algemene richtlijn voor volwassenen zonder diabetes is een nuchtere waarde onder {prediabetesFrom} {unit} normaal, {prediabetesFrom}–{prediabetesTo} is prediabetes, en {diabetesFrom} of hoger valt in het diabetesbereik (ADA 2024). Eén hoge meting is geen diagnose; een zorgverlener bevestigt dit met een herhaalde test, en mensen die diabetes behandelen, gebruiken andere streefwaarden die een zorgverlener vaststelt.", + "skinTemperatureBody": "Huidtemperatuur is hier de kleine nachtelijke afwijking van je polstemperatuur ten opzichte van je eigen basiswaarde, geen absolute koortsmeting. Verschuivingen kunnen samenhangen met slaap, omgeving, ziekte of de fase van je menstruatiecyclus.", + "cardioFitnessBody": "VO₂ max is hoeveel zuurstof je lichaam bij maximale inspanning kan gebruiken, de beste laboratoriummaat voor aerobe conditie, die wearables indirect schatten. Een hogere of stijgende trend is een sterk teken van cardiovasculaire gezondheid.", + "cardioRecoveryBody": "Cardioherstel is met hoeveel slagen per minuut je hartslag daalt in de eerste minuut nadat je stopt met zware inspanning. Een grotere daling betekent dat je hart sneller tot rust komt, wat een teken is van een goede conditie.", + "wristTemperatureBody": "Polstemperatuur wordt gemeten terwijl je slaapt en weergegeven als het verschil met je persoonlijke basiswaarde, niet als absolute waarde. Een stabiele waarde is normaal, terwijl een aanhoudende stijging kan wijzen op ziekte, intensieve training of een verandering in je menstruatiecyclus.", + "fallsBody": "Dit telt de harde valpartijen die je wearable detecteert. Nul is het doel; een stijgend aantal is een signaal van mobiliteitsrisico dat het bespreken waard is met een zorgverlener, vooral voor ouderen (CDC STEADI 2024).", + "sixMinuteWalkBody": "Dit is een schatting van hoe ver je in zes minuten zou kunnen lopen, een al lang gebruikte klinische test voor mobiliteit en uithoudingsvermogen van hart en longen. Het getal van de wearable is een benadering, niet de klinische test onder begeleiding; een stabiele of stijgende trend is wat je eruit kunt afleiden.", + "stairAscentSpeedBody": "Dit is hoe snel je een trap op loopt. Het is een gevoelige maat voor beenkracht en mobiliteit. Een stabiel of stijgend tempo is een goed teken, en een dalend tempo is het in de gaten houden waard.", + "stairDescentSpeedBody": "Dit is hoe snel je een trap af loopt. Samen met de snelheid omhoog volgt het de controle over je benen en je evenwicht. Een stabiel tempo is een goed teken, en een dalend tempo is het in de gaten houden waard.", + "breathingDisturbancesBody": "Een wearable kan schatten hoe vaak je ademhaling tijdens de slaap werd onderbroken. Een lagere index is beter; een niveau dat als verhoogd wordt aangemerkt, vooral over veel nachten, is het bespreken waard met een zorgverlener. Het is een screeningsbenadering, geen diagnose van slaapapneu.", + "stepsBody": "Het aantal stappen is het totaal aantal stappen dat je per dag zet, de eenvoudigste maat voor dagelijkse beweging. Een vaste gewoonte is belangrijker dan één uitschieter, en het ronde doel van 10.000 stappen is een marketingslogan, geen onderzoeksresultaat.", + "readinessBody": "Paraatheid is een dagelijkse inschatting van hoe goed je lichaam voorbereid is op de dag, op basis van rusthartslag, hartslagvariabiliteit en slaap. Het is een benadering van een apparaat, afgezet tegen je eigen basiswaarde, geen klinische maat. Een hogere score betekent hersteld, een lagere is een zachte hint om het rustiger aan te doen.", + "sleepScoreBody": "Je slaapscore vat een hele nacht samen in één getal: duur, efficiëntie, regelmaat en de verhouding tussen lichte slaap, diepe slaap en REM-slaap. Let op het patroon over weken in plaats van te jagen op een perfecte score voor één nacht.", + "recoveryBody": "Herstel weerspiegelt hoe goed je lichaam is bijgekomen, op basis van nachtelijke signalen zoals hartslagvariabiliteit en rusthartslag. Het is een door een apparaat afgeleide benadering, afgezet tegen je eigen basiswaarde, geen klinische maat, en niet vergelijkbaar tussen apparaten. Een sterke score is groen licht om door te zetten; een lagere score geeft aan dat je lichaam nog aan het herstellen is.", + "strainBody": "Belasting geeft aan hoeveel cardiovasculaire en lichamelijke belasting je je lichaam hebt opgelegd, van trainingen tot een actieve dag op de been. Het is een door een apparaat afgeleide index, beoordeeld ten opzichte van je eigen gebruikelijke inspanning, geen klinische maat, en het hoofdgetal is niet vergelijkbaar tussen apparaten.", + "stressBody": "Stress is hier een heuristiek van je apparaat, afgeleid van patronen in de hartslagvariabiliteit. Het is geen cortisolmeting, geen weergave van hoe je je bewust voelt en geen klinische stressscore. Vergelijk het met je eigen basislijn; het is niet vergelijkbaar tussen apparaten. Een lagere score wijst op een kalme, goed gereguleerde toestand; een hogere is een uitnodiging om herstel in te bouwen.", + "recoveryPageBody": "Herstel brengt de nachtelijke signalen samen die je wearable registreert (opladen, inspanning, belasting en de dagtotalen van je hartslag en energie) om te laten zien hoe goed je lichaam zich heeft hersteld. Kijk naar het patroon over meerdere dagen in plaats van naar één getal; een minder gunstige meting is een uitnodiging om het rustiger aan te doen, geen alarmsignaal.", + "pulsePressureBody": "De polsdruk is het verschil tussen je systolische en diastolische meting (systolisch min diastolisch). Als algemene richtlijn is ongeveer 40 mmHg gebruikelijk in rust; een groot verschil van meer dan ongeveer 60 mmHg op middelbare leeftijd kan wijzen op stijver wordende slagaders, terwijl een klein verschil van minder dan ongeveer 25 mmHg kan samengaan met een laag slagvolume (StatPearls/NIH 2023). Het is een aanleiding voor een gesprek, geen diagnose.", + "meanArterialPressureBody": "De gemiddelde arteriële druk is de gemiddelde druk die je organen tijdens een hartslag ervaren, ongeveer de diastolische druk plus een derde van het verschil met de systolische. Als algemene richtlijn ligt een waarde in rust rond 70–100 mmHg (StatPearls/NIH 2023). De vaak genoemde ondergrens van ~60 mmHg is een begrip uit de acute zorg, geen alarmgrens voor zelfmeting.", + "cycleEducationBody": "Je cyclus doorloopt vier fasen die worden aangestuurd door wisselende hormonen, en de lengte en regelmaat ervan geven een toegankelijk beeld van je algehele gezondheid. Als algemene richtlijn duurt een cyclus bij volwassenen doorgaans 21–35 dagen (klinische bronnen noemen 24–38), met ongeveer vijf dagen bloedverlies (ACOG 2015). De luteale fase is het stabiele ankerpunt, dus de ovulatie schat je het best door terug te tellen vanaf je volgende verwachte menstruatie, nooit als een vaste 'dag 14'. Een voorspelde vruchtbare periode is een schatting die meerdere geregistreerde cycli nodig heeft en altijd bij benadering blijft, en de basale lichaamstemperatuur bevestigt de ovulatie achteraf in plaats van die te voorspellen. Dit is geen anticonceptiemethode.", + "sleepHygieneBody": "Een paar wetenschappelijk onderbouwde gewoonten ondersteunen je slaap: ga op vaste tijden naar bed en sta op vaste tijden op, ook in het weekend, zorg 's ochtends voor fel daglicht en dim 's avonds het licht, houd de slaapkamer koel, donker en stil, en vermijd cafeïne in de middag, alcohol laat op de avond en grote late maaltijden (CDC 2024). Regelmaat voorspelt je gezondheid minstens zo sterk als slaapduur, en de totale slaaptijd van een wearable is veel betrouwbaarder dan de verdeling in diepe, lichte en REM-slaap." + }, + "bpDerived": { + "pulsePressure": "De polsdruk (het verschil tussen je meetwaarden) is ongeveer {value} mmHg; in rust is ongeveer 40 gebruikelijk.", + "meanArterialPressure": "De gemiddelde arteriële druk (het gemiddelde dat je organen ervaren) is ongeveer {value} mmHg, normaal rond 70–100.", + "caveat": "Deze waarden zijn afgeleid van je laatste meting en dienen als algemene richtlijn, niet als diagnose." + }, + "stats": { + "label": "Samenvattende statistieken", + "min": "Min", + "max": "Max", + "median": "Mediaan", + "mean": "Gemiddelde" + }, + "showAllValues": "Alle metingen tonen", + "valuesPageTitle": "{metric}: alle metingen", + "valuesPageDescription": "Alle metingen achter deze waarde. Bewerk of verwijder een registratie direct.", + "diversity": { + "trigger": "Meettip", + "weekday": "De meeste metingen van {metric} vallen op één weekdag. Als je ook op andere dagen meet, krijg je een vollediger beeld.", + "timeOfDay": "De meeste metingen van {metric} vallen op een vergelijkbaar tijdstip van de dag. Als je op wisselende tijden meet, krijg je een vollediger beeld." + }, + "valuesBack": "Terug naar inzichten", + "valuesBackToMetric": "Terug naar {metric}", + "scoresBack": "Terug naar inzichten", + "ecgDescription": "Eenkanaals-ECG-opnamen van je apparaat, elk met de eigen uitslag van het apparaat." + }, + "units": { + "steps": "stappen", + "flights": "trappen", + "falls": "valpartijen", + "years": "jaar", + "breathingEvents": "gebeurtenissen", + "respiratoryRate": "ademhalingen/min" + }, + "sleep": { + "title": "Slaap", + "description": "Verdeling over slaapfasen en duur per nacht, afkomstig uit Apple Health.", + "mainSleep": "Hoofdslaap", + "totalSleep": "Totale slaap", + "compositionTitle": "Samenstelling slaapfasen", + "compositionSubtitle": "Afgelopen {nights} nachten", + "compositionAriaLabel": "Samenstelling van slaapfasen over {nights} nachten", + "sourceDiscrepancy": { + "tooltipTitle": "Bronnen spreken elkaar tegen" + }, + "stages": { + "deep": "Diep", + "rem": "REM", + "core": "Kern", + "asleep": "In slaap", + "awake": "Wakker", + "inBed": "In bed", + "nap": "Dutje", + "napCount": "{count} dutjes", + "unavailable": "Nog geen gegevens over slaapfasen. Slaapfasen verschijnen hier zodra een gekoppelde bron ze aanlevert." + }, + "empty": { + "title": "Nog geen slaapgegevens", + "description": "Koppel een bron zoals Apple Health of een wearable, of leg je slaap handmatig vast, dan wordt deze weergave automatisch gevuld.", + "action": "Apparaten beheren" + }, + "debt": { + "title": "Slaaptekort", + "value": "{hours} u {minutes} min tekort", + "caption": "Openstaand saldo over de afgelopen {nights} nachten", + "clearValue": "Helemaal ingehaald", + "clearCaption": "Niets openstaand over de afgelopen {nights} nachten", + "learning": "Je slaap wordt nog in kaart gebracht: tot nu toe {counted} nachten, nog {remaining} nodig voor een betrouwbaar saldo.", + "computedInfo": "Dit is een eigen schatting van HealthLog: een doorlopend saldo van slaapbehoefte min slaap over de afgelopen nachten, waarbij inhaalslaap het tekort verkleint. Het kan afwijken van het slaaptekort dat een wearable zelf weergeeft, omdat die een eigen model voor slaapbehoefte gebruikt." + }, + "average": { + "title": "Gemiddeld per nacht", + "value": "{hours} u {minutes} min", + "caption": "Gemiddelde slaap over de afgelopen {nights} nachten", + "learning": "Je slaap wordt nog in kaart gebracht: tot nu toe {counted} nachten, nog {remaining} nodig voor een betrouwbaar gemiddelde." + }, + "chronotype": { + "title": "Chronotype", + "learning": "Je ritme wordt nog in kaart gebracht: {counted} van {total} vrije nachten. Een chronotype heeft een paar ochtenden zonder wekker nodig voordat het iets zegt.", + "advancedToggle": "Geavanceerd", + "socialJetlagValue": "{hours} u {minutes} min sociale jetlag", + "socialJetlagCaption": "Het verschil tussen je slaaptijden op werkdagen en vrije dagen, als een kleine wekelijkse verschuiving van tijdzone.", + "msfScValue": "Gecorrigeerd slaapmidden {clock}", + "msfScCaption": "Gecorrigeerd voor de slaap die je in het weekend inhaalt (MSFsc).", + "dayTypeNote": "Vrije dagen worden voorlopig als weekenddagen beschouwd, totdat het bijhouden van het type dag wordt toegevoegd.", + "band": { + "extreme_early": "Uitgesproken ochtendtype", + "early": "Ochtendtype", + "intermediate": "Tussentype", + "late": "Avondtype", + "extreme_late": "Uitgesproken avondtype" + }, + "midpointHeadline": "Je natuurlijke slaapmidden ligt rond {clock}." + }, + "rhythm": { + "loadError": "Je slaapritme kon zo-even niet worden geladen. Het verschijnt weer zodra de verbinding stabiel is." + } + }, + "medicationCompliance": "Therapietrouw", + "dayStreak": "Reeks van {count} dagen", + "dayStreakOne": "Reeks van {count} dag", + "compliance7d": "Therapietrouw (7 dagen)", + "compliance30d": "Therapietrouw (30 dagen)", + "taken": "ingenomen", + "skipped": "overgeslagen", + "missed": "gemist", + "assessmentTitle": "Beoordeling", + "restMode": { + "title": "Rustmodus", + "body": "Er is een ziekte- of aandoeningsepisode actief, dus dit weerspiegelt een herstelperiode. Je score wordt hierdoor niet verlaagd.", + "bodySince": "Er is sinds {since} een ziekte- of aandoeningsepisode actief, dus dit weerspiegelt een herstelperiode. Je score wordt hierdoor niet verlaagd." + }, + "bloodPressureSectionTitle": "Bloeddruk", + "weightSectionTitle": "Gewicht", + "pulseSectionTitle": "Hartslag", + "bmiSectionTitle": "BMI", + "complianceNoData": "Geen gegevens over therapietrouw beschikbaar.", + "generate": "Nieuwe analyse genereren", + "moodSectionTitle": "Stemming", + "emptyState": { + "bloodPressure": { + "title": "Nog geen bloeddrukmetingen", + "description": "Leg een bloeddrukmeting vast, dan verschijnen hier de trendgrafiek, het aandeel binnen het bereik en de WHO-classificatie.", + "cta": "Bloeddruk vastleggen" + }, + "weight": { + "title": "Nog geen gewichtsmetingen", + "description": "Leg je gewicht vast, dan verschijnen de trend, het voortschrijdend gemiddelde en de doelzone automatisch.", + "cta": "Gewicht vastleggen" + }, + "pulse": { + "title": "Nog geen hartslagmetingen", + "description": "Leg een hartslagmeting vast, dan verschijnen rusthartslag, HRV en VO₂max in deze weergave.", + "cta": "Hartslag vastleggen" + }, + "bmi": { + "title": "BMI nog niet berekend", + "description": "Zodra je lengte en minstens één gewichtsmeting bekend zijn, verschijnt hier de BMI-trend met de WHO-zones.", + "cta": "Gewicht vastleggen" + }, + "mood": { + "title": "Nog geen stemmingsregistraties", + "description": "Leg je stemming vast, dan verschijnen de trend, de stabiliteitszone en de correlaties.", + "cta": "Stemming vastleggen" + }, + "medication": { + "title": "Nog geen medicatie ingesteld", + "description": "Stel een medicijn in, dan verschijnen hier therapietrouw, geneesmiddelspiegel en titratietijdlijn.", + "cta": "Medicatie toevoegen" + }, + "sleep": { + "title": "Nog geen slaapregistraties", + "description": "Zodra er slaapgegevens binnenkomen (handmatig of via Withings / Apple Health), verschijnt hier de verdeling over slaapfasen per nacht.", + "cta": "Bron koppelen" + } + }, + "navWorkouts": "Workouts", + "navRecovery": "Herstel", + "workouts": { + "title": "Workouts", + "description": "Recente hardloop-, fiets-, wandel- en krachttrainingen, ontdubbeld over bronnen van Apple Watch en Withings.", + "emptyState": { + "title": "Nog geen workouts", + "description": "Workouts worden gesynchroniseerd vanuit Apple Health op je iPhone en vanuit Withings. Je kunt er ook zelf een vastleggen." + }, + "detail": { + "backToList": "Terug naar workouts", + "statsTitle": "Statistieken", + "statsDuration": "Duur", + "statsDistance": "Afstand", + "statsActiveEnergy": "Actieve energie", + "statsAvgHr": "Gem. hartslag", + "statsMaxHr": "Max. hartslag", + "statsMinHr": "Min. hartslag", + "statsStepCount": "Stappen", + "statsElevation": "Hoogteverschil", + "statsPace": "Tempo", + "routeTitle": "Route", + "hrChartTitle": "Hartslag", + "notFound": "Workout niet gevonden.", + "hrFromPulse": "Uit je hartslaggegevens rond deze sessie", + "hrAxisMinutes": "min", + "hrAvgMarker": "Gem. {bpm}", + "hrMaxMarker": "Piek {bpm}", + "hrRangeValue": "{low} tot {high} bpm", + "hrRangeLabel": "Bereik", + "hrNoProfile": "Er zijn geen gedetailleerde hartslagmetingen voor deze sessie.", + "sportAverageLabel": "Je recente gemiddelde:", + "zonesTitle": "Inspanningszones", + "zonesCaption": "Hoe je inspanning verdeeld was over de hartslagzones.", + "zonesCaptionDevice": "Tijd per zone zoals gerapporteerd door je apparaat.", + "exportGpx": "GPX exporteren", + "elevationTitle": "Hoogteprofiel", + "splitsTitle": "Tussentijden", + "splitsKm": "km", + "splitsTime": "Tijd", + "splitsPace": "Tempo", + "thatDayTitle": "Die dag", + "daySleepTitle": "De nacht ervoor", + "daySleepNone": "Geen slaap geregistreerd voor die nacht", + "daySleepAwakeningsOne": "{count} keer wakker geworden", + "daySleepAwakeningsMany": "{count} keer wakker geworden", + "dayMoodTitle": "Stemming die dag", + "dayMoodNone": "Geen stemming vastgelegd op die dag", + "sleepTrendsLink": "Slaaptrends", + "moodHistoryLink": "Stemmingsgeschiedenis", + "previousSessionLink": "Vorige sessie", + "insightTitle": "Activiteitsinzicht" + }, + "sport": { + "walking": "Wandelen", + "running": "Hardlopen", + "cycling": "Fietsen", + "hiking": "Hiken", + "swimming": "Zwemmen", + "rowing": "Roeien", + "elliptical": "Crosstrainer", + "stairClimber": "Traploper", + "yoga": "Yoga", + "mindAndBody": "Lichaam en geest", + "strength": "Krachttraining", + "hiit": "HIIT", + "dance": "Dansen", + "golf": "Golf", + "badminton": "Badminton", + "tennis": "Tennis", + "basketball": "Basketbal", + "soccer": "Voetbal", + "crossTraining": "Crosstraining", + "mixedCardio": "Gemengde cardio", + "other": "Overig" + }, + "loadError": "Je workouts konden niet worden geladen", + "loadMore": "Meer workouts laden", + "loadingMore": "Meer workouts worden geladen", + "loadMoreError": "Meer workouts konden niet worden geladen", + "countOne": "{count} workout", + "countOther": "{count} workouts", + "countFew": "{count} workouts", + "filterLabel": "Filteren op sport", + "filterAll": "Alle sporten", + "filterEmpty": "Geen sessies van deze sport in je geschiedenis.", + "manual": { + "logWorkout": "Workout vastleggen", + "sheetTitle": "Workout vastleggen", + "sheetDescription": "Voer een sessie handmatig in: wat je hebt gedaan, wanneer en hoelang.", + "sportLabel": "Activiteit", + "sportPlaceholder": "Kies een activiteit", + "startLabel": "Begin", + "startHint": "Laat dit leeg als je net klaar bent: dan wordt vanaf nu met de duur teruggerekend.", + "durationLabel": "Duur", + "distanceLabel": "Afstand ({unit})", + "energyLabel": "Actieve energie (kcal)", + "alreadySaved": "Deze workout is al opgeslagen", + "saveError": "De workout kon niet worden opgeslagen", + "deleteLabel": "Workout verwijderen", + "deleteConfirmTitle": "Deze workout verwijderen?", + "deleteConfirmDescription": "Deze workout die je handmatig hebt ingevoerd, wordt definitief verwijderd.", + "deleted": "Workout verwijderd", + "deleteError": "De workout kon niet worden verwijderd", + "errors": { + "sportRequired": "Kies een activiteit.", + "startRequired": "Voer een datum en tijd in.", + "startInFuture": "Het begin kan niet in de toekomst liggen.", + "durationRequired": "Voer in hoelang de workout duurde.", + "durationInvalid": "Voer hele uren in, en minuten van 0 tot 59.", + "durationTooLong": "Een workout kan maximaal 24 uur duren.", + "endInFuture": "Dan zou de workout in de toekomst eindigen. Stel het begin in op het moment dat de workout begon.", + "distanceInvalid": "Voer de afstand in als getal binnen een realistisch bereik.", + "energyInvalid": "Voer de actieve energie in als getal van maximaal 20.000 kcal." + }, + "editTitle": "Workout bewerken", + "editAction": "Bewerken", + "updated": "Workout bijgewerkt" + } + }, + "bloodGlucose": { + "title": "Bloedglucose", + "description": "Je bloedglucosemetingen in de loop van de tijd, in {unit}.", + "chartTitle": "Bloedglucose", + "medianLabel": "Mediane glucose", + "emptyState": { + "title": "Nog geen glucosegegevens", + "description": "Bloedglucosemetingen verschijnen hier zodra je er een vastlegt of een gekoppeld apparaat synchroniseert." + }, + "clinical": { + "title": "Glucoseoverzicht", + "subtitle": "Een beeld van je afgelopen {days} dagen, op basis van {count} metingen.", + "spotCaveat": "Dit zijn schattingen op basis van losse metingen, geen profiel van een continue glucosemeter. Zie ze als een richting en niet als een klinisch oordeel.", + "labsLink": "Labuitslagen? Leg een HbA1c of nuchtere glucose uit een bloedafname vast onder Labuitslagen.", + "learningTitle": "Je glucose wordt nog in kaart gebracht", + "learningBody": "Tot nu toe zijn dat {count} in {days}. Met wat meer geschiedenis wordt het beeld vollediger. Blijf vastleggen, of laat een gekoppeld apparaat het aanvullen.", + "learningBodyEmpty": "Zodra er een handvol metingen binnenkomt (door jou vastgelegd of gesynchroniseerd vanaf een apparaat), krijgen je tijd binnen bereik, gemiddelde en variabiliteit hier vorm.", + "readingsCount": "{count} metingen", + "readingsCountOne": "1 meting", + "daysCount": "{days} dagen", + "daysCountOne": "1 dag", + "tir": { + "title": "Tijd binnen bereik", + "caption": "Aandeel metingen per zone ({low}–{high} {unit} is het doel).", + "veryLow": "Zeer laag", + "low": "Laag", + "inRange": "Binnen bereik", + "high": "Hoog", + "veryHigh": "Zeer hoog", + "ariaLabel": "Tijd binnen bereik: {tir}% binnen het doel, {below}% eronder, {above}% erboven.", + "empty": "Nog geen metingen om weer te geven." + }, + "gmi": { + "label": "Glucose Management Indicator (GMI)", + "help": "Een HbA1c-achtige schatting, afgeleid van je gemiddelde glucose." + }, + "eA1c": { + "label": "Geschatte HbA1c", + "help": "Een schatting van de HbA1c op basis van je gemiddelde glucose (ADAG)." + }, + "mean": { + "label": "Gemiddelde glucose" + }, + "cv": { + "label": "Variabiliteit", + "steady": "Stabiel", + "unstable": "Instabiel", + "help": "Variatiecoëfficiënt. Vanaf 36% geldt de glucose als instabiel; lager is stabieler." + }, + "advanced": { + "toggle": "Geavanceerde indices", + "intro": "Samengestelde maten op onderzoeksniveau voor een nadere blik. Elk ervan vat je metingen samen in één risicogewogen getal.", + "jIndex": { + "label": "J-index", + "help": "Eén score die je gemiddelde en de spreiding ervan combineert; lager wijst op een strakkere regulatie." + }, + "lbgi": { + "label": "Risico op lage glucose (LBGI)", + "help": "Index van Kovatchev die weegt hoe vaak en hoe diep metingen te laag uitvallen." + }, + "hbgi": { + "label": "Risico op hoge glucose (HBGI)", + "help": "Index van Kovatchev die weegt hoe vaak en hoe hoog metingen oplopen." + }, + "byContext": { + "title": "Per context", + "fasting": "Nuchter", + "postprandial": "Na maaltijden", + "random": "Willekeurig", + "bedtime": "Voor het slapengaan", + "unspecified": "Zonder tag", + "readingsShort": "{count} metingen", + "readingsShortOne": "1 meting" + } + } + } + }, + "navBloodGlucose": "Glucose", + "totalBodyWater": { + "title": "Totaal lichaamswater", + "description": "Je totale lichaamswater in de loop van de tijd, in kilogram.", + "chartTitle": "Totaal lichaamswater", + "emptyState": { + "title": "Nog geen gegevens over lichaamswater", + "description": "Metingen van lichaamswater verschijnen hier zodra een gekoppelde lichaamssamenstellingsweegschaal synchroniseert." + } + }, + "navTotalBodyWater": "Lichaamswater", + "boneMass": { + "title": "Botmassa", + "description": "Je botmassa in de loop van de tijd, in kilogram.", + "chartTitle": "Botmassa", + "emptyState": { + "title": "Nog geen gegevens over botmassa", + "description": "Metingen van botmassa verschijnen hier zodra een gekoppelde lichaamssamenstellingsweegschaal synchroniseert." + } + }, + "navBoneMass": "Botmassa", + "flightsClimbed": { + "title": "Gelopen trappen", + "description": "Het aantal trappen dat je per dag hebt beklommen.", + "chartTitle": "Gelopen trappen per dag", + "emptyState": { + "title": "Nog geen gegevens over trappen", + "description": "Dagtotalen van gelopen trappen verschijnen hier zodra Apple Health de beweging van een dag synchroniseert." + } + }, + "navFlightsClimbed": "Trappen", + "walkingRunningDistance": { + "title": "Afstand wandelen + hardlopen", + "description": "De afstand die je per dag wandelend en hardlopend hebt afgelegd, in kilometer.", + "chartTitle": "Afstand per dag", + "emptyState": { + "title": "Nog geen afstandsgegevens", + "description": "De dagelijkse afstand verschijnt hier zodra Apple Health de beweging van een dag synchroniseert." + } + }, + "navWalkingRunningDistance": "Afstand", + "fatFreeMass": { + "title": "Vetvrije massa", + "description": "Je vetvrije massa in de loop van de tijd, in kilogram.", + "chartTitle": "Vetvrije massa", + "emptyState": { + "title": "Nog geen gegevens over vetvrije massa", + "description": "Metingen van vetvrije massa verschijnen hier zodra een gekoppelde lichaamssamenstellingsweegschaal synchroniseert." + } + }, + "navFatFreeMass": "Vetvrije massa", + "fatMass": { + "title": "Vetmassa", + "description": "Je vetmassa in de loop van de tijd, in kilogram.", + "chartTitle": "Vetmassa", + "emptyState": { + "title": "Nog geen gegevens over vetmassa", + "description": "Metingen van vetmassa verschijnen hier zodra een gekoppelde lichaamssamenstellingsweegschaal synchroniseert." + } + }, + "bodyFat": { + "title": "Vetpercentage", + "description": "Je vetpercentage in de loop van de tijd.", + "chartTitle": "Vetpercentage", + "emptyState": { + "title": "Nog geen gegevens over vetpercentage", + "description": "Metingen van je vetpercentage verschijnen hier zodra een lichaamssamenstellingsweegschaal synchroniseert, of wanneer je er zelf een vastlegt.", + "cta": "Vetpercentage vastleggen" + } + }, + "navFatMass": "Vetmassa", + "navBodyFat": "Vetpercentage", + "muscleMass": { + "title": "Spiermassa", + "description": "Je spiermassa in de loop van de tijd, in kilogram.", + "chartTitle": "Spiermassa", + "emptyState": { + "title": "Nog geen gegevens over spiermassa", + "description": "Metingen van spiermassa verschijnen hier zodra een gekoppelde lichaamssamenstellingsweegschaal synchroniseert." + } + }, + "navMuscleMass": "Spiermassa", + "skinTemperature": { + "title": "Huidtemperatuur", + "description": "De huidtemperatuur van je pols in de loop van de tijd, in graden Celsius.", + "chartTitle": "Huidtemperatuur", + "emptyState": { + "title": "Nog geen gegevens over huidtemperatuur", + "description": "Metingen van de huidtemperatuur verschijnen hier zodra een wearable de nachtelijke polstemperatuur synchroniseert." + } + }, + "navSkinTemperature": "Huidtemp.", + "pulseWaveVelocity": { + "title": "Polsgolfsnelheid", + "description": "Je arteriële polsgolfsnelheid in de loop van de tijd, in m/s. Hogere waarden wijzen op stijvere slagaders.", + "chartTitle": "Polsgolfsnelheid", + "emptyState": { + "title": "Nog geen gegevens over polsgolfsnelheid", + "description": "Metingen van de polsgolfsnelheid verschijnen hier zodra een compatibel Withings-apparaat synchroniseert." + } + }, + "navPulseWaveVelocity": "Polsgolfsnelheid", + "vascularAge": { + "title": "Vaatleeftijd", + "description": "Je geschatte vaatleeftijd in de loop van de tijd, in jaren.", + "chartTitle": "Vaatleeftijd", + "emptyState": { + "title": "Nog geen gegevens over vaatleeftijd", + "description": "Schattingen van je vaatleeftijd verschijnen hier zodra een compatibel Withings-apparaat synchroniseert." + } + }, + "navVascularAge": "Vaatleeftijd", + "visceralFat": { + "title": "Visceraal vet", + "description": "Je score voor visceraal vet in de loop van de tijd.", + "chartTitle": "Visceraal vet", + "emptyState": { + "title": "Nog geen gegevens over visceraal vet", + "description": "Scores voor visceraal vet verschijnen hier zodra een compatibele lichaamssamenstellingsweegschaal synchroniseert." + } + }, + "navVisceralFat": "Visceraal vet", + "audioExposureEnv": { + "title": "Omgevingsgeluid", + "description": "Je gemiddelde dagelijkse blootstelling aan omgevingsgeluid, in dBA.", + "chartTitle": "Blootstelling aan omgevingsgeluid", + "emptyState": { + "title": "Nog geen gegevens over omgevingsgeluid", + "description": "Geluidsniveaus uit je omgeving verschijnen hier zodra Apple Health synchroniseert." + } + }, + "navAudioExposureEnv": "Omgevingsgeluid", + "audioExposureHeadphone": { + "title": "Koptelefoongeluid", + "description": "Je gemiddelde dagelijkse blootstelling aan koptelefoongeluid, in dBA.", + "chartTitle": "Blootstelling aan koptelefoongeluid", + "emptyState": { + "title": "Nog geen gegevens over koptelefoongeluid", + "description": "Geluidsniveaus van je koptelefoon verschijnen hier zodra Apple Health synchroniseert." + } + }, + "navAudioExposureHeadphone": "Koptelefoongeluid", + "timeInDaylight": { + "title": "Tijd in daglicht", + "description": "Het aantal minuten dat je per dag in daglicht doorbrengt.", + "chartTitle": "Tijd in daglicht per dag", + "emptyState": { + "title": "Nog geen daglichtgegevens", + "description": "Dagtotalen van daglicht verschijnen hier zodra Apple Health de blootstelling van een dag synchroniseert." + } + }, + "navTimeInDaylight": "Daglicht", + "walkingSteadiness": { + "title": "Loopstabiliteit", + "description": "Je loopstabiliteit in de loop van de tijd, als percentage.", + "chartTitle": "Loopstabiliteit", + "emptyState": { + "title": "Nog geen gegevens over loopstabiliteit", + "description": "Metingen van je loopstabiliteit verschijnen hier zodra Apple Health synchroniseert." + } + }, + "navWalkingSteadiness": "Loopstabiliteit", + "audioExposureEvent": { + "title": "Momenten met hard geluid", + "description": "Dagen waarop je werd blootgesteld aan een luide omgeving.", + "chartTitle": "Momenten met een luide omgeving per dag", + "emptyState": { + "title": "Nog geen gegevens over hard geluid", + "description": "Momenten met een luide omgeving verschijnen hier zodra Apple Health synchroniseert." + } + }, + "navAudioExposureEvent": "Hard geluid", + "respiratoryRate": { + "title": "Ademhalingsfrequentie", + "description": "Je ademhalingsfrequentie in de loop van de tijd, in ademhalingen per minuut.", + "chartTitle": "Ademhalingsfrequentie", + "emptyState": { + "title": "Nog geen gegevens over ademhalingsfrequentie", + "description": "Metingen van de ademhalingsfrequentie verschijnen hier zodra Apple Health de ademhaling tijdens slaap of workouts synchroniseert." + } + }, + "navRespiratoryRate": "Ademhalingsfrequentie", + "leanBodyMass": { + "title": "Vetvrije lichaamsmassa", + "description": "Je vetvrije lichaamsmassa in de loop van de tijd, in kilogram.", + "chartTitle": "Vetvrije lichaamsmassa", + "emptyState": { + "title": "Nog geen gegevens over vetvrije lichaamsmassa", + "description": "Metingen van vetvrije lichaamsmassa verschijnen hier zodra een gekoppelde lichaamssamenstellingsweegschaal synchroniseert." + } + }, + "navLeanBodyMass": "Vetvrije lichaamsmassa", + "walkingHeartRateAverage": { + "title": "Hartslag tijdens wandelen", + "description": "Je gemiddelde hartslag tijdens het wandelen, in bpm.", + "chartTitle": "Gemiddelde hartslag tijdens wandelen", + "emptyState": { + "title": "Nog geen gegevens over hartslag tijdens wandelen", + "description": "Metingen van je hartslag tijdens het wandelen verschijnen hier zodra Apple Health synchroniseert." + } + }, + "navWalkingHeartRateAverage": "Hartslag tijdens wandelen", + "walkingAsymmetry": { + "title": "Loopasymmetrie", + "description": "Je loopasymmetrie in de loop van de tijd, als percentage.", + "chartTitle": "Loopasymmetrie", + "emptyState": { + "title": "Nog geen gegevens over loopasymmetrie", + "description": "Metingen van je loopasymmetrie verschijnen hier zodra Apple Health synchroniseert." + } + }, + "navWalkingAsymmetry": "Loopasymmetrie", + "walkingDoubleSupport": { + "title": "Tijd met dubbele ondersteuning", + "description": "Het percentage van elke pas waarin beide voeten op de grond staan.", + "chartTitle": "Tijd met dubbele ondersteuning", + "emptyState": { + "title": "Nog geen gegevens over dubbele ondersteuning", + "description": "Metingen van dubbele ondersteuning verschijnen hier zodra Apple Health synchroniseert." + } + }, + "navWalkingDoubleSupport": "Dubbele ondersteuning", + "walkingStepLength": { + "title": "Paslengte tijdens wandelen", + "description": "Je gemiddelde paslengte tijdens het wandelen in de loop van de tijd, in meter.", + "chartTitle": "Paslengte", + "emptyState": { + "title": "Nog geen gegevens over paslengte", + "description": "Metingen van je paslengte verschijnen hier zodra Apple Health synchroniseert." + } + }, + "navWalkingStepLength": "Paslengte", + "walkingSpeed": { + "title": "Loopsnelheid", + "description": "Je gemiddelde loopsnelheid in de loop van de tijd, in km/u.", + "chartTitle": "Loopsnelheid", + "emptyState": { + "title": "Nog geen gegevens over loopsnelheid", + "description": "Metingen van je loopsnelheid verschijnen hier zodra Apple Health synchroniseert." + } + }, + "navWalkingSpeed": "Loopsnelheid", + "mood": { + "logLink": "Stemming vastleggen", + "heatmapTitle": "Stemmingskalender", + "heatmapNoEntry": "Geen registratie", + "legendGreat": "Uitstekend", + "legendGood": "Goed", + "legendOkay": "Oké", + "legendLow": "Somber", + "distributionTitle": "Stemmingsverdeling", + "distributionDaysUnit": "dagen", + "weekdayTitle": "Gemiddelde per weekdag", + "weekdayNoData": "Geen gegevens", + "weekdayBestWorst": "Beste dag: {best}, zwaarste dag: {worst}", + "tagsTitle": "Tags en triggers", + "tagAvgMood": "Gemiddelde stemming met deze tag", + "correlationsTitle": "Stemming en andere waarden", + "correlationsDescription": "Hoe je stemming samenhangt met slaap, activiteit en hartslag op dezelfde dag.", + "correlation": { + "sleepTitle": "Stemming vs. slaap", + "stepsTitle": "Stemming vs. activiteit", + "pulseTitle": "Stemming vs. hartslag", + "sleepAxis": "Slaap (min)", + "stepsAxis": "Stappen", + "pulseAxis": "Hartslag (bpm)", + "strengthStrong": "Sterk", + "strengthModerate": "Matig", + "strengthWeak": "Zwak", + "strengthNone": "Geen", + "source": "{n} gekoppelde dagen, r = {r}", + "sourceLabel": "Hoe dit is berekend", + "emptyTitle": "Nog niet genoeg gekoppelde gegevens", + "emptyDescription": "Leg je stemming en deze waarde op dezelfde dagen vast om een correlatie te zien.", + "pendingDescription": "Tot nu toe {n} van {needed} gekoppelde dagen. Een correlatie verschijnt zodra er genoeg dagen zijn om een patroon van toeval te onderscheiden.", + "noLinkTitle": "Geen duidelijk verband", + "noLinkDescription": "{n} gekoppelde dagen, en niets valt op boven wat je door toeval zou verwachten.", + "weightTitle": "Stemming vs. gewicht", + "bloodPressureTitle": "Stemming vs. bloeddruk", + "weightAxis": "Gewicht", + "bloodPressureAxis": "Systolisch (mmHg)" + }, + "structuredTagsTitle": "Uitsplitsing per tag", + "inTargetValue": "{pct}%", + "inTargetCaption": "van de recente dagen binnen je bereik voor een goede stemming", + "narrative": { + "title": "Wat opvalt", + "weekdayDip": "Je stemming zakt het meest op {weekday}, {delta} onder je weekgemiddelde.", + "weekdayPeak": "{weekday} is steeds je beste dag, met een gemiddelde van {value}.", + "trendUp": "Je stemming stijgt de afgelopen {days} dagen (+{delta} t.o.v. de vorige periode).", + "trendDown": "Je stemming daalt de afgelopen {days} dagen (-{delta} t.o.v. de vorige periode).", + "weekendUp": "Je voelt je beter in het weekend (+{delta} t.o.v. doordeweekse dagen).", + "weekendDown": "Je stemming is lager in het weekend (-{delta} t.o.v. doordeweekse dagen).", + "tagLift": "Dagen met de tag \"{tag}\" liggen gemiddeld {delta} boven je algemene stemming.", + "tagDrop": "Dagen met de tag \"{tag}\" liggen {delta} onder je gemiddelde.", + "inTarget": "Je zat {pct}% van de afgelopen 30 dagen binnen je bereik voor een goede stemming.", + "streak": "Je hebt je stemming {days} dagen op rij vastgelegd. Ga zo door.", + "timeOfDay": "Je voelt je het best in de {bucket}, met een gemiddelde van {value}." + }, + "timeOfDay": { + "title": "Stemming per dagdeel", + "morning": "Ochtend", + "afternoon": "Middag", + "evening": "Avond", + "night": "Nacht", + "bestCaption": "Je voelt je meestal het best in de {bucket}." + }, + "stability": { + "value": "{score}/100", + "bandVerySteady": "Je stemming was zeer stabiel", + "bandSteady": "Je stemming was redelijk stabiel", + "bandVariable": "Je stemming was merkbaar wisselend", + "bandVeryVariable": "Je stemming schommelde de laatste tijd sterk", + "title": "Stabiliteit" + }, + "influence": { + "title": "Invloed op stemming", + "detail": "Gemiddeld {withAvg} op de {withDays} dagen dat je dit hebt getagd, tegenover {withoutAvg} zonder.", + "confidenceLow": "Lage betrouwbaarheid", + "confidenceMedium": "Gemiddelde betrouwbaarheid", + "confidenceHigh": "Hoge betrouwbaarheid" + }, + "betterDays": { + "title": "Wat samengaat met je betere dagen", + "description": "Tags en waarden die samenvallen met je dagen met een hogere en lagere stemming, gerangschikt naar hoe sterk ze samen bewegen." + }, + "crosstab": { + "title": "Tags en je gezondheidswaarden", + "description": "Hoe een gezondheidswaarde verschilt op de dagen dat je een activiteit hebt getagd, vergeleken met de dagen dat je dat niet deed.", + "pairLabel": "{metric} op dagen met {tag}", + "metricActiveEnergy": "Actieve energie", + "metricSleepDuration": "Slaap", + "metricNextDayRecovery": "Herstel de volgende dag", + "metricNextDayRestingHr": "Rusthartslag de volgende dag", + "metricNextDayHrv": "Hartslagvariabiliteit de volgende dag", + "unitHours": "u", + "unitKcal": "kcal", + "unitScore": "ptn", + "unitBpm": "bpm", + "unitMs": "ms", + "detailSameDay": "Gemiddeld {withAvg} {unit} op de {withDays} dagen dat je dit hebt getagd, tegenover {withoutAvg} {unit} zonder.", + "detailNextDay": "Gemiddeld {withAvg} {unit} op de dag na de {withDays} dagen dat je dit hebt getagd, tegenover {withoutAvg} {unit} op andere dagen." + }, + "factorCrosstab": { + "title": "Je beoordeelde factoren en je vitale waarden", + "description": "Hoe een vitale waarde verschilt op de dagen dat je een factor laag beoordeelde, vergeleken met de dagen dat je die hoog beoordeelde.", + "pairLabel": "{metric} op dagen met {factor}", + "metricSleepDuration": "Slaap", + "metricSteps": "Stappen", + "metricRestingHeartRate": "Rusthartslag", + "metricHrv": "Hartslagvariabiliteit", + "metricWeight": "Gewicht", + "metricBloodPressureSys": "Systolisch", + "unitHours": "u", + "unitScore": "ptn", + "unitSteps": "stappen", + "unitBpm": "bpm", + "unitMs": "ms", + "unitKg": "kg", + "unitMmHg": "mmHg", + "detail": "Gemiddeld {lowAvg} {unit} op de {lowDays} dagen dat je {factor} laag beoordeelde, tegenover {highAvg} {unit} op de dagen dat je die hoog beoordeelde.", + "detailInverse": "Gemiddeld {lowAvg} {unit} op je {lowDays} slechtere dagen voor {factor}, tegenover {highAvg} {unit} op je betere dagen." + }, + "discovery": { + "title": "Wat opvalt", + "subheading": "Ontdekte verbanden", + "footer": "Naar voren gekomen uit {tested} geteste paren van dag op dag over al je waarden, na correctie voor fout-positieve ontdekkingen.", + "disclaimer": "Statistisch gefilterd, maar nog steeds observationeel: een patroon om in de gaten te houden, geen oorzaak.", + "moodUp": "Hogere waarden voor {factor} gaan in je gegevens vaak samen met een hogere stemming de volgende dag.", + "moodDown": "Hogere waarden voor {factor} gaan in je gegevens vaak samen met een lagere stemming de volgende dag.", + "outcomeUp": "Een hogere stemming gaat in je gegevens vaak samen met hogere waarden voor {factor} de volgende dag.", + "outcomeDown": "Een hogere stemming gaat in je gegevens vaak samen met lagere waarden voor {factor} de volgende dag.", + "stat": "{n} gekoppelde dagen, r = {r}, q = {q}", + "statLabel": "Hoe dit is berekend", + "explainerLabel": "Hoe dit is berekend" + }, + "inTargetTitle": "Binnen je bereik", + "dimensions": { + "title": "Gemoedstoestand", + "none": "Nog niets vastgelegd over je gemoedstoestand.", + "window": "{days} dagen", + "noneInWindow": "niets in deze periode", + "higherIsMore": "hoger = {anchor}", + "notRecorded": "Niet vastgelegd: {list}." + }, + "contextComparison": { + "title": "Dagcontext en je stemming", + "description": "Hoe de stemmingswaarde lag op de tot nu toe vastgelegde dagen met deze registratie, vergeleken met de andere dagen.", + "lower": "lager", + "higher": "hoger", + "statement": "Op dagen met “{label}” lag de stemming gemiddeld {direction}: {withAvg} tegenover {withoutAvg}.", + "counts": "{withDays} dagen met, {withoutDays} dagen zonder", + "caveat": "Dat toont een verband, geen oorzaak." + }, + "prognosis": { + "title": "Je zelfbeoordeling", + "selfLabel": "Jouw beoordeling", + "expectedLabel": "Verwacht op basis van je eigen patroon", + "band": "Bereik {low} tot {high}", + "statement": "Op basis van je eigen patronen tot nu toe zou voor {date} een waarde rond {value} te verwachten zijn geweest. Gebaseerd op {n} vergelijkbare dagen.", + "provisional": "Nog voorlopig: het patroon berust op een korte reeks dagen.", + "notToday": "Dit gaat over {date}, niet over vandaag.", + "deviationWithin": "Je eigen beoordeling valt binnen dat bereik.", + "deviationAbove": "Je eigen beoordeling ligt {amount} punten boven dat bereik.", + "deviationBelow": "Je eigen beoordeling ligt {amount} punten onder dat bereik.", + "weightedTitle": "Wat het zwaarst woog in de vergelijking van deze dag", + "weightedUp": "{label}: telde mee voor een hogere verwachte waarde", + "weightedDown": "{label}: telde mee voor een lagere verwachte waarde", + "caveat": "Dit is een vergelijking met je eigen eerdere dagen, geen uitspraak over waarom een dag verliep zoals hij verliep.", + "learning": "Leerfase: {entries} van {threshold} dagen vastgelegd. Een vergelijking verschijnt zodra er genoeg zijn.", + "noPattern": "Niets in de {entries} tot nu toe vastgelegde dagen is stabiel genoeg om een dag mee te vergelijken. Als je ook de context van een dag vastlegt, wordt meer ervan vergelijkbaar.", + "featureValue": "{field}: {value}" + }, + "patterns": { + "title": "Patronen in je stemming", + "basedOn": "Gebaseerd op {subject} en {comparison} dagen. Een patroon, geen oorzaak.", + "previousDayHigher": "Na een dag onder je gebruikelijke niveau is de volgende dag meestal beter ({subject} tegenover {comparison} na een dag boven je gebruikelijke niveau).", + "previousDayLower": "Een dag onder je gebruikelijke niveau werkt meestal door in de volgende dag ({subject} tegenover {comparison} na een dag boven je gebruikelijke niveau).", + "weekendHigher": "Je stemming is in het weekend meestal hoger ({subject} tegenover {comparison} op doordeweekse dagen).", + "weekendLower": "Je stemming is in het weekend meestal lager ({subject} tegenover {comparison} op doordeweekse dagen).", + "bestWeekday": "{weekday} is meestal je beste dag ({subject} tegenover {comparison} op de andere dagen).", + "notesHigher": "Op dagen met een notitie is je stemming meestal hoger ({subject} tegenover {comparison} zonder notitie).", + "notesLower": "Op dagen met een notitie is je stemming meestal lager ({subject} tegenover {comparison} zonder notitie).", + "delayedTagHigher": "Op de dag na “{tag}” is je stemming meestal hoger ({subject} tegenover {comparison} op andere dagen).", + "delayedTagLower": "Op de dag na “{tag}” is je stemming meestal lager ({subject} tegenover {comparison} op andere dagen).", + "multipleEntriesHigher": "Op dagen dat je meer dan eens iets vastlegt, is je stemming meestal hoger ({subject} tegenover {comparison} op dagen met één registratie).", + "multipleEntriesLower": "Op dagen dat je meer dan eens iets vastlegt, is je stemming meestal lager ({subject} tegenover {comparison} op dagen met één registratie)." + } + }, + "derived": { + "coverage": { + "summary": "{present} van {required} invoerwaarden ({percent}%)", + "ratioLabel": "{present}/{required}", + "historyDays": "Gebaseerd op {count} dagen geschiedenis", + "missing": "Houd deze bij om dit nauwkeuriger te maken: {list}", + "summaryLabelled": "{label} ({percent}%)" + }, + "scoreRing": { + "aria": "Score {score} van 100, {band}", + "ariaProvisional": "Score nog niet beschikbaar, niet genoeg gegevens", + "provisionalCaption": "Nog niet genoeg gegevens", + "band": { + "green": "goed", + "yellow": "redelijk", + "red": "laag" + } + }, + "provenance": { + "title": "Hoe dit wordt berekend", + "trigger": "Hoe dit wordt berekend", + "inputsLabel": "Invoergegevens", + "noInputs": "Er zijn nog geen invoergegevens voor deze waarde.", + "methodLabel": "Methode", + "window": "Op basis van je gegevens uit {source} van de afgelopen {days} dagen", + "asOf": "stand op {date}", + "standardLink": "Standaard: {name}" + }, + "vitals": { + "sectionTitle": "Je vitale waarden", + "sectionSubtitle": "Cardiovasculaire en ademhalingssignalen in rust, vergeleken met je eigen basislijn", + "loadingLabel": "Je vitale waarden laden", + "loadError": "Je vitale waarden kunnen nu niet worden geladen.", + "infoLabel": "Hoe wordt dit berekend?", + "building": "Je typische bereik wordt opgebouwd: {count} van {target} dagen", + "typicalRange": "Typisch voor jou: {low}–{high}", + "fitnessYounger": "Cardiofitheid van iemand die ~{years} jaar jonger is", + "fitnessOlder": "Cardiofitheid ~{years} jaar boven je leeftijd", + "fitnessTypical": "Cardiofitheid typisch voor je leeftijd", + "fitnessNoNorm": "Voeg je leeftijd en geslacht toe om dit in context te plaatsen", + "vascularBelow": "{years} jaar onder je leeftijd", + "vascularAbove": "{years} jaar boven je leeftijd", + "vascularMatch": "In lijn met je leeftijd", + "vascularNoAge": "Voeg je geboortedatum toe om dit in context te plaatsen", + "hrvBand": { + "balanced": "In balans voor jou", + "unbalanced": "Boven je gebruikelijke bereik", + "low": "Onder je gebruikelijke bereik" + }, + "bmiCategory": { + "underweight": "Ondergewicht (WHO)", + "normal": "Normaal bereik (WHO)", + "overweight": "Overgewicht (WHO)", + "obese": "Obesitas (WHO)" + }, + "sixMinuteBand": { + "green": "{percent}% van de voorspelde waarde voor jouw profiel", + "yellow": "{percent}% van de voorspelde waarde voor jouw profiel", + "red": "{percent}% van de voorspelde waarde voor jouw profiel" + }, + "sixMinuteNoBand": "Voeg je leeftijd, lengte, gewicht en geslacht toe om dit in context te plaatsen", + "mobilitySectionTitle": "Mobiliteit en lichaam" + }, + "anatomy": { + "outOf": "/100", + "contributorsLabel": "Bijdragende factoren", + "contributorValue": "{value}, weging {weight}%", + "contributorMissing": "geen gegevens", + "insufficient": "Nog niet genoeg gegevens om dit te scoren. Blijf bijhouden, dan verschijnt het hier." + }, + "composite": { + "SLEEP_SCORE": { + "title": "Slaapscore", + "description": "Een transparante score voor slaapkwaliteit waarin elke deelscore zichtbaar is.", + "method": "Een combinatie op een schaal van 0–100 van toereikendheid (geslapen tijd ten opzichte van je leeftijdsafhankelijke slaapbehoefte), efficiëntie (geslapen ÷ in bed), regelmaat (hoe stabiel het midden van je slaap is), timing (ten opzichte van je gebruikelijke slaapmidden) en samenstelling (aandeel REM- en diepe slaap). Als je gegevens een deelscore niet kunnen onderbouwen, worden de overige opnieuw gewogen; er wordt niets verzonnen.", + "sub": { + "sufficiency": "Toereikendheid", + "efficiency": "Efficiëntie", + "consistency": "Regelmaat", + "timing": "Timing", + "composition": "Samenstelling" + } + }, + "READINESS": { + "title": "Paraatheid", + "description": "Een dagelijkse indicatie van je welzijn, op basis van hoe je signalen zich verhouden tot je eigen basislijn.", + "method": "Een combinatie op een schaal van 0–100 van de afwijking in rusthartslag, de afwijking in HRV (SDNN), voldoende slaap, stabiliteit van de ademhalingsfrequentie en stabiliteit van de stemming, elk gemeten ten opzichte van je persoonlijke basislijn. De wegingen worden herverdeeld over de componenten die je gegevens ondersteunen. Een indicatie van welzijn, geen herstelscore of klinische score.", + "component": { + "rhr": "Rusthartslag", + "hrv": "HRV (SDNN)", + "sleep": "Slaap", + "respiratory": "Ademhalingsfrequentie", + "mood": "Stemmingsstabiliteit" + } + }, + "VITALS_BASELINE": { + "method": "Je persoonlijke typische bereik is de mediaan van je dagwaarden over de periode, ± een robuuste spreiding (mediane absolute afwijking, geschaald). Het volgt JOUW metingen, geen populatienorm, dus een waarde binnen de band is typisch voor jou." + }, + "HRV_BALANCE": { + "method": "Je recente gemiddelde HRV (SDNN), afgezet tegen je eigen voortschrijdende basislijn (mediaan ± een robuuste spreiding). In balans betekent dat de waarde binnen je persoonlijke bereik valt; de band wordt opgebouwd uit jouw gegevens, nooit uit een grenswaarde voor de bevolking." + }, + "BMI": { + "method": "Gewicht ÷ lengte², ingedeeld volgens de WHO-categorieën voor volwassenen (ondergewicht / normaal / overgewicht / obesitas). Alleen een screeningsverhouding; er wordt geen onderscheid gemaakt tussen spieren en vet." + }, + "FITNESS_AGE": { + "method": "Je VO₂max afgezet tegen percentielen voor cardiorespiratoire fitheid naar leeftijd en geslacht, uitgedrukt als verschil in fitheidsleeftijd. De VO₂max is de schatting van je apparaat en wordt hier nooit opnieuw berekend." + }, + "VASCULAR_AGE_DELTA": { + "method": "De schatting van je apparaat voor vaatleeftijd / polsgolfsnelheid, vergeleken met je kalenderleeftijd en uitgedrukt als verschil in jaren. De schatting komt van het apparaat; HealthLog plaatst die alleen in een ander kader.", + "caveat": "De eigen schatting van je apparaat, anders weergegeven: beschrijvend, geen klinische beoordeling van je bloedvaten.", + "description": "Hoe de vaatleeftijdsschatting van je apparaat zich verhoudt tot je kalenderleeftijd." + }, + "COINCIDENT_DEVIATION": { + "method": "Een signaal dat verschijnt wanneer twee of meer van je vitale waarden op dezelfde dag buiten hun persoonlijke typische bereik liggen. Elke band is de robuuste mediaan ± k·MAD van je eigen geschiedenis, zodat die zich aan jou aanpast in plaats van aan een grenswaarde voor de bevolking.", + "caveat": "Een attentiesignaal op basis van je eigen basislijnen: beschrijvend, geen diagnose of klinische waarschuwing." + }, + "RECOVERY_SCORE": { + "method": "Een nachtelijke herstelindicatie van 0–100, samengesteld uit je HRV, rusthartslag en slaap ten opzichte van je eigen basislijn. Hoger betekent beter hersteld. Wordt elke nacht één keer berekend en hier uitgelezen, nooit ter plekke opnieuw berekend.", + "description": "Een nachtelijke herstelindicatie op basis van je HRV, rusthartslag en slaap." + }, + "STRESS_SCORE": { + "method": "Een nachtelijke stressindicatie van 0–100 op basis van het verloop van je HRV gedurende de dag, ten opzichte van je basislijn. Hoger betekent meer fysiologische belasting.", + "description": "Een nachtelijke stressindicatie op basis van het verloop van je HRV gedurende de dag." + }, + "STRAIN_SCORE": { + "method": "Een nachtelijke belastingsindicatie van 0–100 op basis van je naar hartslag gewogen activiteitsbelasting (een trainingsimpulsmodel in TRIMP-stijl). Hoger betekent een zwaardere dag.", + "anchorPersonal": "Verankerd aan je eigen recente belasting op trainingsdagen en gescoord ten opzichte van je gebruikelijke inspanning, zodat een dag die voor jou echt zwaar is ook hoog uitvalt.", + "anchorPopulation": "Gescoord ten opzichte van een algemene referentie zolang je trainingsgeschiedenis wordt opgebouwd; zodra er genoeg is, schakelt het over naar je eigen gebruikelijke inspanning.", + "description": "Een nachtelijke indicatie van je activiteitsbelasting op basis van je naar hartslag gewogen inspanning, ten opzichte van je gebruikelijke inspanning.", + "deviceCaption": "Dagbelasting van je apparaat: {value} van {max}", + "deviceSource": "Totdat HealthLog 's nachts een eigen waarde heeft berekend, toont de kaart de dagbelasting van je apparaat, omgerekend naar 0–100." + }, + "WRIST_TEMPERATURE_BASELINE": { + "method": "Je typische nachtelijke polstemperatuur is de mediaan van je nachtelijke metingen over de periode, ± een robuuste spreiding (mediane absolute afwijking, geschaald). Het volgt JOUW metingen: afgelopen nacht wordt getoond als afwijking van je eigen basislijn, niet van een populatienorm.", + "caveat": "Alleen een band voor persoonlijke afwijking: beschrijvend, geen signaal voor ziekte, koorts of cyclusfase. Interpreteer het zelf." + }, + "STAIR_ASCENT_SPEED_BASELINE": { + "method": "Je typische tempo bij het traplopen omhoog is de mediaan van je dagwaarden over de periode, ± een robuuste spreiding (mediane absolute afwijking, geschaald). De band wordt opgebouwd uit jouw gegevens. Er bestaat geen grenswaarde voor traploopsnelheid voor de bevolking, omdat het tempo afhangt van de vorm van de trap en de lengte van je benen.", + "caveat": "Een band voor je persoonlijke mobiliteitstrend: beschrijvend, geen beoordeling van kwetsbaarheid of valrisico." + }, + "STAIR_DESCENT_SPEED_BASELINE": { + "method": "Je typische tempo bij het traplopen omlaag is de mediaan van je dagwaarden over de periode, ± een robuuste spreiding (mediane absolute afwijking, geschaald). De band wordt opgebouwd uit jouw gegevens. Er bestaat geen grenswaarde voor traploopsnelheid voor de bevolking, omdat het tempo afhangt van de vorm van de trap en de lengte van je benen.", + "caveat": "Een band voor je persoonlijke mobiliteitstrend: beschrijvend, geen beoordeling van kwetsbaarheid of valrisico." + }, + "SIX_MINUTE_WALK_BAND": { + "method": "De GESCHATTE zesminutenwandelafstand van je apparaat, afgezet tegen de referentie van Enright & Sherrill voor je leeftijd, lengte, gewicht en geslacht, als percentage van de voorspelde waarde. De afstand is de schatting van het apparaat en wordt hier nooit opnieuw berekend. Zonder je leeftijd, lengte, gewicht en geslacht wordt het percentage verborgen en worden alleen de afstand en de trend getoond.", + "caveat": "Een schatting afgezet tegen een gepubliceerde referentie: een attentiesignaal voor je functionele capaciteit, geen klinische zesminutenwandeltest en geen diagnose. De referentie is opgesteld voor leeftijden van 40–80 jaar; daarbuiten is de voorspelde waarde een extrapolatie." + }, + "TRAJECTORY": { + "method": "Een kleinstekwadratenlijn door je recente dagwaarden, over een korte periode vooruit doorgetrokken, met het gangbare voorspellingsinterval dat breder wordt naarmate het verder vooruit reikt. Wordt alleen berekend als de recente trend sterk genoeg is en je geschiedenis lang en actueel genoeg is; anders wordt er geen lijn getekend.", + "caveat": "Een projectie van je eigen recente trend, geen voorspelling, doel of klinische prognose. Die geldt alleen als het recente patroon aanhoudt; de gearceerde band laat zien hoe snel die zekerheid afneemt." + }, + "SAME_TIME_BASELINE": { + "method": "Je lopende totaal voor vandaag, afgezet tegen de mediaan van hetzelfde lokale uur over je afgelopen vier weken, met een robuuste band van mediaan ± MAD eromheen. Alleen dagen met voldoende vastgelegde details tellen mee, en er wordt geen vergelijking getoond totdat er minstens veertien van zijn.", + "caveat": "Een vergelijking met je eigen recente geschiedenis, geen doel. Het laat zien waar vandaag staat ten opzichte van je gebruikelijke patroon op dit uur en zegt niets over de vraag of dat patroon goed voor je is." + } + }, + "scores": { + "sectionTitle": "Je gezondheidsscores", + "sectionSubtitle": "Samengestelde scores voor herstel, stress en belasting, uitgelezen van je gekoppelde apparaten", + "loadError": "Je welzijnsscores kunnen nu niet worden geladen.", + "loadingLabel": "Je gezondheidsscores laden", + "recovery": "Herstelscore", + "recoveryCrossLink": "Bekijk de herstel- en belastingsgegevens van je wearable", + "stress": "Stress", + "strain": "Belasting", + "historyTitle": "Geschiedenis", + "historyWindow": "Afgelopen {days} dagen" + }, + "coincident": { + "label": "Meerdere vitale waarden wijken af van je basislijn", + "summary": "{count} van je vitale waarden lagen vandaag buiten hun persoonlijke bereik.", + "vitals": "Buiten het bereik: {list}", + "cardTitle": "Signalen van de dag", + "allClear": "Al je vitale waarden liggen vandaag binnen hun persoonlijke bereik.", + "allClearMeta": "{count} van je vitale waarden vergeleken met je eigen typische bereik.", + "watch": "Eén vitale waarde ligt vandaag buiten het gebruikelijke bereik.", + "watchVital": "Buiten het bereik: {vital}. Vaak eenmalig, maar het is goed om er de komende dagen even op te letten.", + "firedHeadline": "{count} van je vitale waarden liggen vandaag buiten hun persoonlijke bereik.", + "factors": "Mogelijke factoren (nooit een oorzaak): een zware training, slecht slapen, alcohol, hoogte, stress of ziekte. Dit is een attentiesignaal op basis van je eigen basislijnen, geen diagnose.", + "building": "Je persoonlijke basislijnen worden opgebouwd. Houd nog een paar dagen bij, dan verschijnt dit.", + "illnessExplained": "Deze verschuivingen hangen waarschijnlijk samen met de aandoening die je hebt vastgelegd." + }, + "trajectory": { + "cardTitle": "Projectie op korte termijn", + "headline": "Als dit patroon aanhoudt: de komende {days} dagen", + "range": "Verwacht rond {low}–{high} {unit} over {days} dagen.", + "caveat": "Een projectie van je eigen recente trend, geen voorspelling. De gearceerde band wordt breder om te laten zien hoe snel de onzekerheid toeneemt.", + "insufficient": "Nog geen duidelijke trend om door te trekken. Blijf bijhouden, dan verschijnt er een projectie zodra het recente patroon sterk genoeg is.", + "daysNeeded": "Nog ongeveer {count} dagen bijhouden voordat er een projectie kan verschijnen." + }, + "sameTime": { + "sectionTitle": "Vandaag tot nu toe", + "sectionSubtitle": "Je lopende totalen vergeleken met wat op dit uur gebruikelijk is voor jou", + "learning": "Je gebruikelijke dag leren kennen: {count} van {target} dagen", + "framing": "Gebruikelijk tot {time}: {typical} {unit}", + "comparisonLabel": "Je gebruikelijke dag" + } + }, + "cardioFitness": { + "title": "Cardiofitheid", + "description": "Je VO₂ max door de tijd heen, de belangrijkste maatstaf voor aerobe fitheid.", + "chartTitle": "VO₂ max (mL/(kg·min))", + "emptyState": { + "title": "Nog geen gegevens over cardiofitheid", + "description": "VO₂ max-metingen verschijnen hier zodra Apple Health je trainingen synchroniseert." + } + }, + "navCardioFitness": "Cardiofitheid", + "cardioRecovery": { + "title": "Cardioherstel", + "description": "Hoeveel je hartslag daalt in de eerste minuut na maximale inspanning.", + "chartTitle": "Cardioherstel (bpm)", + "emptyState": { + "title": "Nog geen gegevens over cardioherstel", + "description": "Metingen van cardioherstel verschijnen hier zodra Apple Health een training synchroniseert." + } + }, + "navCardioRecovery": "Cardioherstel", + "wristTemperature": { + "title": "Polstemperatuur", + "description": "Je nachtelijke polstemperatuur, gevolgd ten opzichte van je eigen basislijn.", + "chartTitle": "Polstemperatuur", + "emptyState": { + "title": "Nog geen gegevens over polstemperatuur", + "description": "Metingen van polstemperatuur verschijnen hier zodra Apple Health gegevens synchroniseert van een nacht waarin je je horloge hebt gedragen." + } + }, + "navWristTemperature": "Polstemp.", + "falls": { + "title": "Valpartijen", + "description": "Harde valpartijen die je Apple Watch heeft gedetecteerd, per dag geteld.", + "chartTitle": "Valpartijen per dag", + "emptyState": { + "title": "Nog geen valgegevens", + "description": "Gedetecteerde valpartijen verschijnen hier zodra Apple Health synchroniseert. Geen valpartijen is het doel." + } + }, + "navFalls": "Valpartijen", + "sixMinuteWalk": { + "title": "Zes minuten wandelen", + "description": "De schatting van Apple van hoe ver je in zes minuten zou kunnen lopen.", + "chartTitle": "Afstand zes minuten wandelen (m)", + "emptyState": { + "title": "Nog geen gegevens over zes minuten wandelen", + "description": "Schattingen van zes minuten wandelen verschijnen hier zodra Apple Health synchroniseert." + } + }, + "navSixMinuteWalk": "6 min wandelen", + "stairAscentSpeed": { + "title": "Snelheid trap op", + "description": "Hoe snel je trappen oploopt, gemeten door je iPhone of Watch.", + "chartTitle": "Snelheid trap op (m/s)", + "emptyState": { + "title": "Nog geen gegevens over snelheid trap op", + "description": "Metingen van de snelheid trap op verschijnen hier zodra Apple Health synchroniseert." + } + }, + "navStairAscentSpeed": "Trap op", + "stairDescentSpeed": { + "title": "Snelheid trap af", + "description": "Hoe snel je trappen afloopt, gemeten door je iPhone of Watch.", + "chartTitle": "Snelheid trap af (m/s)", + "emptyState": { + "title": "Nog geen gegevens over snelheid trap af", + "description": "Metingen van de snelheid trap af verschijnen hier zodra Apple Health synchroniseert." + } + }, + "navStairDescentSpeed": "Trap af", + "breathingDisturbances": { + "title": "Ademhalingsstoornissen", + "description": "Hoe vaak je ademhaling tijdens de slaap verstoord was.", + "chartTitle": "Ademhalingsstoornissen tijdens de slaap", + "emptyState": { + "title": "Nog geen gegevens over ademhalingsstoornissen", + "description": "Metingen van de ademhaling tijdens de slaap verschijnen hier zodra Apple Health synchroniseert vanaf een ondersteunde Apple Watch." + } + }, + "navBreathingDisturbances": "Ademhaling", + "rhythmEvents": { + "sectionTitle": "Gezondheidsmeldingen van je apparaat", + "sectionIntro": "Meldingen die je horloge zelf heeft verstuurd. HealthLog toont deze alleen. Het detecteert, bevestigt of interpreteert ze niet.", + "loadError": "Je apparaatmeldingen kunnen niet worden geladen.", + "disclaimer": "Dit zijn waarschuwingen die je apparaat heeft gegeven op basis van zijn eigen ingebouwde detectie. Ze worden hier alleen ter informatie getoond. Dit is geen medische beoordeling door HealthLog, en HealthLog stelt geen enkele diagnose. Als een melding je zorgen baart, praat dan met je arts.", + "event": { + "irregularRhythm": "Melding onregelmatig ritme", + "highHeartRate": "Melding hoge hartslag", + "lowHeartRate": "Melding lage hartslag", + "walkingSteadiness": "Waarschuwing loopstabiliteit", + "breathingDisturbance": "Ademhalingsstoornis tijdens de slaap" + }, + "verdict": { + "irregular": "Je apparaat heeft een mogelijk onregelmatig ritme gesignaleerd.", + "notDetected": "Je apparaat heeft geen onregelmatig ritme gesignaleerd.", + "inconclusive": "Je apparaat kon geen meting uitvoeren.", + "low": "Je apparaat heeft een lage loopstabiliteit gesignaleerd.", + "veryLow": "Je apparaat heeft een zeer lage loopstabiliteit gesignaleerd.", + "fired": "Je apparaat heeft deze gebeurtenis gesignaleerd." + } + }, + "trendDescriptor": { + "rising": "Stijgend over 30 dagen ({delta}{unit}).", + "falling": "Dalend over 30 dagen ({delta}{unit}).", + "stable": "Stabiel over de afgelopen 30 dagen.", + "moodImproved": "Je stemming is over 30 dagen licht gestegen.", + "moodDeclined": "Je stemming is over 30 dagen licht gedaald.", + "moodStable": "Je stemming is de afgelopen 30 dagen stabiel gebleven." + }, + "target": { + "heading": "Doel" + }, + "settings": { + "overviewTitle": "Overzicht indelen", + "overviewDescription": "Toon of verberg secties en bepaal hun volgorde in het overzicht van Inzichten." + }, + "pillOrder": { + "title": "Navigatiechips sorteren", + "description": "Sleep de chips in de gewenste volgorde en toon of verberg ze met het oogpictogram.", + "dragHandle": "Volgorde wijzigen", + "saveSuccess": "Volgorde van chips opgeslagen", + "saveError": "Opslaan van de chipvolgorde is mislukt.", + "save": "Opslaan", + "empty": "Nog geen navigatiechips beschikbaar.", + "detail": "Verborgen detailpagina's worden ook uit de navigatie bovenaan verwijderd." + }, + "customize": "Inzichten aanpassen", + "regenerateRateLimited": "Vernieuwingslimiet bereikt. Probeer het later opnieuw.", + "regenerateUnavailable": "Er is geen nieuwe analyse binnengekomen. Probeer het later opnieuw.", + "regenerateError": "Wordt nog vernieuwd. Probeer het zo opnieuw.", + "regenerateSettling": "Je beoordeling wordt nog voorbereid", + "regenerateSettleFailed": "Het vernieuwen kon niet worden voltooid. Probeer het later opnieuw.", + "deviceScore": { + "learning": "Je basislijn wordt nog vastgesteld. Na nog een paar nachten wordt de trend aangevuld.", + "average": "30-daags gemiddelde {value}", + "unitScore": "score", + "unitMinutes": "min", + "unitBpm": "bpm", + "unitKj": "kJ" + }, + "sleepQuality": { + "title": "Slaapkwaliteit", + "subtitle": "Nachtelijke scores van je wearable" + }, + "recovery": { + "title": "Herstel", + "description": "Hoe goed je lichaam zich heeft hersteld: de signalen voor herstel, belasting en trainingsbelasting die je wearable 's nachts vastlegt.", + "scoreCrossLink": "Bekijk de samengestelde herstelscore", + "emptyTitle": "Nog geen herstelgegevens", + "empty": "Hier is nog niets om in een grafiek te tonen. Deze pagina toont de metingen voor opladen, belasting en trainingsbelasting die WHOOP en Polar vastleggen, en het veerkrachtniveau van Oura. De paraatheid van Oura verschijnt als je herstelscore, hierboven gelinkt.", + "block": { + "ansChargeExplainer": "Hoe opgeladen je autonome zenuwstelsel is voor de komende dag: een oplaadmeting op basis van je nachtelijke hart- en ademhalingssignalen.", + "dayStrainExplainer": "De cardiovasculaire belasting van je hele lichaam over de dag, op de belastingsschaal van je apparaat. Bekijk het in samenhang met je herstel, niet als doel op zich.", + "workoutStrainExplainer": "Hoe zwaar één training was op dezelfde belastingsschaal: de cardiovasculaire inspanning van die sessie.", + "cardioLoadExplainer": "Een indicatie van trainingsbelasting die de acute cardiovasculaire belasting volgt die je hebt opgebouwd. Vergelijk het met je eigen recente dagen.", + "averageHeartRateExplainer": "Je gemiddelde hartslag over de hele dag of cyclus, zoals gerapporteerd door je wearable.", + "maxHeartRateExplainer": "Je hoogste hartslag over de hele dag of cyclus, zoals gerapporteerd door je wearable.", + "energyExpenditureKjExplainer": "De energie die je lichaam over de dag heeft verbruikt, in kilojoule, zoals je apparaat die zelf rapporteert." + } + }, + "bodyTempDeviation": { + "title": "Afwijking lichaamstemperatuur", + "subtitle": "Nachtelijk verschil ten opzichte van je basislijn" + }, + "resilience": { + "explainer": "Hoe goed je lichaam de dagelijkse belasting in balans houdt met herstel, afgeleid uit je nachtelijke signalen van de afgelopen dagen.", + "learning": "Je veerkracht wordt nog vastgesteld. Na nog een paar dagen wordt de band stabieler.", + "band": { + "limited": "Beperkt", + "adequate": "Voldoende", + "solid": "Solide", + "strong": "Sterk", + "exceptional": "Uitzonderlijk" + }, + "trend": { + "above": "Boven je recente gemiddelde.", + "steady": "In lijn met je recente gemiddelde.", + "below": "Onder je recente gemiddelde." + } + }, + "briefing": { + "memory": { + "forwardWatch": "Het is de moeite waard om {metric} in de gaten te houden.", + "forwardHolding": "Alles blijft voorlopig stabiel." + } + }, + "updatedTodayAt": "Vandaag bijgewerkt om {time}", + "updatedYesterday": "Gisteren bijgewerkt", + "updatedOn": "Bijgewerkt op {date}", + "healthStatus": { + "sectionTitle": "Wat is er veranderd", + "subtitle": "Signalen die afwijken van je gebruikelijke bereik.", + "deviationAbove": "{vital} ligt boven je typische bereik.", + "deviationBelow": "{vital} ligt onder je typische bereik.", + "shiftUp": "{vital} is gestegen ten opzichte van wat recent normaal was voor jou.", + "shiftDown": "{vital} is gedaald ten opzichte van wat recent normaal was voor jou.", + "rangeContext": "Nu {value}, meestal {low}–{high}.", + "rangeContextTimeOfDay": "Nu {value}, op dit moment van de dag meestal {low}–{high}.", + "shiftContext": "Eerst rond {before}, sindsdien {after}." + }, + "breathingScreening": { + "sectionTitle": "Ademhaling tijdens de slaap", + "subtitle": "Een screeningssignaal uit je slaapgegevens.", + "classificationElevated": "Je apparaat heeft verhoogde ademhalingsstoornissen gesignaleerd.", + "classificationNotElevated": "De classificatie van je apparaat is niet verhoogd.", + "trendUp": "Hoger dan in je eerdere nachten.", + "trendDown": "Lager dan in je eerdere nachten.", + "trendStable": "Stabiel ten opzichte van je eerdere nachten.", + "nights": "{count} nachten bijgehouden", + "indexLine": "recente gemiddelde index {value}", + "eventsFlagged": "{count} gebeurtenissen gesignaleerd door je apparaat", + "disclaimer": "Dit is een screeningssignaal, geen diagnose. Bespreek het met een zorgverlener." + }, + "labsChanges": { + "sectionTitle": "Sinds je vorige labonderzoek", + "subtitle": "Hoe je nieuwste uitslagen zich verhouden tot het vorige labonderzoek.", + "statusInRange": "binnen het bereik", + "statusBelow": "onder het bereik", + "statusAbove": "boven het bereik", + "directionFlat": "geen verandering" + }, + "navGripStrength": "Knijpkracht", + "navPainNrs": "Pijn", + "navWaistCircumference": "Taille", + "navWaistToHeight": "Taille-lengte", + "gripStrength": { + "title": "Knijpkracht", + "description": "Maximale knijpkracht van de hand, een betrouwbare indicator voor de kracht van je hele lichaam. Een waarde onder de geslachtsspecifieke grenswaarde (mannen 27 kg, vrouwen 16 kg) wijst op waarschijnlijke sarcopenie; je eigen trend is leidend.", + "chartTitle": "Knijpkracht", + "emptyState": { + "title": "Nog geen knijpkracht", + "description": "Leg een meting met een handdynamometer vast (noteer de beste van een paar keer knijpen), dan verschijnt de trend hier.", + "cta": "Knijpkracht vastleggen" + }, + "coachPrefill": "Ik heb nog geen knijpkracht vastgelegd. Wat zegt die over de gezondheid van mijn spieren, en hoe meet en verbeter ik die?" + }, + "pain": { + "title": "Pijn (0–10)", + "description": "Door jezelf gerapporteerde pijnintensiteit op de numerieke beoordelingsschaal van 0–10, waarbij 0 geen pijn is en 10 de ergst denkbare pijn. Een aanhoudende verandering van 2 punten is het signaal om op te letten.", + "chartTitle": "Pijn (0–10)", + "emptyState": { + "title": "Nog geen pijnscores", + "description": "Leg op de schaal van 0–10 vast hoe je pijn nu voelt, dan verschijnt de trend hier.", + "cta": "Pijnscore vastleggen" + }, + "coachPrefill": "Ik heb nog geen pijnscores vastgelegd. Hoe houd ik pijn het beste bij op de schaal van 0–10, en wat telt als een betekenisvolle verandering?" + }, + "waist": { + "title": "Tailleomtrek", + "description": "Tailleomtrek in centimeters, een indicator voor buikvet. De WHO-drempelwaarde voor een verhoogd risico is geslachtsspecifiek (mannen 94 cm, vrouwen 80 cm); je eigen trend is leidend.", + "chartTitle": "Tailleomtrek", + "emptyState": { + "title": "Nog geen taillemetingen", + "description": "Meet je taille halverwege de onderste rib en de bovenkant van het heupbot, aan het einde van een normale uitademing, en leg de waarde hier vast.", + "cta": "Tailleomtrek vastleggen" + }, + "coachPrefill": "Ik heb nog geen taillemetingen vastgelegd. Hoe meet ik mijn taille correct, en wat betekent het getal voor mijn gezondheid?" + }, + "waistToHeight": { + "title": "Taille-lengteverhouding", + "description": "Je tailleomtrek gedeeld door je lengte: één getal dat ongeacht je afkomst betrouwbaar is. Het eenvoudige doel is om onder 0,5 te blijven (taille kleiner dan de helft van je lengte).", + "chartTitle": "Taille-lengteverhouding", + "emptyState": { + "title": "Nog geen taille-lengteverhouding", + "description": "Leg een taille-lengteverhouding vast, dan verschijnt de trend hier. De vuistregel: houd je taille onder de helft van je lengte.", + "cta": "Taille-lengteverhouding vastleggen" + }, + "coachPrefill": "Ik heb nog geen taille-lengteverhouding vastgelegd. Waarom is het een nuttig getal, en hoe houd ik het onder 0,5?" + }, + "ecg": { + "sectionTitle": "ECG-opnamen", + "loadError": "Je ECG-opnamen kunnen niet worden geladen.", + "backToList": "Terug naar opnamen", + "clinicianNote": "Als deze uitslag je zorgen baart, bespreek deze opname dan met een zorgverlener.", + "resultAttribution": "Vastgelegde uitslag: {result}, zoals gerapporteerd door het opnameapparaat.", + "result": { + "irregular": "Boezemfibrilleren gedetecteerd", + "notDetected": "Geen tekenen van boezemfibrilleren", + "inconclusive": "Niet-eenduidige opname", + "none": "Geen uitslag gerapporteerd" + }, + "meta": { + "recorded": "Opgenomen", + "duration": "Duur", + "lead": "Afleiding", + "averageHeartRate": "Gemiddelde hartslag", + "samplingRate": "Bemonsteringsfrequentie", + "leadSingle": "Eén afleiding (afleiding I)", + "durationValue": "{seconds} s", + "bpmValue": "{bpm} bpm", + "hzValue": "{hz} Hz", + "unknown": "—" + }, + "waveform": { + "ariaLabel": "ECG-strook opgenomen op {date}, duur {duration}, gemiddelde hartslag {heartRate}, vastgelegde uitslag: {result}." + }, + "crossLink": { + "title": "ECG-opnamen", + "recordingsOne": "1 opname opgeslagen.", + "recordingsMany": "{count} opnamen opgeslagen.", + "latestResult": "Laatste uitslag van het apparaat: {result}.", + "cta": "Opnamen bekijken" + }, + "emptyTitle": "Nog geen ECG-opnamen", + "emptyDescription": "ECG-opnamen worden gesynchroniseerd vanaf een compatibel apparaat met één afleiding. Zodra je apparaat een opname uploadt, verschijnt die hier.", + "emptyCta": "Apparaat koppelen" + }, + "intradayPulse": { + "title": "Hartslag gedurende de dag", + "caption": "Gemiddeld in stappen van 10 minuten.", + "hourlyNote": "Je ziet het uurgemiddelde van deze dag; recente dagen tonen het volledige detail per 10 minuten.", + "empty": "Nog niet genoeg hartslagmetingen voor deze dag om het verloop te tonen.", + "coverageOne": "Gebaseerd op 1 meting over {hours} u.", + "coverageMany": "Gebaseerd op {count} metingen over {hours} u.", + "baseline": "Rust", + "today": "Vandaag", + "previousDay": "Vorige dag", + "nextDay": "Volgende dag", + "tension": { + "morning": "Vanochtend een aanhoudende periode met een verhoogde hartslag in rust, mogelijk wat spanning.", + "afternoon": "Vanmiddag een aanhoudende periode met een verhoogde hartslag in rust, mogelijk wat spanning.", + "evening": "Vanavond een aanhoudende periode met een verhoogde hartslag in rust, mogelijk wat spanning.", + "night": "Afgelopen nacht een aanhoudende periode met een verhoogde hartslag in rust, mogelijk wat spanning." + } + }, + "navEcg": "ECG", + "sectionLoadError": "Deze sectie kon niet worden geladen.", + "aiSetupHint": { + "title": "AI is optioneel", + "body": "Alles hier werkt zonder AI. Wil je een dagelijkse briefing, korte notities bij je metingen en de Coach, dan kun je een AI-provider koppelen.", + "settingsBody": "HealthLog werkt volledig zonder AI. Koppel hieronder een provider als je een dagelijkse briefing, korte notities bij je metingen en de Coach wilt.", + "action": "AI instellen", + "dismiss": "Niet nu" + }, + "bmiHeight": { + "coachPrefill": "Ik heb mijn lengte nog niet ingesteld. Waarom is BMI belangrijk, en wat moet ik weten voordat ik het instel?" + }, + "medicationsEmpty": { + "coachPrefill": "Ik heb nog geen medicatie toegevoegd. Wat moet ik weten voordat ik hier begin met het bijhouden van mijn medicatietrouw?" + }, + "scoreHistory": { + "healthTitle": "Geschiedenis van de gezondheidsscore", + "healthDescription": "Je gezondheidsscore per dag, zoals die op elke dag werd getoond.", + "emptyDescription": "In deze periode is nog geen score vastgelegd.", + "usualRange": "Gearceerd: je gebruikelijke bereik, {lo} tot {hi}.", + "seam": "De lijn wordt onderbroken op het moment dat veranderde wat meetelt voor de score." + } + }, + "thresholds": { + "defaultLabel": "Standaard", + "overrideToggleLabel": "Aangepast bereik", + "resetAction": "Terugzetten naar standaard", + "resetAllAction": "Alles terugzetten naar standaard", + "resetAllTitle": "Alle aangepaste bereiken terugzetten?", + "resetAllBody": "Elke meetwaarde gaat terug naar het standaardbereik. De waarden die je hebt ingesteld, worden nergens anders opgeslagen en kunnen niet worden teruggehaald.", + "resetAllConfirm": "Alles terugzetten", + "resetTitle": "Dit bereik terugzetten?", + "resetBody": "De meetwaarde gaat terug naar het standaardbereik. De waarden die je hebt ingesteld, worden nergens anders opgeslagen en kunnen niet worden teruggehaald.", + "resetConfirm": "Bereik terugzetten", + "minLabel": "Min", + "maxLabel": "Max", + "unitSuffix": "({unit})", + "outOfBoundsHint": "Toegestaan bereik: {min}–{max} {unit}", + "overrideWarning": "Waarden buiten de bereiken uit de richtlijnen kunnen tot ongezonde streefwaarden leiden. Doe dit alleen op advies van je arts.", + "saveSuccess": "Drempelwaarden bijgewerkt", + "saveError": "Drempelwaarden konden niet worden opgeslagen", + "resetSuccess": "Teruggezet naar standaard", + "sourceOverride": "Aangepast door gebruiker", + "metricWeight": "Gewicht", + "metricBpSys": "Bloeddruk (systolisch)", + "metricBpDia": "Bloeddruk (diastolisch)", + "metricPulse": "Rusthartslag", + "metricBodyFat": "Vetpercentage", + "metricSleep": "Slaapduur", + "metricSteps": "Dagelijkse stappen", + "metricGlucoseFasting": "Glucose (nuchter)", + "metricGlucosePostprandial": "Glucose (na de maaltijd)", + "metricGlucoseRandom": "Glucose (willekeurig moment)", + "metricGlucoseBedtime": "Glucose (voor het slapengaan)", + "metricBodyWater": "Lichaamsvocht", + "metricBoneMass": "Botmassa", + "metricOxygenSaturation": "Zuurstofverzadiging (SpO₂)", + "unsetExplanation": "Niet aangepast, de berekende standaardwaarde wordt gebruikt.", + "cardTitle": "Bereiken per meetwaarde" + }, + "onboarding": { + "errorGeneric": "Er is iets misgegaan bij het afronden van de installatie. Probeer het opnieuw.", + "tour": { + "stepOf": "Stap {current} van {total}", + "next": "Volgende", + "back": "Terug", + "skip": "Rondleiding overslaan", + "done": "Begrepen", + "steps": { + "dashboardOverview": { + "title": "Je dashboard", + "body": "Het dashboard brengt alle modules in één oogopslag samen. Houd een tegel lang ingedrukt om hem te verplaatsen of te verbergen (Instellingen → Dashboardindeling). Elke tegel is maar zo veelzeggend als de gegevens erachter, en de modules die nu volgen vullen ze." + }, + "quickAdd": { + "title": "In enkele seconden vastgelegd", + "body": "Gebruik “+ Toevoegen” om elke meting in enkele seconden vast te leggen: gewicht, bloeddruk, hartslag, glucose. Verborgen kracht: leg metingen die je vergeten was achteraf vast met een eerdere datum. Alles wat je hier vastlegt, voedt de trends, de gezondheidsscore en de AI-inzichten." + }, + "measurements": { + "title": "Metingen en streefbereiken", + "body": "Metingen toont de geschiedenis en het streefbereik van elke meetwaarde. Verborgen pareltje: stel per waarde een streefbereik in, zodat afwijkingen in kleur opvallen. Deze meetreeksen vormen de basis voor de correlaties van de Coach en het artsenrapport." + }, + "medications": { + "title": "Medicatie en innames", + "body": "Medicatie beheert schema's, innames, voorraad en titratie. Verborgen: terugkerende plannen (RRULE/doorlopend) en waarschuwingen bij lage voorraad. Je innamepercentage voedt de pijler therapietrouw op het dashboard en de context van de AI." + }, + "labs": { + "title": "Labwaarden", + "body": "Labuitslagen legt biomarkers vast met referentiebereiken: bloedbeeld, cholesterol, HbA1c. Kracht: importeren en FHIR-export. Labwaarden buiten het bereik komen terug als onderbouwing in de inzichten en het artsenrapport." + }, + "illness": { + "title": "Ziektedagboek", + "body": "Het ziektedagboek legt acute episodes en chronische diagnoses vast, met hun opflakkeringen. Verborgen: koppel een episode aan je metingen, en de rustmodus die herinneringen pauzeert. Zo begrijpt de Coach waarom waarden een tijdje afwijken." + }, + "vorsorge": { + "title": "Controles", + "body": "Controles herinneren je aan screenings en vaccinaties, elk met een eigen interval. Tip: met “Gedaan” kun je direct een meting of labuitslag aanmaken. Items die aan de beurt zijn, verschijnen als herinnering en in het artsenrapport." + }, + "cycle": { + "title": "Cyclus", + "body": "Met cyclustracking leg je fasen en symptomen vast. Verborgen: vergelijk symptomen met stemming en slaap. De cyclus geeft context aan schommelingen die anders onverklaard zouden lijken." + }, + "mood": { + "title": "Stemming", + "body": "Met Stemming leg je in twee seconden vast hoe je je voelt, plus tags. Kracht: je eigen tags. Stemmingstrends hangen samen met slaap, medicatie en cyclus, en de Coach herkent de patronen." + }, + "insights": { + "title": "Inzichten", + "body": "Inzichten is het hart van de app: op bewijs gebaseerde, dynamische analyse in plaats van algemene tips. Elke uitspraak verwijst naar je echte gegevens. Verborgen: de indeling is aan te passen. Inzichten brengt alles samen wat de modules hierboven aanleveren." + }, + "coach": { + "title": "Coach", + "body": "De Coach beantwoordt in een gesprek vragen over je gegevens, met je geschiedenis, medicatie en labwaarden als context. Je kiest zelf je AI-provider (je eigen sleutel of lokaal). De Coach berekent niets opnieuw; hij leest dezelfde cijfers als het dashboard." + }, + "integrations": { + "title": "Koppelingen", + "body": "Koppelingen synchroniseren Withings, WHOOP, Polar, Oura en Apple Health automatisch. Gewicht, slaap en herstel worden aangevuld zonder handmatig invoeren en voeden op hun beurt de inzichten en de Coach." + }, + "export": { + "title": "Artsenrapport", + "body": "Het artsenrapport bundelt metingen, medicatie, labwaarden en controles als PDF of FHIR voor de afspraak. Hier komen alle modules samen: een volledig rapport ontstaat alleen uit goed bijgehouden gegevens." + }, + "achievements": { + "title": "Prestaties", + "body": "Prestaties belonen regelmaat: reeksen en mijlpalen. Een kleine motivatielus die het makkelijker maakt om vol te houden." + }, + "wrapUp": { + "title": "Dat was de rondleiding", + "body": "Deze rondleiding wordt één keer getoond en gaat niet vanzelf opnieuw open. Alles wat erin aan bod kwam, blijft staan, en je kunt functies altijd aan- of uitzetten onder Instellingen → Modules." + } + } + }, + "shell": { + "back": "Terug", + "skip": "Overslaan", + "next": "Doorgaan", + "stepOf": "Stap {current} van {total}", + "stepsLabel": "Installatiestappen" + }, + "baseline": { + "title": "Iets over jou", + "body": "Vier optionele velden maken streefbereiken, BMI en herinneringen nauwkeuriger. Je kunt ze later allemaal aanpassen in Instellingen.", + "displayNameLabel": "Weergavenaam", + "displayNamePlaceholder": "Hoe moet HealthLog je aanspreken?", + "displayNameHint": "Wordt getoond in de begroeting op het dashboard en in rapporten.", + "heightLabel": "Lengte (cm)", + "heightLabelFtIn": "Lengte (ft, in)", + "genderLabel": "Geslacht", + "genderNone": "Zeg ik liever niet", + "genderMale": "Man", + "genderFemale": "Vrouw", + "genderOther": "Anders", + "dateOfBirthLabel": "Geboortedatum", + "dateOfBirthHint": "Wordt alleen gebruikt voor leeftijdsafhankelijke analyses." + }, + "done": { + "title": "Je bent er klaar voor", + "body": "Welkom. Je dashboard staat klaar.", + "returnCta": "Dashboard openen", + "learning": "Sommige inzichten (glucose, slaapritme, bloeddruktrends, cyclus) worden in de eerste week of twee nauwkeuriger naarmate je gegevens zich opbouwen. Lege tegels betekenen nu alleen dat we je basiswaarden nog aan het leren kennen zijn.", + "connectCta": "Een apparaat koppelen", + "logCta": "Je eerste meting vastleggen", + "importCta": "Bestaande geschiedenis importeren", + "modulesCta": "Je modules kiezen" + }, + "welcomeBack": { + "title": "Welkom terug", + "cta": "Dashboard openen" + }, + "disclaimer": { + "acknowledge": "Ik begrijp het: HealthLog is een persoonlijk hulpmiddel om gegevens bij te houden, geen klinische beoordeling of diagnose. Als ik me zorgen maak, praat ik met mijn arts, niet met deze app.", + "learnMore": "Meer informatie" + }, + "anamnesis": { + "title": "Over je gezondheid (optioneel)", + "subtitle": "Een beetje context, zodat HealthLog je waarden eerlijker kan interpreteren.", + "intro": "Deel zoveel of zo weinig als je wilt. Elk veld is optioneel en je kunt het altijd aanpassen in Instellingen.", + "conditionsLabel": "Chronische aandoeningen", + "conditionsPlaceholder": "bijv. hoge bloeddruk, diabetes type 2", + "conditionsHint": "Helpt HealthLog je metingen in context te plaatsen in plaats van het verwachte te markeren.", + "allergiesLabel": "Allergieën of intoleranties", + "allergiesPlaceholder": "bijv. penicilline, lactose", + "privacyNote": "Versleuteld opgeslagen en alleen gebruikt om je betere context te geven. We vragen hier niet naar je medicatie. Die kun je altijd toevoegen via de pagina Medicatie." + }, + "ai": { + "panelTitle": "Bekijk hoe inzichten eruitzien", + "panelIntro": "Coach, de dagelijkse briefing en de toelichting per meetwaarde zetten je eigen cijfers om in begrijpelijke taal. Zo ziet dat eruit, nog voordat je iets koppelt.", + "showSample": "Voorbeeldbriefing bekijken", + "sampleTitle": "Dagelijkse briefing", + "sampleTag": "Voorbeeld", + "sampleAriaLabel": "Voorbeeld van een dagelijkse briefing", + "sampleBody": "Gewicht in twee weken 1,2 kg gedaald. Rusthartslag stabiel op 58 bpm. Bloeddruk binnen het bereik op 6 van de 7 dagen; de ene hoge meting volgde op een laat, zout avondeten.", + "sampleCaption": "Alleen een voorbeeld, niet je eigen gegevens. Zo leest een briefing zodra inzichten aanstaan.", + "ladderTitle": "Drie manieren om het aan te zetten", + "ladderLocalTitle": "Lokaal model: AI-verzoeken blijven op je eigen netwerk", + "ladderLocalBody": "Verwijs HealthLog naar Ollama of LM Studio op je eigen computer. Gratis en volledig privé, de rustige standaardkeuze.", + "ladderByokTitle": "Je eigen sleutel gebruiken", + "ladderByokBody": "Gebruik je eigen OpenAI- of Anthropic-sleutel. Die draait onder je eigen account en facturering, en via de API worden je gegevens standaard niet gebruikt voor training.", + "ladderOauthTitle": "Inloggen met een abonnement", + "ladderOauthBody": "Koppel een ChatGPT-account. Geen kosten per token, maar volgens de voorwaarden voor consumenten mag inhoud voor training worden gebruikt. Het is dus een bewuste keuze, nooit de standaard voor je gezondheidsgegevens.", + "keylessLine": "HealthLog is ook zonder AI volledig bruikbaar. Je tegels, grafieken, trends en exports werken allemaal. AI voegt alleen de toelichting in begrijpelijke taal toe.", + "setupCta": "Instellen (ongeveer een minuut)", + "sharedKeyNote": "Deze instantie biedt al een gedeelde AI-provider, dus inzichten werken nu al voor je, zonder instellen.", + "offer": { + "title": "Deze instantie kan je samenvatting in begrijpelijke taal schrijven.", + "body": "De beheerder stelt een provider beschikbaar die in de afgelopen 24 uur nog werkte. Met één tik zet je de toelichting in begrijpelijke taal aan; je gegevens gaan dan naar die ene provider en naar niemand anders.", + "cta": "Begrijpelijke taal aanzetten", + "granted": "Aangezet. De eerste samenvatting verschijnt op je dashboard.", + "error": "Aanzetten is niet gelukt. Probeer het zo meteen nog eens." + }, + "unavailable": { + "title": "De provider van deze instantie reageert op dit moment niet.", + "body": "HealthLog is ook zonder de toelichting in begrijpelijke taal volledig bruikbaar. Je kunt later onder Instellingen een eigen provider toevoegen." + } + }, + "steps": { + "who": "Voor wie dit dossier is", + "areas": "Wat je in de gaten wilt houden", + "medication": "Medicatie", + "sources": "Waar metingen vandaan komen", + "visit": "Doktersbezoek", + "units": "Eenheden", + "confirm": "Bevestigen", + "first-result": "Eerste resultaat", + "done": "Klaar" + }, + "flow": { + "welcome": { + "title": "Welkom bij HealthLog", + "body": "Vijf korte vragen bepalen wat HealthLog je als eerste laat zien. Het duurt ongeveer twee minuten.", + "changeLater": "Niets is definitief: elke keuze kun je later wijzigen onder Instellingen.", + "setUp": "Instellen", + "skip": "Nu overslaan", + "againBody": "Je installatie is voltooid. Beantwoord de vragen opnieuw om te wijzigen wat HealthLog als eerste laat zien, of ga naar het dashboard.", + "setUpAgain": "Opnieuw instellen" + }, + "who": { + "title": "Voor wie is dit dossier?", + "body": "De antwoorden die volgen gelden voor dit dossier.", + "options": { + "me": "Mijzelf", + "someone-else": "Iemand voor wie ik zorg", + "both": "Allebei" + }, + "hints": { + "someone-else": "Bijvoorbeeld een kind of een ouder. Het profiel wordt aan het eind aangemaakt.", + "both": "Stel nu je eigen dossier in; het profiel voor de andere persoon wordt aan het eind aangeboden." + } + }, + "areas": { + "title": "Wat wil je in de gaten houden?", + "body": "Kies er zoveel als je wilt. Deze keuzes bepalen welke modules worden aangezet en wat het dashboard als eerste laat zien.", + "options": { + "blood-pressure": "Bloeddruk", + "weight-body": "Gewicht en lichaam", + "glucose": "Bloedglucose", + "sleep": "Slaap en herstel", + "mood": "Stemming en mentaal welzijn", + "cycle": "Cyclus", + "activity": "Activiteit en trainingen", + "labs": "Labuitslagen", + "illness": "Ziektes en symptomen" + } + }, + "medication": { + "title": "Neem je medicatie volgens een schema in?", + "body": "Een schema zet de medicatiemodule en herinneringen aan.", + "options": { + "yes": "Ja", + "no": "Nee", + "sometimes": "Soms" + } + }, + "sources": { + "title": "Waar komen je metingen nu vandaan?", + "body": "Kies er zoveel als je wilt. Aan het eind wordt één koppeling aangeboden; geen enkele is verplicht.", + "options": { + "manual": "Ik voer ze zelf in", + "apple-health": "Apple Health op mijn iPhone", + "withings": "Withings", + "oura": "Oura", + "whoop": "WHOOP", + "polar": "Polar", + "fitbit": "Fitbit", + "strava": "Strava", + "nightscout": "Nightscout", + "file": "Een bestand dat ik al heb" + }, + "hints": { + "apple-health": "Gesynchroniseerd door de iOS-app, of geïmporteerd uit een export.", + "file": "Te importeren onder Instellingen zodra je hier klaar bent." + } + }, + "visit": { + "title": "Staat er een doktersbezoek op de planning?", + "body": "Een bezoek zet het artsenrapport aan en voegt de voorbereiding ervan toe aan je checklist.", + "options": { + "within-a-month": "Ja, binnen een maand", + "later": "Later", + "no": "Nee" + } + }, + "units": { + "title": "Welke eenheden gebruik je?", + "body": "Metingen worden één keer opgeslagen en getoond in de eenheid die je kiest. Je kunt dit later wijzigen onder Instellingen.", + "glucoseLegend": "Bloedglucose", + "weightLegend": "Gewicht en lengte", + "options": { + "metric": "kg en cm", + "imperial": "lb en ft/in" + } + }, + "confirm": { + "title": "Dit zetten je antwoorden aan", + "body": "Eén blik, en HealthLog is ingesteld. Niets hier is definitief.", + "modulesTitle": "Modules", + "switchedOn": "Aangezet: {modules}.", + "nothingExtra": "Je antwoorden zetten geen extra module aan; de basismetingen zijn er altijd.", + "alwaysOn": "Altijd aan: {modules}, en de basismetingen (gewicht, bloeddruk, hartslag).", + "everythingElse": "Al het andere staat op één klik afstand onder", + "modulesLink": "Instellingen, Modules", + "switchesOff": "Uit de navigatie gehaald: {modules}. Je kunt ze allemaal weer aanzetten onder Instellingen, Modules.", + "glucoseUnit": "Bloedglucose", + "unitPreference": "Eenheden", + "language": "Taal", + "timezone": "Tijdzone", + "changeInSettings": "Wijzig dit onder Instellingen, Account", + "cta": "Bevestigen en doorgaan", + "managedTitle": "De persoon voor wie je zorgt", + "managedBody": "Dit dossier heeft geen eigen login; je beheert het vanuit je eigen account. Om het aan te maken is een tweede factor of een passkey op je account vereist.", + "managedCreate": "Profiel aanmaken en afronden", + "managedLater": "Je kunt het ook later aanmaken onder Instellingen, Gedeelde toegang.", + "finishWithoutProfile": "Afronden zonder profiel" + }, + "first-result": { + "connect-source": { + "title": "{target} koppelen", + "body": "Eén koppeling, gekozen op basis van je antwoorden. Metingen komen daarna vanzelf binnen.", + "howTo": "De koppeling met {target} maak je op de pagina Koppelingen. Kom daarna hier terug; dit scherm merkt het zodra het klaar is.", + "cta": "{target} koppelen", + "checking": "Koppeling wordt gecontroleerd.", + "waiting": "Nog niet gekoppeld.", + "openSettings": "Instellingen → Koppelingen openen", + "noDate": "onbekend", + "needsCredentials": { + "title": "Deze instantie heeft nog geen {target}-app geregistreerd.", + "detail": "Voer je eigen inloggegevens in onder Instellingen → Koppelingen, daarna kan de koppeling starten." + }, + "state": { + "pending_first_sync": { + "title": "{target} is gekoppeld.", + "detail": "De eerste synchronisatie is bezig. Metingen verschijnen op het dashboard zodra ze binnenkomen." + }, + "fresh": { + "title": "{target} is al gekoppeld.", + "detail": "Laatste meting {when}. Hier hoef je niets meer te doen." + }, + "stale": { + "title": "{target} is gekoppeld, maar er komt op dit moment niets binnen.", + "detail": "Laatste meting {when}. De koppeling zelf werkt prima." + }, + "stalled": { + "title": "{target} is gekoppeld, maar synchroniseert niet meer.", + "detail": "Laatste poging {when}. Controleer de koppeling onder Instellingen → Koppelingen." + }, + "failing": { + "title": "{target} is gekoppeld, maar de synchronisatie mislukt steeds.", + "detail": "Sinds {when} is er niets binnengekomen. Controleer de koppeling onder Instellingen → Koppelingen." + }, + "reauth_required": { + "title": "De koppeling met {target} moet worden vernieuwd.", + "detail": "Log nog één keer in en de metingen lopen weer door." + }, + "parked": { + "title": "De koppeling met {target} is gepauzeerd.", + "detail": "Controleer de koppeling onder Instellingen → Koppelingen." + } + } + }, + "add-medication": { + "title": "Je eerste medicijn toevoegen", + "body": "Naam, dosis en schema; de herinnering volgt het schema dat je instelt.", + "howTo": "Het medicijn voeg je in een paar korte stappen toe. Meer kun je later toevoegen op de pagina Medicatie.", + "cta": "Medicijn toevoegen", + "done": "{name} is toegevoegd.", + "doneUnnamed": "Je eerste medicijn is toegevoegd.", + "nextDose": "Volgende dosis: {when}.", + "reminders": "Herinneringen volgen het schema dat je instelt.", + "recordOnly": "Alleen ter registratie: geen herinneringen, er wordt niets verwacht.", + "asNeeded": "Zo nodig: geen herinneringen, leg een dosis vast wanneer je die inneemt." + }, + "log-reading": { + "title": "Voer één meting in: {target}", + "body": "Eén meting zet de eerste waarde op je dashboard. Vanaf de vijfde verschijnt de trend vanzelf.", + "done": "Je eerste meting staat op de tegel.", + "doneElsewhere": "Je eerste invoer voor {target} is vastgelegd.", + "elsewhere": "{target} heeft een eigen pagina. Open die, maak de eerste invoer en kom dan terug om het als klaar te markeren.", + "open": "{target} openen", + "markDone": "Ik heb de invoer gedaan" + } + }, + "done": { + "tourCta": "Korte rondleiding volgen", + "openRecord": "Dossier van {name} openen", + "createProfile": "Profiel aanmaken voor de persoon voor wie je zorgt" + } + } + }, + "gettingStarted": { + "title": "Aan de slag", + "subtitle": "Snelle stappen om het meeste uit HealthLog te halen.", + "progress": "{done} van {total} klaar", + "dismissAll": "Checklist verbergen", + "dismissTooltip": "Dit item verbergen", + "items": { + "profileTitle": "Je profiel instellen", + "profileDescription": "Met lengte, geboortedatum en geslacht krijg je persoonlijke streefwaarden.", + "profileCta": "Profiel openen", + "measurementTitle": "Je eerste meting vastleggen", + "measurementDescription": "Eén meting activeert de tegel; de trend zelf verschijnt vanaf je 5e meting.", + "measurementCta": "Meting toevoegen", + "medicationTitle": "Een medicijn toevoegen", + "medicationDescription": "Houd je therapietrouw bij en krijg herinneringen precies wanneer je ze nodig hebt.", + "medicationCta": "Medicijn toevoegen", + "dataSourceTitle": "Een gegevensbron koppelen (optioneel)", + "dataSourceDescription": "Synchroniseer automatisch gewicht, bloeddruk, slaap en meer vanuit Withings, WHOOP, Oura, Polar, Nightscout, Fitbit of Apple Health.", + "dataSourceCta": "Koppelen", + "notificationsTitle": "Meldingen instellen", + "notificationsDescription": "Kies hoe HealthLog je herinneringen stuurt: Telegram, ntfy of Web Push.", + "notificationsCta": "Meldingen openen", + "insightsTitle": "Inzichten aanzetten (optioneel)", + "insightsDescription": "Voeg een lokaal model of je eigen AI-sleutel toe om de dagelijkse briefing en Coach te gebruiken.", + "insightsCta": "Inzichten aanzetten", + "visitTitle": "Het bezoek voorbereiden", + "visitDescription": "Zet de afspraak in de agenda; het artsenrapport bundelt wat je moet meenemen.", + "visitCta": "Bezoeken openen", + "dataSourceNamedTitle": "{source} koppelen", + "managedProfileTitle": "Het profiel aanmaken voor wie je zorgt", + "managedProfileDescription": "Je antwoorden gelden voor het dossier van iemand anders; dat wordt aangemaakt onder Gedeelde toegang.", + "managedProfileCta": "Profiel aanmaken" + } + }, + "trendHints": { + "title": "Eerste trend na 5 metingen", + "remainingOne": "Nog 1 meting te gaan.", + "remainingMany": "Nog {count} metingen te gaan." + }, + "settings": { + "oauthCallbackPreflightItem": "{provider}: callbackadres {configuredOrigin} wijkt af van het adres van deze app {currentOrigin}.", + "shell": { + "sectionsNav": "Onderdelen van Instellingen", + "groups": { + "account": "Account", + "yourData": "Je gegevens", + "display": "Weergave", + "healthProfile": "Gezondheidsprofiel", + "ai": "AI", + "connectivity": "Verbindingen", + "system": "Systeem" + } + }, + "sharedRecord": { + "managedSettings": { + "saveError": "Opslaan is niet gelukt. Probeer het opnieuw.", + "validationError": "Controleer je invoer.", + "profile": { + "title": "Profiel", + "displayName": "Weergavenaam", + "height": "Lengte (cm)", + "dateOfBirth": "Geboortedatum", + "gender": "Geslacht", + "notSpecified": "Niet opgegeven", + "male": "Man", + "female": "Vrouw", + "other": "Anders", + "locale": "Taal en regio", + "systemDefault": "Systeemstandaard", + "timezone": "Tijdzone", + "units": "Eenheden", + "metric": "Metrisch", + "imperial": "Imperiaal", + "timeFormat": "Tijdnotatie", + "automatic": "Automatisch", + "hour12": "12-uursnotatie", + "hour24": "24-uursnotatie", + "dateFormat": "Datumnotatie", + "dateDmy": "Dag / maand / jaar", + "dateMdy": "Maand / dag / jaar", + "dateYmd": "Jaar / maand / dag" + }, + "modules": { + "title": "Modules" + }, + "notifications": { + "title": "Meldingen", + "moodReminder": "Stemmingsherinnering inschakelen", + "reminderHour": "Tijdstip stemmingsherinnering (uur)", + "lowStockRunwayDays": "Resterende dagen bij lage voorraad", + "reorderLeadDays": "Dagen vooraf bijbestellen" + }, + "thresholds": { + "title": "Streefwaarden", + "metric": "Meetwaarde", + "minimum": "Minimum", + "maximum": "Maximum" + }, + "coach": { + "title": "Coach", + "disable": "Coach uitschakelen", + "tone": "Toon", + "warm": "Warm", + "neutral": "Neutraal", + "concise": "Bondig", + "verbosity": "Uitgebreidheid", + "brief": "Kort", + "default": "Standaard", + "detailed": "Uitgebreid", + "excludedMetrics": "Uitgesloten meetwaarden", + "dataClusters": "Gegevensclusters", + "customClusters": "Eigen clusterselectie gebruiken", + "metrics": { + "bp": "Bloeddruk", + "weight": "Gewicht", + "pulse": "Hartslag", + "mood": "Stemming", + "compliance": "Therapietrouw", + "hrv": "Hartslagvariabiliteit", + "sleep": "Slaap", + "restingHr": "Rusthartslag", + "steps": "Stappen", + "medications": "Medicatie", + "anthropometrics": "Lichaamsmaten" + }, + "clusters": { + "cardio": "Hart en bloedvaten", + "body": "Lichaamssamenstelling", + "activity": "Activiteit", + "workouts": "Trainingen", + "sleep": "Slaap", + "mood": "Stemming", + "glucose": "Glucose", + "medication": "Medicatie", + "mobility": "Mobiliteit", + "environment": "Omgeving" + } + }, + "insights": { + "title": "Inzichten", + "sections": "Overzichtsonderdelen", + "tiles": "Navigatietegels", + "order": "Volgorde", + "unknownItem": "Niet-beschikbaar inzicht", + "sectionLabels": { + "wellnessScores": "Welzijnsscores", + "dailyBriefing": "Dagelijkse briefing", + "vitals": "Vitale functies", + "trends": "Trends", + "periodReview": "Terugblik op periode", + "cycleSummary": "Cyclusoverzicht", + "signals": "Signalen", + "rhythmEvents": "Hartritmegebeurtenissen", + "healthStatus": "Gezondheidsstatus", + "breathing": "Ademhaling", + "labsChanges": "Veranderingen in labuitslagen", + "ecg": "ECG" + } + } + }, + "unavailableTitle": "Niet beschikbaar in dit gedeelde dossier", + "unavailableDescription": "Dit deel van Instellingen is bewust niet beschikbaar terwijl je het dossier van iemand anders bekijkt.", + "integrationStatusDescription": "Koppelingsstatus voor dit beheerde dossier.", + "integrationStatusDetail": "Een beheerd profiel toont de gekoppelde diensten alleen als status. Koppelen, opnieuw koppelen, synchroniseren en ontkoppelen zijn niet beschikbaar voor verzorgers.", + "integrationStatusDocs": "Hoe delen werkt" + }, + "sections": { + "account": { + "title": "Account", + "subtitle": "Je profiel, identiteit en inloggegevens." + }, + "integrations": { + "title": "Koppelingen", + "subtitle": "Koppel en beheer je gegevensbronnen en apparaten.", + "connectionsHeading": "Verbindingen", + "channelsHeading": "Bezorgkanalen", + "channelsDescription": "Waar herinneringen en waarschuwingen worden afgeleverd.", + "matrixLink": "Meldingen per kanaal" + }, + "notifications": { + "title": "Meldingen", + "subtitle": "Kies welke herinneringen je ontvangt en waar ze worden afgeleverd.", + "remindersHeading": "Herinneringen", + "matrixLink": "Meldingen per kanaal", + "channelsLink": "Bezorgkanalen", + "displayHeading": "Op je telefoon" + }, + "layout": { + "title": "Indeling", + "backToHub": "Terug naar Indeling", + "dashboard": { + "title": "Dashboard", + "description": "Indeling en volgorde van tegels." + }, + "insights": { + "title": "Inzichten", + "description": "Overzichtsonderdelen en volgorde van de navigatieknoppen." + }, + "subtitle": "Kies wat je dashboard, inzichten en registratiemodules laten zien, en in welke volgorde.", + "medications": { + "title": "Medicatie", + "description": "Lijstweergave en handmatige volgorde." + }, + "labs": { + "title": "Labuitslagen", + "description": "Weergave, sortering en handmatige volgorde." + }, + "illness": { + "title": "Ziektedagboek", + "description": "Lijstweergave en volgorde van episodes." + }, + "vorsorge": { + "title": "Preventieve controles", + "description": "Lijstweergave en volgorde van herinneringen." + }, + "mood": { + "title": "Stemmingstags", + "description": "Groepen, tags en gearchiveerde tags voor de stemmingskiezer." + }, + "documents": { + "title": "Documenten", + "description": "Weergave en indeling per maand." + } + }, + "dashboard": { + "subtitle": "Rangschik de tegels op je dashboard." + }, + "thresholds": { + "title": "Streefwaarden", + "subtitle": "Stel je persoonlijke streefbereiken per meetwaarde in." + }, + "sources": { + "title": "Bronprioriteit", + "integrationsHint": "Koppel of ontkoppel gegevensbronnen op de pagina Koppelingen.", + "integrationsHintLink": "Koppelingen openen", + "cardTitle": "Rangorde per meetwaarde", + "help": "Als meerdere bronnen op dezelfde dag dezelfde waarde leveren, telt de bovenste bron als leidend.", + "resetDefaults": "Standaardwaarden herstellen", + "resetDefaultsTitle": "Bronvolgorde herstellen?", + "resetDefaultsBody": "Elke rangorde die je hebt ingesteld gaat terug naar de standaardvolgorde, voor alle meetwaarden en apparaattypen tegelijk. Dit wordt direct opgeslagen en kan niet worden teruggezet.", + "resetDefaultsConfirm": "Volgorde herstellen", + "moveUp": "Omhoog", + "moveDown": "Omlaag", + "saveSuccess": "Bronprioriteit opgeslagen", + "saveError": "Opslaan van de bronprioriteit is mislukt.", + "resetSuccess": "Bronprioriteit teruggezet naar standaard", + "perMetricToggle": "Afwijkingen per meetwaarde ({count})", + "perMetricHelp": "Meetwaarden waarvoor je de standaardrangorde hebt aangepast. Gebruik deze lijst om één meetwaarde terug te zetten naar de vaste standaard zonder de rest aan te raken.", + "perMetricEmpty": "Geen afwijkingen per meetwaarde ingesteld. Elke meetwaarde gebruikt de algemene rangorde hierboven.", + "resetMetric": "Herstellen", + "deviceTypeToggle": "Prioriteit per apparaattype ({count})", + "deviceTypeHelp": "Welk apparaat binnen een bron voorrang krijgt. Als een Apple Watch en een iPhone allebei stappen registreren, telt het hoger gerangschikte apparaattype als de leidende meting.", + "deviceTypeDefault": "Standaardrangorde apparaattypen", + "resetDeviceTypes": "Apparaattypen herstellen", + "metrics": { + "steps": "Stappen", + "activeEnergy": "Actieve energie", + "walkingRunningDistance": "Afstand wandelen + hardlopen", + "flightsClimbed": "Trappen beklommen", + "sleep": "Slaap", + "weight": "Gewicht", + "bloodPressure": "Bloeddruk", + "pulse": "Hartslag", + "bodyFat": "Vetpercentage", + "bodyTemperature": "Lichaamstemperatuur", + "spo2": "Zuurstofsaturatie", + "hrv": "Hartslagvariabiliteit", + "restingHeartRate": "Rusthartslag", + "vo2Max": "VO2max", + "skinTemperature": "Huidtemperatuur", + "respiratoryRate": "Ademhalingsfrequentie", + "recovery": "Herstel", + "stress": "Stress", + "sleepDebt": "Slaaptekort", + "hrvRmssd": "HRV (RMSSD)" + }, + "sourceLabels": { + "WITHINGS": "Withings", + "APPLE_HEALTH": "Apple Health", + "MANUAL": "Handmatige invoer", + "IMPORT": "Import", + "WHOOP": "WHOOP", + "FITBIT": "Fitbit", + "COMPUTED": "Berekend", + "NIGHTSCOUT": "Nightscout", + "POLAR": "Polar", + "OURA": "Oura", + "TELEGRAM": "Telegram", + "MCP": "MCP", + "GOOGLE_HEALTH": "Google Health", + "STRAVA": "Strava", + "EXTERNAL": "Extern apparaat", + "HEALTH_CONNECT": "Health Connect" + }, + "deviceLabels": { + "watch": "Horloge", + "band": "Polsband", + "ring": "Ring", + "phone": "Telefoon", + "scale": "Weegschaal", + "other": "Overig", + "unknown": "Onbekend" + }, + "subtitle": "Bepaal welke bron voorrang krijgt als twee bronnen dezelfde meetwaarde melden.", + "nutrients": { + "title": "Gesynchroniseerde inname van voedingsstoffen", + "description": "Dagtotalen over de afgelopen {days} dagen: wat Apple Health heeft gesynchroniseerd plus de supplementen die je hebt ingenomen.", + "empty": "Er zijn nog geen gegevens over voedingsstoffen gesynchroniseerd.", + "latest": "{amount} {unit} op {date}", + "daysWithData": "{count} van {days} dagen", + "moduleHint": "Synchronisatie wordt geregeld door de module Inname van voedingsstoffen.", + "moduleHintLink": "Modules beheren", + "detail": "Alleen-lezen: de bron-app beheert de cijfers." + }, + "helpDetail": "De andere blijven bewaard voor de audittrail. Alleen bronnen die je hebt gekoppeld of waarvan je gegevens hebt, worden getoond.", + "noneInUse": "Nog geen bron om te rangschikken. Koppel er een onder Koppelingen of leg een waarde vast." + }, + "ai": { + "title": "AI-provider", + "subtitle": "Kies je AI-provider en gebruik je eigen sleutel." + }, + "api": { + "title": "API en tokens", + "subtitle": "Beheer API-endpoints en toegangstokens." + }, + "advanced": { + "title": "Geavanceerd", + "subtitle": "Gegevens resetten en account verwijderen." + }, + "export": { + "title": "Exporteren en importeren", + "otherOptionsHeading": "Andere exportopties", + "downloadFailed": "De export kon niet worden gedownload. Probeer het opnieuw.", + "actions": { + "download": "Downloaden" + }, + "filters": { + "since": "Van", + "until": "Tot" + }, + "cards": { + "measurementsCsv": { + "title": "Metingen", + "description": "Gewicht, bloeddruk, hartslag, glucose en alle andere metingen als kommagescheiden waarden." + }, + "medicationsCsv": { + "title": "Medicatie", + "description": "Je medicatielijst met dosering, schema's en (optioneel) de volledige innamegeschiedenis.", + "includeIntake": "Innamegeschiedenis meenemen" + }, + "moodCsv": { + "title": "Stemming", + "description": "Dagelijkse stemmingsregistraties met score, tags en tijdstempels." + }, + "fullBackup": { + "title": "Volledige back-up", + "description": "Je hele dossier in één JSON-bestand.", + "scopeNote": "Metadata van documenten en de door AI gegenereerde samenvatting, als die er is, worden als platte tekst meegenomen; originele documentbestanden en GPS- en sensorgegevens van trainingen niet. Download die apart uit de kluis of via de trainingsexport.", + "encryptToggle": "Versleutelen met een wachtzin", + "passphrasePlaceholder": "Wachtzin (min. 12 tekens)", + "passphraseHelp": "Leidt de archiefsleutel af met Argon2id en versleutelt het archief met AES-256-GCM. Sla het bestand op met de extensie .hlx.", + "noRecoveryWarning": "Herstellen is niet mogelijk. Als je deze wachtzin kwijtraakt, kan het archief niet worden geopend. Bewaar hem op een veilige plek.", + "detail": "Zelfde opbouw als de wekelijkse automatische back-up. Sommige soorten gegevens worden nog niet meegenomen; het manifest van het bestand vermeldt wat erin zit.", + "contents": "Je metingen, medicatie, stemming, cyclus, labuitslagen, ziekte-episodes, allergieën, familiegeschiedenis, voedingsstoffen, trainingen, gezondheidsprofiel en eigen meetwaarden in één JSON-bestand." + } + }, + "import": { + "heading": "Importeren", + "description": "Breng gegevens naar HealthLog vanuit een Apple Health-export, een JSON-bestand of een CSV. Bij het importeren worden rijen die al bestaan overgeslagen, dus een import opnieuw uitvoeren is veilig.", + "charCount": "{used} / {max} tekens", + "appleHealth": { + "title": "Apple Health", + "description": "Upload het bestand export.zip uit de Gezondheid-app op je iPhone (Profiel → Exporteer alle gezondheidsgegevens).", + "dropLabel": "Sleep export.zip hierheen", + "dropHint": "of klik om een bestand te kiezen", + "fileInputLabel": "Kies een export.zip-bestand van Apple Health", + "choose": "Bestand kiezen", + "idempotencyNote": "Als je hetzelfde archief opnieuw uploadt, wordt het samengevoegd zonder dubbele gegevens. Grote archieven worden op de achtergrond verwerkt.", + "uploading": "Uploaden…", + "uploadFailed": "Uploaden mislukt. Probeer het opnieuw.", + "rateLimited": "Te veel uploads. Wacht even en probeer het opnieuw.", + "tooLarge": "Dat bestand is te groot (limiet 1,5 GB).", + "failed": "De import is mislukt.", + "failureInterrupted": "De import werd onderbroken voordat hij klaar was, meestal door een herstart van de server of een stop wegens geheugentekort. Je gegevens zijn veilig; upload de export opnieuw om het nog eens te proberen.", + "failureInsufficientMemory": "De geheugenlimiet van de server is te laag voor een archief van deze grootte. Vraag de beheerder van de server om de heap-limiet van Node.js te verhogen (NODE_OPTIONS=--max-old-space-size) en upload de export daarna opnieuw.", + "rowsImported": "Tot nu toe {count} rijen geïmporteerd", + "doneSummary": "Klaar: {imported} van {read} records geïmporteerd, {skipped} klinische records overgeslagen.", + "doneNothing": "Er is niets uit dat archief geïmporteerd: 0 van {read} records zijn opgeslagen.", + "writtenByHealthLogOne": "{count} record dat HealthLog zelf naar Apple Health had geschreven, is weggelaten, omdat het al in je gegevens staat.", + "writtenByHealthLogOther": "{count} records die HealthLog zelf naar Apple Health had geschreven, zijn weggelaten, omdat ze al in je gegevens staan.", + "writtenByHealthLogFew": "{count} records die HealthLog zelf naar Apple Health had geschreven, zijn weggelaten, omdat ze al in je gegevens staan.", + "ecgResult": "ECG's: {discovered} gevonden, {imported} geïmporteerd, {updated} bijgewerkt, {skipped} overgeslagen, {failed} mislukt. Mislukte ECG's maken ondersteunde records die uit export.xml zijn geïmporteerd niet ongedaan.", + "estimateWarning": "Cumulatieve totalen voor {count} dag(en) zijn geschat op basis van de grootste bron in de export. De eigen statistieken van Apple Health blijven leidend.", + "phase": { + "queued": "In de wachtrij…", + "unpacking": "Archief uitpakken…", + "parsing": "Export lezen…", + "upserting": "Records importeren…" + }, + "skipUnsupported": "{count} samples overgeslagen: gegevenstypen die HealthLog niet importeert.", + "skipRefused": "{count} samples konden niet worden opgeslagen (onleesbaar, buiten het bereik, of het opslaan mislukte).", + "skipBreakdown": "Uitsplitsing tonen ({count} typen)", + "skipBreakdownMore": "+ nog {count} typen", + "cycleSummary": "{samples} cyclussamples samengevoegd in {days} dagregistraties.", + "cycleModuleOff": "{count} cyclussamples overgeslagen omdat cyclusregistratie voor dit account uitstaat.", + "cycleDaysFailed": "{count} cyclusdagen konden niet worden opgeslagen: {reason}" + }, + "json": { + "title": "JSON-bestand", + "description": "Plak JSON of upload een .json-bestand met metingen en stemmingsregistraties.", + "pasteLabel": "JSON plakken", + "fileInputLabel": "Kies een JSON-bestand om te importeren", + "schemaHint": "Twee arrays: measurements en moodEntries.", + "docsLink": "Bekijk het schema en een voorbeeld.", + "uploadFile": "Bestand uploaden", + "downloadExample": "Voorbeeld downloaden", + "import": "Importeren", + "invalidJson": "Dat is geen geldige JSON. Controleer de syntaxis en probeer het opnieuw.", + "invalidPayload": "De gegevens komen niet overeen met het importschema.", + "rateLimited": "Te veel imports dit uur (limiet 5). Probeer het later opnieuw.", + "failed": "De import is mislukt. Probeer het opnieuw.", + "readFailed": "Dat bestand kon niet worden gelezen.", + "resultSummary": "{measurements} metingen en {moods} stemmingsregistraties geïmporteerd, {skipped} overgeslagen.", + "resultSuccess": "{measurements} metingen en {moods} stemmingsregistraties geïmporteerd", + "resultNothing": "Er is niets geïmporteerd. Alle {skipped} registraties zijn overgeslagen.", + "resultEmpty": "Dat bestand bevatte geen metingen en geen stemmingsregistraties." + }, + "csv": { + "title": "CSV-bestand", + "description": "Importeer metingen uit een spreadsheet of een export van een meetapparaat.", + "pasteLabel": "CSV plakken", + "fileInputLabel": "Kies een CSV-bestand om te importeren", + "schemaHint": "Kolommen: type, value, unit, measuredAt (met tijdzoneverschil), en optioneel glucoseContext, notes, externalId.", + "docsLink": "Bekijk het kolomschema en een voorbeeld.", + "uploadFile": "Bestand uploaden", + "downloadExample": "Voorbeeld downloaden", + "preview": "Voorbeeld", + "import": "Importeren", + "empty": "Voeg minstens één CSV-rij toe voordat je importeert.", + "rateLimited": "Te veel imports dit uur (limiet 5). Probeer het later opnieuw.", + "tooLarge": "Dat bestand is te groot (limiet 16 MB).", + "invalidPayload": "De CSV kon niet worden verwerkt. Controleer de kopregel en probeer het opnieuw.", + "failed": "De import is mislukt. Probeer het opnieuw.", + "readFailed": "Dat bestand kon niet worden gelezen.", + "previewSummary": "Voorbeeld: {inserted} zouden worden geïmporteerd, {skipped} overgeslagen.", + "resultSummary": "{inserted} nieuw geïmporteerd en {updated} bijgewerkt, {skipped} overgeslagen.", + "rowError": "Regel {line}: {reason}", + "resultSuccess": "{inserted} nieuw geïmporteerd en {updated} bijgewerkt", + "resultNothing": "Er is niets geïmporteerd. Alle {skipped} rijen zijn overgeslagen.", + "resultEmpty": "Dat bestand heeft een kopregel maar geen gegevensrijen.", + "previewSuccess": "Voorbeeld: {inserted} zouden worden geïmporteerd", + "previewNothing": "Voorbeeld: er zou niets worden geïmporteerd. Alle {skipped} rijen zouden worden overgeslagen.", + "skipGroupOne": "{count} rij overgeslagen: {reason}", + "skipGroupFew": "{count} rijen overgeslagen: {reason}", + "skipGroupOther": "{count} rijen overgeslagen: {reason}", + "skipDetails": "Alle overgeslagen rijen tonen", + "reasonUnknownType": "onbekend metingtype", + "reasonInvalidValue": "waarde is geen getal", + "reasonValueOutOfRange": "waarde buiten het plausibele bereik", + "reasonUnknownUnit": "eenheid niet herkend voor dit type", + "reasonMissingTimezoneOffset": "tijdstempel heeft geen tijdzoneverschil", + "reasonInvalidTimestamp": "tijdstempel kon niet worden gelezen", + "reasonImplausibleTimestamp": "tijdstempel ligt in de toekomst of vóór 1900", + "reasonUnexpectedGlucoseContext": "glucosecontext ingesteld op een rij die geen bloedglucose is", + "reasonInvalidGlucoseContext": "glucosecontext is geen van de toegestane waarden", + "reasonNotesTooLong": "notitie is te lang", + "reasonExternalIdTooLong": "externe ID is te lang", + "reasonUnstableExternalId": "externe ID is niet stabiel tussen exports", + "reasonDuplicate": "al geïmporteerd", + "reasonUnknown": "overgeslagen", + "detail": "Eén rij per meting." + }, + "doseHistory": { + "title": "Doseringsgeschiedenis medicatie", + "description": "Een doseringsgeschiedenis die uit een andere medicatie-app is geëxporteerd, ingelezen zoals die is.", + "pasteLabel": "Export plakken", + "fileInputLabel": "Kies een exportbestand met doseringsgeschiedenis", + "uploadFile": "Bestand kiezen", + "preview": "Voorbeeld", + "import": "Importeren", + "empty": "Plak eerst de export of kies een bestand.", + "readFailed": "Dat bestand kon niet worden gelezen.", + "rateLimited": "Maximaal 5 imports per uur. Probeer het later opnieuw.", + "tooLarge": "Dat bestand is groter dan de limiet van 16 MB.", + "inProgress": "Er loopt al een import van doseringsgeschiedenis. Wacht tot die klaar is.", + "workerUnavailable": "De achtergrondverwerking is niet beschikbaar, dus er is niets geïmporteerd.", + "failed": "De import is mislukt. Er is niets opgeslagen.", + "columnsHeading": "Wat elke kolom doet", + "jsonOnly": "Alleen JSON", + "previewLine": "{rows} rijen gelezen, {queued} zouden worden geïmporteerd, {refused} geweigerd", + "submittedLine": "{rows} rijen gelezen, {queued} in de wachtrij voor import", + "unmatched": "Geen geregistreerd medicijn komt overeen met: {names}", + "ambiguous": "Komt overeen met meer dan één medicijn: {names}", + "mirrored": "Overgenomen uit een andere app, dus er kan geen dosis worden toegevoegd: {names}", + "unknownColumns": "Kolommen waarvoor de import geen regel heeft, niet ingelezen: {names}", + "codingsNotRead": "Rijen met een Codings-waarde die niet is ingelezen: {count}", + "archivedRowsPresent": "Rijen gemarkeerd als behorend bij gearchiveerde medicatie: {count}. Die markering slaat ze niet over en heractiveert ze ook niet; het eindresultaat vermeldt wat er is toegevoegd.", + "verdict": { + "honoured": "gebruikt", + "reported": "gemeld", + "ignored": "niet ingelezen" + }, + "column": { + "date": "Het tijdstip waarop de dosis daadwerkelijk is ingenomen. Het UTC-verschil wordt precies zo gelezen als het er staat.", + "scheduledDate": "Het innamemoment waartoe de dosis hoorde, apart gehouden van het tijdstip van inname. Leeg betekent dat de dosis bij geen enkel innamemoment hoorde.", + "medication": "Vergeleken met een medicijn dat al in je dossier staat. Er wordt niets aangemaakt op basis van het bestand.", + "nickname": "Wordt als tweede naam geprobeerd als de eerste nergens mee overeenkomt.", + "dosage": "Wordt alleen bij de dosis vastgelegd als die afwijkt van de geplande hoeveelheid.", + "scheduledDosage": "Wordt vergeleken met de werkelijke hoeveelheid om te bepalen of die dosis afweek. Wordt nooit apart opgeslagen.", + "unit": "Wordt bij de hoeveelheid opgeslagen, gespeld zoals in het bestand. \"count\" betekent een veelvoud van de ingestelde dosis.", + "status": "\"Taken\" wordt een dosis en \"Skipped\" een bewust overgeslagen dosis. Elke andere waarde legt geen beslissing vast en de rij wordt geweigerd.", + "archived": "Wordt geteld en teruggemeld. Een dosis die is ingenomen, wordt niet ongedaan gemaakt doordat je de medicatie later archiveert.", + "codings": "De CSV geeft voor deze kolom geen gedocumenteerde codering, dus wordt die ongemoeid gelaten in plaats van geraden. Gevulde cellen worden geteld.", + "form": "Beschrijft de medicatie, niet de dosis.", + "start": "De datum waarop je met de medicatie bent begonnen, niet het tijdstip van deze dosis.", + "end": "De datum waarop je met de medicatie bent gestopt, niet het tijdstip van deze dosis." + }, + "fatal": { + "emptyFile": "Dat bestand bevat geen rijen.", + "missingColumns": "In dat bestand ontbreekt een kolom die de import nodig heeft: Date, Medication of Status.", + "unreadableJson": "Dat bestand is geen geldige JSON.", + "jsonNotAnArray": "Die JSON bevat geen lijst met doses.", + "jsonNoIntakeTime": "De JSON-export legt vast wanneer een dosis gepland was, maar niet wanneer die is ingenomen, en een gepland tijdstip wordt niet opgeslagen alsof het de inname was. Exporteer in plaats daarvan de CSV, die beide bevat.", + "tooManyRows": "Dat bestand bevat meer rijen dan één import aankan. Splits het en importeer de delen." + }, + "detail": "Eén bestand omvat alle medicatie die erin staat." + }, + "healthConnect": { + "title": "Health Connect-export", + "description": "Importeer het ZIP-bestand dat de Health Connect-app op Android aanmaakt wanneer je je gegevens exporteert.", + "choose": "ZIP-bestand kiezen", + "uploading": "Uploaden…", + "uploadFailed": "Het uploaden is mislukt. Probeer het opnieuw.", + "tooLarge": "Het bestand is groter dan deze server accepteert.", + "doneSummary": "{count} waarden geïmporteerd.", + "failed": "De import is mislukt: {reason}", + "phase": { + "queued": "Wachten op start", + "unpacking": "Bestand uitpakken", + "parsing": "Gegevens lezen", + "upserting": "Waarden opslaan", + "done": "Voltooid", + "failed": "Mislukt" + }, + "steps": { + "export": "Open op je Android-telefoon Health Connect, ga naar Gegevens beheren en daarna naar Exporteren en importeren, en start een export.", + "cloud": "Health Connect slaat de export alleen op in een cloudopslag-app zoals Google Drive, Dropbox of Nextcloud, nooit op de telefoon zelf. Kies daar een app.", + "upload": "Download het ZIP-bestand uit die cloud naar dit apparaat en upload het hier." + }, + "dropLabel": "Sleep het Health Connect-ZIP-bestand hierheen", + "dropHint": "of klik om het te kiezen. Maximaal 1 GB.", + "fileInputLabel": "ZIP-bestand van Health Connect-export", + "privacyNote": "Het bestand wordt van de server verwijderd zodra de import klaar is. Gegevens van apps die je al rechtstreeks koppelt, zoals Withings of Fitbit, worden overgeslagen, zodat niets dubbel binnenkomt. Hetzelfde bestand opnieuw uploaden verandert niets.", + "rateLimited": "Te veel uploads in korte tijd. Wacht een minuut en probeer het opnieuw.", + "busy": "Er loopt al een import voor je account. Wacht tot die klaar is.", + "rowsSoFar": "Tot nu toe {count} waarden opgeslagen", + "doneNothing": "De import is voltooid, maar er was niets nieuws om toe te voegen.", + "workouts": "Trainingen", + "leftOutConnected": "{count} gegevens van apps die je al rechtstreeks koppelt, zijn overgeslagen.", + "nutrientsModuleOff": "Totalen voor water en voedingsstoffen zijn niet geïmporteerd, omdat de module Voedingsstoffen is uitgeschakeld.", + "cycleModuleOff": "Menstruatiegegevens zijn niet geïmporteerd, omdat het bijhouden van je cyclus is uitgeschakeld.", + "failure": { + "unsupportedVersion": "Deze Health Connect-export is te oud om te lezen. Werk Health Connect op de telefoon bij en exporteer opnieuw.", + "notHealthConnect": "Dit bestand is geen Health Connect-export. Kies het ZIP-bestand dat Health Connect heeft opgeslagen.", + "unsafeSchema": "Dit bestand heeft niet de structuur van een Health Connect-export en is niet gelezen.", + "tooLarge": "De export is groter dan deze server accepteert.", + "stagingMissing": "Het geüploade bestand stond niet meer op de server. Upload het opnieuw.", + "interrupted": "De import is onderbroken doordat de server opnieuw is gestart. Upload het bestand opnieuw." + } + } + }, + "subtitle": "Exporteer je gegevens of importeer ze uit een back-up." + }, + "about": { + "title": "Over deze app", + "subtitle": "Versie, licentie en projectlinks." + }, + "sharing": { + "title": "Delen", + "subtitle": "Geef alleen-lezentoegang tot je gegevens." + }, + "insights": { + "subtitle": "Rangschik de secties van je overzicht en de volgorde van de chips." + }, + "medications": { + "subtitle": "Beheer de weergave en volgorde van je medicatielijst." + }, + "mood": { + "subtitle": "Orden je stemmingstags, groepen en de volgorde in de kiezer." + }, + "labs": { + "subtitle": "Beheer de weergave, sorteervolgorde en biomarkers." + }, + "illness": { + "subtitle": "Beheer de weergave en volgorde van episodes." + }, + "vorsorge": { + "subtitle": "Beheer de weergave, volgorde en afzonderlijke herinneringen." + }, + "modules": { + "title": "Modules", + "saved": "Opgeslagen", + "error": "Opslaan is mislukt. Probeer het opnieuw.", + "toggleable": { + "title": "Wat je bijhoudt", + "description": "Uitgeschakelde modules verdwijnen uit de navigatie, tegels en inzichten, terwijl je gegevens onaangeroerd blijven." + }, + "manageIn": "Beheren in {section}", + "operatorDisabled": "Op de hele server uitgeschakeld", + "subtitle": "Kies welke onderdelen HealthLog in de hele app toont." + }, + "gesundheitsakte": { + "title": "Gezondheidsdossier", + "subtitle": "Exporteer een volledig gezondheidsdossier dat klaar is voor je zorgverlener." + }, + "coach": { + "title": "Coach", + "subtitle": "Stem de Coach, zijn proactieve tips en zijn geheugen af." + }, + "security": { + "title": "Beveiliging", + "subtitle": "Tweestapsverificatie, herstelcodes en passkeys." + }, + "privacy": { + "title": "Gegevens en privacy", + "subtitle": "Je gegevens, bewaartermijnen, versleuteling en accountbeveiliging op één plek." + }, + "mcp": { + "title": "MCP-connector", + "subtitle": "Koppel een externe assistent aan je eigen gezondheidsgegevens." + }, + "anamnesis": { + "title": "Medische voorgeschiedenis", + "subtitle": "Je medische achtergrond, leefstijl, noodgegevens en wat de AI mag lezen." + }, + "environment": { + "title": "Locatie en weer", + "subtitle": "Context over weer, daglicht en locatie.", + "disabledHint": "Schakel de module Omgeving in om een thuislocatie in te stellen en dagelijks weer- en daglichtgegevens op te halen.", + "searchPlaceholder": "Zoek een stad", + "search": "Zoeken", + "searchError": "Zoeken naar die plaats is mislukt.", + "use": "Gebruiken", + "select": "Selecteren", + "saveError": "Je wijziging kon niet worden opgeslagen.", + "homeSaved": "Thuislocatie opgeslagen", + "travelAdded": "Locatieperiode toegevoegd.", + "travelRemoved": "Locatieperiode verwijderd.", + "backfillQueued": "Aanvullen ingepland.", + "backfillError": "Het aanvullen kon niet worden gestart.", + "startDate": "Startdatum", + "endDate": "Einddatum", + "storedDays": "{count} dagen weergegevens opgeslagen.", + "home": { + "title": "Thuislocatie", + "description": "Een grove locatie op stadsniveau, nooit een exact spoor. Weer en daglicht worden voor deze plaats opgehaald op dagen waarvoor geen locatieperiode geldt, vanaf de datum waarop je de locatie instelt.", + "current": "Huidig: {label}", + "none": "Nog geen thuislocatie ingesteld.", + "since": "Weer wordt bijgehouden vanaf {date}. Eerdere dagen blijven leeg tot je een locatieperiode toevoegt." + }, + "travel": { + "title": "Locatieperiodes", + "description": "Voeg een plaats en een datumbereik toe, zoals een reis of een periode uit het verleden. De periode vervangt je thuislocatie voor de dagen die ze omvat, zodat het weer overeenkomt met waar je echt was. Zo corrigeer je het verleden.", + "none": "Nog geen locatieperiodes.", + "add": "{label} toevoegen", + "remove": "Locatieperiode verwijderen", + "removeConfirmTitle": "Deze reis verwijderen?", + "removeConfirmBody": "Metingen die tijdens de reis zijn gedaan, blijven in je dossier; alleen de reisregistratie verdwijnt.", + "range": "{start} tot {end}", + "suggestionsIntro": "Dawarich heeft dagen in het buitenland gevonden die nog door geen enkele periode worden gedekt.", + "suggestionUse": "Gebruiken", + "suggestionDismiss": "Suggestie negeren" + }, + "backfill": { + "title": "Eerdere dagen aanvullen", + "description": "Haal het weer voor een datumbereik in het verleden op en sla het op, zodat oudere dagen meetellen in de correlaties. De start is standaard de ingangsdatum van je thuislocatie; om verder terug te gaan, voeg je eerst een locatieperiode voor dat bereik toe.", + "run": "Aanvullen" + }, + "noResults": "Geen overeenkomende plaatsen gevonden.", + "fetchFailedOne": "De laatste weerupdate op de achtergrond is mislukt ({when}).", + "fetchFailedFew": "De laatste {count} weerupdates op de achtergrond zijn mislukt, het laatst {when}.", + "fetchFailedOther": "De laatste {count} weerupdates op de achtergrond zijn mislukt, het laatst {when}.", + "airQuality": { + "title": "Luchtkwaliteit en pollen", + "description": "Dagelijkse luchtkwaliteit, pollen en uv voor je locatie, afkomstig van het CAMS-model via Open-Meteo.", + "toggle": "Luchtkwaliteit en pollen meenemen", + "operatorDisabled": "Luchtkwaliteit is op deze server uitgeschakeld.", + "coverage": "{count} dagen met gegevens over luchtkwaliteit", + "pollenEuropeOnly": "Pollengegevens zijn alleen beschikbaar voor Europa.", + "historyProgress": "Luchtkwaliteit aanvullen: {done} van {total} dagen", + "historyComplete": "Luchtkwaliteit is ingevuld voor elke eerdere dag met registraties die de bron dekt ({total} dagen). Oudere dagen blijven leeg.", + "attribution": "Gegevensbronnen en licenties", + "saveError": "De instelling kon niet worden opgeslagen.", + "latest": "Nieuwste dag ({date})", + "modelNote": "Gemodelleerde buitenwaarden voor je omgeving, niet je persoonlijke blootstelling." + } + }, + "score": { + "title": "Gezondheidsscore", + "subtitle": "Kies welke pijlers meetellen voor je score.", + "card": { + "title": "Wat meetelt voor je score", + "description": "Elke pijler die je vastlegt, telt mee, tenzij je hier iets anders aangeeft." + }, + "threeAxes": "Vastleggen, tonen en meetellen zijn drie verschillende dingen. Deze pagina wijzigt alleen het laatste. Een pijler die je hier uitschakelt, wordt gewoon verder vastgelegd en blijft overal elders in HealthLog zichtbaar; hij beïnvloedt alleen het getal niet meer.", + "recommendation": "Drie gezondheidsgebieden is een aanbeveling, geen vereiste: een selectie met minstens één pijler kan worden opgeslagen. Een smallere score wordt op dezelfde manier berekend en vermeldt op de kaart op hoeveel gebieden hij is gebaseerd.", + "axis": { + "countsFor": "{pillar} laten meetellen voor de score" + }, + "state": { + "counting": "Telt mee voor je score", + "waiting": "Geselecteerd, wacht op gegevens", + "crisis": "In plaats van een score wordt veiligheidsinformatie getoond. Je selectie is in orde.", + "readFailed": "Deze pijler kon bij de laatste berekening niet worden gelezen." + }, + "presets": { + "label": "Beginnen met", + "all": "Alle pijlers", + "current": "Je opgeslagen selectie" + }, + "save": "Opslaan", + "saved": "Opgeslagen", + "error": "Opslaan is mislukt. Probeer het opnieuw.", + "loadFailed": "Je selectie kon niet worden geladen.", + "eligibilityFailed": "Kon niet controleren welke pijlers momenteel gegevens hebben. De schakelaars hieronder werken nog steeds.", + "omitted": "{count} pijlers worden niet getoond, omdat het bijhouden ervan is uitgeschakeld. Schakel een module weer in en de bijbehorende pijler komt terug.", + "omittedLink": "Modules openen", + "refusal": { + "empty": "Een gezondheidsscore heeft minstens één gezondheidsgebied nodig om te berekenen. Houd er één geselecteerd; de score vermeldt op welke gebieden hij is gebaseerd." + }, + "notice": { + "upgrade": { + "title": "Je kiest nu zelf wat meetelt", + "body": "Welke pijlers meetelden voor je gezondheidsscore, volgde vroeger uit de modules die je had ingeschakeld. Dat is nu een aparte keuze, en op deze pagina maak je die. Je getal is niet veranderd door deze update: het telt nog precies mee wat het eerder meetelde." + }, + "changed": { + "title": "Je hebt gewijzigd wat meetelt", + "body": "Sinds {date} wordt je score berekend op basis van een andere set pijlers. Dagen daarvoor zijn berekend met de oude set, dus de twee worden niet met elkaar vergeleken en de wekelijkse verandering blijft gepauzeerd tot de wijziging buiten het vergelijkingsvenster valt. De eigen geschiedenis van elke pijler loopt gewoon door.", + "bodyUndated": "Je score wordt berekend op basis van een andere set pijlers dan voorheen. Dagen vóór de wijziging zijn berekend met de oude set, dus de twee worden niet met elkaar vergeleken en de wekelijkse verandering blijft gepauzeerd tot de wijziging buiten het vergelijkingsvenster valt. De eigen geschiedenis van elke pijler loopt gewoon door." + }, + "composition": { + "title": "Wat meetelt is vanzelf veranderd", + "left": "Telt niet meer mee voor je score: {pillars}. Het getal is daardoor veranderd, niet doordat je gezondheid is veranderd.", + "joined": "Telt nu mee voor je score: {pillars}." + }, + "dismiss": "Begrepen", + "dismissError": "Dat kon niet worden opgeslagen. Probeer het opnieuw." + } + }, + "access": { + "title": "Gedeelde toegang", + "subtitle": "Wie je gezondheidsdossier kan openen, en wiens dossier jij kunt openen." + } + }, + "profile": "Profiel", + "language": "Taal", + "languageDescription": "Kies de weergavetaal van de applicatie.", + "timeFormat": { + "title": "Tijdnotatie", + "description": "Bepaalt of tijden worden weergegeven in de 24-uursnotatie of de 12-uursnotatie (AM/PM).", + "auto": "Automatisch (taal)", + "h24": "24-uurs", + "h12": "12-uurs (AM/PM)", + "saved": "Tijdnotatie opgeslagen", + "saveError": "Het opslaan van de tijdnotatie is mislukt." + }, + "dateFormat": { + "title": "Datumnotatie", + "description": "Bepaalt de volgorde van dag, maand en jaar wanneer datums worden weergegeven.", + "auto": "Automatisch (taal)", + "dmy": "DD.MM.JJJJ", + "mdy": "MM/DD/JJJJ", + "ymd": "JJJJ-MM-DD", + "saved": "Datumnotatie opgeslagen", + "saveError": "Het opslaan van de datumnotatie is mislukt." + }, + "username": "Gebruikersnaam", + "height": "Lengte (cm)", + "heightFtIn": "Lengte (ft, in)", + "dateOfBirth": "Geboortedatum", + "dateOfBirthHint": "Wordt gebruikt om automatisch streefwaarden voor je bloeddruk te berekenen.", + "gender": "Geslacht", + "genderNone": "Niet opgegeven", + "genderMale": "Man", + "genderFemale": "Vrouw", + "genderHint": "Wordt gebruikt voor geslachtsspecifieke streefwaarden.", + "timezone": "Tijdzone", + "timezoneHint": "Wordt gebruikt voor aslabels in grafieken, herinneringstijden, tijdstempels in exports en de context van de Coach. Opgeslagen gegevens blijven ongewijzigd.", + "timezoneInvalid": "Geen geldige IANA-tijdzone.", + "profileSaved": "Profiel opgeslagen", + "profilePartiallySaved": "Profiel opgeslagen, maar {field} kon niet worden bijgewerkt.", + "profileNothingSaved": "Er is niets opgeslagen. Corrigeer {field} en probeer het opnieuw.", + "profileRejection": { + "tooBig": "Die waarde ligt boven het bereik dat dit veld accepteert.", + "tooSmall": "Die waarde ligt onder het bereik dat dit veld accepteert.", + "invalidValue": "Dat is niet een van de antwoorden die dit veld accepteert.", + "invalidFormat": "Dat is niet geschreven in een vorm die dit veld kan lezen.", + "invalidType": "Die waarde is niet aangekomen in een vorm die dit veld kan opslaan.", + "rateLimited": "Te vaak gewijzigd. Wacht even en probeer het opnieuw.", + "other": "Deze waarde is niet geaccepteerd. Controleer hem en probeer het opnieuw.", + "reproofRequired": "Voer je huidige wachtwoord in om het e-mailadres te wijzigen.", + "reproofFailed": "Dat wachtwoord is onjuist, dus het e-mailadres is niet gewijzigd.", + "secondFactorRequired": "Bevestig met je tweede factor of een passkey om het e-mailadres te wijzigen." + }, + "avatar": { + "title": "Profielfoto", + "description": "Upload een foto die op je eigen server wordt opgeslagen. Die verschijnt in de hele app in plaats van een externe avatardienst.", + "upload": "Foto uploaden", + "replace": "Foto vervangen", + "remove": "Verwijderen", + "removeTitle": "Profielfoto verwijderen?", + "removeBody": "De afbeelding wordt van je server verwijderd en je initialen nemen haar plaats in. Om haar opnieuw te uploaden heb je het originele bestand nodig.", + "removeConfirm": "Foto verwijderen", + "hint": "JPEG, PNG of WebP. Maximaal 2 MB en 2048×2048 pixels.", + "uploaded": "Profielfoto bijgewerkt", + "removed": "Profielfoto verwijderd", + "invalidType": "Niet-ondersteund afbeeldingstype. Gebruik JPEG, PNG of WebP.", + "tooLarge": "De afbeelding is groter dan de limiet van 2 MB.", + "error": "De profielfoto kon niet worden bijgewerkt. Probeer het opnieuw." + }, + "changePassword": "Wachtwoord wijzigen", + "changePasswordDescription": "Vervang je huidige wachtwoord door een nieuw wachtwoord.", + "currentPassword": "Huidig wachtwoord", + "newPassword": "Nieuw wachtwoord", + "confirmNewPassword": "Nieuw wachtwoord bevestigen", + "passwordMismatch": "De nieuwe wachtwoorden komen niet overeen", + "passwordUpdated": "Wachtwoord gewijzigd", + "passkeys": "Passkeys", + "passkeysDescription": "Met passkeys log je veilig in zonder wachtwoord.", + "passkeyReauth": { + "title": "Bevestig dat jij het bent", + "description": "Verifieer een bestaande inlogmethode voordat je een nieuwe passkey toevoegt.", + "methodLabel": "Verificatiemethode", + "methods": { + "password": "Wachtwoord", + "totp": "Authenticatorcode", + "passkey": "Passkey", + "webauthn": "Beveiligingssleutel" + }, + "currentPassword": "Huidig wachtwoord", + "authenticatorCode": "Authenticatorcode", + "authenticatorPlaceholder": "Authenticatorcode van 6 cijfers", + "verifyAndAdd": "Verifiëren en toevoegen", + "factorDescription": "Verifieer een bestaande inlogmethode voordat je een tweede factor toevoegt.", + "verifyAndContinue": "Verifiëren en doorgaan" + }, + "passkeyName": "Naam", + "noPasskeys": "Geen passkeys geregistreerd.", + "addPasskey": "Passkey toevoegen", + "passkeyRegistrationFailed": "Registratie van passkey mislukt", + "passkeyRegistrationCancelled": "Registratie van passkey geannuleerd", + "passkeyNotSupported": "Je browser of apparaat ondersteunt nog geen passkeys. Probeer een andere browser of een ander apparaat.", + "passkeyAlreadyRegistered": "Dit apparaat is al als passkey voor je account geregistreerd.", + "passkeySecurityBlocked": "Je browser heeft het passkeyverzoek om veiligheidsredenen geblokkeerd. Zorg dat je op een vertrouwde HTTPS-origin zit en probeer het opnieuw.", + "passkeyTimeout": "Er is een time-out opgetreden bij de passkeyprompt. Probeer het opnieuw.", + "passkeyUnknownError": "Registratie van passkey mislukt: {message}", + "deletePasskey": "Passkey verwijderen?", + "deletePasskeyDescription": "De passkey wordt definitief verwijderd.", + "singleDevice": "Eén apparaat", + "multiDevice": "Meerdere apparaten", + "backedUp": "geback-upt", + "telegram": "Telegram", + "telegramDescription": "Medicatieherinneringen via een bot.", + "botToken": "Bottoken", + "chatId": "Chat-ID", + "enableNotifications": "Meldingen inschakelen", + "telegramStep1": "Maak in Telegram een bot aan via @BotFather en kopieer de token.", + "telegramStep2": "Stuur /start naar je bot om de chat te activeren.", + "telegramStep3": "Zoek je Chat-ID op via @userinfobot of de Bot API.", + "ntfy": "ntfy", + "ntfyDescription": "Meldingen via ntfy (zelf gehost of ntfy.sh).", + "ntfyEnable": "ntfy inschakelen", + "ntfyServer": "Server-URL", + "ntfyTopic": "Topic", + "ntfyAuthToken": "Authenticatietoken (optioneel)", + "ntfyAuthTokenHint": "Alleen nodig voor privé-topics met toegangsbeheer.", + "webhook": "Webhook", + "webhookDescription": "Stuur meldingen via POST naar elke URL: Discord, Slack, Gotify, Home Assistant, n8n of elke relay die JSON accepteert.", + "webhookEnable": "Webhook inschakelen", + "webhookUrl": "Webhook-URL", + "webhookUrlHint": "De volledige URL waarnaar de POST gaat. Een adres op een privénetwerk heeft goedkeuring van de serverbeheerder nodig.", + "webhookHeaderName": "Headernaam (optioneel)", + "webhookHeaderValue": "Headerwaarde (optioneel)", + "webhookFormat": "Payloadformaat", + "webhookFormatGeneric": "Generieke JSON", + "webhookFormatGenericHint": "Plak een Discord- of Slack-webhook-URL zoals die is. Home Assistant en n8n lezen de velden title, message, eventType en priority.", + "webhookFormatGotify": "Gotify", + "webhookFormatGotifyHint": "Gebruik de URL die eindigt op /message en zet de applicatietoken in de header X-Gotify-Key.", + "email": "E-mail", + "emailDescription": "Ontvang waarschuwingen en herinneringen per e-mail.", + "emailEnable": "E-mail inschakelen", + "emailRecipient": "Adres van ontvanger", + "webPush": "Browserpush", + "webPushDescription": "Ontvang meldingen rechtstreeks in je browser, ook als HealthLog niet geopend is.", + "webPushNotSupported": "Je browser ondersteunt geen pushmeldingen.", + "webPushDenied": "Pushmeldingen zijn geblokkeerd. Sta ze toe in de instellingen van je browser.", + "webPushNotConfigured": "Web Push is niet geconfigureerd op de server.", + "webPushSubscribe": "Push inschakelen", + "webPushUnsubscribe": "Push uitschakelen", + "webPushSubscribed": "Pushmeldingen ingeschakeld!", + "webPushUnsubscribed": "Pushmeldingen uitgeschakeld.", + "webPushSubscribeFailed": "Activeren mislukt", + "codexConnected": "ChatGPT gekoppeld! Inzichten zijn nu actief.", + "codexDisconnected": "Koppeling met ChatGPT verwijderd.", + "codexConnectionFailed": "Koppelen met ChatGPT is mislukt. Probeer het opnieuw.", + "rawData": "Gedetailleerde geschiedenis versturen", + "rawDataOnDescription": "Naast de samenvattingen ontvangt de provider gemiddelden van je metingen: per dag voor de afgelopen 90 dagen, per week voor het jaar daarvoor en per maand tot 5 jaar terug, elk met de datum en het aantal metingen. Afzonderlijke metingen, je naam en je e-mailadres worden niet verstuurd.", + "rawDataOffDescription": "Alleen samenvattingen worden verstuurd: de laatste waarde, gemiddelden, trends, minimum en maximum over vaste periodes. Geen reeksen metingen.", + "rawDataWarning": "Gedetailleerde geschiedenis staat aan: elke analyse verstuurt ook daggemiddelden voor de afgelopen 90 dagen, weekgemiddelden voor het jaar daarvoor en maandgemiddelden tot 5 jaar terug.", + "regenerateInsights": "Rapporten opnieuw genereren", + "regenerateSuccess": "Rapporten opnieuw gegenereerd", + "regenerateRateLimit": "Even geduld: je hebt de limiet voor analyses per uur bereikt.", + "lastGeneratedAt": "Laatst gegenereerd", + "ai": { + "chatgptConnectedBadge": "ChatGPT gekoppeld", + "adminAiActiveBadge": "Provider van beheerder actief", + "connectionExpiredBadge": "Koppeling verlopen", + "connectedSince": "Gekoppeld sinds {when}.", + "deviceCodeHeading": "Rond het koppelen af op chatgpt.com", + "deviceCodeStep1": "Open deze link op een willekeurig apparaat:", + "deviceCodeStep2": "Voer deze eenmalige code in:", + "deviceCodeStep3": "Keur de koppeling goed. Deze pagina wordt automatisch bijgewerkt.", + "deviceCodeCopy": "kopiëren", + "deviceCodeWaiting": "Wachten op goedkeuring…", + "deviceCodeCancel": "Annuleren", + "oauthNotConfigured": "ChatGPT OAuth is niet geconfigureerd op deze instantie. Gebruik in plaats daarvan hieronder je eigen API-sleutel.", + "modelLabel": "Model", + "modelOptionDefault": "— Standaard —", + "modelOptionCustom": "Aangepast…", + "customModelLabel": "Naam van aangepast model", + "anthropicKeyLabel": "Anthropic-API-sleutel", + "baseUrlLabel": "Basis-URL", + "localKeyLabel": "API-sleutel (optioneel)", + "localDescription": "Elk OpenAI-compatibel endpoint werkt hier: een lokaal model (Ollama, LM Studio) en ook een gateway zoals LiteLLM, OpenRouter of vLLM. De basis-URL eindigt op /v1; de API-sleutel is optioneel.", + "savedPreview": "(opgeslagen {preview})", + "savedShort": "(opgeslagen)", + "saveCta": "Opslaan", + "saved": "Opgeslagen", + "errorGeneric": "Fout", + "providerChain": { + "types": { + "codex": "ChatGPT (Codex)", + "openai": "OpenAI (je eigen sleutel)", + "anthropic": "Anthropic (Claude)", + "local": "Lokaal model", + "openai-compatible": "OpenAI-compatibele gateway", + "admin-openai": "OpenAI van beheerder" + }, + "title": "Terugvalketen", + "description": "Als de actieve provider faalt, probeert HealthLog de volgende ingeschakelde provider in deze volgorde.", + "moveUp": "Omhoog", + "moveDown": "Omlaag", + "removeFromChain": "Uit keten verwijderen", + "addProvider": "Provider toevoegen", + "addNoneAvailable": "Alle providers staan al in de keten", + "saveOrder": "Volgorde van keten opslaan", + "saved": "Keten opgeslagen", + "saveFailed": "Opslaan van de keten is mislukt", + "resetDefaults": "Standaardwaarden herstellen", + "resetConfirmTitle": "Keten terugzetten naar standaard?", + "resetConfirmBody": "De keten wordt teruggezet naar Codex → OpenAI → Anthropic → Lokaal → OpenAI van beheerder. Je opgeslagen inloggegevens blijven onaangeroerd." + }, + "activeProviderHeading": "Actieve provider", + "activeProviderLabel": "Primaire provider", + "providerSelect": { + "codex": "ChatGPT-account (Codex)", + "openai": "OpenAI (je eigen API-sleutel)", + "anthropic": "Anthropic (Claude)", + "local": "Lokaal model (OpenAI-compatibel)", + "openai-compatible": "OpenAI-compatibele gateway", + "admin-openai": "OpenAI via beheerder" + }, + "compat": { + "description": "Een volwaardige provider voor elk endpoint dat de OpenAI-API /v1/chat/completions spreekt: LiteLLM, OpenRouter, vLLM of een andere gateway. De basis-URL eindigt op /v1, de API-sleutel is optioneel en het model is wat je gateway doorstuurt. Je OpenAI-sleutel bereikt dit endpoint nooit; deze provider heeft een eigen sleutel.", + "keyLabel": "API-sleutel (optioneel)", + "modelHint": "De modelnaam die je gateway verwacht. Laat je dit leeg, dan wordt het model gebruikt dat voor je andere providers is opgeslagen; is geen van beide ingesteld, dan wordt deze provider overgeslagen." + }, + "openai": { + "modelSelect": "Model", + "modelOptionCustom": "Aangepaste slug…", + "modelCustomLabel": "Aangepaste modelslug", + "modelCustomPlaceholder": "gpt-5", + "baseUrlLabel": "Basis-URL (geavanceerd)", + "baseUrlPlaceholder": "https://api.openai.com/v1", + "baseUrlHelp": "Alleen wijzigen als je een OpenAI-compatibele gateway gebruikt. Laat leeg voor OpenAI zelf.", + "showAdvanced": "Geavanceerd tonen", + "hideAdvanced": "Geavanceerd verbergen", + "apiKey": "API-sleutel", + "apiKeyPlaceholder": "sk-…" + }, + "codex": { + "statusConnected": "Gekoppeld", + "statusDisconnected": "Niet gekoppeld", + "statusExpired": "Koppeling verlopen", + "connectButton": "Koppelen met ChatGPT", + "disconnectButton": "Ontkoppelen", + "disconnectTitle": "ChatGPT ontkoppelen?", + "disconnectBody": "De opgeslagen aanmelding wordt verwijderd, samen met je gecachete inzichtteksten. Om opnieuw te koppelen moet je weer inloggen via de apparaatcodeprocedure.", + "disconnectConfirm": "Ontkoppelen", + "modelSlugLabel": "Modelslug", + "modelSlugBody": "Codex gebruikt het model waarnaar je ChatGPT-abonnement doorverwijst. Met de omgevingsvariabele CODEX_MODEL kan de beheerder dit op de instantie overschrijven.", + "lastInsight": "Laatste inzicht: {when}" + }, + "adminOpenai": { + "title": "OpenAI van beheerder", + "body": "OpenAI-sleutel van de serverbeheerder, gebruikt als laatste terugvaloptie als er geen persoonlijke provider is ingesteld. Hier valt niets in te stellen.", + "notConfigured": "De beheerder heeft op deze instantie geen gedeelde OpenAI-sleutel ingesteld." + }, + "testProvider": "Actieve provider testen", + "testSuccess": "OK: {provider} ({model})", + "testFailedShort": "Test mislukt: {message}", + "testUnexpectedResponse": "Verbinding met AI-provider mislukt: onverwacht antwoord van de server.", + "testReasonCredentials": "De provider heeft de inloggegevens geweigerd. Authenticeer opnieuw in de AI-instellingen.", + "testReasonRateLimited": "De provider heeft het verzoek beperkt vanwege een limiet. Probeer het zo meteen opnieuw.", + "testReasonServerError": "De AI-provider gaf een serverfout.", + "testReasonBadRequest": "De provider heeft het verzoek geweigerd (HTTP {status}). Het endpoint antwoordde, dus dit is een probleem met de opbouw van het verzoek of de modelnaam, niet met de verbinding.", + "testReasonUnreachable": "Kan de AI-provider niet bereiken.", + "coachMemory": { + "title": "Wat de Coach onthoudt", + "description": "Blijvende feiten die je de Coach hebt verteld.", + "empty": "De Coach heeft nog geen feiten opgeslagen. Terwijl je chat, onthoudt hij blijvende details die je deelt (je doelen, aandoeningen, voorkeuren), en je kunt ze hier op elk moment wissen.", + "learnedPrefix": "onthouden {when}", + "categoryPreference": "Voorkeuren", + "categoryCondition": "Aandoeningen", + "categoryGoal": "Doelen", + "categoryConstraint": "Beperkingen", + "categoryContext": "Context", + "forgetAria": "Dit feit vergeten", + "forgetTitle": "Dit feit vergeten?", + "forgetBody": "De Coach gebruikt het vanaf het volgende bericht niet meer. Een vergeten feit kan niet worden teruggehaald.", + "forgetConfirm": "Vergeten", + "forgetAll": "Alles vergeten", + "forgetAllConfirmTitle": "Alles vergeten wat de Coach onthoudt?", + "forgetAllConfirmBody": "Hiermee worden alle opgeslagen feiten verwijderd. De Coach begint de volgende keer dat je chat opnieuw. Dit kan niet ongedaan worden gemaakt.", + "forgetAllConfirmAction": "Alles vergeten", + "cancel": "Annuleren", + "summaryNote": "De Coach kan ook een korte, doorlopende samenvatting van elk gesprek bijhouden. Daarvoor is er geen instelling per item; als je een gesprek verwijdert, wordt ook de samenvatting verwijderd.", + "loadError": "Kan niet laden wat de Coach onthoudt.", + "forgotToast": "Feit vergeten.", + "forgotError": "Dat feit kon niet worden vergeten. Probeer het opnieuw.", + "clearedToast": "{count} opgeslagen feiten vergeten.", + "clearError": "De opgeslagen feiten konden niet worden gewist. Probeer het opnieuw.", + "detail": "Hij gebruikt ze om zijn antwoorden relevant te houden. Verwijder alles waarvan je liever hebt dat hij het vergeet.", + "categoryMedication": "Medicatie" + }, + "coachReminders": { + "title": "Je herinneringen", + "description": "Dingen waarvan je de Coach hebt gevraagd ze later terug te laten komen.", + "empty": "Nog geen herinneringen. Vraag de Coach je ergens aan te herinneren en het verschijnt hier.", + "loadError": "Je herinneringen konden niet worden geladen.", + "dueHeading": "Nu aan de beurt", + "allHeading": "Opgeslagen", + "duePrefix": "gepland: {when}", + "confirm": "Bewaren", + "markDone": "Klaar", + "dismiss": "Sluiten", + "deleteAria": "Deze herinnering verwijderen", + "note": "Herinneringen worden versleuteld opgeslagen. Verwijder er op elk moment een en die is niet meer zichtbaar voor de Coach.", + "status": { + "proposed": "Voorgesteld", + "active": "Opgeslagen", + "due": "Aan de beurt", + "surfaced": "Getoond", + "done": "Klaar", + "dismissed": "Gesloten" + }, + "deleteConfirmTitle": "Deze herinnering verwijderen?", + "deleteConfirmBody": "Hij wordt niet meer aangekaart. Alles wat je al hebt vastgelegd, blijft onaangeroerd.", + "deleteConfirmAction": "Verwijderen", + "detail": "Herinneringen die aan de beurt zijn, verschijnen hier en bij de Coach.", + "readOnlyNote": "De Coach is op dit moment niet beschikbaar, maar je kunt je herinneringen nog wel lezen en verwijderen." + }, + "aboutMe": { + "title": "Over mij", + "description": "Persoonlijke context die de Coach en de dagelijkse briefing naast je gegevens lezen.", + "placeholder": "Bijv. ploegendienst, vegetarisch dieet, knieblessure, training voor een halve marathon…", + "charCount": "{used} / {max} tekens", + "clear": "Wissen", + "clearTitle": "De notitie 'Over mij' wissen?", + "clearBody": "Hiermee wordt alleen de vrije-tekstnotitie verwijderd. Je allergieën en intoleranties blijven precies zoals ze zijn.", + "clearConfirm": "Notitie wissen", + "save": "Opslaan", + "savedToast": "Notitie 'Over mij' opgeslagen", + "clearedToast": "Notitie 'Over mij' gewist.", + "saveError": "Opslaan is mislukt. Probeer het opnieuw.", + "loadError": "De notitie kon niet worden geladen.", + "hint": "Wordt als extra context aan de Coach en de dagelijkse briefing doorgegeven. Laat leeg om niets te versturen.", + "profileHint": "Leeftijd en geslacht komen uit je profiel en worden automatisch meegenomen.", + "freeTextLabel": "Over mij (vrije tekst)", + "conditionsPlaceholder": "Bijv. hoge bloeddruk, diabetes type 2…", + "allergiesPlaceholder": "Bijv. lactose-intolerantie, penicillineallergie…", + "focusPlaceholder": "Bijv. houd mijn bloeddruk in de gaten, motiveer me om meer te bewegen…", + "questionsTitle": "De Coach heeft vervolgvragen", + "questionsOpenCoach": "Beantwoord ze in de Coach" + }, + "responseTimeoutHeading": "Time-out voor antwoord", + "responseTimeoutBody": "Hoe lang er op een antwoord van de AI wordt gewacht voordat het wordt opgegeven. Verhoog dit voor een lokaal of zelf gehost model dat bij het eerste verzoek tijd nodig heeft om te laden. Als je het leeg laat, mag een antwoord {seconds} s duren; de dagelijkse briefing mag tot {briefingSeconds} s duren.", + "responseTimeoutLabel": "Time-out voor antwoord (seconden)", + "responseTimeoutPlaceholder": "Standaard ({seconds} s)", + "responseTimeoutInvalid": "Voer een getal tussen 10 en 600 seconden in.", + "autoRead": { + "title": "Documenten automatisch laten lezen door AI", + "subLabel": "Je AI-provider leest en indexeert elk nieuw document, zonder dat je per document hoeft te tikken.", + "honesty": "Als dit aan staat, wordt elk document dat je uploadt naar je ingestelde AI-provider gestuurd om te worden gelezen, beschreven en geïndexeerd voor zoeken, zonder bevestiging per document. Inschakelen werkt ook met terugwerkende kracht: documenten die je al hebt geüpload en die nog geen samenvatting hebben, worden ook verstuurd, tot 200 per keer dat je het inschakelt. Dit gebeurt op de server en de inhoud van het document verlaat deze machine naar die provider. Als je ingestelde provider een abonnementskoppeling is (een ingelogd AI-account in plaats van een API-sleutel), gelden de gegevensinstellingen van die provider zelf: abonnementsproviders mogen de inhoud gebruiken om hun modellen te verbeteren, en er is geen verwerkersovereenkomst die dit dekt. Documenten die door een zelf gehost lokaal model worden gelezen, verlaten je server nooit. Standaard uit; schakel het alleen in als je deze afweging voor je documenten accepteert.", + "confirm": "Ik begrijp het, inschakelen", + "cancel": "Annuleren", + "restingFrugal": "Gepauzeerd op het zuinige AI-gebruiksniveau: documenten worden alleen gelezen als je daarom vraagt." + }, + "centralCodex": { + "title": "De gedeelde AI-toegang van de server gebruiken", + "subLabel": "Stuur AI-verzoeken via de gedeelde koppeling van de server, met je eigen providers als terugvaloptie.", + "honesty": "De gedeelde toegang is één ingelogd AI-account dat de beheerder voor iedereen op deze server heeft gekoppeld, niet je eigen sleutel. De provider traint standaard op de verzoeken die je hierlangs doet en er is geen verwerkersovereenkomst die ze dekt, de uur- en weeklimieten van het account worden gedeeld met elke andere gebruiker die zich heeft aangemeld, en je eigen ingestelde providers worden nog steeds als eerste geprobeerd. Schakel het alleen in als je deze afweging accepteert.", + "confirm": "Ik begrijp het, koppeling gebruiken", + "cancel": "Annuleren" + }, + "consent": { + "title": "Toestemming voor AI", + "activeSince": "Gegeven op {date}: je gezondheidsgegevens mogen voor de AI-functies naar de ingestelde provider worden gestuurd.", + "withdraw": "Toestemming intrekken", + "confirmBody": "Tenzij een andere toestemming die je hebt gegeven ze nog dekt, stopt het volgende direct: de Coach en Inzichten voor zover ze de AI-toegang van deze server gebruiken, en het lezen van documenten met een onlinemodel. Met je eigen sleutel of een lokaal model blijven de Coach en Inzichten werken. Tenzij een andere toestemming Inzichten nog dekt, worden de notities verwijderd die een model voor je heeft geschreven: statusnotities, de dagelijkse briefing, door een model geschreven periodesamenvattingen, aankomstregels en trainingsnotities. Je gesprekken met de Coach, wat de Coach heeft onthouden, je plannen en je documentsamenvattingen blijven bewaard, en je kunt ze zelf lezen of verwijderen.", + "confirmWithdraw": "Intrekken", + "grantError": "De toestemming kon niet worden opgeslagen. Probeer het opnieuw.", + "error": "De intrekking kon niet worden opgeslagen. Probeer het opnieuw.", + "documentReading": { + "title": "Toestemming voor het lezen van documenten", + "activeSince": "Gegeven op {date}: documenten, labscans en medicatieteksten mogen naar je AI-dienst worden gestuurd om te worden gelezen.", + "confirmBody": "Documenten, scans van labrapporten en medicijnbeschrijvingen worden niet meer verstuurd om te laten uitlezen. Niets van wat je al hebt, wordt verwijderd." + }, + "activeSinceNamed": "Toestemming gegeven op {date}: je gezondheidsgegevens mogen voor de AI-functies naar {providers} gaan.", + "activeUndated": "Toestemming gegeven: je gezondheidsgegevens mogen voor de AI-functies naar de ingestelde provider worden verstuurd.", + "request": { + "title": "Je toestemming voordat AI start", + "body": "AI draait op deze server via een dienst die de beheerder aanbiedt: {providers}. Er gaat niets uit je gegevens naartoe totdat je akkoord gaat.", + "data": "Zodra je akkoord gaat, stuurt HealthLog die dienst wat de AI-functies nodig hebben: metingen zoals gewicht, bloeddruk, hartslag, slaap en activiteit, je medicatie, stemming, labwaarden en cyclusregistraties als je die bijhoudt, wat je in je profiel en aan de Coach schrijft, en documenten die je laat uitlezen. De dienst gebruikt dit om je dagelijkse briefing, de toelichtingen bij je metingen en de antwoorden van de Coach te schrijven.", + "withdrawHint": "Je kunt je toestemming op elk moment intrekken via Instellingen, AI. Vanaf dat moment wordt er niets meer verstuurd.", + "agree": "Akkoord", + "dismiss": "Niet nu" + } + }, + "operatorOff": { + "allTitle": "AI is uitgeschakeld op deze server", + "allBody": "De persoon die deze server beheert, heeft AI uitgeschakeld. HealthLog blijft werken met al je gegevens; de functies die AI nodig hebben, worden gewoon niet getoond.", + "someTitle": "Sommige AI-functies zijn uitgeschakeld op deze server", + "someBody": "De persoon die deze server beheert, heeft het volgende uitgeschakeld: {switches}. Al het andere, inclusief al je gegevens, werkt zoals gewoonlijk.", + "testRefused": "AI is uitgeschakeld op deze server, dus er valt niets te testen.", + "autoRead": "Documenten uitlezen met AI is uitgeschakeld op deze server." + }, + "coachConversations": { + "title": "Coach-gesprekken", + "description": "Open een gesprek om het te lezen of te verwijderen.", + "more": "Meer tonen", + "openAll": "Alle gesprekken openen" + }, + "coachPlans": { + "title": "Coach-plannen", + "description": "De plannen die je met de Coach hebt afgesproken, om te lezen of te verwijderen.", + "open": "Plannen openen" + }, + "reasoning": { + "label": "Redeneren", + "hint": "Redeneermodellen zoals Gemma of Qwen denken na voordat ze antwoorden. Met Uit blijft het volledige antwoordbudget over voor het antwoord zelf.", + "options": { + "default": "Standaard", + "none": "Uit", + "low": "Laag", + "medium": "Gemiddeld", + "high": "Hoog" + }, + "coachNote": "In de Coach geldt de denkdiepte uit de Coach-instellingen." + }, + "providerCardDescription": "De provider die HealthLog als eerste raadpleegt, met de bijbehorende sleutel en het model.", + "runtimeTitle": "Controleren en vernieuwen", + "usage": { + "title": "AI-gebruik", + "description": "Hoeveel AI-werk er voor je op de achtergrond draait; de Coach blijft op elk niveau hetzelfde.", + "levels": { + "frugal": { + "label": "Zuinig", + "hint": "Kaarten worden hoogstens één keer per dag na een synchronisatie vernieuwd, een korte dagelijkse briefing, documenten worden alleen uitgelezen als je erom vraagt." + }, + "standard": { + "label": "Standaard", + "hint": "Kaarten worden om de paar uur na een synchronisatie vernieuwd, de volledige dagelijkse briefing." + }, + "full": { + "label": "Volledig", + "hint": "Kaarten worden na nieuwe gegevens tot elk uur vernieuwd, zoals voordat deze instelling bestond." + } + }, + "limited": "Beperkt door de serverbeheerder.", + "estimate": "ongeveer {tokens} tokens per dag, geschat", + "measured": "Gemeten: {tokens} tokens per dag over de afgelopen {days} dagen, inclusief de Coach. De cijfers per niveau zijn schattingen.", + "noEstimate": "Na drie dagen AI-gebruik verschijnt er een schatting per niveau.", + "capped": "Je hebt {choice} gekozen, maar dat staat de server op dit moment niet toe, dus geldt {level}. Je keuze blijft bewaard.", + "followsDefault": "Je volgt de standaardinstelling van de server ({level}).", + "useDefault": "Standaardinstelling van de server gebruiken ({level})", + "saveError": "Het niveau kon niet worden opgeslagen. Probeer het opnieuw." + } + }, + "dashboard": { + "units": { + "title": "Eenheden", + "description": "Kies hoe afstanden en snelheden in grafieken en tegels worden weergegeven.", + "metric": "Metrisch", + "imperial": "Imperiaal", + "saved": "Voorkeur voor eenheden opgeslagen", + "saveError": "Je voorkeur voor eenheden kon niet worden opgeslagen." + }, + "glucoseUnit": { + "title": "Bloedglucose", + "description": "In welke eenheid bloedglucosemetingen worden weergegeven. De metingen worden in beide gevallen op dezelfde manier opgeslagen.", + "saved": "Glucose-eenheid opgeslagen", + "saveError": "Je glucose-eenheid kon niet worden opgeslagen." + } + }, + "withings": "Withings", + "withingsDescription": "Koppel je Withings-weegschaal en -bloeddrukmeter om gewicht, lichaamssamenstelling en bloeddruk automatisch te synchroniseren.", + "withingsCredentials": "API-inloggegevens", + "withingsClientId": "Client-ID", + "withingsClientSecret": "Clientgeheim", + "withingsCredentialsSaved": "Inloggegevens opgeslagen", + "withingsCredentialsSavedPlaceholder": "Opgeslagen. Voer een nieuwe waarde in om te vervangen", + "withingsCredentialsSavedPlaceholderSecret": "Opgeslagen. Voer een nieuwe waarde in om te vervangen", + "withingsSaveCredentials": "Opslaan", + "configured": "Geconfigureerd", + "withingsSync": "Nu synchroniseren", + "withingsFullSync": "Alle gegevens synchroniseren", + "withingsFullSyncTitle": "Volledige synchronisatie?", + "withingsFullSyncDescription": "Alle beschikbare Withings-gegevens worden volledig gesynchroniseerd. Afhankelijk van je geschiedenis kan dit even duren.", + "withingsSyncResult": "{count} metingen gesynchroniseerd", + "syncOutcome": { + "empty": "Niets nieuws om te importeren. Alles is bijgewerkt.", + "failed": "Er is niets opgeslagen. De volgende synchronisatie probeert het opnieuw.", + "partial": "{count} metingen gesynchroniseerd. Sommige gegevens konden niet worden opgeslagen; de volgende synchronisatie probeert het opnieuw." + }, + "withingsFullSyncResult": "{count} metingen volledig gesynchroniseerd", + "withingsSyncFailed": "Synchronisatie mislukt", + "withingsOauthConnected": "Withings gekoppeld. De eerste synchronisatie start op de achtergrond.", + "withingsOauthFailed": "Koppeling met Withings mislukt", + "withingsOauthError": { + "csrf1": "De beveiligingscontrole is mislukt omdat de browsercookie ontbrak. Start de koppeling opnieuw in dezelfde browser.", + "replay": "Deze bevestigingslink is al gebruikt. Start de koppeling opnieuw.", + "state": "Het antwoord van Withings kwam niet overeen met een openstaand koppelingsverzoek. Start de koppeling opnieuw.", + "expired": "Het koppelingsverzoek is verlopen. Start de koppeling opnieuw en rond de goedkeuring binnen een paar minuten af.", + "cross_user": "Het antwoord hoort bij een verzoek van een ander account. Start de koppeling opnieuw vanuit je eigen account.", + "nocode": "Withings heeft geen autorisatiecode teruggestuurd. Probeer het opnieuw en sta toegang toe in het Withings-venster.", + "nocreds": "Er zijn geen Withings-API-inloggegevens opgeslagen. Sla eerst de client-ID en het clientgeheim op en koppel daarna opnieuw.", + "token": "De tokenuitwisseling met Withings is mislukt. Controleer de client-ID en het clientgeheim en probeer het opnieuw.", + "generic": "Onbekende fout bij het koppelen. Start de koppeling opnieuw." + }, + "withingsSynchronize": "Synchroniseren", + "withingsDisconnect": "Ontkoppelen", + "withingsDisconnectTitle": "Withings ontkoppelen?", + "withingsDisconnectDescription": "De koppeling met Withings wordt verbroken. Eerder gesynchroniseerde gegevens blijven bewaard.", + "withingsConnect": "Koppelen met Withings", + "withingsNoCredentials": "Voer hierboven je API-inloggegevens in om Withings te koppelen.", + "whoop": "WHOOP", + "whoopDescription": "Koppel je WHOOP-band om herstel, slaap, belasting en trainingen rechtstreeks naar HealthLog te synchroniseren.", + "whoopCredentials": "API-inloggegevens", + "whoopClientId": "Client-ID", + "whoopClientSecret": "Clientgeheim", + "whoopCredentialsSaved": "Inloggegevens opgeslagen", + "whoopCredentialsSavedPlaceholder": "Opgeslagen. Voer een nieuwe waarde in om te vervangen", + "whoopCredentialsSavedPlaceholderSecret": "Opgeslagen. Voer een nieuwe waarde in om te vervangen", + "whoopSaveCredentials": "Opslaan", + "whoopSync": "Nu synchroniseren", + "whoopFullSync": "Alle gegevens synchroniseren", + "whoopFullSyncTitle": "Volledige synchronisatie?", + "whoopFullSyncDescription": "De volledige beschikbare WHOOP-geschiedenis wordt gesynchroniseerd. Afhankelijk van je geschiedenis kan dit even duren.", + "whoopSyncResult": "{count} metingen gesynchroniseerd", + "whoopSyncFailed": "Synchronisatie mislukt", + "whoopSynchronize": "Synchroniseren", + "whoopDisconnect": "Ontkoppelen", + "whoopDisconnectTitle": "WHOOP ontkoppelen?", + "whoopDisconnectDescription": "De koppeling met WHOOP wordt verbroken. Eerder gesynchroniseerde gegevens blijven bewaard.", + "whoopConnect": "Koppelen met WHOOP", + "whoopNoCredentials": "Voer hierboven je API-inloggegevens in om WHOOP te koppelen.", + "whoopOauthConnected": "WHOOP gekoppeld. De eerste synchronisatie start op de achtergrond.", + "whoopOauthFailed": "Koppeling met WHOOP mislukt", + "whoopOauthError": { + "csrf1": "De beveiligingscontrole is mislukt omdat de browsercookie ontbrak. Start de koppeling opnieuw in dezelfde browser.", + "state": "Het antwoord van WHOOP kwam niet overeen met een openstaand koppelingsverzoek. Start de koppeling opnieuw.", + "expired": "Het koppelingsverzoek is verlopen voordat het was afgerond. Start de koppeling opnieuw.", + "cross_user": "Het antwoord hoort bij een verzoek van een ander account. Start de koppeling opnieuw vanuit je eigen account.", + "nocode": "WHOOP heeft geen autorisatiecode teruggestuurd. Probeer het opnieuw en sta toegang toe in het WHOOP-venster.", + "nocreds": "WHOOP is niet geconfigureerd. Voeg hierboven je WHOOP-OAuth-inloggegevens toe en probeer het opnieuw.", + "token": "De tokenuitwisseling met WHOOP is mislukt. Start de koppeling opnieuw.", + "generic": "Onbekende fout bij het koppelen. Start de koppeling opnieuw." + }, + "fitbit": "Fitbit", + "fitbitTag": "Fitbit & Pixel", + "fitbitDescription": "Koppel Fitbit om de vitale gegevens van je Fitbit en Pixel Watch te synchroniseren: gewicht, hartslag en meer.", + "fitbitExperimentalBadge": "Experimenteel", + "fitbitCredentials": "API-inloggegevens", + "fitbitClientId": "Client-ID", + "fitbitClientSecret": "Clientgeheim", + "fitbitCredentialsSaved": "Inloggegevens opgeslagen", + "fitbitCredentialsSavedPlaceholder": "Opgeslagen. Voer een nieuwe waarde in om te vervangen", + "fitbitCredentialsSavedPlaceholderSecret": "Opgeslagen. Voer een nieuwe waarde in om te vervangen", + "fitbitSaveCredentials": "Opslaan", + "fitbitSync": "Nu synchroniseren", + "fitbitFullSync": "Alle gegevens synchroniseren", + "fitbitFullSyncTitle": "Volledige synchronisatie?", + "fitbitFullSyncDescription": "De volledige beschikbare Fitbit-geschiedenis wordt gesynchroniseerd. Afhankelijk van je geschiedenis kan dit even duren.", + "fitbitSyncResult": "{count} metingen gesynchroniseerd", + "fitbitSyncFailed": "Synchronisatie mislukt", + "fitbitSynchronize": "Synchroniseren", + "fitbitDisconnect": "Ontkoppelen", + "fitbitDisconnectTitle": "Fitbit ontkoppelen?", + "fitbitDisconnectDescription": "De koppeling met Fitbit wordt verbroken. Eerder gesynchroniseerde gegevens blijven bewaard.", + "fitbitConnect": "Koppelen met Fitbit", + "fitbitNoCredentials": "Voer hierboven je API-inloggegevens in om Fitbit te koppelen.", + "fitbitOauthConnected": "Fitbit gekoppeld. De eerste synchronisatie start op de achtergrond.", + "fitbitOauthFailed": "Koppeling met Fitbit mislukt", + "googleHealth": "Google Health", + "googleHealthTag": "Fitbit & Pixel", + "googleHealthBetaBadge": "Bèta", + "googleHealthDescription": "Koppel Fitbit, Pixel Watch en Fitbit Air via je Google-account: gewicht, hartslag, slaap en activiteit. Dit vervangt de klassieke Fitbit-koppeling, die Google in september 2026 stopzet.", + "googleHealthCredentials": "API-inloggegevens", + "googleHealthClientId": "Client-ID", + "googleHealthClientSecret": "Clientgeheim", + "googleHealthCredentialsSaved": "Inloggegevens opgeslagen", + "googleHealthCredentialsSavedPlaceholder": "Opgeslagen. Voer een nieuwe waarde in om te vervangen", + "googleHealthCredentialsSavedPlaceholderSecret": "Opgeslagen. Voer een nieuwe waarde in om te vervangen", + "googleHealthSaveCredentials": "Opslaan", + "googleHealthSync": "Nu synchroniseren", + "googleHealthSyncCheckStatus": "Status vernieuwen", + "googleHealthFullSync": "Alle gegevens synchroniseren", + "googleHealthFullSyncTitle": "Volledige synchronisatie?", + "googleHealthFullSyncDescription": "De volledige beschikbare Google Health-geschiedenis wordt gesynchroniseerd. Afhankelijk van je geschiedenis kan dit even duren.", + "googleHealthSyncResult": "{count} metingen gesynchroniseerd", + "googleHealthSyncFailed": "Synchronisatie mislukt", + "googleHealthSyncInProgress": "Synchronisatie bezig: {count} metingen opgeslagen, {completed} van {total} onderdelen verwerkt.", + "googleHealthResourceFailuresTitle": "Deze onderdelen hebben nog aandacht nodig:", + "googleHealthResource": { + "workout": "Trainingen", + "sleep": "Slaap", + "boundedMetrics": "Gezondheidsmetingen", + "activity": "Activiteit", + "heartRate": "Hartslag", + "other": "Overige gegevens" + }, + "googleHealthReason": { + "collectionFailed": "Google kon deze gegevens niet leveren. Probeer later opnieuw te synchroniseren.", + "tokenFailed": "De koppeling is verlopen. Koppel Google Health opnieuw.", + "upsertFailed": "De gegevens konden niet worden opgeslagen. Probeer opnieuw te synchroniseren.", + "rollupFailed": "De gegevens zijn ontvangen, maar de samenvatting is nog niet bijgewerkt. Probeer het later opnieuw.", + "pageLimit": "Slechts een deel van de beschikbare geschiedenis is verwerkt. Een volgende synchronisatie gaat hiermee verder.", + "generic": "Dit onderdeel is niet volledig gesynchroniseerd. Probeer het opnieuw." + }, + "googleHealthSynchronize": "Synchroniseren", + "googleHealthDisconnect": "Ontkoppelen", + "googleHealthDisconnectTitle": "Google Health ontkoppelen?", + "googleHealthDisconnectDescription": "De koppeling met Google Health wordt verbroken. Eerder gesynchroniseerde gegevens blijven bewaard.", + "googleHealthConnect": "Koppelen met Google", + "googleHealthNoCredentials": "Voer hierboven je API-inloggegevens in om Google Health te koppelen.", + "googleHealthOauthConnected": "Google Health gekoppeld. De eerste synchronisatie start op de achtergrond.", + "googleHealthOauthFailed": "Koppeling met Google Health mislukt", + "googleHealthOauthError": { + "csrf1": "De beveiligingscontrole is mislukt omdat de browsercookie ontbrak. Start de koppeling opnieuw in dezelfde browser.", + "state": "Het antwoord van Google kwam niet overeen met een openstaand koppelingsverzoek. Start de koppeling opnieuw.", + "expired": "Het koppelingsverzoek is verlopen voordat het was afgerond. Start de koppeling opnieuw.", + "cross_user": "Het antwoord hoort bij een verzoek van een ander account. Start de koppeling opnieuw vanuit je eigen account.", + "nocode": "Google heeft geen autorisatiecode teruggestuurd. Probeer het opnieuw en sta toegang toe in het Google-venster.", + "nocreds": "Google Health is niet geconfigureerd. Voeg hierboven je Google-OAuth-inloggegevens toe en probeer het opnieuw.", + "token": "De tokenuitwisseling met Google is mislukt. Start de koppeling opnieuw.", + "generic": "Onbekende fout bij het koppelen. Start de koppeling opnieuw." + }, + "fitbitOauthError": { + "csrf1": "De beveiligingscontrole is mislukt omdat de browsercookie ontbrak. Start de koppeling opnieuw in dezelfde browser.", + "state": "Het antwoord van Fitbit kwam niet overeen met een openstaand koppelingsverzoek. Start de koppeling opnieuw.", + "expired": "Het koppelingsverzoek is verlopen voordat het was afgerond. Start de koppeling opnieuw.", + "cross_user": "Het antwoord hoort bij een verzoek van een ander account. Start de koppeling opnieuw vanuit je eigen account.", + "nocode": "Fitbit heeft geen autorisatiecode teruggestuurd. Probeer het opnieuw en sta toegang toe in het Fitbit-venster.", + "nocreds": "Fitbit is niet geconfigureerd. Voeg hierboven je Fitbit-OAuth-inloggegevens toe en probeer het opnieuw.", + "token": "De tokenuitwisseling met Fitbit is mislukt. Start de koppeling opnieuw.", + "generic": "Onbekende fout bij het koppelen. Start de koppeling opnieuw." + }, + "integrations": { + "withings": { + "plan": { + "link": "Over de Withings-API-abonnementen", + "items": { + "spo2": "SpO2", + "vascularAge": "vaatleeftijd", + "pulseWaveVelocity": "polsgolfsnelheid", + "vo2Max": "VO2 max", + "visceralFat": "visceraal vet", + "skinTemperature": "huidtemperatuur", + "ecg": "ECG en boezemfibrilleren", + "sleepScore": "slaapscore", + "sleepHrv": "HRV 's nachts", + "sleepHeartRate": "hartslag 's nachts", + "sleepRespiratoryRate": "ademhalingsfrequentie 's nachts", + "sleepSpo2": "SpO2 's nachts", + "bodyTemperature": "lichaamstemperatuur", + "bodyFat": "vetpercentage", + "fatMass": "vetmassa", + "fatFreeMass": "vetvrije massa", + "muscleMass": "spiermassa", + "bodyWater": "lichaamsvocht", + "boneMass": "botmassa", + "heartRate": "hartslag", + "bloodPressure": "bloeddruk", + "weight": "gewicht" + } + } + }, + "oura": { + "scope": { + "items": { + "vo2max": "VO2 max", + "cardio_age": "cardiovasculaire leeftijd", + "resilience": "veerkracht" + } + } + } + }, + "integrationPill": { + "connected": "Gekoppeld", + "errorReconnect": "Fout: opnieuw koppelen", + "warningServerError": "Synchronisatie mislukt", + "failureCount": "{count}/{threshold}", + "parkedReconnect": "Gepauzeerd: opnieuw koppelen", + "notConnected": "Niet gekoppeld", + "justNow": "zojuist", + "minutesAgo": "{count} min geleden", + "hoursAgo": "{count} u geleden", + "daysAgo": "{count} d geleden", + "resumeSuccess": "Koppeling hervat", + "resumeError": "Opnieuw koppelen mislukt", + "stale": "Gekoppeld, geen recente gegevens", + "stalled": "Synchronisatie gestopt", + "pendingSetup": "Wachten op eerste gegevens" + }, + "integrationFreshness": { + "title": "Ontvangen gegevens", + "summary": "{count} gegevenstypen, nieuwste {relative}", + "quiet": "{count} stil", + "workouts": "Trainingen", + "medicationDoses": "Medicatiedoses" + }, + "integrationFallback": { + "description": "Ingesteld op dit account zonder eigen instellingenkaart." + }, + "withingsViewData": "Je metingen bekijken", + "whoopViewData": "Je herstel bekijken", + "fitbitViewData": "Je slaap bekijken", + "googleHealthViewData": "Je stappen bekijken", + "apiTokens": "API-tokens", + "apiTokensDescription": "Bekijk tokens voor metingen, trainingen, documenten en medicatie-inname en trek ze in.", + "measurementsToken": { + "title": "Metingtokens", + "description": "Maak een token aan zodat een weegschaal, een horlogekoppeling of je domotica metingen kan toevoegen.", + "detail": "Het token wordt één keer getoond.", + "scopeNote": "Het kan alleen nieuwe metingen aan je eigen dossier toevoegen. Het kan je gegevens niet lezen, niets wijzigen of verwijderen en geen ander token aanmaken. Metingen worden gemarkeerd als afkomstig van een extern apparaat, zodat je ze later kunt onderscheiden, en je kunt ze nog steeds zelf corrigeren.", + "createFailed": "Het token kon niet worden aangemaakt. Probeer het opnieuw.", + "namePlaceholder": "Naam, bijv. Home Assistant" + }, + "workoutsToken": { + "title": "Trainingstokens", + "description": "Maak een token aan zodat een horlogekoppeling of een synchronisatiescript je trainingen kan toevoegen.", + "detail": "Het token wordt één keer getoond.", + "scopeNote": "Het kan alleen nieuwe trainingen aan je eigen dossier toevoegen. Het kan je gegevens niet lezen, niets wijzigen of verwijderen en geen ander token aanmaken. Trainingen die het toevoegt, worden gemarkeerd als afkomstig van een extern apparaat, en als je telefoon dezelfde sessie heeft vastgelegd, zie je de versie van je telefoon.", + "createFailed": "Het token kon niet worden aangemaakt. Probeer het opnieuw.", + "namePlaceholder": "Naam, bijv. Garmin" + }, + "documentsToken": { + "title": "Documenttokens", + "description": "Maak een token aan zodat Paperless-ngx, Papra of het importscript documenten aan je kluis kan toevoegen.", + "detail": "Het token wordt één keer getoond.", + "scopeNote": "Het kan alleen nieuwe documenten aan je eigen kluis toevoegen. Het kan niets weergeven, openen, downloaden, wijzigen of verwijderen en kan geen ander token aanmaken. Het krijgt alleen terug of een bestand is opgeslagen, niet hoe je het hebt gearchiveerd.", + "createFailed": "Het token kon niet worden aangemaakt. Probeer het opnieuw.", + "namePlaceholder": "Naam, bijv. Paperless-ngx" + }, + "tokenMintMovedDescription": "Tokens worden uitgegeven waar ze van toepassing zijn: hierboven voor metingen, trainingen en documenten, of bij het eigen API-endpoint van een medicijn voor dat ene medicijn.", + "tokenCreated": "Token aangemaakt. Kopieer het nu! Het wordt niet opnieuw getoond.", + "tokenCopy": "Token kopiëren", + "tokenCopied": "Token gekopieerd naar klembord", + "tokenCopyFailed": "Het token kon niet worden gekopieerd", + "tokenRevokeFailed": "Het token kon niet worden ingetrokken. Probeer het opnieuw.", + "tokenRevoke": "Token intrekken?", + "tokenRevokeAction": "Token intrekken", + "tokenRevokeDescription": "Het token wordt permanent gedeactiveerd. Toepassingen die het gebruiken, verliezen hun toegang.", + "tokenRevoked": "Ingetrokken", + "tokenExpired": "Verlopen", + "tokenActive": "Actief", + "activeTokensTitle": "Actieve tokens", + "revokedTokensTitle": "Ingetrokken tokens ({count})", + "tokenTableName": "Naam", + "tokenTablePermissions": "Rechten", + "tokenTableStatus": "Status", + "tokenTableCreated": "Aangemaakt", + "tokenTableLastUsed": "Laatst gebruikt", + "tokenTableActions": "Acties", + "noActiveTokens": "Geen actieve tokens.", + "tokenNeverUsed": "Nooit", + "apiEndpointsTitle": "API-endpoints", + "apiEndpointsDescription": "Overzicht van de externe endpoints die momenteel beschikbaar zijn voor invoer via tokens.", + "apiEndpointMethod": "Methode", + "apiEndpointPath": "Pad", + "apiEndpointAuth": "Authenticatie", + "apiEndpointExample": "Voorbeeld van de body", + "dangerZone": "Alle gegevens verwijderen", + "dangerZoneDescription": "Wist je volledige gezondheidsdossier en alle koppelingen.", + "dangerZoneConfirm": "Alle gegevens verwijderen?", + "dangerZoneConfirmDescription": "Hiermee wordt alles in je dossier permanent verwijderd: metingen, medicatie, stemmingsregistraties, labuitslagen, cyclusregistraties, documenten, AI-gesprekken en alle koppelingen, samen met alles wat daarvan is afgeleid en alles wat je eerder hebt verwijderd. Deellinks die je aan een arts hebt gegeven, werken direct niet meer. Je account blijft bestaan, net als de inloggegevens waarmee je inlogt en weergave-instellingen zoals taal, tijdzone en eenheden. Dit kan niet ongedaan worden gemaakt.", + "dangerZoneSuccess": "Je gezondheidsdossier is verwijderd. Je account en inloggegevens zijn ongewijzigd.", + "dangerZoneDeleteFailed": "Verwijderen mislukt", + "finalDelete": "Definitief verwijderen", + "deleteAccountCardTitle": "Account volledig verwijderen", + "deleteAccountCardDescription": "Verwijdert je account samen met passkeys, auditlogboek en sessies.", + "deleteAccountCta": "Account verwijderen", + "deleteAccountConfirmTitle": "Account definitief verwijderen?", + "deleteAccountConfirmDescription": "Je account, alle gezondheidsgegevens, passkeys, sessies en auditregistraties worden definitief verwijderd. Je wordt daarna direct uitgelogd.", + "deleteAccountSuccess": "Account verwijderd. Je wordt uitgelogd.", + "deleteAccountFailed": "Account kon niet worden verwijderd", + "deleteAccountFinal": "Definitief verwijderen", + "saved": "Opgeslagen", + "savingError": "Fout bij opslaan", + "about": { + "version": "App-versie", + "gitSha": "Build", + "builtAtLabel": "Gebouwd", + "license": "Licentie", + "repository": "Broncode", + "changelog": "Wijzigingslogboek", + "docs": "Documentatie", + "credits": "Credits en bronvermeldingen", + "linksHeading": "Bronnen en documentatie", + "newerAvailable": "Nieuwere versie: {tag}", + "support": { + "title": "Ondersteuning", + "description": "Een samenvatting voor een bugmelding, zonder je naam, e-mailadres of gezondheidswaarden.", + "copy": "Ondersteuningsinfo kopiëren", + "copied": "Gekopieerd", + "copyFailed": "De ondersteuningsinfo kon niet worden samengesteld." + } + }, + "testConnection": { + "test": "Verbinding testen", + "saveFirst": "Sla eerst je wijzigingen op. De test gebruikt de opgeslagen instellingen.", + "testing": "Testen…", + "ok": "Verbonden (latentie {latency} ms)", + "errors": { + "credentials_rejected": "Inloggegevens geweigerd. Controleer je token", + "rate_limited": "Snelheidslimiet van de externe dienst bereikt", + "timeout": "Time-out bij het verzoek", + "upstream_error": "Externe dienst gaf een fout terug", + "upstream_rejected": "De andere kant heeft het bericht geweigerd", + "connection_failed": "Verbinding mislukt", + "not_configured": "Niet geconfigureerd", + "url_not_public": "URL is geen openbaar endpoint", + "private_origin_not_approved": "Doel in een privénetwerk. De beheerder moet deze origin opnemen in NOTIFICATION_PRIVATE_ORIGINS", + "private_origin_not_grantable": "Dit adres is link-local, een metadata-adres of een niet-gespecificeerd adres; geen enkele toestemming van de beheerder kan het openzetten. Gebruik het adres waarop de relay luistert", + "url_invalid": "URL is ongeldig", + "redirected": "Endpoint stuurt door. Controleer de URL", + "endpoint_not_found": "Geen endpoint gevonden op deze URL", + "credentials_unreadable": "Inloggegevens kunnen niet worden ontsleuteld", + "upstream_invalid_json": "Externe dienst stuurde ongeldige JSON", + "vapid_not_configured": "Web Push niet geconfigureerd (VAPID-sleutels ontbreken)", + "rate_limited_self": "Te veel testverzoeken", + "generic": "Test mislukt" + } + }, + "notificationStatus": { + "title": "Bezorgstatus", + "description": "Status per kanaal; “Automatisch uitgeschakeld” betekent dat nieuwe pogingen na permanente fouten zijn gestopt.", + "emptyDescription": "Stel een kanaal in onder Instellingen › Koppelingen › Bezorgkanalen.", + "stateActive": "Actief", + "stateAutoDisabled": "Automatisch uitgeschakeld", + "stateSendingPaused": "Verzenden gepauzeerd", + "stateManuallyDisabled": "Uitgeschakeld", + "lastSuccess": "Laatste geslaagde verzending", + "lastFailure": "Laatste fout", + "consecutiveFailures": "Opeenvolgende fouten", + "disabledReason": "Reden", + "nextRetry": "Volgende poging", + "reEnable": "Opnieuw inschakelen", + "sendTest": "Test versturen", + "emptyTitle": "Nog geen kanalen ingesteld" + }, + "identity": { + "description": "Optionele gegevens voor de export van je gezondheidsdossier (PDF-voorblad + FHIR-export). Alle velden zijn optioneel.", + "fullName": "Volledige naam", + "fullNamePlaceholder": "bijv. Jan Jansen", + "insurer": "Zorgverzekeraar", + "insurerPlaceholder": "bijv. AOK Bayern", + "insuranceNumber": "Verzekeringsnummer (KVNR)", + "insuranceNumberHint": "10 tekens: één letter + negen cijfers (bijv. A123456780)." + }, + "healthRecord": { + "title": "Gezondheidsdossier exporteren", + "description": "Een volledig dossier voor je arts: als PDF, als FHIR of allebei.", + "format": "Formaat", + "format_pdf": "PDF", + "format_fhir": "Gestructureerd (FHIR)", + "format_package": "Pakket: PDF + FHIR", + "range": "Periode", + "range90": "Afgelopen 90 dagen", + "range180": "Afgelopen 6 maanden", + "range365": "Afgelopen 12 maanden", + "practiceName": "Praktijk (optioneel)", + "practiceNamePlaceholder": "bijv. dr. Jansen", + "includedData": "Opgenomen gegevens", + "includeCharts": "Trendgrafieken insluiten (alleen PDF)", + "fhirNote": "De gestructureerde uitvoer volgt de FHIR R4-standaard (compatibel met ePA).", + "generate": "Genereren", + "documentsLink": "Documenten voor deze periode", + "range30": "Afgelopen 30 dagen", + "rangeCustom": "Aangepaste periode", + "rangeCustomStart": "Van", + "rangeCustomEnd": "Tot", + "errorGeneric": "De export kon niet worden gegenereerd. Probeer het opnieuw.", + "errorRateLimit": "Je hebt de exportlimiet voor dit uur bereikt.", + "errorModuleDisabled": "De export van het gezondheidsdossier is uitgeschakeld voor dit account.", + "visitOffer": "Er staat een afspraak gepland op {when}: {what}.", + "visitOfferApply": "Rapport tot die datum" + }, + "globalExcludedInjectionSitesLabel": "Overal uitgesloten injectieplaatsen", + "globalExcludedInjectionSitesHint": "Worden nooit aangeboden en geweigerd bij het vastleggen van een dosis, ook als een medicijn er de voorkeur aan geeft.", + "sharing": { + "createTitle": "Nieuwe deellink", + "createDescription": "De link is alleen-lezen en beperkt geldig.", + "label": "Label", + "labelPlaceholder": "bijv. dr. Jansen, jaarlijkse controle", + "range": "Dagen geschiedenis", + "rangeHint": "Hoe ver terug de gedeelde periode reikt.", + "expiry": "Verloopt over (dagen)", + "expiryHint": "Maximaal {max} dagen.", + "expiryInvalid": "De geldigheidsduur moet tussen 1 en {max} dagen liggen.", + "create": "Link aanmaken", + "tokenCreated": "Deellink aangemaakt", + "copied": "Gekopieerd naar klembord", + "activeTitle": "Actieve links", + "noActive": "Geen actieve deellinks.", + "created": "Aangemaakt", + "expires": "Verloopt", + "accessCount": "Weergaven", + "revoke": "Intrekken", + "revokeDescription": "Trek deze link direct in. Iedereen die hem heeft, verliest meteen de toegang. Dit kan niet ongedaan worden gemaakt.", + "statusActive": "Actief", + "statusRevoked": "Ingetrokken", + "statusExpired": "Verlopen", + "inactiveTitle": "Ingetrokken en verlopen ({count})", + "shownOnce": "Wordt maar één keer getoond. Bewaar de QR-code en de wachtwoordzin nu; geen van beide kan later worden hersteld.", + "qrAlt": "QR-code met de deellink en de wachtwoordzin", + "linkLabel": "Link", + "passphraseLabel": "Wachtwoordzin", + "passphraseHint": "De ontvanger heeft zowel de link als deze wachtwoordzin nodig. De QR-code bevat beide.", + "copyLink": "Link kopiëren", + "copyPassphrase": "Wachtwoordzin kopiëren", + "protected": "Wachtwoordzin", + "attachTitle": "Documenten bijvoegen", + "attachButton": "Documenten kiezen", + "attachCount": "{count} van {max} geselecteerd", + "attachFrozen": "De set documenten ligt vast zodra je de link aanmaakt. Daarna kunnen er geen documenten meer worden toegevoegd of verwijderd.", + "attachRemove": "{title} verwijderen", + "exifNote": "Cameragegevens (EXIF/GPS) worden bij het delen verwijderd uit JPEG-, PNG- en WebP-afbeeldingen. PDF-, TIFF-, HEIC- en Office-bestanden worden ongewijzigd doorgegeven.", + "documentCount": "Bijgevoegde documenten: {count}", + "qrScanTitle": "Scan om op een ander apparaat te openen", + "qrScanHint": "Richt een telefooncamera op de code om het gedeelde dossier te openen. De wachtwoordzin zit er al in.", + "pickerTitle": "Documenten bijvoegen", + "pickerDescription": "Doorzoek je kluis en selecteer documenten om te delen. Maximaal {max}.", + "pickerSearch": "Documenten zoeken", + "pickerEmpty": "Geen documenten gevonden.", + "pickerDone": "Klaar", + "pickerSelectedCount": "{count} van {max} geselecteerd", + "pickerMaxReached": "Je hebt het maximum van {max} documenten bereikt.", + "scopeTitle": "Wat deze link bevat", + "scopeInsuranceExcluded": "Verzekeringsgegevens worden nooit via een link gedeeld.", + "statusNeedsReselect": "Inhoud opnieuw kiezen", + "reselectReason": "Deze link gaf toegang tot een selectie die nooit was gekozen, daarom is hij gesloten. Maak een nieuwe link aan en kies wat erin moet staan.", + "reselectAction": "Vervanging aanmaken", + "createDetail": "Het token wordt één keer getoond bij het aanmaken. Bewaar het dan; het kan niet worden hersteld.", + "activeDescription": "Links die je hebt gedeeld, wanneer ze verlopen en hoe vaak ze zijn geopend." + }, + "genderOther": "Anders", + "nightscout": "Nightscout", + "nightscoutTag": "CGM", + "nightscoutDescription": "Koppel je eigen Nightscout-site om continue glucosemetingen naar het glucosepaneel te synchroniseren.", + "nightscoutViewData": "Je glucose bekijken", + "nightscoutUrl": "Nightscout-URL", + "nightscoutUrlSavedPlaceholder": "Opgeslagen. Voer een nieuwe URL in om deze te vervangen", + "nightscoutToken": "API-token", + "nightscoutTokenOptional": "Optioneel voor een openbare site", + "nightscoutTokenSavedPlaceholder": "Opgeslagen. Voer een nieuw token in om dit te vervangen", + "nightscoutTokenHelp": "Plak een toegangstoken uit de beheertools van je Nightscout. Laat dit leeg als je site openbaar leesbaar is.", + "nightscoutPrivateOperatorTitle": "Toegang tot een privé-Nightscout vereist goedkeuring van de serverbeheerder.", + "nightscoutPrivateOperatorDescription": "Vraag je serverbeheerder om precies deze Nightscout-origin goed te keuren.", + "nightscoutConnect": "Koppelen", + "nightscoutUpdate": "Wijzigingen opslaan", + "nightscoutConnected": "Nightscout gekoppeld.", + "nightscoutConnectFailed": "Kan geen verbinding maken met Nightscout.", + "nightscoutSync": "Nu synchroniseren", + "nightscoutSyncResult": "{count} metingen gesynchroniseerd", + "nightscoutSyncFailed": "Synchronisatie mislukt", + "nightscoutDisconnect": "Ontkoppelen", + "nightscoutDisconnectTitle": "Nightscout ontkoppelen?", + "nightscoutDisconnectDescription": "Toekomstige synchronisaties stoppen. Glucosemetingen die al zijn geïmporteerd, blijven in je geschiedenis staan.", + "polar": "Polar", + "polarDescription": "Koppel je Polar-account om Nightly Recharge-herstel, slaapfasen, dagelijkse activiteit en trainingssessies te synchroniseren.", + "polarViewData": "Je slaap en herstel bekijken", + "polarCredentials": "API-inloggegevens", + "polarClientId": "Client-ID", + "polarClientSecret": "Clientgeheim", + "polarCredentialsSaved": "Inloggegevens opgeslagen", + "polarCredentialsSavedPlaceholder": "Opgeslagen. Voer een nieuwe waarde in om te vervangen", + "polarSaveCredentials": "Opslaan", + "polarUnavailable": "Polar is niet geconfigureerd op deze server. Voeg hierboven je eigen Polar-OAuth-inloggegevens toe of vraag je beheerder om de gedeelde app te configureren.", + "polarConnect": "Polar koppelen", + "polarSync": "Nu synchroniseren", + "polarSyncResult": "{count} metingen gesynchroniseerd", + "polarSyncFailed": "Synchronisatie mislukt", + "polarDisconnect": "Ontkoppelen", + "polarDisconnectTitle": "Polar ontkoppelen?", + "polarDisconnectDescription": "Toekomstige synchronisaties stoppen. Metingen die al zijn geïmporteerd, blijven in je geschiedenis staan.", + "polarOauthConnected": "Polar gekoppeld. De eerste synchronisatie start op de achtergrond.", + "polarOauthFailed": "Koppeling met Polar mislukt", + "polarOauthError": { + "csrf1": "De beveiligingscontrole is mislukt omdat de browsercookie ontbrak. Start de koppeling opnieuw in dezelfde browser.", + "state": "Het antwoord van Polar kwam niet overeen met een openstaand koppelingsverzoek. Start de koppeling opnieuw.", + "cross_user": "Het antwoord hoort bij een verzoek van een ander account. Start de koppeling opnieuw vanuit je eigen account.", + "nocode": "Polar heeft geen autorisatiecode teruggestuurd. Probeer het opnieuw en sta toegang toe in het Polar-venster.", + "nocreds": "Polar is niet geconfigureerd op deze server. Vraag je beheerder om de Polar-OAuth-inloggegevens toe te voegen.", + "token": "De tokenuitwisseling met Polar is mislukt. Start de koppeling opnieuw.", + "rate_limited": "Te veel koppelingspogingen. Wacht even en probeer het opnieuw.", + "generic": "Onbekende fout bij het koppelen. Start de koppeling opnieuw." + }, + "oura": "Oura", + "ouraDescription": "Koppel je Oura-account om paraatheid, slaapfasen, hartslagvariabiliteit en dagelijkse activiteit te synchroniseren.", + "ouraViewData": "Je slaap en herstel bekijken", + "ouraCredentials": "API-inloggegevens", + "ouraClientId": "Client-ID", + "ouraClientSecret": "Clientgeheim", + "ouraCredentialsSaved": "Inloggegevens opgeslagen", + "ouraCredentialsSavedPlaceholder": "Opgeslagen. Voer een nieuwe waarde in om te vervangen", + "ouraSaveCredentials": "Opslaan", + "ouraUnavailable": "Oura is niet geconfigureerd op deze server. Voeg hierboven je eigen Oura-OAuth-inloggegevens toe of vraag je beheerder om de gedeelde app te configureren.", + "ouraConnect": "Oura koppelen", + "ouraSync": "Nu synchroniseren", + "ouraSyncResult": "{count} metingen gesynchroniseerd", + "ouraSyncFailed": "Synchronisatie mislukt", + "ouraDisconnect": "Ontkoppelen", + "ouraDisconnectTitle": "Oura ontkoppelen?", + "ouraDisconnectDescription": "Toekomstige synchronisaties stoppen. Metingen die al zijn geïmporteerd, blijven in je geschiedenis staan.", + "ouraOauthConnected": "Oura gekoppeld. De eerste synchronisatie start op de achtergrond.", + "ouraOauthFailed": "Koppeling met Oura mislukt", + "ouraOauthError": { + "csrf1": "De beveiligingscontrole is mislukt omdat de browsercookie ontbrak. Start de koppeling opnieuw in dezelfde browser.", + "state": "Het antwoord van Oura kwam niet overeen met een openstaand koppelingsverzoek. Start de koppeling opnieuw.", + "cross_user": "Het antwoord hoort bij een verzoek van een ander account. Start de koppeling opnieuw vanuit je eigen account.", + "nocode": "Oura heeft geen autorisatiecode teruggestuurd. Probeer het opnieuw en sta toegang toe in het Oura-venster.", + "nocreds": "Oura is niet geconfigureerd op deze server. Vraag je beheerder om de Oura-OAuth-inloggegevens toe te voegen.", + "token": "De tokenuitwisseling met Oura is mislukt. Start de koppeling opnieuw.", + "rate_limited": "Te veel koppelingspogingen. Wacht even en probeer het opnieuw.", + "issuer": "Het inlogantwoord kwam niet van de eigen autorisatieserver van Oura, daarom is de koppeling voor je veiligheid gestopt. Start de koppeling opnieuw. Als dit blijft gebeuren, laat het dan je beheerder weten.", + "generic": "Onbekende fout bij het koppelen. Start de koppeling opnieuw." + }, + "integrationSetupGuide": "Installatiehandleiding", + "coach": { + "activate": { + "title": "Coach activeren", + "description": "De Coach-knop en het Coach-paneel tonen.", + "toggleAria": "De Coach-knop en het Coach-paneel activeren", + "savedOn": "Coach geactiveerd.", + "savedOff": "Coach verborgen.", + "saveError": "De wijziging kon niet worden opgeslagen. Probeer het opnieuw." + }, + "memory": { + "edit": "Bewerken", + "source": { + "user": "van jou", + "coach": "van de Coach" + } + } + }, + "integrationRedirectGuide": { + "intro": "Dit koppelt via je eigen {provider}-ontwikkelaarsapp; het instellen duurt ongeveer 5 minuten:", + "step1": "Maak een app aan in het ontwikkelaarsportaal van {provider}.", + "step2": "Stel de redirect-/callback-URL in op:", + "step3": "Plak de client-ID en het clientgeheim die je krijgt hierboven." + }, + "security": { + "sessionsTitle": "Actieve sessies", + "sessionsDescription": "Apparaten en browsers die momenteel op je account zijn ingelogd.", + "sessionsLoadError": "Actieve sessies konden niet worden geladen.", + "sessionsEmpty": "Geen actieve sessies.", + "currentSession": "Dit apparaat", + "lastActive": "Laatst actief {time}", + "unknownLocation": "Onbekende locatie", + "revokeSession": "Uitloggen", + "revokeError": "Het verzoek kon niet worden voltooid. Probeer het opnieuw.", + "signOutEverywhere": "Overal elders uitloggen", + "signOutEverywhereDone": "{count} andere sessie(s) uitgelogd", + "activityTitle": "Beveiligingsactiviteit", + "activityDescription": "Recente inlogmomenten, beveiligingswijzigingen en gegevensexports van je account.", + "activityEmpty": "Nog geen beveiligingsactiviteit.", + "activityLoadError": "De beveiligingsactiviteit kon niet worden geladen.", + "action": { + "newDevice": "Ingelogd op nieuw apparaat", + "loginFailed": "Mislukte inlogpoging", + "login": "Ingelogd", + "passwordChange": "Wachtwoord gewijzigd", + "mfa": "Tweestapsverificatie gewijzigd", + "sessionRevoke": "Sessie uitgelogd", + "token": "API-token gewijzigd", + "accountDelete": "Account verwijderd", + "dataClear": "Gegevens gewist", + "export": "Gegevensexport", + "other": "Beveiligingsgebeurtenis" + }, + "active": "Actief", + "inactive": "Inactief", + "stepUpRequired": "Log voor je veiligheid opnieuw in om je tweede factor te wijzigen.", + "useRecoveryCode": "Gebruik in plaats daarvan een herstelcode", + "useAuthenticator": "Gebruik in plaats daarvan je authenticator-app", + "totp": { + "title": "Authenticator-app", + "description": "Gebruik een tijdgebaseerde code uit een authenticator-app als tweede factor.", + "setUp": "Instellen", + "step1": "Scan de QR-code met je authenticator-app of voer de geheime sleutel handmatig in.", + "step2": "Voer ter bevestiging de 6-cijferige code in die de app toont.", + "qrAlt": "QR-code voor het instellen van de authenticator-app", + "qrUnavailable": "QR-code niet beschikbaar", + "manualEntry": "Of voer deze geheime sleutel handmatig in", + "enterCode": "Voer de 6-cijferige code in", + "verify": "Verifiëren", + "setupFailed": "Het instellen kon niet worden gestart. Probeer het opnieuw.", + "invalidCode": "Die code is ongeldig. Probeer het opnieuw.", + "disable": "Uitschakelen", + "disableTitle": "Tweestapsverificatie uitschakelen", + "disableConfirm": "Voer een actuele code in om je tweede factor uit te schakelen. Hiermee worden ook je herstelcodes verwijderd.", + "currentCode": "Actuele code", + "disableFailed": "De tweede factor kon niet worden uitgeschakeld." + }, + "recovery": { + "saveNow": "Sla deze herstelcodes nu op", + "saveNowHint": "Elke code werkt één keer. Ze worden alleen nu getoond. Bewaar ze op een veilige plek. Als je je authenticator kwijtraakt, is een herstelcode de enige manier om weer binnen te komen.", + "download": "Downloaden", + "remainingOne": "Nog {count} herstelcode over.", + "remainingOther": "Nog {count} herstelcodes over.", + "regenerate": "Codes opnieuw genereren", + "regenFailed": "De herstelcodes konden niet opnieuw worden gegenereerd.", + "savedIt": "Ik heb ze opgeslagen", + "regenerateTitle": "Herstelcodes opnieuw genereren?", + "regenerateConfirm": "Hiermee worden je huidige herstelcodes vervangen. Je bestaande codes werken direct niet meer, en een nieuwe set wordt maar één keer getoond." + }, + "keys": { + "title": "Beveiligingssleutels", + "description": "Registreer een hardware- of platformbeveiligingssleutel als tweede factor.", + "empty": "Nog geen beveiligingssleutels geregistreerd.", + "add": "Beveiligingssleutel toevoegen", + "addFailed": "De beveiligingssleutel kon niet worden geregistreerd.", + "rename": "Naam wijzigen", + "renameFailed": "De naam van de beveiligingssleutel kon niet worden gewijzigd.", + "remove": "Beveiligingssleutel verwijderen", + "removeFailed": "De beveiligingssleutel kon niet worden verwijderd.", + "removeConfirm": "Deze beveiligingssleutel werkt dan niet meer als tweede factor.", + "lastUsed": "Laatst gebruikt op {date}", + "neverUsed": "Nooit gebruikt", + "added": "toegevoegd op {date}", + "nameLabel": "Naam van de beveiligingssleutel" + }, + "passkeyNudge": { + "title": "Voeg een passkey toe om sneller in te loggen", + "body": "Met passkeys log je in met je vingerafdruk, gezicht of de pincode van je apparaat, zonder een wachtwoord te hoeven onthouden." + }, + "trustedDevices": { + "title": "Vertrouwde apparaten", + "description": "Browsers die je hebt gemarkeerd als vertrouwd, slaan de tweede factor 30 dagen over. Het wachtwoord blijft nodig. Trek het vertrouwen in voor apparaten die je niet herkent.", + "loadError": "De vertrouwde apparaten konden niet worden geladen.", + "revokeError": "Het vertrouwen in het apparaat kon niet worden ingetrokken. Probeer het opnieuw.", + "revoke": "Intrekken", + "revokeAll": "Alle apparaten vergeten", + "revokeAllDone": "Vertrouwde apparaten vergeten: {count}", + "unnamed": "Onbekend apparaat", + "current": "Dit apparaat", + "expires": "Vertrouwd tot {date}", + "revokeConfirmTitle": "Dit apparaat niet meer vertrouwen?", + "revokeConfirmBody": "Het vraagt weer om je tweede factor wanneer je er de volgende keer mee inlogt.", + "revokeAllConfirmTitle": "Geen enkel apparaat meer vertrouwen?", + "revokeAllConfirmBody": "Elk apparaat vraagt weer om je tweede factor wanneer je er de volgende keer mee inlogt, ook dit apparaat." + }, + "revokeSessionConfirmTitle": "Dit apparaat uitloggen?", + "revokeSessionConfirmBody": "{device} moet opnieuw inloggen. Niets wat erop is vastgelegd, wordt aangetast.", + "signOutEverywhereConfirmTitle": "Alle andere apparaten uitloggen?", + "signOutEverywhereConfirmBody": "Elk ander apparaat, elke gekoppelde AI-assistent en elk API-token moet opnieuw inloggen of opnieuw worden ingesteld. Dit apparaat blijft ingelogd. Niets wat je hebt vastgelegd, wordt aangetast.", + "signOutEverywhereShareLinks": "Ook de deellinks voor artsen beëindigen", + "signOutEverywhereInvites": "Uitnodigingen voor je dossier die nog niemand heeft geaccepteerd, worden ingetrokken. Mensen die al hebben geaccepteerd, houden hun toegang; die kun je hierna beëindigen.", + "signOutEverywhereInvitesDone": "{count} uitnodiging(en) ingetrokken die niemand had geaccepteerd.", + "grantsKeptTitle": "Deze mensen kunnen je dossier nog steeds zien", + "grantsKeptBody": "Uitloggen beëindigt geen toegang die je iemand hebt gegeven. Beëindig die hier als je die niet hebt gegeven, of als je niet meer wilt dat iemand die heeft." + }, + "privacy": { + "encryption": { + "title": "Versleuteld opgeslagen", + "summary": "Je gevoelige gegevens worden versleuteld opgeslagen met {algorithm}, verdeeld over {columns} velden in {models} soorten gegevens.", + "statement": "Je gevoelige gegevens worden versleuteld opgeslagen met AES-256-GCM." + }, + "stored": { + "title": "Wat wordt opgeslagen", + "measurements": "Metingen: gewicht, bloeddruk, hartslag en elke andere waarde die jij of een apparaat vastlegt", + "integrations": "Tokens van koppelingen (versleuteld)", + "security": "Account- en beveiligingsactiviteit (sessies, inloglogboek)", + "profile": "Je profiel, medische voorgeschiedenis en dossiergegevens", + "modules": "Gegevens van elke module: {list}" + }, + "retention": { + "title": "Bewaartermijn", + "description": "Hoe lang tijdgebonden gegevens worden bewaard voordat ze automatisch worden opgeschoond.", + "coach": "Coach-gesprekken: {days} dagen bewaard", + "audit": "Logboek van beveiligingsactiviteit: {days} dagen bewaard", + "delivery": "Logboek van bezorgde meldingen: {days} dagen bewaard", + "unavailable": "Details over de bewaartermijn zijn op dit moment niet beschikbaar." + }, + "export": { + "title": "Mijn gegevens downloaden", + "description": "Je gegevens als CSV of JSON, of een volledig medisch dossier voor je arts.", + "openExport": "Export en back-up", + "openHealthRecord": "Medisch dossier" + }, + "delete": { + "title": "Verwijderen of wissen", + "description": "Verwijder je account volledig, of wis je gezondheidsgegevens en behoud je account.", + "backupLag": "Bij verwijderen worden je gegevens direct gewist. Als deze server versleutelde back-ups buiten de host bewaart, worden de kopieën van je gegevens direct daarna uit die opslag verwijderd, of bij de volgende nachtelijke run als de opslag niet bereikbaar is.", + "openAdvanced": "Verwijderen of wissen" + }, + "posture": { + "title": "Privacyniveau", + "description": "Bepaal hoeveel van je gegevens met AI-functies wordt gedeeld.", + "openAi": "AI-privacymodus" + } + }, + "mcp": { + "enableTitle": "Extern MCP-endpoint", + "enableDescription": "Laat een assistent met MCP-ondersteuning (Claude.ai, ChatGPT) je gezondheidsgegevens lezen via een token met beperkte rechten.", + "enableToggleLabel": "Het MCP-endpoint inschakelen", + "endpointLabel": "Connector-URL", + "connectDescription": "Plak deze URL in de instellingen voor aangepaste connectors van je assistent en autoriseer daarna met het token hieronder, of log in wanneer daarom wordt gevraagd.", + "tokensTitle": "Connectortokens", + "tokensDescription": "Maak een token aan om een assistent te koppelen; alleen-lezen, tenzij je hieronder vastleggen toestaat.", + "scopeNote": "Nieuwe tokens kunnen alleen je eigen gegevens lezen. Schrijftoegang (health:write) geef je per token met de schakelaar hieronder. Een token kan nooit bij beheerfuncties.", + "writeScopeToggleLabel": "Vastleggen toestaan (health:write)", + "writeScopeNote": "Voegt de scope health:write toe, zodat de assistent nieuwe metingen en stemmingsregistraties in je account kan vastleggen. Elke schrijfactie wordt eerst bevestigd. Het token kan nog steeds geen bestaande registraties verwijderen of bewerken, geen medicatie wijzigen en niet bij REST- of beheerfuncties. Laat dit uit voor alleen-lezentoegang.", + "connectionsTitle": "Gekoppelde assistenten", + "connectionsDescription": "Assistenten die je via de inlogprocedure hebt geautoriseerd.", + "noConnections": "Geen gekoppelde assistenten.", + "connectionConnected": "Gekoppeld", + "connectionLastUsed": "Laatst gebruikt", + "connectionNeverUsed": "Nooit gebruikt", + "connectionRevoke": "Ontkoppelen", + "connectionRevokeDescription": "Hiermee beëindig je de toegang van de assistent direct en kan die de toegang niet meer vernieuwen. Om opnieuw te koppelen moet de assistent opnieuw worden geautoriseerd.", + "connectionRevokeFailed": "De assistent kon niet worden ontkoppeld.", + "connectionsDetail": "Als je een koppeling intrekt, eindigt de toegang direct, inclusief de mogelijkheid om die te vernieuwen.", + "tokensDetail": "Het token wordt één keer getoond.", + "tokenNamePlaceholder": "Naam, bijv. Claude Desktop" + }, + "strava": "Strava", + "stravaDescription": "Koppel je Strava-account om je activiteiten naar je trainingsgeschiedenis te synchroniseren.", + "stravaViewData": "Je trainingen bekijken", + "stravaCredentials": "API-inloggegevens", + "stravaClientId": "Client-ID", + "stravaClientSecret": "Clientgeheim", + "stravaCredentialsSaved": "Inloggegevens opgeslagen", + "stravaCredentialsSavedPlaceholder": "Opgeslagen. Voer nieuwe in om te vervangen", + "stravaSaveCredentials": "Opslaan", + "stravaUnavailable": "Strava is niet geconfigureerd op deze server. Voeg hierboven je eigen Strava-API-inloggegevens toe, of vraag je beheerder om de gedeelde app te configureren.", + "stravaConnect": "Strava koppelen", + "stravaSync": "Nu synchroniseren", + "stravaSyncResult": "{count} metingen gesynchroniseerd", + "stravaSyncFailed": "Synchronisatie mislukt", + "stravaDisconnect": "Ontkoppelen", + "stravaDisconnectTitle": "Strava ontkoppelen?", + "stravaDisconnectDescription": "Toekomstige synchronisaties stoppen. Al geïmporteerde activiteiten blijven in je geschiedenis.", + "stravaOauthConnected": "Strava gekoppeld. De eerste synchronisatie start op de achtergrond.", + "stravaOauthFailed": "Koppelen met Strava mislukt", + "stravaOauthError": { + "csrf1": "De beveiligingscontrole is mislukt omdat de browsercookie ontbrak. Start het koppelen opnieuw in dezelfde browser.", + "state": "Het antwoord van Strava kwam niet overeen met een openstaand koppelingsverzoek. Start het koppelen opnieuw.", + "cross_user": "Het antwoord hoort bij een verzoek van een ander account. Start het koppelen opnieuw vanuit je eigen account.", + "nocode": "Strava heeft geen autorisatiecode teruggegeven. Probeer het opnieuw en sta toegang toe in het Strava-venster.", + "nocreds": "Strava is niet geconfigureerd op deze server. Vraag je beheerder om de Strava-API-inloggegevens toe te voegen.", + "token": "Het uitwisselen van het token met Strava is mislukt. Start het koppelen opnieuw.", + "rate_limited": "Te veel koppelpogingen. Wacht even en probeer het opnieuw.", + "generic": "Onbekende fout bij het koppelen. Start het koppelen opnieuw." + }, + "appleHealth": { + "title": "Apple Health", + "description": "Live synchronisatie loopt via de HealthLog-app voor iOS, niet via een web- of OAuth-koppeling.", + "status": { + "unavailable": "Status van Apple Health niet beschikbaar" + }, + "setupTitle": "Live synchronisatie inschakelen", + "permissionStep": "Open in de HealthLog-app voor iOS Instellingen → Apple Health en sta de gezondheidscategorieën toe die je wilt delen.", + "backgroundStep": "Laat Ververs op achtergrond ingeschakeld. De app synchroniseert nieuwe gegevens automatisch op de voorgrond en wanneer iOS achtergrondtijd toekent.", + "importNote": "Heb je oudere geschiedenis nodig of kun je de iOS-app niet gebruiken? Het uploaden van een Apple Health-XML/ZIP-bestand is een eenmalig alternatief en schakelt geen live synchronisatie in.", + "importAction": "Eenmalige import openen", + "progress": { + "title": "Voortgang van de synchronisatie", + "receivedLabel": "Ontvangen gegevensrecords", + "oldestLabel": "Oudste bereikte meting", + "flowing": "Er zijn in het afgelopen uur gegevens binnengekomen. De iPhone-app levert nog steeds.", + "waiting": "Wachten tot de iPhone-app meer gegevens stuurt. De levering gaat verder wanneer de app open is of wanneer iOS de app achtergrondtijd geeft. Een stille periode tijdens de eerste grote inhaalslag is normaal en geen fout." + }, + "delivery": { + "title": "Levering", + "lastTriggerLabel": "Laatste synchronisatie ontvangen", + "lastBackgroundLabel": "Laatste synchronisatie op de achtergrond", + "backgroundNever": "Nooit: elke synchronisatie tot nu toe kwam binnen terwijl de app open was", + "noSyncYet": "Er is nog geen synchronisatie binnengekomen, dus er valt hier nog niets te melden.", + "trigger": { + "foreground": "terwijl de app open was", + "background": "op de achtergrond", + "push": "na een wekbericht via push", + "unknown": "aanleiding niet door de app gemeld", + "manual": "via Alles synchroniseren" + } + }, + "freshness": { + "title": "Per gegevenstype", + "lastReceived": "Laatst ontvangen {relative}", + "lastNewValue": "Laatste nieuwe waarde {relative}", + "lastBackground": "Laatst op de achtergrond {relative}", + "never": "Nog niet ontvangen", + "lastBackfill": "Geschiedenis bijgewerkt {relative}" + } + }, + "garminInfo": { + "title": "Garmin", + "body": "Garmin heeft hier geen directe koppeling. Koppel via Apple Health (iOS) of Google Health Connect (Android). De eigen scores van Garmin (Body Battery, Training Load, HRV Status, VO₂ max) deelt Garmin met geen van beide platforms.", + "docsLink": "Lees de handleiding" + }, + "glucoseReference": { + "title": "Referentiebereik voor glucose", + "description": "Aan welk bereik je bloedglucosemetingen worden getoetst.", + "enable": "Het streefbereik voor diabetes gebruiken", + "explainer": "Uit: metingen worden getoetst aan het algemene referentiebereik voor mensen zonder diabetes. Aan: ze worden getoetst aan het strengere glykemische streefbereik uit de ADA Standards of Care, en de Coach baseert zijn opmerkingen over glucose dan op dat bereik. Je eigen streefwaarden hieronder gaan nog steeds voor.", + "disclaimer": "Hiermee kies je een referentiebereik. Het is geen diagnose, het wordt nooit afgeleid uit een meting en de app onderneemt op basis hiervan geen klinische actie. Welke streefwaarden voor jou gelden, is een vraag voor je zorgverlener.", + "error": "De instelling kon niet worden opgeslagen." + }, + "dangerZoneDetail": "Je account en de inloggegevens waarmee je inlogt, blijven behouden.", + "deleteAccountCardDetail": "Dit kan niet ongedaan worden gemaakt.", + "passkeyStepUpRequired": "Log voor je veiligheid opnieuw in voordat je een passkey verwijdert.", + "setup": { + "title": "Inrichting", + "description": "De vragen die bepalen wat HealthLog als eerste toont, en de checklist om aan de slag te gaan op het dashboard.", + "setUpAgain": "Opnieuw inrichten", + "showChecklist": "De checklist weer tonen", + "checklistShown": "De checklist staat weer op het dashboard.", + "checklistNothingHidden": "De checklist was niet verborgen; je vindt hem op het dashboard." + }, + "documentSources": { + "title": "Documentarchieven", + "description": "Doorzoek Paperless-ngx of Papra vanuit HealthLog en importeer de documenten die je kiest.", + "explainer": "Overal waar je documenten koppelt, verschijnt een importknop: bij een bezoek, een vaccinatie en een aandoening, en in Documenten. HealthLog bewaart een eigen versleutelde kopie van elk document dat je importeert, en benadert je archief alleen wanneer je zoekt of importeert.", + "systemLabel": "Archief", + "statusConnected": "Gekoppeld", + "statusNotConnected": "Niet gekoppeld", + "connectedSince": "Gekoppeld, laatst gecontroleerd op {date}", + "originRemoved": "Dit adres staat niet meer op de lijst met toegestane archieven van de server. Vraag het na bij de beheerder, of sla een ander adres op.", + "baseUrl": "Adres", + "allowedOrigins": "Toegestaan op deze server: {origins}", + "organizationId": "Organisatie-ID", + "organizationHelp": "Het deel na /organizations/ in de adresbalk van Papra. Organisatie-ID's van Papra zien eruit als org_ gevolgd door 24 letters en cijfers.", + "token": "API-token", + "tokenSaved": "Opgeslagen voor dit adres. Laat leeg om het te behouden.", + "tokenHelpPaperless": "In Paperless-ngx: Mijn profiel, API-token.", + "tokenHelpPapra": "In Papra: een API-sleutel met documents:read en tags:read.", + "save": "Opslaan en testen", + "saving": "Testen…", + "saved": "Gekoppeld. Het archief reageerde.", + "test": "Testen", + "testOk": "Het archief reageerde in {latency} ms.", + "disconnect": "Ontkoppelen", + "disconnectTitle": "{name} ontkoppelen?", + "disconnectDescription": "HealthLog vergeet het adres en het token. Documenten die je al hebt geïmporteerd, blijven in HealthLog.", + "unavailableExplainer": "Deze server staat geen documentarchieven meer toe, dus de koppeling hieronder kan niet worden gebruikt. Je kunt hem nog wel verwijderen.", + "moduleOffExplainer": "Documenten zijn uitgeschakeld, dus de koppeling hieronder wordt niet gebruikt. Je kunt hem nog wel verwijderen.", + "tokenNewAddress": "Voor een nieuw adres is het API-token opnieuw nodig." + }, + "emailChangePassword": "Huidig wachtwoord (nodig om het e-mailadres te wijzigen)", + "reproof": { + "description": "Hiermee deel of exporteer je je gezondheidsgegevens. Bevestig dat jij het bent om door te gaan.", + "descriptionChange": "Hiermee wijzig je iets wat alleen jij zou moeten kunnen wijzigen. Bevestig dat jij het bent om door te gaan.", + "signInAgain": "Log opnieuw in en probeer het daarna nog een keer. Je account heeft geen wachtwoord of passkey waarmee je hier kunt bevestigen.", + "failed": "Dat is niet gelukt. Controleer wat je hebt ingevoerd en probeer het opnieuw." + }, + "passwordTitle": "Wachtwoord", + "tokenNameLabel": "Tokennaam", + "displayCard": { + "title": "Weergave", + "description": "Taal, eenheden en notaties, opgeslagen zodra je ze wijzigt." + }, + "integrationCard": { + "state": { + "ok": "Werkt", + "limited": "Beperkt", + "degraded": "Vertraagd", + "actionRequired": "Actie nodig" + }, + "reason": { + "dataArriving": "Er komen gegevens binnen.", + "dataArrivingHistory": "Er komen gegevens binnen. Oudere geschiedenis wordt op de achtergrond geladen.", + "firstSyncPending": "Gekoppeld. De eerste synchronisatie start binnenkort.", + "planLimited": "Er komen gegevens binnen. Je {provider}-abonnement bevat geen {list}.", + "permissionLimited": "Er komen gegevens binnen. Er ontbreekt toestemming voor {list}.", + "providerErrors": "{provider} reageert sinds {since} niet betrouwbaar. HealthLog blijft het proberen; je hoeft zelf niets te doen.", + "providerErrorsNoSince": "{provider} reageert op dit moment niet betrouwbaar. HealthLog blijft het proberen; je hoeft zelf niets te doen.", + "syncStalled": "HealthLog heeft sinds {since} niet gesynchroniseerd. Dat ligt aan de server, niet aan je apparaat.", + "syncStalledNoSince": "HealthLog synchroniseert op dit moment niet. Dat ligt aan de server, niet aan je apparaat.", + "noNewData": "Geen nieuwe gegevens sinds {since}.", + "noNewDataNoSince": "Al een tijdje geen nieuwe gegevens.", + "noNewDataApple": "Geen nieuwe gegevens sinds {since}. Open HealthLog één keer op je iPhone.", + "noNewDataAppleNoSince": "Al een tijdje geen nieuwe gegevens. Open HealthLog één keer op je iPhone.", + "unexpectedSilence": "Er is sinds {since} niets binnengekomen, hoewel {provider} normaal dagelijks levert.", + "unexpectedSilenceNoSince": "Er komt niets binnen, hoewel {provider} normaal dagelijks levert.", + "reauthRequired": "De koppeling met {provider} is verlopen. Koppel opnieuw om gegevens te blijven ontvangen.", + "pausedAfterErrors": "{provider} is gepauzeerd omdat het sinds {since} steeds mislukt.", + "pausedAfterErrorsNoSince": "{provider} is gepauzeerd na herhaalde fouten." + }, + "when": { + "today": "vandaag, {time}", + "yesterday": "gisteren, {time}", + "date": "{date}, {time}" + }, + "items": { + "activity": "activiteit", + "sleep": "slaap" + }, + "moreValuesOne": "nog {count}", + "moreValuesFew": "nog {count}", + "moreValuesOther": "nog {count}", + "notConnected": "Niet gekoppeld.", + "lastData": "Laatste gegevens: {when}", + "lastDataNone": "Laatste gegevens: nog geen", + "reconnect": "Opnieuw koppelen", + "resume": "Hervatten", + "menuLabel": "Meer acties voor {provider}", + "menu": { + "credentials": "Inloggegevens wijzigen", + "address": "Adres en token wijzigen" + }, + "syncing": "Synchroniseren…", + "details": { + "title": "Details voor een bugmelding", + "none": "geen", + "state": "Status", + "since": "sinds", + "lastSync": "Laatste synchronisatie", + "lastData": "Laatste gegevens", + "failingParts": "falende onderdelen", + "recentCalls": "Recente aanroepen", + "unavailable": "Niet beschikbaar", + "unavailableList": "Niet beschikbaar: {list}", + "causePlan": "abonnement", + "causePermission": "toestemming", + "failureStreak": "Fouten op rij: {count} van {threshold}", + "copyFailed": "Kopiëren is mislukt. Selecteer de tekst en kopieer hem handmatig." + } + }, + "dawarich": "Dawarich", + "dawarichTag": "Beweging", + "dawarichDescription": "Koppel je Dawarich-instantie om dagelijkse afstand, tijd buitenshuis en reisdagen binnen te halen.", + "dawarichUrl": "Dawarich-adres", + "dawarichApiKey": "API-sleutel", + "dawarichApiKeyHelp": "Je vindt hem in Dawarich onder Account. HealthLog gebruikt hem alleen om dagwaarden te lezen, nooit coördinaten of plaatsnamen.", + "dawarichConnect": "Koppelen", + "dawarichUpdate": "Wijzigingen opslaan", + "dawarichConnected": "Dawarich gekoppeld. De afgelopen 30 dagen worden nu geladen.", + "dawarichSync": "Nu ophalen", + "dawarichSyncQueued": "De afgelopen zeven dagen worden zo opgehaald.", + "dawarichSyncAlreadyQueued": "Er wordt al opgehaald.", + "dawarichDisconnect": "Ontkoppelen", + "dawarichDisconnectTitle": "Dawarich ontkoppelen?", + "dawarichDisconnectDescription": "Er wordt niets meer opgehaald. Al opgeslagen dagen blijven bewaard.", + "dawarichDisconnectDelete": "Ontkoppelen en dagen verwijderen", + "dawarichDisconnectDeleteTitle": "Ontkoppelen en alle dagen verwijderen?", + "dawarichDisconnectDeleteDescription": "De koppeling en alle opgeslagen bewegingsdagen worden verwijderd. Dit kan niet ongedaan worden gemaakt.", + "dawarichHomePlaceSet": "Je thuislocatie is ingesteld.", + "dawarichHomePlaceMissing": "Stel je thuislocatie in, zodat de tijd buitenshuis kan worden gemeten.", + "dawarichHomeCountryIs": "Thuisland: {country}.", + "dawarichHomeCountryMissing": "Nog geen thuisland, dus geen reisdagen.", + "dawarichDaysStored": "Opgeslagen dagen: {count}", + "dawarichHomePlace": "Thuislocatie", + "dawarichHomePlaceChoose": "Kies een plaats uit Dawarich", + "dawarichHomePlaceChange": "Thuislocatie kiezen", + "dawarichHomeCountry": "Thuisland", + "dawarichHomeCountryHelp": "Landcode van twee letters, zoals NL. Als je dit leeg laat, telt het land waar je het afgelopen jaar de meeste dagen was.", + "dawarichHomeSave": "Opslaan", + "dawarichHomeSaved": "Opgeslagen.", + "dawarichErrors": { + "invalid": "Dat adres werkt niet. Gebruik het adres van de instantie zonder inloggegevens.", + "privateOrigin": "Deze instantie staat op een privénetwerk. Vraag de serverbeheerder om haar goed te keuren.", + "credentials": "Dawarich heeft de API-sleutel niet geaccepteerd.", + "unreachable": "Dawarich is niet bereikbaar. Controleer het adres en of de instantie draait.", + "rateLimited": "Te veel pogingen. Wacht even en probeer het dan opnieuw.", + "homePlaceUnknown": "De Dawarich-instantie kent deze plaats niet meer.", + "notConnected": "Dawarich is niet gekoppeld.", + "generic": "Dat is niet gelukt. Probeer het opnieuw." + } + }, + "admin": { + "title": "Beheer", + "subtitle": "Systeemstatus, gebruikers en instellingen", + "settingsSaveError": "Instellingen opslaan mislukt", + "systemStatus": "Systeemstatus", + "systemStatusDescription": "Runtimestatus van deze instantie: database, worker en aantallen records.", + "database": "Database", + "databaseConnected": "Verbonden", + "databaseError": "Fout", + "startedAt": "Gestart", + "users": "Gebruikers", + "measurementsCount": "Metingen", + "activeTokens": "Actieve API-tokens", + "activeSessions": "Actieve sessies", + "loadingStatus": "Status laden…", + "systemStatusLoadError": "Systeemstatus laden mislukt.", + "systemStatusRetry": "Opnieuw proberen", + "adminSettingsLoadError": "Beheerinstellingen laden mislukt. De schakelaars hieronder geven mogelijk niet de actuele status weer. Vernieuw de pagina.", + "hostMetrics": { + "title": "Hostbelasting", + "load1": "Belasting (1 min)", + "memUsedPercent": "Geheugen", + "diskBusyPercent": "Schijf-I/O", + "last2hours": "Afgelopen 2 uur", + "empty": "Metingen gestart. Gegevens verschijnen binnen 1–2 minuten.", + "loadError": "Hostgegevens laden mislukt. Probeer de pagina te vernieuwen." + }, + "aiServerKey": { + "title": "AI-serversleutel", + "description": "Een sleutel van de beheerder voor accounts die zelf geen sleutel hebben ingesteld.", + "byokHint": "De eigen sleutel van een gebruiker (BYOK, ChatGPT-login of lokale provider) gaat altijd voor; de serversleutel is de laatste stap in de providerketen.", + "consentHint": "Verzoeken via de serversleutel vereisen de actieve AI-toestemming van de gebruiker; zonder toestemmingsbewijs wordt niets verzonden.", + "baseUrlHint": "De basis-URL bepaalt de API: een Anthropic-URL zoals https://api.anthropic.com/v1 wordt herkend, elke andere host wordt aangesproken via de OpenAI-compatibele API.", + "statusConfigured": "Geconfigureerd", + "statusNotConfigured": "Niet geconfigureerd", + "keyLabel": "API-sleutel", + "keyPlaceholder": "sk-...", + "keyPlaceholderSet": "Opgeslagen ({preview}). Voer een nieuwe sleutel in om deze te vervangen", + "modelLabel": "Model", + "baseUrlLabel": "Basis-URL", + "save": "Opslaan", + "remove": "Sleutel verwijderen", + "removeTitle": "De serversleutel verwijderen?", + "removeBody": "Accounts zonder eigen sleutel verliezen direct de AI-functies. De sleutel wordt na het opslaan nergens meer getoond, dus je hebt het origineel nodig om hem terug te zetten.", + "removeConfirm": "Sleutel verwijderen", + "saved": "Instellingen voor de AI-serversleutel opgeslagen", + "error": "Opslaan van de AI-serversleutel mislukt", + "legacyGrantTitle": "ALLOW_LOCAL_AI_PRIVATE_HOSTS=true is verouderd", + "legacyGrantBody": "Hiermee kunnen de serversleutel hierboven en AI-instellingen die op een beheerdersaccount zijn opgeslagen nog steeds je netwerk bereiken; deze optie wordt in een latere release verwijderd. Voor andere accounts moet het AI-endpoint nu al in AI_PRIVATE_ORIGINS staan. Stel AI_PRIVATE_ORIGINS in de serveromgeving in, herstart en verwijder daarna ALLOW_LOCAL_AI_PRIVATE_HOSTS.", + "legacyGrantOrigins": "De AI-basis-URL's die op deze instantie zijn opgeslagen en naar je netwerk wijzen:", + "legacyGrantNoOrigins": "Geen enkele op deze instantie opgeslagen AI-basis-URL wijst naar je netwerk, dus je kunt ALLOW_LOCAL_AI_PRIVATE_HOSTS nu verwijderen." + }, + "providerHealth": { + "title": "Status van AI-providers", + "description": "Leveringsstatus van elke AI-provider, samengevat uit het register met herhaalpogingen per gebruiker.", + "loading": "Providerstatus laden…", + "loadError": "De providerstatus kon niet worden geladen.", + "empty": "Er zijn nog geen AI-aanroepen vastgelegd.", + "trackedUsers": "{count} gebruikers gevolgd", + "lastOk": "laatst geslaagd {at}", + "lastFailure": "laatst mislukt {at}", + "lastFailureStatus": "HTTP {status}", + "statusHealthy": "Gezond", + "statusFailing": "{failing} van {tracked} mislukken, {run} keer op rij", + "typeAdminOpenai": "Serversleutel (beheerder)", + "typeAdminCodex": "Centrale ChatGPT (beheerder)", + "typeOpenai": "OpenAI-sleutel (persoonlijk)", + "typeAnthropic": "Anthropic-sleutel (persoonlijk)", + "typeCodex": "ChatGPT-login (persoonlijk)", + "typeLocal": "Lokaal model (persoonlijk)", + "typeGateway": "OpenAI-compatibele gateway (persoonlijk)", + "spendToday": "Vandaag, volgens de eigen kalenderdag van elk account: {total} tokens, waarvan {operator} op de eigen sleutel van de beheerder (accounts met verbruik: {accounts}).", + "statusPaused": "Gepauzeerd", + "pausedHint": "Gepauzeerd na herhaalde fouten voor {count} gebruikers tot {at}. Daarna wordt het automatisch opnieuw geprobeerd.", + "modelNotServed": "Het endpoint biedt het model {model} niet meer aan. Kies in de AI-instellingen een model dat het endpoint wel vermeldt.", + "usageLevels": "Accounts per AI-gebruiksniveau: {frugal} zuinig, {standard} standaard, {full} volledig." + }, + "aiQuality": { + "title": "Kwaliteit van inzichten", + "loading": "Feedbackoverzicht laden…", + "loadError": "Kwaliteitsoverzicht van inzichten laden mislukt. Probeer de pagina te vernieuwen.", + "empty": "Nog geen feedback. De aggregator draait dagelijks om 04:00. Zodra gebruikers aanbevelingen gaan beoordelen, verschijnen hier de percentages nuttige beoordelingen.", + "windowLabel": "Afgelopen {days} dagen", + "generatedAtLabel": "Gegenereerd", + "colSeverity": "Ernst", + "colMetric": "Meetwaarde", + "colProvider": "Provider", + "colPromptVersion": "Prompt", + "colHelpful": "Nuttig", + "colNotHelpful": "Niet nuttig", + "colHelpfulRate": "Percentage nuttig" + }, + "coachFeedback": { + "title": "Coach-feedback", + "loading": "Overzicht van Coach-feedback laden…", + "loadError": "Overzicht van Coach-feedback laden mislukt. Probeer de pagina te vernieuwen.", + "empty": "Nog geen Coach-feedback. De aggregator draait dagelijks om 04:00. Zodra gebruikers antwoorden van de Coach beoordelen, verschijnen hier de percentages nuttige beoordelingen.", + "windowLabel": "Afgelopen {days} dagen", + "generatedAtLabel": "Gegenereerd", + "colPromptVersion": "Promptversie", + "colTone": "Toon", + "colVerbosity": "Uitvoerigheid", + "colHelpful": "Nuttig", + "colNotHelpful": "Niet nuttig", + "colN": "n", + "colHelpfulRate": "Percentage nuttig" + }, + "workerStatus": "Taakverwerker", + "workerRunning": "Actief", + "workerStopped": "Gestopt", + "lastReminderCheck": "Laatste herinneringscontrole", + "appSettings": "Applicatie-instellingen", + "appSettingsDescription": "Algemene standaardwaarden voor registratie, taal en de tijdzone van nieuwe accounts.", + "registrationEnabled": "Registratie toestaan", + "registrationEnabledDescription": "Indien uitgeschakeld kunnen nieuwe gebruikers zich niet registreren.", + "registrationOpenHint": "Registratie staat open: iedereen die deze instantie kan bereiken, kan een account aanmaken. Sluit de registratie hier zodra iedereen die een account nodig heeft er een heeft.", + "defaultLanguage": "Standaardtaal", + "defaultLanguageDescription": "Gebruikt voor nieuwe gebruikers en als terugvaloptie.", + "defaultUserTimezone": "Standaardtijdzone voor nieuwe accounts", + "defaultUserTimezoneDescription": "Gebruikt voor nieuwe accounts zonder door de browser gedetecteerde tijdzone; bestaande accounts behouden hun eigen tijdzone.", + "defaultUserTimezoneFallback": "Europe/Berlin (standaard)", + "servicesGlobal": "Kanalen en API", + "servicesGlobalDescription": "Uitgeschakelde diensten zijn voor geen enkele gebruiker beschikbaar.", + "telegramGlobal": "Telegram-meldingen toestaan.", + "ntfyGlobal": "ntfy-meldingen toestaan.", + "webPushGlobal": "Pushmeldingen in de browser toestaan.", + "integrationWebPush": "Web Push", + "offlineGeoLabel": "Geogegevens", + "offlineGeoEnabled": "Offline (GeoLite2)", + "offlineGeoFallback": "Online ({host}). Koppel GeoLite2-databases en stel GEOLITE2_DIR in", + "heapLimitLabel": "Heaplimiet", + "heapLimitValue": "{mb} MB", + "heapLimitLow": "{mb} MB, laag. Stel APP_MEMORY_LIMIT=1536m in via .env", + "offlineGeoOff": "Uit", + "offlineGeoChosen": "Online ({host})", + "apiGlobal": "API-endpoints en API-tokens toestaan.", + "umamiTitle": "Umami", + "umamiDescription": "Webanalyse met Umami.", + "glitchtipTitle": "GlitchTip", + "glitchtipDescription": "Foutregistratie met GlitchTip.", + "webPushVapidTitle": "Web Push VAPID", + "umamiEnabled": "Umami-tracking inschakelen", + "umamiScriptUrl": "Umami-script-URL", + "umamiScriptUrlPlaceholder": "https://analytics.example.com/script.js", + "umamiWebsiteId": "Umami-website-ID", + "umamiWebsiteIdPlaceholder": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", + "glitchtipEnabled": "GlitchTip-foutregistratie inschakelen", + "glitchtipDsn": "GlitchTip-DSN", + "glitchtipDsnPlaceholder": "https://@glitchtip.example.com/", + "glitchtipEnvironment": "GlitchTip-omgeving", + "glitchtipEnvironmentPlaceholder": "production", + "glitchtipTargetOn": "Foutmeldingen gaan naar {host}.", + "glitchtipTargetOff": "Foutmeldingen blijven op deze host. Er wordt nergens iets naartoe gestuurd.", + "glitchtipTargetNoTarget": "Foutregistratie staat aan, maar er is geen doel ingesteld, dus er wordt niets verzonden.", + "glitchtipUnproven": "Onbevestigd", + "glitchtipDeliveryUnproven": "Er is een doel ingesteld, maar er heeft nog geen melding deze host verlaten. Druk op Testen om na te gaan of het doel een melding accepteert.", + "glitchtipDeliveryStale": "In de afgelopen {hours} u heeft geen melding deze host verlaten. Druk op Testen om te controleren of het doel nog meldingen accepteert.", + "glitchtipDeliveryFailed": "De laatste melding is niet aangekomen ({reason}).", + "webPushVapidDescription": "Stel hier de VAPID-sleutels en het subject in, zodat browserpush werkt zonder omgevingsvariabelen.", + "webPushVapidPublicKey": "Openbare VAPID-sleutel", + "webPushVapidPublicKeyPlaceholder": "BElx... (Base64URL)", + "webPushVapidPrivateKey": "Privé-VAPID-sleutel", + "webPushVapidPrivateKeyPlaceholder": "Optioneel: voer een nieuwe privésleutel in", + "webPushVapidSubject": "VAPID-subject", + "webPushVapidSubjectPlaceholder": "mailto:you@example.com", + "webPushVapidGenerate": "Sleutels genereren", + "webPushVapidGenerating": "Genereren…", + "webPushVapidGenerated": "VAPID-sleutels gegenereerd. Sla het subject op om af te ronden.", + "webPushVapidGenerateFailed": "De VAPID-sleutels konden niet worden gegenereerd.", + "webPushVapidGenerateConfirm": "Er zijn al VAPID-sleutels geconfigureerd. Een nieuw paar genereren maakt elk browserpush-abonnement ongeldig, en elk apparaat moet zich opnieuw abonneren. Doorgaan?", + "webPushVapidGenerateConfirmTitle": "VAPID-sleutels opnieuw genereren?", + "webPushVapidRegenerate": "Opnieuw genereren", + "configured": "Geconfigureerd", + "monitoringTestSuccess": "Testgebeurtenis verzonden", + "monitoringTestFailed": "Monitoringtest mislukt", + "assistant": { + "title": "Assistent", + "description": "Elke schakelaar stopt het AI-werk dat eronder valt en verbergt de bijbehorende tekst, terwijl gegevens en scores gewoon blijven laden.", + "master": { + "title": "Assistent ingeschakeld", + "description": "Hoofdschakelaar voor alle AI-functies. Als deze uit staat, wordt er niets naar een model gestuurd en staan alle schakelaars hieronder uit." + }, + "coach": { + "title": "Coach", + "description": "Chat, onderhoud van het geheugen van de Coach en AI-tips. Opgeslagen gesprekken blijven leesbaar en verwijderbaar." + }, + "briefing": { + "title": "Dagelijkse briefing", + "description": "De dagelijkse briefing, de openingsregels ervan elders in de app en periodeoverzichten die door een model worden geschreven." + }, + "insightStatus": { + "title": "Statusnotities", + "description": "Korte notities die een model per meting en meetwaarde schrijft, trainingsnotities en reactieregels. Het grootste deel van het tokenverbruik." + }, + "documentAi": { + "title": "Documenten lezen", + "description": "Het lezen van opgeslagen documenten door AI, scans van labrapporten en het extraheren van medicatie uit tekst. Het grootste deel van de gegevens die de server verlaten." + }, + "reasoning": { + "enabled": "Dieper nadenken toestaan", + "max": "Hoogste denkdiepte", + "description": "Modellen denken na voordat ze antwoorden: de Coach, de dagelijkse briefing en de periodeoverzichten. Nauwkeuriger, maar verbruikt meer tokens." + } + }, + "modules": { + "title": "Beschikbaarheid van modules", + "description": "Schakel een module uit voor de hele server.", + "saveError": "De beschikbaarheid van modules kon niet worden bijgewerkt.", + "detail": "Gewicht, bloeddruk en hartslag zijn kernmetingen en blijven altijd aan.", + "coachFollowsSwitch": "Volgt de Coach-schakelaar in het Coach-gedeelte." + }, + "invites": { + "title": "Uitnodigingslinks", + "description": "Met elke link kan iemand zich registreren, ook als de registratie gesloten is.", + "create": "Uitnodiging maken", + "createTitle": "Uitnodiging maken", + "createDescription": "Met de link kan iemand zich registreren, ook als de registratie gesloten is.", + "ttlLegend": "Geldig voor", + "createDays": "{days} dagen", + "maxUsesLabel": "Maximaal aantal keer te gebruiken", + "maxUsesHint": "Hoeveel registraties deze link toestaat (1–50).", + "createConfirm": "Uitnodiging maken", + "createdToast": "Uitnodiging gemaakt", + "createError": "De uitnodiging kon niet worden gemaakt.", + "tokenTitle": "Uitnodigingslink", + "tokenOnceHint": "Alleen nu te kopiëren. Kopieer de link of laat de QR-code scannen.", + "hashExplainer": "Er wordt alleen een hash van de link opgeslagen, dus hij kan later niet opnieuw worden getoond. Raakt hij kwijt, trek de uitnodiging dan in en maak een nieuwe.", + "copyLink": "Link kopiëren", + "copiedToast": "Link gekopieerd", + "copyError": "Kopiëren mislukt.", + "qrAlt": "QR-code voor de uitnodigingslink", + "loadError": "De uitnodigingen konden niet worden geladen.", + "emptyTitle": "Nog geen uitnodigingen", + "emptyDescription": "Maak een uitnodigingslink om iemand toe te laten terwijl de registratie gesloten is.", + "colStatus": "Status", + "colCreated": "Gemaakt", + "colExpires": "Verloopt", + "colUses": "Gebruikt", + "colRedeemedBy": "Gebruikt door", + "colActions": "Acties", + "byCreator": "door {by}", + "expiresInDaysOne": "over 1 dag", + "expiresInDaysOther": "over {count} dagen", + "statusActive": "Actief", + "statusExpired": "Verlopen", + "statusExhausted": "Opgebruikt", + "statusRevoked": "Ingetrokken", + "redeemerDeleted": "verwijderd account", + "redeemedByMore": "{username} + nog {count}", + "redemptionsTitle": "{count} keer gebruikt", + "revoke": "Intrekken", + "revokeAria": "Uitnodiging intrekken", + "revokeConfirmTitle": "Deze uitnodiging intrekken?", + "revokeConfirmBody": "De uitnodigingslink wordt direct ongeldig. Accounts die er al mee zijn geregistreerd, blijven bestaan, en de gebruiksgeschiedenis blijft zichtbaar.", + "revokeConfirmAction": "Intrekken", + "cancel": "Annuleren", + "revokedToast": "Uitnodiging ingetrokken.", + "revokeError": "De uitnodiging kon niet worden ingetrokken." + }, + "userManagement": "Accounts", + "userManagementDescription": "Rollen, wachtwoordresets en geforceerd uitloggen voor elk account.", + "userName": "Naam", + "userEmail": "E-mail", + "userRole": "Rol", + "userPasskeys": "Passkeys", + "userCreated": "Aangemaakt", + "userActions": "Acties", + "editUser": "Gebruiker bewerken", + "editUserTitle": "Gebruiker bewerken: {name}", + "demoteToUser": "Degraderen tot gebruiker", + "promoteToAdmin": "Promoveren tot beheerder", + "toUser": "Tot gebruiker maken", + "toAdmin": "Tot beheerder maken", + "ownRoleUnchangeable": "Je kunt je eigen rol niet wijzigen", + "resetPassword": "Wachtwoord resetten", + "resetPasswordTitle": "Wachtwoord resetten: {name}", + "newPassword": "Nieuw wachtwoord", + "newPasswordPlaceholder": "Minimaal 12 tekens", + "passwordReset": "Het wachtwoord is gereset", + "reset": "Resetten", + "loadingUsers": "Gebruikers laden…", + "apiTokens": "API-tokens", + "apiTokensDescription": "Alle actieve en ingetrokken API-tokens van alle accounts.", + "tokenUser": "Gebruiker", + "tokenName": "Naam", + "tokenPermissions": "Rechten", + "tokenPermissionAll": "Alle", + "tokenPermissionAllTooltip": "Wildcard-machtiging: dit token kan elke API-route aanroepen.", + "tokenStatus": "Status", + "tokenLastUsed": "Laatst gebruikt", + "tokenCreated": "Aangemaakt", + "tokenNeverUsed": "Nooit", + "tokensEmptyTitle": "Nog geen API-tokens", + "tokensEmptyDescription": "Tokens worden uitgegeven wanneer een native client inlogt of via Instellingen → Account.", + "loginOverviewDescription": "Inlog- en authenticatiegebeurtenissen van alle accounts, te filteren en te exporteren als CSV.", + "allAuthEvents": "Alle authenticatiegebeurtenissen", + "failedOnly": "Alleen mislukte", + "loginEmptyDescription": "Inlogs, uitlogs en wijzigingen aan passkeys verschijnen hier.", + "loginEmptyFailedTitle": "Geen mislukte inlogpogingen", + "loginEmptyFailedDescription": "Zo hoort het. Schakel over naar alle gebeurtenissen om geslaagde inlogs te zien.", + "loginEmptyResetFilter": "Alle gebeurtenissen tonen", + "showingEntries": "{count} van {total} authenticatieregistraties weergegeven", + "status": "Status", + "action": "Actie", + "ip": "IP", + "location": "Locatie", + "timestamp": "Tijd", + "provider": "Provider", + "providerPassword": "Wachtwoord", + "providerPasskey": "Passkey", + "providerApiToken": "API-token", + "providerWithings": "Withings", + "providerUnknown": "Onbekend", + "outcome": "Resultaat", + "outcomeSuccess": "Geslaagd", + "outcomeFailed": "Mislukt", + "auditDetails": "Details", + "deleteAllData": "Alle gegevens wereldwijd verwijderen", + "deleteAllDescription": "Verwijdert alle gegevens van elk account; de accounts en hun inloggegevens blijven behouden.", + "deleteAllConfirm": "Echt alle gegevens verwijderen?", + "deleteAllConfirmDescription": "Hiermee worden de gegevens van elk account in de hele database permanent verwijderd, niet een selectie van tabellen. Behouden blijven: de gebruikersaccounts en de inloggegevens waarmee daarop wordt ingelogd, de configuratie van de instantie en de delegatierechten die beheerde profielen bereikbaar houden. Na afloop wordt een bewijs van deze wisactie in het auditlog geschreven; de audithistorie van daarvoor verdwijnt samen met al het andere.", + "deleteButton": "Alle gegevens verwijderen", + "deleteAllPromptLabel": "Typ {token} om door te gaan", + "finalDelete": "Definitief verwijderen", + "deletedResult": "{rows} rijen in {tables} tabellen verwijderd. Gebruikersaccounts en inloggegevens zijn behouden.", + "authRegister": "Registratie", + "authClaim": "Profiel overgenomen", + "authLogin": "Inloggen", + "authLoginPasskey": "Inloggen met passkey", + "authLoginPassword": "Inloggen met wachtwoord", + "authLoginFailed": "Mislukt", + "authLogout": "Uitloggen", + "authPasskeyRegister": "Passkey toegevoegd", + "authPasskeyDelete": "Passkey verwijderd", + "authTokenAutoissueNative": "Token voor native client uitgegeven", + "authTokenRefresh": "Token vernieuwd", + "authTokenRevoke": "Token ingetrokken", + "medicationReminders": "Medicatieherinneringen", + "medicationRemindersDescription": "Drempelwaarden voor de kleurovergangen van het herinneringslabel op medicatiekaarten.", + "notificationHealth": { + "title": "Status van meldingen", + "description": "Afleverresultaten van alle gebruikers over de afgelopen 24 uur.", + "empty": "Geen meldingen verstuurd in deze periode.", + "ok": "OK", + "error": "Mislukt", + "skipped": "Overgeslagen", + "autoDisabled": "Automatisch uitgeschakelde kanalen" + }, + "reminderLateMinutes": "Drempelwaarde te laat (minuten)", + "reminderLateMinutesDescription": "Minuten na het einde van het tijdvenster tot het label van geel naar oranje gaat.", + "reminderMissedMinutes": "Drempelwaarde gemist (minuten)", + "reminderMissedMinutesDescription": "Minuten na het einde van het tijdvenster tot de inname als gemist geldt.", + "notificationTestSend": "Test versturen", + "notificationTestSuccess": "Testmelding verstuurd", + "notificationTestFailed": "Testmelding versturen mislukt", + "reminderCheckRun": "Herinneringscontrole uitvoeren", + "reminderCheckSuccess": "Herinneringscontrole voltooid", + "reminderCheckFailed": "Herinneringscontrole uitvoeren mislukt", + "reminderCheckResults": "Resultaten", + "reminderCheckNotifOn": "Meldingen aan", + "reminderCheckNotifOff": "Meldingen uit", + "reminderCheckEventsToday": "Gebeurtenissen vandaag", + "reminderCheckNotifSent": "Verstuurd", + "shell": { + "overview": "Overzicht", + "sectionsNav": "Beheeronderdelen" + }, + "overview": { + "snapshotTitle": "Systeemoverzicht", + "snapshotDatabase": "Database", + "snapshotWorker": "Worker", + "snapshotStarted": "Gestart", + "snapshotOfflineGeo": "Geogegevens", + "snapshotOfflineGeoOn": "Offline (GeoLite2)", + "snapshotOfflineGeoOff": "Online ({host})", + "versionTileTitle": "Versie", + "versionTileVersion": "Actieve versie", + "versionTileBuildSha": "Build-SHA", + "versionTileBuiltAt": "Gebouwd op", + "versionTileUpdateAvailable": "Update beschikbaar: {tag}", + "versionTileUpToDate": "Up-to-date", + "versionTileCheckOff": "Updatecontrole uit", + "snapshotLoadError": "Systeemoverzicht laden mislukt.", + "snapshotLoading": "Systeemoverzicht laden…", + "auditTitle": "Recente activiteit", + "auditEmpty": "Geen recente auditregistraties.", + "auditLoadError": "Recente activiteit laden mislukt.", + "auditLoading": "Activiteit laden…", + "auditViewAll": "Alles bekijken" + }, + "section": { + "system-status": { + "title": "Systeemstatus", + "subtitle": "De status van worker, database en koppelingen in één oogopslag." + }, + "general": { + "title": "Algemeen", + "subtitle": "Registratie, standaardtaal en andere appbrede schakelaars." + }, + "services": { + "title": "Diensten", + "subtitle": "Zet meldingskanalen en de API aan of uit voor de hele server." + }, + "integrations": { + "title": "Koppelingen", + "subtitle": "Configureer Umami, GlitchTip, Web Push en bugmeldingen." + }, + "coach": { + "title": "Coach", + "subtitle": "Assistentonderdelen, de serversleutel en feedbackkwaliteit op één plek." + }, + "reminders": { + "title": "Herinneringen", + "subtitle": "Stel de drempelwaarden voor medicatieherinneringen af en voer handmatig een controle uit." + }, + "users": { + "title": "Gebruikers", + "subtitle": "Beheer gebruikersaccounts, rollen en actieve sessies.", + "filter": { + "all": "Alle", + "admin": "Beheerders", + "user": "Gebruikers" + }, + "forceLogout": "Geforceerd uitloggen", + "forceLogoutConfirmTitle": "{name} geforceerd uitloggen?", + "forceLogoutConfirmBody": "Alle actieve sessies van deze gebruiker worden ingetrokken. Deze gebruiker moet daarna op elk apparaat opnieuw inloggen.", + "forceLogoutSuccess": "{name} uitgelogd uit {count} sessie(s)", + "forceLogoutFailed": "Geforceerd uitloggen mislukt", + "cannotLogoutSelf": "Je kunt jezelf niet geforceerd uitloggen", + "emptyTitle": "Geen gebruikers in deze weergave", + "emptyDescription": "Er zijn geen gebruikers die aan het huidige filter voldoen.", + "emptyResetFilter": "Alle gebruikers tonen" + }, + "invites": { + "title": "Uitnodigingen", + "subtitle": "Registratie-uitnodigingslinks aanmaken, volgen en intrekken." + }, + "api-tokens": { + "title": "API-tokens", + "subtitle": "Actieve bearertokens die zijn uitgegeven aan native clients en koppelingen." + }, + "login-overview": { + "title": "Inlogoverzicht", + "subtitle": "Audittrail van authenticatie- en beheergebeurtenissen." + }, + "auditLog": { + "filterActor": "Uitvoerder (gebruikers-ID of gebruikersnaam)", + "filterAction": "Actie", + "filterActionAll": "Alle acties", + "filterTarget": "Doel (ID of pad)", + "filterDate": "Periode", + "range24h": "Afgelopen 24 uur", + "range7d": "Afgelopen 7 dagen", + "range30d": "Afgelopen 30 dagen", + "rangeAll": "Altijd", + "perPage": "Per pagina", + "prev": "Vorige", + "next": "Volgende", + "pageOf": "Pagina {page} van {total}", + "export": "CSV exporteren", + "empty": "Geen auditregistraties die aan de huidige filters voldoen." + }, + "app-logs": { + "title": "Applogs", + "subtitle": "Volg de meest recente gestructureerde wide events die dit proces heeft uitgestuurd.", + "processNote": "Alleen logs van het app-proces worden getoond; logs van het worker-proces gaan naar Loki als die koppeling is geconfigureerd.", + "filterTraceId": "Trace-ID", + "filterAction": "Actie bevat…", + "filterLevel": "Niveau", + "levelAll": "Alle niveaus", + "filterRange": "Tijdvenster", + "range15m": "Afgelopen 15 minuten", + "range1h": "Afgelopen uur", + "range6h": "Afgelopen 6 uur", + "rangeAll": "Hele buffer", + "colLevel": "Niveau", + "colTimestamp": "Tijdstempel", + "colAction": "Actie", + "colDuration": "Duur", + "colTraceId": "Trace", + "viewDetails": "Details bekijken voor {action} om {timestamp}", + "showing": "{count} van maximaal {bufferMax} gebufferde gebeurtenissen weergegeven", + "empty": "Buffer is leeg", + "emptyDescription": "Nog geen gebeurtenissen die aan de huidige filters voldoen. Klik op vernieuwen nadat je wat verkeer hebt veroorzaakt.", + "refresh": "Vernieuwen", + "eventDetails": "Gebeurtenisdetails", + "closeDetails": "Details sluiten", + "processDetail": "De buffer is vluchtig en heeft een maximum van 500 registraties.", + "cardTitle": "Recente gebeurtenissen", + "filterErrorId": "Fout-ID" + }, + "backups": { + "title": "Back-ups", + "subtitle": "Wekelijkse snapshots van de gegevens per gebruiker, opgeslagen in PostgreSQL.", + "description": "Elke gebruiker krijgt per back-uptype één doorlopende snapshot. De getoonde grootte is die van de versleutelde blob. Bij downloaden wordt de snapshot ontsleuteld voor de beheerder die erom vraagt; de versleutelde gegevens blijven in de database.", + "runNow": "Nu back-up maken", + "runEnqueued": "Back-uptaak in de wachtrij gezet", + "runFailed": "Back-up in de wachtrij zetten mislukt", + "loading": "Back-ups laden…", + "loadError": "Back-ups laden mislukt.", + "emptyTitle": "Nog geen back-ups", + "emptyDescription": "Back-ups worden automatisch elke zondag om 03:00 gemaakt. Je kunt er ook nu een starten om de eerste snapshot te maken.", + "colUser": "Gebruiker", + "colType": "Type", + "typeWeeklyAuto": "Wekelijks (automatisch)", + "typeManual": "Handmatig", + "colSize": "Grootte", + "colCreatedAt": "Laatste snapshot", + "colActions": "Acties", + "retentionLabel": "Bewaartermijn: {days} dagen", + "scheduleStaleTitle": "De wekelijkse back-up is gestopt", + "scheduleStaleDescription": "De nieuwste geplande kopie is {days} dagen oud. Een goed werkende wekelijkse run laat nooit een kopie ouder worden dan {threshold} dagen.", + "scheduleFailedTitle": "De laatste geplande back-uprun is mislukt", + "scheduleFailedDescription": "{when}: {reason}", + "scheduleFailedNoReason": "geen reden vastgelegd", + "scheduleRemedy": "Maak nu een back-up en controleer of er een nieuwe rij verschijnt. Als het opnieuw mislukt, staat in het workerlog bij welk account het is gestopt.", + "activity": { + "running": "Bezig sinds {when}.", + "interruptedTitle": "Een run is halverwege gestopt en niet meer hervat", + "interruptedAccount": "{username}: gestart {when}, nooit voltooid", + "interruptedRemedy": "Waarschijnlijk is de app herstart of had deze te weinig geheugen tijdens het schrijven van deze kopie. De volgende run neemt deze accounts als laatste, zodat alle andere accounts eerst hun kopie krijgen. Als het blijft gebeuren, geef de container dan meer geheugen." + }, + "download": "Downloaden", + "downloadAria": "Back-up van {username} downloaden", + "downloadFailed": "Downloaden mislukt", + "downloadStarted": "Download gestart", + "uploadTitle": "Back-up uploaden", + "uploadDescription": "Controleer een back-upbestand en sla het op als handmatige snapshot. Terugzetten is een aparte stap.", + "uploadButton": "Bestand uploaden", + "uploadHelp": "Een HealthLog-back-up als .json of .json.gz. Het bestand wordt vóór het uploaden gecomprimeerd; gecomprimeerd mag het maximaal 512 MB zijn.", + "uploadSuccess": "Back-up geüpload ({count} records)", + "uploadFailed": "Uploaden mislukt", + "restore": "Terugzetten", + "restoreAria": "Back-up van {username} terugzetten", + "restoreTitle": "Back-up terugzetten", + "restoreDescription": "Hiermee worden ALLE huidige gegevens van {username} vervangen door de snapshot van {when}. Bestaande metingen, medicatie, innamegebeurtenissen, stemmingsregistraties, meldingskanalen, pushabonnementen en geplande Telegram-verwijderingen worden verwijderd.", + "restoreInstanceSettingsLabel": "Ook instellingen van de instantie terugzetten", + "restoreInstanceSettingsHint": "Registratie, MFA-verplichting, standaardtaal, beschikbaarheid van modules, configuratie van meldingen en AI, overgenomen uit de snapshot en toegepast op iedereen op deze installatie. Laat dit uit om alleen dit account terug te zetten.", + "restorePromptLabel": "Typ RESTORE om door te gaan", + "previewTitle": "Wat deze back-up bevat", + "previewLoading": "Inhoud lezen…", + "previewUnavailable": "De inhoud kon niet worden gelezen. Terugzetten is nog steeds mogelijk.", + "previewStillReading": "Deze back-up is gemaakt door een eerdere versie, dus de inhoud wordt volledig gelezen. Bij een groot dossier duurt dat even. Open dit venster over een paar minuten opnieuw om de inhoud te zien. Terugzetten is hier niet van afhankelijk.", + "previewEmpty": "Het bestand bevat geen records.", + "previewOther": "Overige records", + "previewMeasurements": "Metingen", + "previewMedications": "Medicatie en innames", + "previewMood": "Stemmingsregistraties", + "previewLabs": "Labuitslagen", + "previewDocuments": "Documenten", + "previewWorkouts": "Trainingen", + "previewCycles": "Cyclusgegevens", + "previewVisits": "Doktersbezoeken", + "previewVaccinations": "Vaccinaties", + "previewReminders": "Herinneringen voor preventieve zorg", + "previewCustomMetrics": "Eigen meetwaarden", + "previewHealthScores": "Scoregeschiedenis", + "restoreConfirm": "Nu terugzetten", + "restoreInProgress": "Terugzetten…", + "restoreSuccess": "Terugzetten voltooid", + "restoreFailed": "Terugzetten mislukt", + "restoreSkippedToast": "Terugzetten voltooid, {links} symptoomkoppelingen konden niet worden hersteld", + "restoreSkippedTitle": "{links} koppelingen zijn niet hersteld", + "restoreSkippedDescription": "Het bestand verwijst naar items die deze installatie niet kent. Al het andere is teruggezet. Dezelfde lijst staat in het auditlog.", + "restoreSkippedLinks": "{count} koppelingen", + "restoreSkippedCycleSymptom": "Cyclussymptoom", + "restoreSkippedIllnessSymptom": "Ziektesymptoom", + "restoreSkippedMoodFactor": "Stemmingsfactor", + "restoreSkippedMoodTag": "Stemmingslabel", + "restoreSkippedVisitReference": "Verwijzing naar bezoek", + "restoreSkippedVaccinationReference": "Verwijzing naar vaccinatie", + "restoreSkippedCheckupClosure": "Afronding van controle", + "restoreSkippedReminderReference": "Verwijzing naar herinnering", + "restoreSkippedCoachAttachment": "Documentkoppeling van Coach", + "restoreSkippedCoachReference": "Verwijzing van Coach", + "restoreSkippedDocumentConditionLink": "Indeling van document", + "restoreSkippedRelationLink": "Koppeling tussen records", + "restoreSkippedExtractedFact": "Documentfeit", + "restoreSkippedFactCommitment": "Vastlegging van feit", + "docsLink": "Documentatie", + "restoreSkippedPersonalRecordReference": "Herkomst van persoonlijk record", + "restoreSkippedEcgReference": "Herkomst van ECG-strook", + "restoreSkippedMedicationTarget": "Doelanalyt van medicatie", + "restoreSkippedScheduleRevisionLink": "Opvolging van schemaperiodes", + "restoreSkippedAccountSetting": "Accountinstelling", + "restoreMissingTitle": "Terugzetten geweigerd: het bestand is onvolledig", + "restoreMissingDescription": "Volgens het eigen manifest van het bestand bevat het de onderstaande sectie, maar die ontbreekt. Er is niets gewijzigd: terugzetten vervangt een complete categorie records, dus het terugzetten van een sectie die niet in het bestand staat, zou die categorie hebben leeggemaakt.", + "restoreMissingRemedy": "Gebruik een snapshot voor noodherstel, of exporteer het account opnieuw en upload het nieuwe bestand. Een sectie die het manifest als weggelaten aanmerkt, is iets anders en wordt normaal teruggezet.", + "restoreMissingDocuments": "Documenten", + "restoreMissingWorkouts": "Trainingen", + "restoreMissingMentalHealth": "Vragenlijsten mentale gezondheid", + "restoreMissingConsent": "Toestemmingsbewijzen", + "offhost": { + "title": "Externe kopieën", + "description": "Wanneer deze host de versleutelde kopie van elk account voor het laatst in je bucket heeft gezet.", + "loadError": "De status van externe kopieën kon niet worden geladen.", + "notConfiguredTitle": "Externe back-up is niet geconfigureerd", + "notConfiguredDescription": "Er zijn geen bucket en geen sleutel ingesteld, dus er verlaat geen back-up deze host. Stel BACKUP_S3_ENDPOINT, BACKUP_S3_BUCKET, BACKUP_S3_ACCESS_KEY, BACKUP_S3_SECRET_KEY en BACKUP_ENCRYPTION_KEY in om de nachtelijke upload aan te zetten.", + "stateFresh": "Actueel", + "stateDue": "Achter", + "stateStale": "Verouderd", + "stateNever": "Nooit", + "stateUnknown": "Nog geen registratie", + "neverDetail": "Er is voor dit account nog niets aangekomen. Laatst gecontroleerd {when}.", + "unknownDetail": "Nog geen nachtelijke run heeft dit account vastgelegd.", + "age": "{hours} u geleden", + "scheduleNote": "De upload draait elke {hours} u. Actueel betekent binnen één run, achter betekent dat één run niets heeft opgeleverd, verouderd betekent dat twee runs niets hebben opgeleverd.", + "lifecycleConfigured": "De bucket verwijdert kopieën na {days} dagen via een eigen lifecycleregel.", + "lifecycleMissing": "De bucket heeft geen lifecycleregel, dus elke nachtelijke kopie blijft voor altijd bewaard. Voeg een regel toe die objecten laat verlopen na BACKUP_RETENTION_DAYS.", + "lifecycleUnknown": "Kon niet worden gelezen of de bucket oude kopieën verwijdert: mogelijk mogen de toegangsgegevens de lifecycleregel niet lezen. Controleer of een regel objecten laat verlopen na BACKUP_RETENTION_DAYS.", + "pendingDeletions": "Kopieën van {count} verwijderde of gewiste accounts staan nog in de bucket en worden verwijderd.", + "pendingDeletionsFailing": "Kopieën van {count} verwijderde of gewiste accounts staan nog in de bucket, omdat die weigerde ze te verwijderen ({error}). Geef de toegangsgegevens het recht DeleteObject; het verwijderen wordt elke nacht opnieuw geprobeerd." + }, + "restoreStarted": "Terugzetten gestart. De voortgang staat boven de lijst.", + "restoreActive": "Er wordt al een back-up van dit account teruggezet. Wacht tot dat klaar is.", + "restoreJobQueuedTitle": "Terugzetten van {username} wacht op start", + "restoreJobQueuedNote": "Het begint zodra de achtergrondworker het oppakt.", + "restoreJobRunningTitle": "{username} wordt teruggezet", + "restoreJobRunningNote": "Het account toont de huidige gegevens tot het terugzetten klaar is. Je kunt deze pagina verlaten; het terugzetten gaat op de server verder.", + "restoreJobResumed": "Opnieuw gestart nadat de server is herstart.", + "restoreJobPhaseValidating": "Back-upbestand controleren: {checked} metingen gecontroleerd", + "restoreJobPhaseClearing": "Huidige gegevens van het account wissen", + "restoreJobPhaseMeasurements": "Metingen schrijven: {done} van {total}", + "restoreJobPhaseSections": "Overige records schrijven: {done} van {total} secties", + "restoreJobPhaseRebuilding": "Grafieken en samenvattingen opnieuw opbouwen", + "restoreJobSucceededTitle": "Terugzetten van {username} voltooid", + "restoreJobSucceededDescription": "{count} records teruggezet. Voltooid {when}.", + "restoreJobFailedTitle": "Terugzetten van {username} is niet voltooid", + "restoreJobFailedKept": "Er is niets gewijzigd. De back-up blijft bewaard, dus je kunt het terugzetten opnieuw starten vanuit de bijbehorende rij zonder deze opnieuw te uploaden.", + "restoreFailureNotFound": "De back-up is verwijderd voordat het terugzetten deze kon lezen.", + "restoreFailureChanged": "De back-up is vervangen door een nieuwere kopie terwijl het terugzetten wachtte. Controleer de nieuwe kopie en start het terugzetten daarna opnieuw.", + "restoreFailureUndecryptable": "De back-up kon niet worden ontsleuteld. De sleutel waarmee deze is geschreven is niet meer geconfigureerd, of de opgeslagen kopie is gewijzigd.", + "restoreFailureSchema": "Het back-upbestand is geen geldige HealthLog-back-up.", + "restoreFailureVersion": "De back-up is geschreven door een nieuwere versie van HealthLog. Werk eerst deze server bij.", + "restoreFailureOwnerMismatch": "Het bestand in de back-up hoort bij een ander account dan de back-uprij.", + "restoreFailureOwnerMissing": "Het account waar deze back-up bij hoort bestaat niet meer.", + "restoreFailureSectionMissing": "Het bestand is onvolledig: het manifest noemt een sectie die er niet in staat.", + "restoreFailureDocument": "Het bestand bevat documenten zonder hun inhoud, zoals bij een overdraagbare export. Gebruik een back-up voor noodherstel.", + "restoreFailureTimeBudget": "Deze back-up is te groot om binnen de tijdslimiet van de achtergrondtaak terug te zetten.", + "restoreFailureTransaction": "De database weigerde het terugzetten halverwege, dus alles is teruggedraaid. In het serverlog staat de fout.", + "restoreFailureCauseTimeout": "Het terugzetten duurde langer dan de database toestond, dus alles is teruggedraaid. Als de databasehost druk was, start het terugzetten dan opnieuw wanneer het rustiger is. In het serverlog staat de stap.", + "restoreFailureCauseLock": "Het terugzetten wachtte op records die een ander proces aan het wijzigen was, dus alles is teruggedraaid. Start het terugzetten opnieuw.", + "restoreFailureCauseConstraint": "De database heeft een record in de back-up geweigerd, dus alles is teruggedraaid. In het serverlog staan de tabel en de regel.", + "restoreFailureCauseStorage": "De database had tijdens het terugzetten te weinig schijfruimte of geheugen, dus alles is teruggedraaid. Maak ruimte vrij op de databasehost en start het terugzetten daarna opnieuw.", + "restoreFailureCauseConnection": "De verbinding met de database is tijdens het terugzetten verbroken, dus alles is teruggedraaid. Controleer of de database draait en start het terugzetten daarna opnieuw.", + "restoreFailureInterrupted": "Het terugzetten stopte toen de server herstartte en is teruggedraaid. Als het opnieuw stopt, heeft de server waarschijnlijk te weinig geheugen.", + "restoreFailureNotStarted": "De achtergrondworker heeft het terugzetten niet opgepakt. Controleer of de worker draait.", + "restoreFailureEnqueue": "Het terugzetten kon niet aan de achtergrondworker worden overgedragen. Controleer of de worker draait.", + "restoreFailureAfterCommit": "De gegevens zijn teruggezet, maar een stap daarna is mislukt. Het kan tot de volgende nachtelijke run duren voordat de grafieken bijgewerkt zijn.", + "restoreFailureUnexpected": "Het terugzetten stopte door een onverwachte fout en is teruggedraaid. In het serverlog staat de fout.", + "restoreFailureKeyMissing": "De back-up heeft versleutelingssleutel {keys} nodig, waarmee deze server hem niet kan openen. Voeg de sleutel weer toe aan ENCRYPTION_KEYS, herstart en start het terugzetten opnieuw.", + "restoreFailureForeignReference": "Het bestand verwijst naar records die bij een ander account horen. Er is niets geschreven.", + "previewKeyMissing": "Deze back-up kan niet op deze server worden teruggezet: er is versleutelingssleutel {keys} voor nodig. Voeg de sleutel eerst weer toe aan ENCRYPTION_KEYS en herstart.", + "restoreSkippedSymptomEpisodeReference": "Symptoomregistratie gekoppeld aan een ziekte die niet in het bestand staat (behouden zonder de koppeling)", + "restoreSkippedCycleCiphertext": "Cyclusnotitie of -label versleuteld met een sleutel die deze server niet heeft (dag of symptoom behouden zonder)", + "restoreSkippedMoodLabelCiphertext": "Stemmingslabel of groepsnaam versleuteld met een sleutel die deze server niet heeft (behouden zonder naam)", + "restoreSkippedVisitCiphertext": "Tekst van bezoek of zorgverlener versleuteld met een sleutel die deze server niet heeft (behouden zonder)", + "restoreSkippedVaccinationCiphertext": "Vaccinatienotitie versleuteld met een sleutel die deze server niet heeft (dosis behouden zonder)", + "restoreSkippedEnvironmentLocationCiphertext": "Locatie van een omgevingsperiode of -dag versleuteld met een sleutel die deze server niet heeft (versleuteld behouden, die dagen worden niet bijgewerkt)" + }, + "danger-zone": { + "title": "Gevarenzone", + "subtitle": "Destructieve bewerkingen voor het hele systeem." + }, + "about": { + "title": "Over", + "subtitle": "Versie, licentie en updatestatus." + }, + "module-availability": { + "title": "Modules", + "subtitle": "Zet modules aan of uit voor elk account op deze server." + }, + "encryption": { + "title": "Versleuteling", + "subtitle": "Versleutelingsdekking en status van sleutelrotatie voor opgeslagen gegevens.", + "loadError": "Versleutelingsstatus laden mislukt.", + "coverageTitle": "Dekking", + "coverageDescription": "Hoeveel versleutelde rijen er onder elke sleutel-ID vallen.", + "activeKeyId": "Actieve sleutel-ID", + "configuredKeys": "Geconfigureerde sleutels", + "totalRows": "Versleutelde rijen", + "staleRows": "Rijen niet op de actieve sleutel", + "safeToDropLegacy": "De oude sleutel kan veilig worden verwijderd", + "rotationIncomplete": "{count} rijen moeten nog worden geroteerd", + "rotationTitle": "Sleutelrotatie", + "rotationDescription": "Elke versleutelde kolom opnieuw versleutelen met de actieve sleutel.", + "rotationState": "Status", + "lastRun": "Laatste run: {scanned} gescand, {rotated} geroteerd, {errors} fouten.", + "rotateNow": "Nu roteren", + "rotateConfirmTitle": "Alle gegevens opnieuw versleutelen?", + "rotateConfirmDescription": "Versleutelt elke versleutelde kolom opnieuw met de actieve sleutel. Er wordt nooit een sleutel toegevoegd of verwijderd en je kunt dit veilig opnieuw uitvoeren. Bij grote accounts kan dit even duren.", + "cancel": "Annuleren", + "rotateConfirm": "Rotatie starten", + "rotateEnqueued": "Rotatie gestart.", + "rotateFailed": "De rotatie kon niet worden gestart.", + "stepUpNeeded": "Een nieuwe bevestiging met je tweede factor is vereist. Bevestig je tweede factor, of gebruik de opdrachtregeltool als je geen tweede factor hebt ingesteld.", + "cliNote": "Voor deze knop is een tweede factor vereist. Zonder tweede factor voer je scripts/rotate-encryption-key.ts uit vanuit een broncode-checkout van deze release; de stappen staan in docs/ops/encryption-key-rotation.md.", + "columnsTitle": "Dekking per kolom", + "columnsDescription": "Elke versleutelde kolom met het aantal rijen op de actieve sleutel tegenover oudere sleutels.", + "colColumn": "Kolom", + "colTotal": "Totaal", + "colActive": "Op actieve sleutel", + "colStale": "Verouderd", + "state": { + "idle": "Inactief", + "running": "Bezig", + "completed": "Voltooid", + "failed": "Mislukt" + }, + "coverageDetail": "Alleen sleutel-ID's en aantallen worden getoond, nooit sleutelmateriaal.", + "backupsTitle": "Sleutels die de back-ups nog nodig hebben", + "backupsDescription": "Een buiten gebruik gestelde sleutel blijft nodig zolang een back-up hieronder deze nog vermeldt.", + "backupsStoredLine": "Sleutel {key}: {count} opgeslagen kopieën, de oudste van {when}", + "backupsUnrecordedLine": "{count} opgeslagen kopieën zijn geschreven voordat back-ups hun sleutels vastlegden (de oudste op {when}). Ze kunnen elke sleutel nodig hebben die toen bestond: bewaar alle oude sleutels tot deze kopieën zijn vervangen of verwijderd.", + "backupsOffhostLine": "Sleutel {key}: de laatste externe kopie die deze sleutel nodig heeft, is op {when} in de bucket gezet; daar nodig tot {until}", + "backupsOffhostLineUnknown": "Sleutel {key}: de laatste externe kopie die deze sleutel nodig heeft, is op {when} in de bucket gezet. De verlooptermijn van de bucket is onbekend, dus bewaar de sleutel tot je zeker weet dat die kopie weg is.", + "backupsNone": "Nog geen enkele back-up heeft vastgelegd welke sleutels hij nodig heeft.", + "backupsStillNeed": "Elke rij is geroteerd, maar back-ups hebben {keys} nog nodig", + "backupsUnrecordedBadge": "Elke rij is geroteerd, maar oudere back-ups hebben mogelijk nog een buiten gebruik gestelde sleutel nodig", + "backupsDetail": "Rotatie versleutelt elke rij opnieuw, maar een back-up behoudt de sleutel waarmee de inhoud is geschreven, en voor terugzetten is die sleutel nodig. Houd een buiten gebruik gestelde sleutel in ENCRYPTION_KEYS tot niets hieronder deze nog vermeldt.", + "columnsShow": "Tabel tonen ({count} met rijen)", + "columnsHide": "Tabel verbergen", + "columnsShowAll": "Alle {count} kolommen tonen", + "columnsShowWithRows": "Alleen kolommen met rijen", + "columnsNoneWithRows": "Nog geen enkele versleutelde kolom bevat rijen." + }, + "maintenance": { + "title": "Onderhoud van de metingentabel", + "description": "Geeft de ruimte vrij die oude synchronisatierestanten innamen, zodra de opschoning is uitgevoerd.", + "body": "Voert VACUUM uit op de metingentabel en bouwt daarna de indexen een voor een opnieuw op. Lezen en opslaan blijven werken terwijl dit loopt. Kies een rustig moment en zorg voor vrije schijfruimte voor nog een kopie van de grootste index.", + "tableSize": "Tabel met indexen", + "indexSize": "Indexen", + "loading": "Status van het onderhoud controleren…", + "loadError": "De onderhoudsstatus kon niet worden gelezen.", + "unavailable": "Er is geen achtergrondworker verbonden, dus het onderhoud kan hier niet worden uitgevoerd.", + "purgePending": "De opschoning van oude synchronisatierestanten is nog bezig. Het onderhoud kan starten zodra die klaar is.", + "state": { + "idle": "Nog niet uitgevoerd.", + "queued": "Wacht op de achtergrondworker.", + "running": "Bezig sinds {since}. Op een grote instantie kan dit even duren.", + "completed": "Voltooid op {at}.", + "refusedPurge": "Niet gestart, omdat de opschoning nog bezig was. Start het opnieuw zodra de opschoning klaar is.", + "alreadyRunning": "Niet gestart, omdat er al een andere run bezig was.", + "failed": "Gestopt op {at}. In het applog staat de stap, en het runbook legt uit wat je moet controleren." + }, + "start": "Onderhoud starten", + "confirmTitle": "Onderhoud nu starten?", + "confirmBody": "Het draait op de achtergrond, stap voor stap, en kan even duren. Als je vandaag nog geen back-up hebt gemaakt, maak er dan eerst een.", + "confirm": "Starten", + "cancel": "Annuleren", + "started": "Onderhoud gestart.", + "alreadyQueued": "Er staat al een onderhoudsrun in de wachtrij of is al bezig.", + "startFailed": "Het onderhoud kon niet worden gestart." + }, + "pulseDayMean": { + "title": "Daggemiddelde hartslag", + "description": "Hoe uren met maar een paar metingen meetellen voor de hartslag van een dag.", + "body": "Tot nu toe telt elk uur met een meting even zwaar, waardoor één losse afwijkende meting een hele dag kan verschuiven. Met de gewogen methode telt een uur volledig mee vanaf drie metingen, en een enkele meting voor een derde. Voer eerst de proefrun uit om te zien hoeveel dagen zouden veranderen. Bij toepassen worden de opgeslagen hartslagdagen op de achtergrond opnieuw berekend.", + "method": { + "hourly": "Elk uur even zwaar", + "weighted": "Uren met weinig metingen gewogen" + }, + "loading": "Daggemiddelde hartslag controleren…", + "loadError": "De status van het daggemiddelde voor hartslag kon niet worden gelezen.", + "state": { + "idle": "Nog geen proefrun.", + "queued": "De proefrun wacht op de achtergrondworker.", + "running": "De proefrun is bezig.", + "done": "Proefrun voltooid op {at}.", + "failed": "De proefrun is gestopt. In het applog staat de oorzaak; start hem opnieuw." + }, + "result": { + "days": "Vergeleken dagen", + "changed": "Dagen die meer dan 1 bpm verschuiven", + "max": "Grootste verandering", + "maxValue": "{value} bpm", + "bucket": "{range} bpm", + "account": "Account {account}", + "accountDays": "{changed} van {days} dagen verschuiven" + }, + "appliedAt": "Gewogen methode toegepast op {at}.", + "dryRun": "Proefrun", + "apply": "Toepassen", + "confirmTitle": "Gewogen daggemiddelde hartslag toepassen?", + "confirmBody": "De hartslagdagen van elk account worden dan berekend met gewogen uren bij weinig metingen. De opgeslagen hartslagdagen worden op de achtergrond opnieuw berekend, wat op een grote instantie even kan duren.", + "confirm": "Toepassen", + "cancel": "Annuleren", + "dryRunStarted": "Proefrun gestart.", + "applied": "Gewogen methode toegepast. De hartslagdagen worden opnieuw berekend.", + "appliedNoRebuild": "Gewogen methode toegepast. Er is nog een andere run bezig, dus pas opnieuw toe zodra die klaar is om de hartslagdagen opnieuw te berekenen.", + "error": { + "busy": "Er is nog een proefrun of herberekening bezig. Probeer het opnieuw zodra die klaar is.", + "dryRunRequired": "Voer eerst een proefrun uit. Voor toepassen is een proefrun nodig die in de afgelopen zeven dagen is voltooid.", + "generic": "Het verzoek is niet gelukt." + }, + "rebuild": { + "queued": "De herberekening wacht op de achtergrondworker.", + "running": "De hartslagdagen worden opnieuw berekend.", + "done": "Hartslagdagen op {at} opnieuw berekend voor {accounts} accounts.", + "failed": "De herberekening is gestopt. In het applog staat de oorzaak; voer hem opnieuw uit." + }, + "rebuildAgain": "Opnieuw berekenen", + "rebuildStarted": "Herberekening gestart." + } + }, + "carrier": "Netwerkprovider", + "mfaRequired": "Tweede factor verplichten", + "mfaRequiredDescription": "Accounts zonder tweede factor worden na het inloggen via het web doorgestuurd om er een in te stellen; toegang via de API en native apps (Bearer) blijft open.", + "mfaEnforcedOn": "MFA aan", + "mfaEnforcedOff": "MFA uit", + "mfaEnforcedOnHint": "Voor deze gebruiker is een tweede factor verplicht. Klik om dit niet langer te verplichten.", + "mfaEnforcedOffHint": "Een tweede factor verplichten voor deze gebruiker.", + "copyIp": "IP-adres kopiëren", + "ipCopied": "IP-adres gekopieerd", + "copyFailed": "Kopiëren mislukt.", + "documentMaxFile": "Uploadlimiet voor documenten", + "documentMaxFileDescription": "Maximale bestandsgrootte per bestand voor de documentenkluis (1–100 MB).", + "documentQuota": "Opslagquotum voor documenten", + "documentQuotaDescription": "Standaard documentopslag per account (0,1–1024 GB).", + "userDocumentQuota": "Afwijkend documentquotum", + "userDocumentQuotaDefault": "Standaard", + "userDocumentQuotaHint": "Laat leeg om de standaardwaarde van de instantie te gebruiken.", + "centralCodex": { + "title": "Gedeelde AI-verbinding", + "description": "Koppel één ingelogd ChatGPT-account waarvoor elke gebruiker op deze server kan kiezen voor AI-functies.", + "honesty": "Dit is één gedeeld, ingelogd AI-account, geen API-sleutel. Elke gebruiker die ervoor kiest, stuurt verzoeken via dit account, dus de uur- en weeklimieten van het account worden door al deze gebruikers gedeeld, en dezelfde limieten gelden ook al voor de Coach. Abonnementsproviders kunnen de inhoud gebruiken om hun modellen te verbeteren en er is geen verwerkersovereenkomst die dit dekt. Daarom is dit nooit de standaard en staat het voor het lezen van documenten onder providers die niet met je gegevens trainen. Koppel alleen een account dat je op deze manier wilt delen.", + "statusConnected": "Verbonden", + "statusDisconnected": "Niet verbonden", + "statusExpired": "Verlopen", + "connectButton": "ChatGPT-account koppelen", + "disconnectButton": "Ontkoppelen", + "disconnectTitle": "Gedeeld AI-account ontkoppelen?", + "disconnectBody": "Elke gebruiker op deze server die op de gedeelde verbinding vertrouwt, verliest de AI-functies tot iemand opnieuw een account koppelt. De opgeslagen inlog kan niet worden hersteld.", + "disconnectConfirm": "Ontkoppelen", + "connectedSince": "Verbonden sinds {when}", + "connected": "Gedeelde AI-verbinding gekoppeld", + "disconnected": "Gedeelde AI-verbinding verwijderd", + "error": "Er is iets misgegaan. Probeer het opnieuw" + }, + "failingJobs": { + "title": "Achtergrondtaken", + "description": "Wachtrijen waarvan taken het hebben opgegeven nadat alle nieuwe pogingen waren verbruikt.", + "none": "Er is de afgelopen {hours} uur geen taak mislukt.", + "unavailable": "Geen takenwachtrij om te lezen. Deze installatie draait zonder de achtergrondworker.", + "countOne": "{count} fout", + "countFew": "{count} fouten", + "countOther": "{count} fouten", + "lastFailed": "Laatste fout {when}" + }, + "deleteAllDetail": "Gebruikersaccounts blijven behouden.", + "cardError": { + "title": "Dit deel van de pagina kon niet worden weergegeven", + "description": "De rest van de pagina werkt nog; probeer het opnieuw of herlaad de pagina als het blijft mislukken." + }, + "keyBackup": { + "title": "Maak een back-up van je versleutelingssleutel", + "description": "Zonder een kopie van deze sleutel kunnen je versleutelde gegevens en de back-ups van deze server niet meer worden gelezen.", + "loading": "Status van de sleutelback-up laden…", + "loadError": "De status van de sleutelback-up kon niet worden geladen.", + "badgeDue": "Te doen", + "badgeDone": "Back-up gemaakt", + "keyId": "Actieve sleutel-ID", + "fingerprint": "Vingerafdruk", + "whatIsLost": "Bewaar een kopie van de sleutel ergens buiten deze server, bijvoorbeeld in een wachtwoordmanager. Als de server opnieuw wordt geïnstalleerd met een andere sleutel, weigert HealthLog te starten tot de oorspronkelijke sleutel terug is.", + "fingerprintHint": "De vingerafdruk bestaat uit de eerste 12 tekens van de SHA-256-hash van de sleutel. Hij identificeert de sleutel zonder deze prijs te geven, zodat je hem met je kopie kunt vergelijken.", + "checkLabel": "Mijn kopie controleren", + "checkButton": "Controleren", + "checkNote": "De sleutel die je plakt, wordt vergeleken met de actieve sleutel en daarna weggegooid. Hij wordt nooit opgeslagen of gelogd.", + "checkInsecureNote": "Deze pagina wordt niet via https:// geserveerd, dus de sleutel die je plakt gaat onversleuteld over het netwerk, net als je wachtwoord. Hij wordt vergeleken en weggegooid, nooit opgeslagen of gelogd.", + "checkMatches": "Je kopie komt overeen met de actieve sleutel.", + "checkNoMatch": "Je kopie komt niet overeen met de actieve sleutel. Controleer of je de hele waarde hebt gekopieerd.", + "checkFailed": "De controle is mislukt.", + "confirmButton": "Ik heb een back-up van deze sleutel gemaakt", + "confirmed": "Sleutelback-up bevestigd.", + "confirmFailed": "De bevestiging kon niet worden opgeslagen.", + "stale": "De sleutel van de server is gewijzigd sinds deze pagina is geladen. Controleer de nieuwe sleutel-ID en vingerafdruk en bevestig daarna opnieuw.", + "confirmedAt": "Bevestigd op {date}.", + "confirmedAtBy": "Bevestigd op {date} door {who}.", + "dueAgain": "Er is een back-up bevestigd voor sleutel {keyId}, maar de server gebruikt nu een andere sleutel. Maak een back-up van de huidige sleutel.", + "tileLabel": "Back-up van versleutelingssleutel", + "tileDue": "Niet bevestigd", + "tileDone": "Bevestigd", + "platform": { + "composeLabel": "Compose", + "composeWhere": "De sleutel is ENCRYPTION_KEY (of ENCRYPTION_KEYS) in het .env-bestand naast docker-compose.yml.", + "truenasLabel": "TrueNAS", + "truenasWhere": "Open Apps, selecteer HealthLog, kies Edit en kopieer ENCRYPTION_KEY uit de omgevingsinstellingen.", + "coolifyLabel": "Coolify", + "coolifyWhere": "Open de applicatie in Coolify en kopieer ENCRYPTION_KEY uit de Environment Variables.", + "unraidLabel": "Unraid", + "unraidWhere": "Bewerk op het tabblad Docker de HealthLog-container en kopieer ENCRYPTION_KEY uit de template, of uit het .env-bestand van je Compose Manager-stack.", + "portainerLabel": "Portainer", + "portainerWhere": "Open de HealthLog-stack in Portainer en kopieer ENCRYPTION_KEY uit de omgevingsvariabelen." + } + }, + "keyMismatch": { + "title": "HealthLog kan zijn gegevens niet openen", + "body": "De versleutelingssleutel waarmee deze server is gestart, is niet de sleutel waarmee de database is geschreven. Om je gegevens te beschermen, levert HealthLog niets uit totdat dit is opgelost.", + "fixTitle": "Zo los je het op", + "fixRestore": "Zet de oorspronkelijke ENCRYPTION_KEY (of de vermelding in ENCRYPTION_KEYS) terug in de instellingen van de server.", + "fixDatabase": "Of laat DATABASE_URL verwijzen naar de database die bij deze sleutel hoort.", + "fixFresh": "Of begin opnieuw met een lege database. De oude gegevens en de back-ups daarvan zijn alleen met de oude sleutel te lezen.", + "restartNote": "Start HealthLog na de wijziging opnieuw.", + "lastResort": "Laatste redmiddel, alleen als je zeker weet dat de sleutel klopt en geen van de drie opties van toepassing is: stel {setting} in en start opnieuw. HealthLog levert dan toch uit en legt de bevinding alleen vast in het log. Hiermee schakel je een veiligheidscontrole uit: met een verkeerde sleutel mislukt elke versleutelde waarde en worden nieuwe gegevens met die sleutel geschreven.", + "codes": "Voor de serverbeheerder: API-verzoeken antwoorden met 503 en foutcode {code}, en /api/health meldt als reden {reason}." + }, + "loginOverviewCardTitle": "Inloggebeurtenissen", + "userColumn": "Gebruiker", + "supportReport": { + "title": "Supportrapport", + "description": "Een samenvatting van deze instantie voor een bugmelding, zonder e-mailadressen, ID's of waarden.", + "body": "Accounts worden weergegeven als “Account 1”, “Account 2” enzovoort. Lees het rapport voordat je het deelt.", + "copy": "Kopiëren", + "copied": "Gekopieerd", + "download": "Downloaden", + "loadError": "Het supportrapport kon niet worden gemaakt." + }, + "aiUsage": { + "title": "AI-gebruiksniveaus", + "description": "Het hoogste niveau dat accounts mogen kiezen en het niveau waarmee ze beginnen.", + "maxLabel": "Hoogste niveau", + "defaultLabel": "Standaardniveau", + "defaultAboveCeiling": "Het standaardniveau kan niet hoger zijn dan het hoogste niveau.", + "gapLabel": "Uren tussen het vernieuwen van kaarten na een synchronisatie (Standaard)", + "gapHint": "Hele uren van 1 tot 48. Laat leeg om AI_SYNC_REGEN_GAP_HOURS te gebruiken, anders 6. Nu van kracht: {hours} u." + } + }, + "achievements": { + "title": "Prestaties", + "subtitle": "Verdien prestaties door je gezondheid bij te houden en je medicatie op tijd in te nemen.", + "loginRequired": "Log in om je prestaties te bekijken.", + "points": "Punten", + "unlocked": "Ontgrendeld", + "nextGoal": "Volgend doel", + "allCompleted": "Alle prestaties ontgrendeld!", + "completed": "Voltooid", + "goalReached": "Doel bereikt", + "remainingUnlocks": "Nog {count} te ontgrendelen", + "noneUnlockedYet": "Nog geen prestaties ontgrendeld.", + "pointsValue": "{points} punten", + "metricCount": "{count}", + "metricDaysOne": "{count} dag", + "metricDaysFew": "{count} dagen", + "metricDaysOther": "{count} dagen", + "metricPercent": "{count}%", + "badges": { + "intakeTotal1": { + "title": "Eerste inname", + "description": "Registreer je eerste ingenomen medicatie." + }, + "intakeTotal10": { + "title": "Innamestarter", + "description": "Registreer 10 keer ingenomen medicatie." + }, + "intakeTotal50": { + "title": "Innameroutine", + "description": "Registreer 50 keer ingenomen medicatie." + }, + "intakeTotal150": { + "title": "Inname-expert", + "description": "Registreer 150 keer ingenomen medicatie." + }, + "intakeTotal300": { + "title": "Innamelegende", + "description": "Registreer 300 keer ingenomen medicatie." + }, + "passkeyCreated1": { + "title": "Passkey ingesteld", + "description": "Maak je eerste passkey aan." + }, + "passkeyLogin1": { + "title": "Inloggen met passkey", + "description": "Log minstens één keer in met een passkey." + }, + "passwordLogin1": { + "title": "Ouderwets", + "description": "Log minstens één keer in met gebruikersnaam en wachtwoord." + }, + "loginStreak7": { + "title": "Inlogreeks 7 dagen", + "description": "Log 7 opeenvolgende dagen in." + }, + "loginStreak30": { + "title": "Inlogreeks 30 dagen", + "description": "Log 30 opeenvolgende dagen in." + }, + "onTimePerfect1": { + "title": "Op tijd 1 dag", + "description": "Neem 1 dag lang alle medicatie op tijd in." + }, + "compliance801": { + "title": "80% therapietrouw gedurende 1 dag", + "description": "Haal 1 dag lang minstens 80% therapietrouw over 30 dagen." + }, + "bmiGreen1": { + "title": "BMI 1 dag groen", + "description": "Houd je BMI 1 dag lang binnen het normale bereik." + }, + "bpGreen1": { + "title": "Bloeddruk 1 dag groen", + "description": "Houd je bloeddruk 1 dag lang binnen het normale bereik." + }, + "pulseGreen1": { + "title": "Hartslag 1 dag groen", + "description": "Houd je rusthartslag 1 dag lang binnen het normale bereik." + }, + "onTimePerfect7": { + "title": "Op tijd 7 dagen", + "description": "Neem 7 opeenvolgende dagen alle medicatie op tijd in." + }, + "compliance807": { + "title": "80% therapietrouw gedurende 7 dagen", + "description": "Haal 7 opeenvolgende dagen minstens 80% therapietrouw over 30 dagen." + }, + "bmiGreen7": { + "title": "BMI 7 dagen groen", + "description": "Houd je BMI 7 opeenvolgende dagen binnen het normale bereik." + }, + "bpGreen7": { + "title": "Bloeddruk 7 dagen groen", + "description": "Houd je bloeddruk 7 opeenvolgende dagen binnen het normale bereik." + }, + "pulseGreen7": { + "title": "Hartslag 7 dagen groen", + "description": "Houd je rusthartslag 7 opeenvolgende dagen binnen het normale bereik." + }, + "onTimePerfect30": { + "title": "Op tijd 30 dagen", + "description": "Neem 30 opeenvolgende dagen alle medicatie op tijd in." + }, + "compliance8030": { + "title": "80% therapietrouw gedurende 30 dagen", + "description": "Haal 30 opeenvolgende dagen minstens 80% therapietrouw over 30 dagen." + }, + "bmiGreen30": { + "title": "BMI 30 dagen groen", + "description": "Houd je BMI 30 opeenvolgende dagen binnen het normale bereik." + }, + "bpGreen30": { + "title": "Bloeddruk 30 dagen groen", + "description": "Houd je bloeddruk 30 opeenvolgende dagen binnen het normale bereik." + }, + "pulseGreen30": { + "title": "Hartslag 30 dagen groen", + "description": "Houd je rusthartslag 30 opeenvolgende dagen binnen het normale bereik." + }, + "onTimePerfect180": { + "title": "Op tijd 180 dagen", + "description": "Neem 180 opeenvolgende dagen alle medicatie op tijd in." + }, + "compliance80180": { + "title": "80% therapietrouw gedurende 180 dagen", + "description": "Haal 180 opeenvolgende dagen minstens 80% therapietrouw over 30 dagen." + }, + "bmiGreen180": { + "title": "BMI 180 dagen groen", + "description": "Houd je BMI 180 opeenvolgende dagen binnen het normale bereik." + }, + "bpGreen180": { + "title": "Bloeddruk 180 dagen groen", + "description": "Houd je bloeddruk 180 opeenvolgende dagen binnen het normale bereik." + }, + "pulseGreen180": { + "title": "Hartslag 180 dagen groen", + "description": "Houd je rusthartslag 180 opeenvolgende dagen binnen het normale bereik." + }, + "onTimePerfect360": { + "title": "Op tijd 360 dagen", + "description": "Neem 360 opeenvolgende dagen alle medicatie op tijd in." + }, + "compliance80360": { + "title": "80% therapietrouw gedurende 360 dagen", + "description": "Haal 360 opeenvolgende dagen minstens 80% therapietrouw over 30 dagen." + }, + "bmiGreen360": { + "title": "BMI 360 dagen groen", + "description": "Houd je BMI 360 opeenvolgende dagen binnen het normale bereik." + }, + "bpGreen360": { + "title": "Bloeddruk 360 dagen groen", + "description": "Houd je bloeddruk 360 opeenvolgende dagen binnen het normale bereik." + }, + "pulseGreen360": { + "title": "Hartslag 360 dagen groen", + "description": "Houd je rusthartslag 360 opeenvolgende dagen binnen het normale bereik." + }, + "moodFirst": { + "title": "Eerste stemming", + "description": "Leg je eerste stemming vast." + }, + "moodStreak7": { + "title": "Stemmingsdagboek 7 dagen", + "description": "Leg 7 opeenvolgende dagen je stemming vast." + }, + "moodStreak30": { + "title": "Stemmingsdagboek 30 dagen", + "description": "Leg 30 opeenvolgende dagen je stemming vast." + }, + "moodUp7": { + "title": "Zonnigere week", + "description": "Je 7-daags stemmingsgemiddelde is minstens 1,0 punt gestegen ten opzichte van de week ervoor." + }, + "weightFirst": { + "title": "Eerste weging", + "description": "Registreer je eerste gewichtsmeting." + }, + "weight50": { + "title": "Vijftig wegingen", + "description": "Registreer 50 gewichtsmetingen." + }, + "weight200": { + "title": "200 wegingen", + "description": "Registreer 200 gewichtsmetingen." + }, + "bpFirst": { + "title": "Eerste meting", + "description": "Registreer je eerste bloeddrukmeting." + }, + "bp50": { + "title": "Vijftig bloeddrukmetingen", + "description": "Registreer 50 bloeddrukmetingen." + }, + "bp200": { + "title": "200 bloeddrukmetingen", + "description": "Registreer 200 bloeddrukmetingen." + }, + "pulseFirst": { + "title": "Eerste hartslag", + "description": "Registreer je eerste hartslagmeting." + }, + "consistentMonth": { + "title": "Consistente maand", + "description": "Leg binnen één kalendermaand op minstens 25 verschillende dagen iets vast." + }, + "entryStreak7": { + "title": "Registratiereeks 7 dagen", + "description": "Leg 7 opeenvolgende dagen minstens één registratie vast." + }, + "entryStreak30": { + "title": "Registratiereeks 30 dagen", + "description": "Leg 30 opeenvolgende dagen minstens één registratie vast." + }, + "weekendWarrior": { + "title": "Weekendvolhouder", + "description": "Leg 4 opeenvolgende weekenden zowel op zaterdag als op zondag iets vast." + }, + "hiddenNightOwl": { + "title": "Nachtuil", + "description": "Iets vastgelegd tussen 02:00 en 04:00 uur 's nachts." + }, + "hiddenEarlyBird": { + "title": "Vroege vogel", + "description": "Iets vastgelegd tussen 04:00 en 06:00 uur 's ochtends." + }, + "hiddenLeapDay": { + "title": "Schrikkeldaglegende", + "description": "Iets vastgelegd op 29 februari." + }, + "hiddenDoctorPdf": { + "title": "Huisbezoek", + "description": "Je eerste artsenrapport als PDF geëxporteerd." + }, + "hiddenLocaleFlip": { + "title": "Talenknobbel", + "description": "Minstens één keer de taal van de app gewijzigd." + }, + "missFree7": { + "title": "7 dagen geen dosis gemist", + "description": "7 opeenvolgende dagen zonder gemiste dosis." + }, + "missFree30": { + "title": "30 dagen geen dosis gemist", + "description": "30 opeenvolgende dagen zonder gemiste dosis." + }, + "missFree90": { + "title": "90 dagen geen dosis gemist", + "description": "90 opeenvolgende dagen zonder gemiste dosis." + }, + "measurementWeeks4": { + "title": "Meetroutine", + "description": "4 opeenvolgende weken met elke week op minstens 5 dagen metingen." + }, + "selfContextComplete": { + "title": "Zelfbeschrijving bijgehouden", + "description": "Alle vier de velden van je zelfbeschrijving zijn ingevuld. De Coach kent je context." + }, + "sleepLog7": { + "title": "Slaapdagboek 7 dagen", + "description": "7 opeenvolgende dagen slaapgegevens geregistreerd." + } + }, + "nextProgressLabel": "Voortgang tot ontgrendeling", + "completedOn": "Voltooid op {date}", + "locked": "Vergrendeld", + "criterionHint": "{current} / {target}", + "progressPercent": "{percent}%", + "categories": { + "medication": "Medicatie", + "vitals": "Vitale waarden", + "mood": "Stemming", + "security": "Account en beveiliging", + "engagement": "Betrokkenheid", + "hidden": "Verborgen" + }, + "hiddenCard": { + "title": "Verborgen prestatie", + "description": "Blijf bijhouden. Misschien kom je hem vanzelf tegen.", + "ariaLabel": "Verborgen, vergrendelde prestatie" + }, + "hiddenUnlockToast": { + "title": "Je hebt een verborgen prestatie ontgrendeld!" + }, + "dashboardCard": { + "title": "Recent ontgrendeld", + "viewAll": "Alles bekijken", + "empty": "Nog geen prestaties. Blijf vastleggen om je eerste te ontgrendelen." + } + }, + "notifications": { + "title": "Meldingen", + "eventColumn": "Gebeurtenis", + "subtitle": "Kies welke meldingen je via welk kanaal wilt ontvangen.", + "loadError": "Je meldingsvoorkeuren konden niet worden geladen.", + "noChannels": "Stel eerst een meldingskanaal in via Instellingen → Integraties.", + "goToSettings": "Naar kanaalinstellingen", + "channelDisabled": "Uitgeschakeld", + "admin": { + "deployFailedTitle": "Deployment mislukt: {application}", + "deployFailedBody": "Er is een fout opgetreden bij het deployen van {application} (#{deployment}): {error}. Logs bekijken: {logsUrl}", + "testNotificationTitle": "Testmelding van HealthLog", + "testNotificationBody": "Deze testmelding is verstuurd vanuit het beheerpaneel. Zie je hem, dan werkt het kanaal.", + "reminderCheckMissedTitle": "Herinnering gemist: {medication}", + "reminderCheckMissedBody": "{medication} ({dose}) is niet geregistreerd binnen het tijdvenster {window}.", + "reminderCheckOverdueTitle": "Dosis te laat: {medication}", + "reminderCheckOverdueBody": "{medication} ({dose}) in het tijdvenster {window} is {minutes} minuten te laat.", + "offlineGeoUnavailableTitle": "Offline geolocatiedatabases niet geladen", + "offlineGeoUnavailableBody": "HealthLog bepaalt inloglocaties via de online opzoekdienst op {host}, dus elk IP-adres waarmee wordt ingelogd, verlaat deze server. Wil je ze lokaal bepalen, download dan de databases GeoLite2-City en GeoLite2-ASN met een gratis MaxMind-account, koppel de map aan de container en laat GEOLITE2_DIR ernaar verwijzen. Stappen: {docsUrl}", + "tlsPinChangedTitle": "TLS-leafcertificaat gewijzigd: {host}", + "tlsPinChangedBody": "Het TLS-leafcertificaat dat {host} aanbiedt, heeft nu SPKI-pin {servedPin}, die niet in de set bekende pins staat. Clients met pinning (de native app) kunnen geen verbinding meer maken zodra de oude pin verdwenen is. Haal de nieuwe leaf-pin opnieuw op, voeg hem toe aan TLS_LEAF_SPKI_PINS en aan de pinset van de native client, en breng een build uit voordat dit certificaat op {validTo} verloopt. Zie docs/ops/tls-cert-pin.md." + }, + "user": { + "telegramTestBody": "HealthLog: verbinding geslaagd. Telegram-meldingen zijn actief." + }, + "moodReminder": { + "title": "Dagelijkse stemmingsherinnering", + "description": "Een vriendelijk seintje op het door jou gekozen tijdstip als je die dag nog geen stemming hebt vastgelegd.", + "toggleAria": "Dagelijkse stemmingsherinnering in- of uitschakelen", + "statusOn": "Actief op het door jou gekozen tijdstip", + "statusOff": "Uit", + "enabledToast": "Stemmingsherinnering ingeschakeld.", + "disabledToast": "Stemmingsherinnering uitgeschakeld.", + "saveError": "Opslaan mislukt. Probeer het opnieuw.", + "hourLabel": "Tijdstip van herinnering", + "hourAria": "Uur van de stemmingsherinnering", + "hourSavedToast": "Tijdstip van herinnering bijgewerkt", + "detail": "Loopt alleen via kanalen die je al hebt ingesteld (Telegram, ntfy, Web Push, Apple Push) en blijft stil zodra je vandaag iets hebt vastgelegd." + }, + "coachNudge": { + "title": "Proactieve Coach", + "description": "Neemt contact op als je gegevens aanleiding geven om eens bij de Coach te kijken.", + "toggleAria": "Proactieve seintjes van de Coach in- of uitschakelen", + "statusOn": "Actief", + "statusOff": "Uit", + "groupsLabel": "Onderwerpen", + "groupMedication": "Medicatie", + "groupMedicationDesc": "Onregelmatige inname in de afgelopen week.", + "groupVitals": "Vitale waarden", + "groupVitalsDesc": "Bloeddruk, herstel, gewichtstrend, slaap.", + "groupRoutine": "Routine", + "groupRoutineDesc": "Plotseling stoppen met bijhouden en controles van je zelfbeschrijving.", + "frequencyLabel": "Frequentie", + "frequencyWeekly": "Hoogstens één keer per week", + "frequencyBiweekly": "Hoogstens eens per twee weken", + "frequencyAria": "Frequentie van seintjes kiezen", + "enabledToast": "Proactieve seintjes van de Coach ingeschakeld.", + "disabledToast": "Proactieve seintjes van de Coach uitgeschakeld.", + "saveError": "Opslaan mislukt. Probeer het later opnieuw.", + "aiComposedLabel": "Laat de Coach het seintje formuleren", + "aiComposedDesc": "Als er een provider beschikbaar is, schrijft het model het proactieve seintje in plaats van de vaste sjabloon. Standaard uit.", + "aiComposedAria": "Door AI geschreven proactief seintje in- of uitschakelen" + }, + "lowStock": { + "title": "Melding bij lage voorraad", + "description": "Meldt dagelijks wanneer een voorraad voor minder dagen voldoende is dan deze drempelwaarde.", + "toggleAria": "Meldingen bij lage voorraad in- of uitschakelen", + "statusOn": "Actief", + "statusOff": "Uit", + "daysLabel": "Melden onder (dagen)", + "daysAria": "Kies de drempelwaarde voor lage voorraad in dagen", + "leadLabel": "Levertijd bij nabestellen (dagen)", + "leadAria": "Levertijd bij nabestellen in dagen", + "leadHelp": "De melding komt zoveel dagen plus één doseringsinterval eerder, zodat een nieuwe voorraad binnen is vóór je laatste dosis. Per medicijn kun je dit aanpassen op het tabblad Voorraad.", + "leadSavedToast": "Levertijd bij nabestellen opgeslagen", + "savedToast": "Drempelwaarde voor lage voorraad opgeslagen", + "enabledToast": "Meldingen bij lage voorraad ingeschakeld.", + "disabledToast": "Meldingen bij lage voorraad uitgeschakeld.", + "saveError": "Opslaan mislukt. Probeer het opnieuw.", + "medicationsLink": "Naar je medicatie", + "detail": "Eén melding per tekort; na het bijvullen wordt de melding opnieuw geactiveerd." + }, + "eventMedicationReminder": "Medicatieherinnering", + "eventMedicationReminderDesc": "Wordt verstuurd op elk gepland innamemoment.", + "eventMeasurementAnomaly": "Ongebruikelijke meting", + "eventMeasurementAnomalyDesc": "Wordt verstuurd als een meetwaarde ver buiten je gebruikelijke bereik ligt.", + "eventComplianceLow": "Lage therapietrouw", + "eventComplianceLowDesc": "Wordt verstuurd als je therapietrouw over de afgelopen dagen onder 80% zakt.", + "eventWithingsSyncFailed": "Withings-synchronisatie mislukt", + "eventWithingsSyncFailedDesc": "Wordt verstuurd als de Withings-synchronisatie meerdere keren achter elkaar mislukt.", + "eventSystemAlert": "Systeembericht", + "eventSystemAlertDesc": "Algemene berichten van de HealthLog-server, bijv. onderhoudsvensters of opmerkingen over je account.", + "eventPersonalRecord": "Persoonlijk record", + "eventPersonalRecordDesc": "Wordt verstuurd als een meetwaarde je vorige beste overtreft.", + "eventMoodReminder": "Stemmingsherinnering", + "eventMoodReminderDesc": "Dagelijks seintje om je huidige stemming vast te leggen.", + "eventCyclePeriodSoon": "Menstruatie op komst", + "eventCyclePeriodSoonDesc": "Wordt een paar dagen vóór je voorspelde volgende menstruatie verstuurd.", + "eventCyclePeriodConfirm": "Is je menstruatie begonnen?", + "eventCyclePeriodConfirmDesc": "Een vriendelijke check-in op of na de voorspelde begindatum zolang er geen menstruatie is vastgelegd.", + "eventCycleFertileSoon": "Vruchtbare periode op komst", + "eventCycleFertileSoonDesc": "Wordt een paar dagen vóór je geschatte vruchtbare periode verstuurd als je doel is om zwanger te worden.", + "eventMedicationLowStock": "Lage medicatievoorraad", + "eventMedicationLowStockDesc": "Als een bijgehouden medicatievoorraad voor minder dagen voldoende is dan je drempelwaarde voor lage voorraad", + "eventCoachNudge": "Seintje van de Coach", + "eventCoachNudgeDesc": "Af en toe een seintje van je Coach als je recente trends aanleiding geven tot een check-in.", + "eventMeasurementReminder": "Meetherinnering", + "eventMeasurementReminderDesc": "Wordt verstuurd als een bijgehouden meting gepland staat.", + "eventMedicationIntakeSync": "Synchronisatie van medicatie-inname", + "eventMedicationIntakeSyncDesc": "Update op al je apparaten als een dosis wordt geregistreerd, ingenomen of overgeslagen.", + "eventDailyBriefing": "Dagelijkse briefing", + "eventDailyBriefingDesc": "Eén rustige ochtendsamenvatting van hoe je dag ervoor staat. Staat uit totdat je hem inschakelt.", + "eventSecurityAlert": "Nieuwe inlog", + "eventSecurityAlertDesc": "Wordt verstuurd als je account wordt gebruikt op een apparaat of vanaf een plek die we nog niet eerder hebben gezien.", + "eventSharedRecordIntake": "Iemand met wie je je dossier deelt, registreert een dosis", + "eventSharedRecordIntakeDesc": "Alleen als iemand anders dat doet, nooit voor je eigen registraties.", + "security": { + "newDeviceTitle": "Nieuwe inlog op je account", + "newDeviceBody": "Nieuwe inlog vanaf {device} ({location}). Was jij dit niet, wijzig dan direct je wachtwoord.", + "unknownLocation": "onbekende locatie" + }, + "sharedRecordIntake": { + "title": "{name} heeft een dosis geregistreerd", + "bodyTaken": "{medication}: door {name} gemarkeerd als ingenomen.", + "bodySkipped": "{medication}: door {name} gemarkeerd als overgeslagen." + }, + "loginRequired": "Log in om je meldingen te beheren.", + "someChannelsGloballyDisabled": "Een of meer kanalen zijn uitgeschakeld in Instellingen en ontvangen geen meldingen.", + "reminderSettingsLink": "Herinneringsinstellingen", + "channelsLink": "Kanalen", + "handover": { + "claimedTitle": "{name} heeft nu een eigen account", + "claimedEnd": "{name} heeft het eigen gezondheidsdossier overgenomen. Je toegang is beëindigd.", + "claimedRead": "{name} heeft het eigen gezondheidsdossier overgenomen. Je kunt het nog bekijken, maar niet meer wijzigen.", + "claimedManage": "{name} heeft het eigen gezondheidsdossier overgenomen. Je kunt het nog beheren totdat diegene anders beslist.", + "changedTitle": "{name} heeft je toegang gewijzigd", + "changedEnd": "Je toegang tot het gezondheidsdossier van {name} is beëindigd.", + "changedRead": "Je kunt het gezondheidsdossier van {name} nu bekijken, maar niet wijzigen.", + "changedManage": "Je kunt het gezondheidsdossier van {name} beheren.", + "unnamed": { + "claimedTitle": "De persoon voor wie je zorgde, heeft nu een eigen account", + "claimedEnd": "De persoon voor wie je zorgde, heeft het eigen gezondheidsdossier overgenomen. Je toegang is beëindigd.", + "claimedRead": "De persoon voor wie je zorgde, heeft het eigen gezondheidsdossier overgenomen. Je kunt het nog bekijken, maar niet meer wijzigen.", + "claimedManage": "De persoon voor wie je zorgde, heeft het eigen gezondheidsdossier overgenomen. Je kunt het nog beheren totdat diegene anders beslist.", + "changedTitle": "Je toegang tot een gezondheidsdossier is gewijzigd", + "changedEnd": "Je toegang tot het gezondheidsdossier van de persoon voor wie je zorgde, is beëindigd.", + "changedRead": "Je kunt het gezondheidsdossier van de persoon voor wie je zorgde nu bekijken, maar niet wijzigen.", + "changedManage": "Je kunt het gezondheidsdossier van de persoon voor wie je zorgde beheren." + } + }, + "links": { + "open": "Openen in HealthLog" + }, + "quickActions": { + "moodGood": "Goed", + "moodOkay": "Gaat wel", + "moodBad": "Slecht" + }, + "content": { + "title": "Gezondheidscijfers in meldingen", + "description": "Of een melding waarden mag tonen, zoals je ochtendscore.", + "detail": "Uit: een melding zegt alleen waar het over gaat, zodat er op een vergrendelscherm geen gezondheidscijfers te zien zijn. Aan: de melding toont ook de cijfers, bijvoorbeeld de ochtendscore in de briefing. Als je op een melding tikt, kom je in beide gevallen op de juiste plek in de app.", + "toggleAria": "Gezondheidscijfers tonen in meldingen", + "statusDetailed": "Cijfers zichtbaar", + "statusGeneric": "Zonder cijfers", + "detailedToast": "Meldingen bevatten nu gezondheidscijfers.", + "genericToast": "Meldingen bevatten geen gezondheidscijfers meer.", + "saveError": "Opslaan mislukt. Probeer het later opnieuw." + } + }, + "i18n": { + "maintainershipBanner": { + "notice": "Deze taal is machinaal vertaald, inclusief de veiligheidskritische instructies van de Coach. In CI draait een automatische controle op afwijkingen; meld eventuele regressies in de Coach op GitHub.", + "cta": "Melden op GitHub", + "dismiss": "Sluiten" + } + }, + "targets": { + "bmi": "BMI", + "average30d": "Gemiddelde over 30 dagen:", + "consistency": { + "ariaLabel": "Afgelopen 7 dagen, per dag of de waarde binnen het bereik lag", + "daysInRange": "{count} van {total} binnen het bereik", + "daysLogged": "{count} van {total} vastgelegd", + "dotInRange": "binnen het bereik", + "dotNearRange": "dicht bij het bereik", + "dotOutOfRange": "buiten het bereik", + "dotNotLogged": "niet vastgelegd", + "relativeDay": { + "today": "vandaag", + "yesterday": "gisteren", + "twoDaysAgo": "2 dagen geleden", + "threeDaysAgo": "3 dagen geleden", + "fourDaysAgo": "4 dagen geleden", + "fiveDaysAgo": "5 dagen geleden", + "sixDaysAgo": "6 dagen geleden" + } + }, + "edit": { + "title": "Streefbereik bewerken: {metric}", + "description": "Pas het streefbereik aan dat wordt gebruikt in grafieken, inzichten en het artsenrapport. Waarden zijn in {unit}.", + "derivedHint": "Deze kaart is afgeleid van andere meetwaarden. Bewerk in plaats daarvan de onderliggende doelen (bijv. bloeddruk of gewicht).", + "minLabel": "Min", + "maxLabel": "Max", + "systolicMin": "Systolisch min.", + "systolicMax": "Systolisch max.", + "diastolicMin": "Diastolisch min.", + "diastolicMax": "Diastolisch max.", + "boundsHint": "Toegestaan bereik: {min}–{max} {unit}", + "resetToDefault": "Standaard herstellen", + "resetTitle": "Dit doel herstellen?", + "resetBody": "Het bereik gaat terug naar de standaardwaarde. De waarden die je hebt ingesteld, worden nergens anders bewaard en kunnen niet worden teruggehaald.", + "resetBodyBp": "Zowel het systolische als het diastolische bereik gaan terug naar de standaardwaarde. De waarden die je hebt ingesteld, worden nergens anders bewaard en kunnen niet worden teruggehaald.", + "resetConfirm": "Doel herstellen", + "saveSuccess": "Streefbereik bijgewerkt", + "saveError": "Het streefbereik kon niet worden opgeslagen", + "resetSuccess": "Streefbereik teruggezet naar standaard", + "validationOrder": "Het minimum moet lager zijn dan het maximum.", + "validationBounds": "Voer waarden in binnen het toegestane bereik dat hieronder staat." + }, + "currentValue": "Huidig: {value} {unit}", + "targetRangeValue": "Doel: {min}–{max} {unit}", + "sourceLabel": "Bron: {source}", + "sourceNames": { + "moodEntries": "Stemmingsregistraties", + "sevenDays": "7 dagen" + }, + "inTarget": "Binnen het streefbereik", + "aboveTarget": "{delta} {unit} boven het doel", + "belowTarget": "{delta} {unit} onder het doel", + "diastolic": "Diastolisch", + "glucoseFasting": "Glucose (nuchter)", + "glucosePostprandial": "Glucose (na de maaltijd)", + "glucoseRandom": "Glucose (willekeurig)", + "glucoseBedtime": "Glucose (voor het slapengaan)", + "glucoseUnspecified": "Glucose (zonder label)", + "status": { + "underweight": "Ondergewicht", + "normal": "Normaal", + "overweight": "Overgewicht", + "obesityGrade1": "Obesitas graad I", + "obesityGrade2": "Obesitas graad II", + "obesityGrade3": "Obesitas graad III", + "optimal": "Optimaal", + "highNormal": "Hoog-normaal", + "hypertensionGrade1": "Hypertensie graad 1", + "hypertensionGrade2": "Hypertensie graad 2", + "hypertensionGrade3": "Hypertensie graad 3", + "belowTypicalRange": "Onder het gebruikelijke bereik", + "elevated": "Verhoogd", + "aboveTypicalRange": "Boven het gebruikelijke bereik", + "significantlyLow": "Duidelijk te laag", + "slightlyLow": "Iets te laag", + "onTarget": "Op doel", + "slightlyElevated": "Licht verhoogd", + "significantlyElevated": "Duidelijk verhoogd", + "farTooShort": "Veel te kort", + "tooShort": "Te kort", + "slightlyLong": "Iets te lang", + "farTooLong": "Veel te lang", + "belowEssential": "Onder essentieel", + "essential": "Essentieel", + "athletic": "Atletisch", + "fitness": "Fit", + "acceptable": "Acceptabel", + "obese": "Obesitas", + "veryLow": "Zeer laag", + "lowActive": "Weinig actief", + "moderatelyActive": "Matig actief", + "active": "Actief", + "veryActive": "Zeer actief", + "good": "Goed", + "moderate": "Matig", + "low": "Laag", + "high": "Hoog", + "veryGood": "Zeer goed", + "veryStable": "Zeer stabiel", + "stable": "Stabiel", + "fluctuating": "Wisselend" + } + }, + "passwordStrength": { + "veryWeak": "Zeer zwak", + "weak": "Zwak", + "acceptable": "Acceptabel", + "strong": "Sterk", + "veryStrong": "Zeer sterk", + "tooShort": "Te kort", + "characters": "tekens", + "minLength": "Minstens {count} tekens vereist." + }, + "telegram": { + "errorInvalidAction": "Ongeldige actie.", + "errorMedicationNotFound": "Medicijn niet gevonden.", + "errorMedicationInactive": "Medicijn niet gevonden of niet actief.", + "errorUnknownAction": "Onbekende actie.", + "snoozeOneHour": "1 uur", + "snoozeThreeHours": "3 uur", + "snoozedFor": "{name} uitgesteld met {duration}.", + "skipped": "{name} overgeslagen.", + "alreadyRecorded": "{name} was al geregistreerd.", + "recordedAsTaken": "{name} geregistreerd als ingenomen.", + "confirmed": "{name} bevestigd.", + "genericConfirmed": "Bevestigd.", + "cancelled": "Geannuleerd.", + "moodLogged": "Vastgelegd: {score}/5", + "moodNotePrompt": "Voeg een korte notitie toe (optioneel).", + "moodNoteSaved": "Notitie opgeslagen.", + "moodNoteExpired": "Dit verzoek is verlopen.", + "remindLater": "Herinnering {duration} uitgesteld.", + "measurementDone": "Gemarkeerd als gedaan.", + "measurementNotFound": "Herinnering niet gevonden.", + "buttonMoodNote": "Notitie…", + "buttonLater": "Later", + "buttonDone": "Gedaan", + "noActiveMedications": "Geen actieve medicatie gevonden.", + "whichMedication": "Welk medicijn heb je ingenomen?", + "cancelButton": "Annuleren", + "askMedicationName": "Geef een medicijn op, bijv. taken Ramipril.", + "medicationNotFoundExact": "Medicijn niet gevonden. Stuur de naam precies zoals die in HealthLog staat.", + "helpHeader": "Beschikbare commando's:", + "helpBody": "/help: deze hulp tonen\n/add: een inname registreren\n/start: de bot starten\n\nTekstcommando's:\ntaken <naam>: een inname bevestigen\n\nKnoppen in herinneringen:\n• Ingenomen: inname bevestigen\n• 🕐 1 u / 🕐 3 u: herinnering uitstellen\n• ⏭ Overslaan: inname overslaan\n• ✓ Bevestigen: een gemiste inname bevestigen", + "measureValuePrompt": "Antwoord met de waarde om die vast te leggen (optioneel).", + "buttonMeasureValue": "Waarde…", + "measureValueSaved": "Meting opgeslagen.", + "measureValueInvalid": "Antwoord met een getal om een meting vast te leggen.", + "measureValueOutOfRange": "Die waarde ligt buiten het aannemelijke bereik.", + "measureValueExpired": "Dit verzoek is verlopen." + }, + "medicationReminders": { + "phaseGreenTitle": "🟢 Herinnering: {medName}", + "phaseGreenMessage": "🟢 Herinnering:\n{medName} ({doseInfo}, {timeWindow})\nTijdvenster sluit over {minutes} min.", + "phaseYellowTitle": "🟡 Bijna tijd: {medName}", + "phaseYellowMessage": "🟡 Bijna tijd:\n{medName} ({doseInfo}, {timeWindow})\nNog {minutes} min.", + "phaseOrangeTitle": "🟠 Te laat: {medName}", + "phaseOrangeMessage": "🟠 Te laat:\n{medName} ({doseInfo}, {timeWindow})\n{minutes} min te laat.", + "phaseRedTitle": "🔴 Gemist: {medName}", + "phaseRedMessage": "🔴 Gemist:\n{medName} ({doseInfo}, {timeWindow})\nGemarkeerd als gemist.", + "buttonTaken": "Ingenomen", + "buttonConfirm": "✓ Bevestigen", + "buttonSnoozeOneHour": "🕐 1 u", + "buttonSnoozeThreeHours": "🕐 3 u", + "buttonSkip": "⏭ Overslaan" + }, + "lowStockReminders": { + "title": "Lage voorraad: {medName}", + "bodyToday": "{medName}: nog {units} eenheden, minder dan één dag voorraad.", + "bodyReorder": "{medName}: nog {units} eenheden. De voorraad is rond {runsOutOn} op. Bestel uiterlijk {reorderBy} na.", + "bodyLastDose": "{medName}: nog {units} eenheden, ongeveer je laatste dosis. De voorraad is rond {runsOutOn} op.", + "bodyExpired": "{medName}: geen bruikbare voorraad meer. {units} eenheden zijn gemarkeerd als verlopen.", + "bodyAsNeeded": "{medName}: nog maar {units} eenheden. Bestel na voordat je de volgende dosis nodig hebt." + }, + "moodReminders": { + "dailyTitle": "Leg je stemming vast", + "dailyBody": "Hoe voel je je vandaag?" + }, + "coachNudges": { + "greetingMorning": "Goedemorgen", + "greetingMorningNamed": "Goedemorgen, {name}", + "greetingHey": "Hoi", + "greetingHeyNamed": "Hoi {name}", + "complianceBody": "Je medicatieroutine liep deze week wat minder soepel. Als je wilt, kunnen we samen kijken wat het makkelijker maakt om vol te houden.", + "bpBody": "Je bloeddruk lag deze week iets boven je gebruikelijke bereik. Wanneer je er klaar voor bent, kijk ik er graag samen met je naar.", + "scoreBody": "Je herstel is de afgelopen dagen wat teruggelopen. Ben je benieuwd wat erachter zit, dan praat ik het graag met je door.", + "selfContextBody": "Je zelfbeschrijving is al een tijd niet bijgewerkt. Als je even tijd hebt, helpt een update me om je beter te begrijpen.", + "weightBody": "Je gewicht is de laatste tijd iets afgedreven van je streefbereik. Als je wilt, kunnen we samen rustig de balans opmaken.", + "sleepDebtBody": "Een aantal nachten was deze week te kort. Als je wilt, kunnen we samen naar een patroon zoeken.", + "measurementGapBody": "Het is ongeveer een week stil geweest in je registraties. Wanneer het je uitkomt, helpt een korte check-in om de draad weer op te pakken.", + "focusNote": "Het hangt ook samen met wat je in de gaten wilde houden.", + "reminderSurfacedTitle": "De herinnering waar je om vroeg", + "reminderSurfacedLeadOne": "Je vroeg me om je hier vandaag weer aan te herinneren:", + "reminderSurfacedLeadMany": "Je vroeg me om je vandaag weer aan {count} dingen te herinneren:", + "questionConditions": "Heb je chronische aandoeningen waar de Coach van moet weten?", + "questionFocus": "Is er iets specifieks waar de Coach op moet letten?", + "questionAllergies": "Heb je allergieën of intoleranties?", + "questionAboutMe": "Wil je de Coach iets over jezelf vertellen: routines, doelen, context?" + }, + "clinicianView": { + "title": "Gedeeld gezondheidsdossier", + "period": "Rapportageperiode: {start}–{end}", + "expires": "Deze link verloopt op {date}.", + "provenance": "Dit is een alleen-lezen samenvatting, gedeeld door de persoon op wie deze betrekking heeft en geëxporteerd uit diens zelf bijgehouden HealthLog-gegevens. Waarden zijn zelf vastgelegd en kunnen via apparaten gesynchroniseerde metingen bevatten; beschouw ze als door de patiënt gerapporteerd, niet als klinisch onderzoek.", + "labs": "Labwaarden", + "medications": "Medicatie en therapietrouw", + "bmi": "Body-mass-index (BMI)", + "statSummary": "laatste {latest} (gem. {avg}, bereik {min}–{max})", + "statSummaryWithUnit": "laatste {latest} {unit} (gem. {avg} {unit}, bereik {min}–{max} {unit})", + "adherence": "{rate} therapietrouw", + "noAdherence": "—", + "glucose": { + "FASTING": "Glucose (nuchter)", + "POSTPRANDIAL": "Glucose (postprandiaal)", + "RANDOM": "Glucose (willekeurig)", + "BEDTIME": "Glucose (voor het slapengaan)" + }, + "wellness": { + "title": "Welzijnsscores", + "disclaimer": "Beschrijvende scores (0–100), berekend uit bijgehouden signalen. Dit is geen klinische beoordeling en geen diagnose.", + "recovery": "Herstelscore", + "stress": "Stressscore", + "strain": "Belastingsscore", + "score": "Welzijnsscore" + }, + "footer": "Gedeeld vanuit HealthLog, een zelf gehoste persoonlijke gezondheidstracker.", + "unlock": { + "title": "Wachtwoordzin invoeren", + "description": "Dit gedeelde gezondheidsdossier is beveiligd. Voer de wachtwoordzin in die je hebt gekregen om het te bekijken.", + "label": "Wachtwoordzin", + "error": "Deze wachtwoordzin is niet juist.", + "submit": "Ontgrendelen" + }, + "loadError": { + "title": "Deze gedeelde weergave kon niet worden geladen", + "description": "Er is iets misgegaan bij het openen van dit gedeelde gezondheidsdossier. De link is mogelijk verlopen, of er was een tijdelijk probleem. Probeer het opnieuw of vraag de persoon die het heeft gedeeld om een nieuwe link.", + "retry": "Opnieuw proberen" + }, + "documents": { + "title": "Documenten", + "untitled": "Naamloos document", + "download": "Downloaden", + "attachmentHint": "Dit bestand wordt naar je apparaat gedownload (geen voorbeeld op de pagina).", + "exifNote": "Cameragegevens (EXIF/GPS) zijn verwijderd uit gedeelde JPEG-, PNG- en WebP-afbeeldingen." + }, + "downloadPdf": "Downloaden als PDF", + "downloadFhir": "Downloaden als FHIR", + "bmiSection": "Body-mass-index", + "sectionEmpty": "Opgenomen in deze link, maar hier is niets vastgelegd.", + "sectionUnavailable": "Opgenomen in deze link, maar dit deel van het dossier is uitgeschakeld in het account waar het vandaan komt, dus het bevat geen gegevens.", + "lastInjection": "Laatste injectie", + "identity": { + "name": "Naam" + }, + "doses": { + "title": "Geregistreerde doses", + "showing": "De {shown} meest recente van {total} geregistreerde doses worden getoond." + }, + "course": "Kuur {n}", + "courseRange": "{start} tot {end}", + "courseSince": "sinds {start}", + "unavailable": { + "title": "Link verlopen of ongeldig", + "description": "Deze deellink is verlopen, ingetrokken of onvolledig. Vraag de persoon die hem heeft gedeeld om een nieuwe link." + } + }, + "cycle": { + "symptomCategory": { + "physical": "Lichamelijk", + "emotional": "Emotioneel", + "digestive": "Spijsvertering", + "custom": "Eigen" + }, + "symptom": { + "cramps": "Krampen", + "headache": "Hoofdpijn", + "bloating": "Opgeblazen gevoel", + "acne": "Acne", + "breastTenderness": "Gevoelige borsten", + "fatigue": "Vermoeidheid", + "backPain": "Rugpijn", + "insomnia": "Slapeloosheid", + "libidoHigh": "Hoog libido", + "libidoLow": "Laag libido", + "moodSwings": "Stemmingswisselingen", + "foodCravings": "Hunkering naar eten", + "nausea": "Misselijkheid", + "diarrhea": "Diarree", + "constipation": "Verstopping", + "custom": { + "add": "Symptoom toevoegen", + "label": "Naam", + "labelPlaceholder": "bijv. Duizeligheid", + "icon": "Pictogram", + "limitReached": "Maximumaantal eigen symptomen bereikt.", + "remove": "{label} verwijderen", + "removeTitle": "Dit symptoom verwijderen?", + "removeBody": "“{label}” verdwijnt uit de symptomenlijst. Dagen waaraan je het al hebt toegevoegd, behouden het, maar je kunt het niet meer kiezen.", + "removeConfirm": "Verwijderen", + "fallbackLabel": "Eigen symptoom" + } + }, + "prediction": { + "disclaimer": "Voorspellingen zijn schattingen op basis van je vastgelegde gegevens, geen medisch advies en geen anticonceptie. De nauwkeurigheid neemt toe naarmate je meer cycli vastlegt." + }, + "insights": { + "headline": { + "title": "Je cyclus en je lichaam", + "restingHeartRate": "Je rusthartslag ligt in je luteale fase ongeveer {delta} {unit} {dir} dan in je folliculaire fase.", + "heartRateVariability": "Je hartslagvariabiliteit ligt in je luteale fase ongeveer {delta} {unit} {dir} dan in je folliculaire fase.", + "generic": "Je {metric} ligt in je luteale fase ongeveer {delta} {unit} {dir} dan in je folliculaire fase.", + "dirHigher": "hoger", + "dirLower": "lager", + "empty": "Nog niet genoeg cycli en metingen om een patroon per fase te tonen. Blijf vastleggen; dit vult zich naarmate je geschiedenis groeit." + }, + "crosstab": { + "description": "Hoe elke meting zich verhoudt tussen je luteale en folliculaire fase, op basis van je eigen gegevens.", + "pairLabel": "{metric}: luteaal vs. folliculair", + "detail": "Luteaal {lutealAvg} {unit} ({lutealDays} dagen) vs. folliculair {follicularAvg} {unit} ({follicularDays} dagen).", + "metricRestingHeartRate": "Rusthartslag", + "metricHrv": "Hartslagvariabiliteit", + "metricSleepDuration": "Slaapduur", + "metricSteps": "Stappen", + "metricWeight": "Gewicht", + "metricBasalBodyTemp": "Basale lichaamstemperatuur", + "metricWristTemperature": "Nachtelijke polstemperatuur", + "metricSkinTemperature": "Huidtemperatuur", + "metricBloodGlucose": "Bloedglucose", + "metricMood": "Stemming", + "unitHours": "u", + "unitSteps": "stappen", + "unitBpm": "bpm", + "unitMs": "ms", + "unitMood": "pnt", + "confidenceLow": "Lage betrouwbaarheid", + "confidenceMedium": "Gemiddelde betrouwbaarheid", + "confidenceHigh": "Hoge betrouwbaarheid" + }, + "title": "Cyclusinzichten", + "symptomPatternsTitle": "Symptoompatronen per fase", + "symptomPatternsEmpty": "Leg symptomen vast gedurende een cyclus om te zien in welke fase ze zich concentreren.", + "symptomMostlyIn": "Vooral in {phase} ({count}/{total} dagen)" + }, + "phaseEducation": { + "title": "Wat er nu gebeurt", + "whatsHappening": { + "MENSTRUAL": "Je menstruatie is het begin van een nieuwe cyclus: het baarmoederslijmvlies wordt afgestoten. In deze eerste dagen voelen energie en stemming vaak wat lager.", + "FOLLICULAR": "Na je menstruatie stijgt het oestrogeen geleidelijk terwijl het lichaam een eicel voorbereidt. Veel mensen merken in deze periode een stabielere energie.", + "OVULATORY": "Rond het midden van de cyclus komt een eicel vrij en is de vruchtbaarheid korte tijd het hoogst. Deze fase is de kortste van de vier.", + "LUTEAL": "Na de ovulatie stijgt het progesteron en komt het lichaam tot rust. In de dagen voor je volgende menstruatie merken sommige mensen premenstruele veranderingen." + }, + "context": { + "MENSTRUAL": "De hormoonspiegels zijn op hun laagst, en daarom kunnen deze dagen aanvoelen als een rustige herstart. Sommige mensen merken krampen, een lichtere slaap of de behoefte om het rustiger aan te doen; anderen komen er zonder veel verandering doorheen. Dat valt allemaal binnen het normale bereik, en hoe het voelt kan per cyclus verschillen.", + "FOLLICULAR": "Nu het oestrogeen stijgt, beschrijven veel mensen deze dagen als fris en open: de slaap komt vaak makkelijker en het hoofd voelt helderder. De basale lichaamstemperatuur blijft meestal in het lagere bereik tot vlak voor de ovulatie. De lengte van deze fase verschilt het meest van persoon tot persoon, en van cyclus tot cyclus.", + "OVULATORY": "Het oestrogeen bereikt vlak voordat de eicel vrijkomt zijn piek, vaak samen met een korte opleving van de stemming en een kleine stijging van de basale lichaamstemperatuur in de dag of twee daarna. Het baarmoederhalsslijm wordt rond deze periode meestal helderder en rekbaarder. Sommige mensen merken een korte steek aan één kant; velen voelen helemaal niets, en beide zijn volkomen normaal.", + "LUTEAL": "Progesteron voert de boventoon in de tweede helft, en de basale lichaamstemperatuur ligt meestal iets hoger dan eerder in de cyclus. Sommige mensen merken naarmate de dagen verstrijken veranderingen in slaap, eetlust, stemming of energie, terwijl anderen zich de hele tijd stabiel voelen. Het patroon is persoonlijk en ziet er vaak per maand anders uit." + }, + "commonHere": "Dit merk je hier vaak", + "stillLearning": "Je cyclus wordt nog in kaart gebracht. Blijf registreren, dan vult dit zich met patronen uit je eigen dagen." + }, + "insightsSummary": { + "title": "Je cyclus", + "currentDay": "Dag {day} van je cyclus", + "noActiveCycle": "Nog geen actieve cyclus", + "viewDetails": "Cyclusinzichten bekijken" + }, + "wellnessRing": { + "label": "Cyclus" + }, + "disclaimer": "Deze voorspellingen zijn beschrijvende schattingen op basis van je geregistreerde gegevens, geen anticonceptiemethode en geen medisch advies. Ze geven nooit aan dat onbeschermde seks veilig is. Raadpleeg voor anticonceptie of een medische beslissing een zorgverlener.", + "title": "Je cyclus", + "subtitle": "Registreer je menstruatie en symptomen en zie wat er komt.", + "tabs": { + "calendar": "Kalender", + "predictions": "Voorspellingen", + "insights": "Inzichten", + "settings": "Instellingen" + }, + "logToday": "Vandaag registreren", + "startedPeriod": "Mijn menstruatie is vandaag begonnen", + "endedPeriod": "Mijn menstruatie is vandaag gestopt", + "phase": { + "MENSTRUAL": "Menstruatiefase", + "FOLLICULAR": "Folliculaire fase", + "OVULATORY": "Ovulatiefase", + "LUTEAL": "Luteale fase", + "none": "Geen fase", + "label": "Fase" + }, + "flow": { + "NONE": "Geen", + "SPOTTING": "Spotting", + "LIGHT": "Licht", + "MEDIUM": "Gemiddeld", + "HEAVY": "Hevig", + "label": "Bloedverlies" + }, + "ovulationTest": { + "NEGATIVE": "Negatief", + "POSITIVE_LH_SURGE": "LH-piek", + "ESTROGEN_SURGE": "Oestrogeenpiek", + "INDETERMINATE": "Onbepaald", + "label": "Ovulatietest" + }, + "mucus": { + "DRY": "Droog", + "STICKY": "Kleverig", + "CREAMY": "Romig", + "WATERY": "Waterig", + "EGG_WHITE": "Eiwitachtig", + "label": "Baarmoederhalsslijm" + }, + "cervixPosition": { + "LOW": "Laag", + "HIGH": "Hoog" + }, + "cervixFirmness": { + "FIRM": "Stevig", + "SOFT": "Zacht" + }, + "cervixOpening": { + "CLOSED": "Gesloten", + "OPEN": "Open" + }, + "goal": { + "GENERAL_HEALTH": "Algemene gezondheid", + "AVOID_PREGNANCY": "Zwangerschap voorkomen", + "TRYING_TO_CONCEIVE": "Zwanger proberen te worden", + "PERIMENOPAUSE": "Perimenopauze", + "OFF": "Bijhouden uit", + "label": "Waarvoor houd je je cyclus bij?", + "description": "Dit bepaalt de formulering en welke voorspellingen je ziet. Begeleiding rond de vruchtbare periode verschijnt alleen als je zwanger probeert te worden." + }, + "ring": { + "dayOfCycle": "Dag {day}", + "dayUnknown": "—", + "ariaPhase": "Cyclusdag {day}, {phase}", + "ariaUnknown": "Nog geen actieve cyclus", + "caption": "van je cyclus", + "firstPeriodCta": "Mijn eerste menstruatie registreren", + "periodOverdue": "Je menstruatie is later dan normaal. De dagtelling pauzeert tot de volgende menstruatie is geregistreerd.", + "periodOverdueDays": "Je menstruatie is {days} dagen later dan normaal. De dagtelling pauzeert tot de volgende menstruatie is geregistreerd.", + "logPeriodCta": "Menstruatie registreren" + }, + "calendar": { + "legendPeriod": "Geregistreerde menstruatie", + "legendPredicted": "Voorspelde menstruatie", + "legendFertile": "Vruchtbare periode", + "legendOvulation": "Ovulatie", + "legendSymptoms": "Symptomen geregistreerd", + "prevMonth": "Vorige maand", + "nextMonth": "Volgende maand", + "loading": "Je kalender laden…", + "learning": "Je cyclus wordt nog in kaart gebracht. Registreer minstens drie volledige cycli, dan worden de vruchtbare periode, de ovulatie en de fasen ingevuld. Tot die tijd toont de kalender alleen wat je hebt geregistreerd.", + "legendSymptom": "Symptomen", + "legendOvulationConfirmed": "Bevestigde ovulatie", + "flowSpotting": "spotting", + "flowLight": "licht", + "flowMedium": "gemiddeld", + "flowHeavy": "hevig", + "legendIntercourse": "Geslachtsgemeenschap", + "legendOtherEntries": "Overige registraties" + }, + "predictions": { + "title": "Wat er komt", + "nextPeriod": "Volgende menstruatie", + "nextPeriodWindow": "{low}–{high}", + "fertileWindow": "Vruchtbare periode", + "ovulation": "Geschatte ovulatie", + "confidenceHigh": "Hoog", + "confidenceMedium": "Gemiddeld", + "confidenceLow": "Laag", + "stillLearning": "Nog aan het leren", + "stillLearningBody": "Registreer minstens drie volledige cycli, dan worden je voorspellingen nauwkeuriger. Tot die tijd is dit een ruwe schatting.", + "rawMode": "Voorspelling staat uit", + "rawModeBody": "Je hebt voorspellingen uitgezet. Alleen je geregistreerde gegevens worden getoond, zonder prognose.", + "none": "Nog geen voorspelling. Registreer een menstruatie om te beginnen.", + "ovulationConfirmed": "Ovulatie (bevestigd)" + }, + "history": { + "title": "Je cycli", + "avgLength": "Gemiddelde lengte", + "variability": "Variabiliteit", + "avgPeriodLength": "Gemiddelde menstruatie", + "regularity": "Regelmaat", + "regularityREGULAR": "Regelmatig", + "regularityIRREGULAR": "Onregelmatig", + "regularityLEARNING": "Nog aan het leren", + "days": "{count} dagen", + "daysPlusMinus": "± {count} dagen", + "none": "Nog geen cycli geregistreerd.", + "recentCycles": "Recente cycli", + "ongoing": "lopend", + "periodDays": "menstruatie {count} d", + "ovulationChip": "Ovulatie", + "chartTitle": "Cycluslengte door de tijd", + "chartCaption": "Elke balk is één cyclus: het roze onderste deel is je menstruatie, de rest is de cycluslengte.", + "chartAria": "Grafiek van de cycluslengte van je laatste {count} cycli, gemiddeld {avg} dagen, geclassificeerd als {regularity}.", + "legendPeriodSegment": "Menstruatiedagen", + "legendRestSegment": "Rest van de cyclus" + }, + "sheet": { + "title": "Je dag registreren", + "description": "Bloedverlies, symptomen en notities voor deze dag.", + "flow": "Bloedverlies", + "symptoms": "Symptomen", + "temperature": "Basale lichaamstemperatuur", + "temperatureDisturbed": "Meting als verstoord markeren", + "temperatureDisturbedHint": "Koorts, ziekte, alcohol of een late meting: wordt uitgesloten van de temperatuurbeoordeling.", + "ovulationTest": "Ovulatietest", + "mucus": "Baarmoederhalsslijm", + "cervix": "Baarmoederhals", + "cervixPosition": "Positie", + "cervixFirmness": "Stevigheid", + "cervixOpening": "Opening", + "intercourse": "Geslachtsgemeenschap", + "protected": "Beschermd", + "intermenstrualBleeding": "Spotting tussen menstruaties", + "pregnancyTest": "Zwangerschapstest", + "progesteroneTest": "Progesterontest", + "contraceptive": "Anticonceptie", + "severity": "Ernst", + "severityLevel": "Ernst {level} van 4", + "delete": "Verwijderen", + "deleteTitle": "Deze dag verwijderen?", + "deleteBody": "Alles wat je voor deze dag hebt geregistreerd verdwijnt: bloedverlies, temperatuur, symptomen en je notitie. Dit kan niet worden teruggezet.", + "deleteConfirm": "Dag verwijderen", + "note": "Notitie", + "notePlaceholder": "Alles wat je over vandaag wilt onthouden…", + "save": "Opslaan", + "saving": "Opslaan…", + "cancel": "Annuleren", + "saveError": "Opslaan is mislukt. Probeer het opnieuw.", + "emptyHint": "Kies bloedverlies of een symptoom om deze dag op te slaan, of gebruik hierboven de knop voor het begin van je menstruatie.", + "temperatureSection": "Temperatuur en ovulatie", + "intimacySection": "Intimiteit en anticonceptie", + "testsSection": "Tests", + "phaseDayHeader": "Dag {day}, {phase}", + "bbtHint": "Meet direct na het wakker worden, voordat je opstaat.", + "titleForDate": "Registratie voor {date}", + "descriptionToday": "Vandaag. Bloedverlies, symptomen en notities.", + "deleteBodyCycleStart": "Deze dag opent een cyclus. Als je hem verwijdert, verdwijnt ook het begin van de menstruatie, zodat de vorige cyclus doorloopt zoals voorheen. Alles wat hier is geregistreerd verdwijnt ook: bloedverlies, temperatuur, symptomen en je notitie. Dit kan niet worden teruggezet." + }, + "testResult": { + "POSITIVE": "Positief", + "NEGATIVE": "Negatief", + "INDETERMINATE": "Onduidelijk" + }, + "settings": { + "title": "Cyclusinstellingen", + "typicalCycleLength": "Gebruikelijke cycluslengte (dagen)", + "typicalPeriodLength": "Gebruikelijke menstruatieduur (dagen)", + "lutealPhaseLength": "Lengte van de luteale fase (dagen)", + "priorsDescription": "Deze startwaarden helpen je voorspellingen zolang je nog weinig cycli hebt geregistreerd. Laat leeg om de standaardwaarden te gebruiken.", + "rawChartMode": "Ruwe grafiekmodus", + "rawChartModeDescription": "Toon alleen je geregistreerde gegevens, zonder voorspellingen of interpretatie.", + "secondarySymptomLabel": "Secundair vruchtbaarheidsteken", + "secondarySymptomDescription": "Het tweede teken dat samen met je temperatuur wordt gebruikt voor de symptothermale dubbele controle. De meeste mensen houden baarmoederhalsslijm bij; kies voor observatie van de baarmoederhals als je dat liever doet.", + "secondarySymptomCitation": "Lees over de methode (onderzoek)", + "secondarySymptom": { + "MUCUS": "Baarmoederhalsslijm", + "CERVIX": "Observatie van de baarmoederhals" + }, + "prediction": "Voorspellingen", + "predictionDescription": "Voorspel je volgende menstruatie en, waar relevant, je vruchtbare periode.", + "encryption": "Gevoelige registraties versleutelen", + "encryptionDescription": "Sla velden die iets over je bedoelingen verraden (zwangerschapstests, anticonceptie, geslachtsgemeenschap) versleuteld op, bovenop de notities die altijd versleuteld zijn.", + "discreet": "Discrete meldingen", + "discreetDescription": "Verberg cyclusdetails in de meldingstekst op je vergrendelscherm.", + "saved": "Instellingen opgeslagen", + "saveError": "Opslaan is mislukt. Probeer het opnieuw.", + "save": "Opslaan", + "reminders": "Herinneringen", + "remindersDescription": "Zet menstruatieherinneringen per kanaal aan in de meldingsinstellingen.", + "remindersLink": "Meldingsinstellingen", + "fertileReminder": "Herinnering vruchtbare periode", + "fertileReminderDescription": "Krijg een paar dagen voor je geschatte vruchtbare periode een seintje. Standaard uit; zet het per kanaal aan in de meldingsinstellingen." + }, + "contraceptive": { + "NONE": "Geen", + "UNSPECIFIED": "Anders", + "IMPLANT": "Implantaat", + "INJECTION": "Injectie", + "IUD": "Spiraal", + "INTRAVAGINAL_RING": "Ring", + "ORAL": "Pil", + "PATCH": "Pleister", + "EMERGENCY": "Noodpil" + }, + "loadError": "Je cyclusgegevens konden niet worden geladen.", + "saveError": "Je cyclusregistratie kon niet worden opgeslagen.", + "deleteError": "De registratie kon niet worden verwijderd.", + "bbt": { + "title": "Basale lichaamstemperatuur", + "caption": "Je ochtendtemperatuur gedurende deze cyclus. Na de ovulatie volgt een aanhoudende stijging van ongeveer 0,2 °C.", + "empty": "Nog geen temperatuurmetingen", + "emptyHint": "Registreer elke ochtend je basale lichaamstemperatuur om de temperatuursprong in je cyclus te zien.", + "ovulationEstimate": "Geschatte ovulatie", + "tooltipTemp": "{temp} {unit}", + "ovulationConfirmed": "Bevestigde ovulatie" + }, + "fieldInfo": { + "bbt": "Je rusttemperatuur, gemeten direct na het wakker worden, voordat je opstaat. Na de ovulatie stijgt deze licht (ongeveer 0,2–0,3 °C).", + "bbtLabel": "Wat is de basale lichaamstemperatuur?", + "mucus": "Vaginale afscheiding verandert gedurende de cyclus, van droog of kleverig naar romig, en daarna waterig en eiwitachtig rond de meest vruchtbare dagen.", + "mucusLabel": "Wat is baarmoederhalsslijm?", + "ovulationTest": "Een urinetest voor thuis die de LH-piek opspoort, de hormoonpiek ongeveer 24–36 uur vóór de ovulatie. Een positieve uitslag markeert de meest vruchtbare periode.", + "ovulationTestLabel": "Wat is een ovulatietest?", + "spotting": "Licht bloedverlies buiten de menstruatie.", + "spottingLabel": "Wat is spotting tussen menstruaties?", + "pregnancyTest": "Uitslag van een zwangerschapstest (hCG) voor thuis.", + "pregnancyTestLabel": "Wat is een zwangerschapstest?", + "progesteroneTest": "Een test die bevestigt dat de ovulatie heeft plaatsgevonden; progesteron stijgt daarna.", + "progesteroneTestLabel": "Wat is een progesterontest?", + "intercourse": "Of er op deze dag geslachtsgemeenschap heeft plaatsgevonden.", + "intercourseLabel": "Wat legt het veld geslachtsgemeenschap vast?", + "protected": "Of er tijdens de geslachtsgemeenschap anticonceptie is gebruikt.", + "protectedLabel": "Wat betekent beschermd?" + }, + "saveSuccess": "Registratie opgeslagen", + "deleteSuccess": "Registratie verwijderd", + "periodStartSaved": "Begin van menstruatie opgeslagen", + "periodEndSaved": "Einde van menstruatie opgeslagen", + "startedPeriodOnDate": "Mijn menstruatie begon op deze dag", + "endedPeriodOnDate": "Mijn menstruatie eindigde op deze dag", + "startAbsorbed": "Begin van menstruatie opgeslagen. Je begin op {absorbed} is samengevoegd met {date}.", + "startRestored": "Opgeslagen. Het begin op {dates} is terug." + }, + "cycleReminders": { + "periodSoonTitle": "Menstruatie waarschijnlijk binnenkort", + "periodSoonBody": "Je volgende menstruatie wordt over ongeveer twee dagen verwacht.", + "periodConfirmTitle": "Is je menstruatie begonnen?", + "periodConfirmBody": "Je menstruatie werd rond deze tijd verwacht. Registreer het om de voorspellingen nauwkeurig te houden.", + "fertileSoonTitle": "Vruchtbare periode komt eraan", + "fertileSoonBody": "Je geschatte vruchtbare periode begint naar verwachting over ongeveer twee dagen. Dit is een schatting, geen medische garantie en geen garantie voor anticonceptie.", + "discreetTitle": "HealthLog-herinnering", + "discreetBody": "Je hebt een herinnering in HealthLog." + }, + "dataList": { + "allSources": "Alle bronnen", + "dateFrom": "Van", + "dateTo": "Tot", + "dateRange": "Periode", + "valueRange": "Waarde", + "valueMin": "Min", + "valueMax": "Max", + "typeLabel": "Type", + "sourceLabel": "Bron", + "resetFilters": "Resetten", + "clearFilter": "Filter wissen: {label}", + "selectAll": "Alles op deze pagina selecteren", + "selectRow": "Rij selecteren", + "selected": "{count} geselecteerd", + "deleteN": "Verwijderen ({count})", + "clearSelection": "Selectie wissen", + "selectionBarLabel": "Selectieacties" + }, + "measurementReminders": { + "sectionTitle": "Controles", + "sectionDescription": "Herinneringen voor wat je wanneer en waar moet meten of laten controleren.", + "markDone": "Gedaan", + "delete": "Verwijderen", + "deleteConfirmTitle": "Herinnering verwijderen?", + "deleteConfirmDescription": "Deze controleherinnering wordt definitief verwijderd.", + "postpone": { + "menuItem": "Uitstellen…", + "title": "Geplande datum uitstellen", + "description": "Verschuift alleen de huidige geplande datum; het vaste ritme blijft ongewijzigd.", + "chip": "+{days} dagen", + "dateLabel": "Nieuwe datum", + "confirm": "Uitstellen" + }, + "skip": { + "heading": "Deze geplande datum overslaan", + "explainer": "Eerlijk vastgelegd als overgeslagen, niet als gedaan. Het interval begint vanaf vandaag opnieuw.", + "action": "Overslaan", + "confirmTitle": "Deze geplande datum overslaan?" + }, + "snoozedUntil": "Uitgesteld tot {date}", + "skippedOn": "Overgeslagen op {date}", + "skipCount": "{count}× overgeslagen", + "disabledBadge": "Uit", + "nextDue": { + "none": "Niet gepland", + "today": "Vandaag gepland", + "tomorrow": "Morgen gepland", + "inDays": "Over {days} dagen" + }, + "overdueByDays": "{days} dagen te laat", + "overdueSinceYesterday": "Sinds gisteren te laat", + "cadence": { + "everyNDays": "Elke {days} dagen", + "custom": "Aangepast schema", + "customInterval": "Aangepast (elke N dagen)", + "rruleOption": "Aangepaste regel (RRULE)" + }, + "location": { + "prefix": "Locatie: {location}" + }, + "types": { + "WEIGHT": "Gewicht", + "BLOOD_PRESSURE_SYS": "Bloeddruk", + "PULSE": "Hartslag", + "BLOOD_GLUCOSE": "Bloedglucose", + "OXYGEN_SATURATION": "Zuurstofsaturatie", + "BODY_FAT": "Vetpercentage", + "BODY_TEMPERATURE": "Lichaamstemperatuur", + "FAT_MASS": "Vetmassa", + "FAT_FREE_MASS": "Vetvrije massa", + "MUSCLE_MASS": "Spiermassa", + "LEAN_BODY_MASS": "Vetvrije lichaamsmassa", + "BONE_MASS": "Botmassa", + "TOTAL_BODY_WATER": "Lichaamsvocht", + "VISCERAL_FAT": "Visceraal vet", + "BODY_MASS_INDEX": "Body-mass-index (BMI)", + "WAIST_CIRCUMFERENCE": "Middelomtrek", + "PHQ9_SCORE": "PHQ-9 (stemming)", + "GAD7_SCORE": "GAD-7 (piekeren)", + "WHO5_SCORE": "WHO-5 (welzijn)", + "SCI_SCORE": "SCI (slaap)" + }, + "typeGroups": { + "vitals": "Vitale functies", + "bodyComposition": "Lichaamssamenstelling", + "mentalWellbeing": "Mentaal welzijn" + }, + "empty": { + "title": "Nog geen herinneringen", + "description": "Voeg een herinnering toe om regelmatig je bloeddruk te meten of om een jaarlijks bloedonderzoek in te plannen." + }, + "form": { + "label": "Label", + "labelPlaceholder": "bijv. Bloeddruk meten", + "kind": "Type", + "kindType": "Gekoppeld aan een meting", + "kindFreeText": "Controle met vrije tekst", + "measurementType": "Meting", + "cadence": "Herhalen", + "notifyHour": "Herinneren om", + "location": "Waar (optioneel)", + "locationPlaceholder": "bijv. huisarts, lab", + "save": "Opslaan", + "createTitle": "Nieuwe herinnering", + "editTitle": "Herinnering bewerken", + "customInterval": "Herhalen elke (dagen)", + "rrule": "Herhalingsregel (RRULE)", + "rruleHint": "RFC-5545, bijv. FREQ=YEARLY voor een jaarlijkse controle.", + "firstDue": "Eerste datum (optioneel)" + }, + "pushTitle": "Controleherinnering", + "pushBody": "Tijd voor: {label}", + "pushLocation": "(bij {location})", + "edit": "Bewerken", + "originCoach": "Coach", + "until": "Tot {date}", + "selfPlanned": "Zelf gepland", + "captureValue": "Waarde vastleggen", + "measureNow": "Nu meten", + "startCheckIn": "Check-in starten", + "nextDueLabel": "Volgende keer:", + "lastDoneLabel": "Laatst gedaan:", + "customize": "Controles aanpassen", + "adherence": { + "label": "Binnen interval", + "onTrack": "Op schema", + "due": "Nu aan de beurt" + }, + "capture": { + "title": "Meting vastleggen", + "description": "Voer de meetwaarde in; de herinnering wordt als gedaan gemarkeerd." + }, + "manage": { + "title": "Herinneringen beheren", + "description": "Zet afzonderlijke herinneringen aan of uit.", + "empty": "Nog geen herinneringen om aan te passen." + }, + "dashboard": { + "empty": "Geen aankomende controleherinneringen.", + "openLink": "Controles openen" + }, + "showMeasurements": "Metingen tonen", + "loadError": "Je herinneringen konden niet worden geladen.", + "fileVisit": "Een bezoek vastleggen" + }, + "moduleList": { + "viewToggleLabel": "Weergave", + "viewCards": "Kaartweergave", + "viewList": "Lijstweergave", + "viewHeading": "Weergave", + "viewDescription": "Kies of registraties als kaarten of als compacte lijst worden getoond.", + "reorder": { + "heading": "Volgorde", + "description": "Sleep de items om de volgorde te bepalen waarin ze verschijnen.", + "empty": "Nog geen items om te ordenen." + } + }, + "labs": { + "title": "Labuitslagen", + "subtitle": "Bloedonderzoek en biomarkerwaarden", + "addResult": "Waarde toevoegen", + "addDescription": "Leg een biomarkerwaarde uit een labrapport vast.", + "addFirst": "Je eerste uitslag toevoegen", + "emptyTitle": "Nog geen labuitslagen", + "emptyDescription": "Leg bloedwaarden zoals HbA1c, LDL of ferritine vast om ze in de tijd te volgen en met je arts te delen.", + "referenceLabel": "Referentie", + "readingsCount": "{count} metingen", + "deleteConfirmTitle": "Labuitslag verwijderen?", + "deleteConfirmDescription": "Deze labuitslag wordt verwijderd. Je kunt dit daarna nog even ongedaan maken.", + "deletedToast": "Uitslag verwijderd", + "deleteError": "De uitslag kon niet worden verwijderd", + "loadError": "Labuitslagen konden niet worden geladen", + "customize": "Labuitslagen aanpassen", + "localOcr": { + "heading": "Scans op dit apparaat lezen", + "description": "Leest de foto op je apparaat en stuurt alleen de herkende tekst naar je provider.", + "detail": "Handig als je AI-provider geen afbeeldingen kan lezen. Minder nauwkeurig: controleer elke waarde voordat je opslaat." + }, + "sort": { + "heading": "Sorteervolgorde", + "label": "Volgorde van waarden", + "recentDesc": "Meest recente meting eerst", + "recentAsc": "Oudste meting eerst", + "alphaAsc": "Naam (A–Z)", + "alphaDesc": "Naam (Z–A)", + "manual": "Handmatig sorteren", + "hint": "Bij handmatig sorteren kun je de biomarkers hieronder in je eigen volgorde slepen." + }, + "range": { + "inRange": "Binnen bereik", + "below": "Onder bereik", + "above": "Boven bereik" + }, + "form": { + "value": "Waarde", + "takenAt": "Afnamedatum", + "note": "Notitie", + "notePlaceholder": "Optionele context bij deze uitslag", + "requiredError": "Voer een waarde in.", + "save": "Opslaan", + "saveAndAddAnother": "Opslaan en nog een toevoegen", + "savedToast": "Uitslag opgeslagen", + "saveError": "De uitslag kon niet worden opgeslagen", + "biomarker": "Biomarker", + "biomarkerPlaceholder": "Kies een biomarker", + "defineNew": "+ Nieuwe biomarker definiëren", + "noBiomarkersHint": "Definieer eerst een biomarker om er een waarde voor vast te leggen.", + "pickBiomarkerError": "Kies eerst een biomarker.", + "resultType": "Type uitslag", + "numeric": "Numeriek", + "qualitative": "Kwalitatief", + "qualitativeResult": "Uitslag", + "qualitativePlaceholder": "bijv. negatief", + "qualNegative": "negatief", + "qualPositive": "positief", + "qualBorderline": "grenswaardig", + "sourceRange": "Bereik vermeld op het rapport", + "sourceRangePlaceholder": "bijv. 3,5 - 5,0 of < 5", + "sourceRangeAdd": "+ Bereik van het rapport toevoegen", + "sourceRangeHint": "Optioneel. Geldt alleen voor deze meting; je opgeslagen bereik blijft zoals het is.", + "sourceRangeUnparsed": "Bewaard zoals ingevoerd, er is geen numeriek bereik uit gelezen." + }, + "backToLabs": "Terug naar labuitslagen", + "hasNote": "Notitie", + "editTitle": "Meting bewerken", + "editDescription": "Corrigeer de waarde, datum of notitie van deze meting.", + "editedToast": "Meting bijgewerkt", + "editError": "De meting kon niet worden bijgewerkt", + "editTimestampError": "Voer een geldige datum in.", + "editReading": "Meting bewerken", + "deleteReading": "Meting verwijderen", + "restoredToast": "Meting hersteld", + "restoreError": "De meting kon niet worden hersteld", + "detail": { + "emptyTitle": "Nog geen metingen", + "emptyDescription": "Voeg een waarde toe om deze biomarker in de tijd te volgen.", + "title": "Biomarker", + "genericDescription": "Een labbiomarker die je bijhoudt. Voeg metingen toe om de trend ten opzichte van het referentiebereik te volgen.", + "valuesTitle": "{marker}: alle metingen", + "valuesDescription": "Alle metingen van deze biomarker. Bewerk of verwijder een registratie direct.", + "backToMarker": "Terug naar {marker}", + "latestResult": "Laatste uitslag" + }, + "chart": { + "empty": "Geen metingen in deze periode.", + "valueLabel": "Waarde", + "range": { + "30": "30 d", + "90": "90 d", + "365": "1 j", + "all": "Alles" + }, + "sourceRangeLabel": "Rapportbereik", + "sourceBandLegend": "Tweede band: het bereik vermeld op het rapport van {date}.", + "sourceBandMixed": "Tweede band: het bereik vermeld op het meest recente rapport. Eerdere rapporten in beeld vermelden andere bereiken." + }, + "biomarker": { + "manageTitle": "Biomarkers", + "managerDescription": "Definieer een marker één keer; de eenheid en het bereik worden voor elke meting hergebruikt.", + "define": "Definiëren", + "defineFirst": "Je eerste biomarker definiëren", + "defineTitle": "Biomarker definiëren", + "defineDescription": "Stel de naam, eenheid en het referentiebereik één keer in. Je kiest de marker wanneer je een waarde toevoegt.", + "editTitle": "Biomarker bewerken", + "edit": "Bewerken", + "delete": "Verwijderen", + "deletedToast": "Biomarker verwijderd", + "deleteError": "De biomarker kon niet worden verwijderd", + "deleteConfirmTitle": "Biomarker verwijderen?", + "deleteConfirmDescription": "De biomarker en alle vastgelegde waarden worden definitief verwijderd. Dit kan niet ongedaan worden gemaakt.", + "emptyTitle": "Nog geen biomarkers", + "emptyDescription": "Definieer markers zoals LDL of HbA1c om er waarden voor vast te leggen.", + "loadError": "Biomarkers konden niet worden geladen", + "noRange": "Geen referentiebereik", + "form": { + "seedLabel": "Beginnen met een veelgebruikte marker", + "seedPlaceholder": "Kies een marker (optioneel)", + "seedHint": "Als je er een kiest, worden de velden hieronder ingevuld. Pas het bereik aan zodat het overeenkomt met je lab.", + "name": "Naam", + "namePlaceholder": "bijv. LDL-cholesterol", + "unit": "Eenheid", + "unitPlaceholder": "bijv. mg/dL", + "unitLockedHint": "Zodra deze marker metingen heeft, blijft de eenheid zoals die is. Anders zouden de opgeslagen waarden zonder omrekening in een nieuwe eenheid worden getoond.", + "panel": "Groep", + "panelPlaceholder": "bijv. Lipiden", + "lowerBound": "Referentie ondergrens", + "upperBound": "Referentie bovengrens", + "lowerPlaceholder": "Ondergrens", + "upperPlaceholder": "Bovengrens", + "context": "Context", + "contextPlaceholder": "Optionele notitie over deze marker", + "rangeHint": "Beide grenzen zijn optioneel. Laat er één leeg voor een open bereik (bijv. LDL < 116).", + "requiredError": "Naam en eenheid zijn verplicht.", + "rangeOrderError": "De ondergrens mag niet hoger zijn dan de bovengrens.", + "save": "Biomarker opslaan", + "savedToast": "Biomarker opgeslagen", + "updatedToast": "Biomarker bijgewerkt", + "saveError": "De biomarker kon niet worden opgeslagen" + }, + "hide": "Verbergen", + "unhide": "Herstellen", + "hiddenToast": "Biomarker verborgen", + "unhiddenToast": "Biomarker hersteld", + "hideError": "De biomarker kon niet worden bijgewerkt", + "allHidden": "Alle biomarkers zijn verborgen.", + "hiddenSection": "Verborgen" + }, + "catalog": { + "total-cholesterol": "Totaal cholesterol", + "ldl": "LDL-cholesterol", + "hdl": "HDL-cholesterol", + "triglycerides": "Triglyceriden", + "fasting-glucose": "Nuchtere glucose", + "hba1c": "HbA1c", + "tsh": "TSH", + "ft3": "Vrij T3", + "ft4": "Vrij T4", + "ferritin": "Ferritine", + "transferrin-saturation": "Transferrineverzadiging", + "vitamin-d": "Vitamine D (25-OH)", + "vitamin-b12": "Vitamine B12", + "folate": "Folaat", + "hs-crp": "hs-CRP", + "creatinine": "Creatinine", + "egfr": "eGFR", + "alt": "ALAT", + "ast": "ASAT", + "ggt": "GGT", + "sodium": "Natrium", + "potassium": "Kalium", + "hemoglobin": "Hemoglobine", + "hematocrit": "Hematocriet", + "wbc": "Witte bloedcellen", + "platelets": "Bloedplaatjes", + "panel": { + "lipids": "Lipiden", + "glucose": "Glucosestofwisseling", + "thyroid": "Schildklier", + "iron": "IJzer", + "vitamins": "Vitaminen", + "inflammation": "Ontsteking", + "renal": "Nieren", + "liver": "Lever", + "electrolytes": "Elektrolyten", + "bloodCount": "Bloedbeeld" + }, + "desc": { + "total-cholesterol": "Totaal cholesterol is de som van het cholesterol dat door alle lipoproteïnedeeltjes in het bloed wordt vervoerd, inclusief de LDL-, HDL- en remnantfracties. Cholesterol zelf is een essentiële bouwstof voor celmembranen, hormonen en galzuren. Als los getal is het een grove samenvatting, omdat zowel een gezond HDL-aandeel als een hoog LDL-aandeel het totaal verhoogt; daarom wordt het meestal samen met de afzonderlijke fracties beoordeeld. Het wordt vooral gevolgd als onderdeel van de beoordeling van het cardiovasculaire risico op lange termijn.", + "ldl": "LDL-cholesterol is het cholesterol dat wordt vervoerd door lipoproteïnedeeltjes met een lage dichtheid: de fractie die cholesterol naar de weefsels brengt, maar het ook in de vaatwanden kan afzetten. Over de jaren draagt deze afzetting bij aan atherosclerotische plaque, en daarom is LDL een van de nauwst gevolgde lipidenmarkers. Een lagere blootstelling op lange termijn gaat over het algemeen samen met een lager cardiovasculair risico. Het wordt beoordeeld per risicocategorie in plaats van aan de hand van één vaste normaalwaarde.", + "hdl": "HDL-cholesterol is het cholesterol dat wordt vervoerd door lipoproteïnedeeltjes met een hoge dichtheid, die overtollig cholesterol uit de weefsels opnemen en terugbrengen naar de lever voor hergebruik of afvoer. Vanwege deze transportrol wordt het vaak de beschermende fractie genoemd. Zeer lage waarden gaan vaak samen met een hoger cardiovasculair risico, maar het kunstmatig verhogen ervan heeft het risico niet betrouwbaar verlaagd; daarom wordt het gezien als marker en niet als streefwaarde. Het wordt meestal samen met LDL en triglyceriden beoordeeld.", + "triglycerides": "Triglyceriden zijn de belangrijkste vorm van vet die in het bloed circuleert. Ze komen zowel uit de voeding als uit de lever en dienen als belangrijke energievoorraad. De waarden stijgen na maaltijden, daarom wordt het bloed voor de vergelijkbaarheid meestal nuchter afgenomen. Aanhoudend hoge triglyceriden hangen samen met metabool en cardiovasculair risico en gaan vaak samen met insulineresistentie en een laag HDL. Ze worden beoordeeld als één onderdeel van het totale lipidenbeeld.", + "fasting-glucose": "Nuchtere glucose is de suikerconcentratie in het bloed, gemeten na een nacht vasten. De waarde laat zien hoe het lichaam zijn basisbloedsuikerspiegel vasthoudt zonder recente voeding. Glucose is de belangrijkste directe brandstof van het lichaam, en insuline houdt het normaal gesproken binnen een smal bereik. Een nuchtere meting sluit het effect van recente maaltijden uit en is daardoor een standaardscreening voor hoe de glucoseregulatie werkt. Het is een van de markers waarmee de metabole gezondheid in de tijd wordt beoordeeld.", + "hba1c": "HbA1c is het aandeel hemoglobine in de rode bloedcellen dat aan glucose is gebonden; dit stapelt zich op in verhouding tot de gemiddelde blootstelling aan bloedsuiker. Omdat rode bloedcellen ongeveer drie maanden leven, weerspiegelt het de gemiddelde glucose over de voorgaande twee tot drie maanden in plaats van één moment. Daardoor geeft het een stabiel, maaltijdonafhankelijk beeld van de glucoseregulatie. De nauwkeurigheid kan worden beïnvloed door aandoeningen die de levensduur van rode bloedcellen veranderen.", + "tsh": "TSH (thyroïdstimulerend hormoon) wordt door de hypofyse afgegeven om de schildklier aan te zetten tot de aanmaak van haar hormonen, en het past zich naar boven of beneden aan om die in balans te houden. Door deze terugkoppeling is TSH de gevoeligste eerste screening van de schildklierfunctie: het verandert meestal al voordat de schildklierhormonen zelf afwijken. Een verhoogd of verlaagd TSH wijst op een te traag of te snel werkende schildklier en is meestal aanleiding om de schildklierhormonen zelf te meten. Zwangerschap en leeftijd verschuiven het verwachte bereik.", + "ft3": "Vrij T3 (trijodothyronine) is de ongebonden, biologisch actieve vorm van het krachtigere schildklierhormoon: de fractie die beschikbaar is om op weefsels in te werken. Het meeste circulerende T3 is gebonden aan transporteiwitten en inactief, dus het vrije deel weerspiegelt de werkelijke beschikbaarheid van het hormoon. Het wordt gemeten om de schildklierfunctie te karakteriseren, vooral samen met TSH en vrij T4 als de uitslagen onduidelijk zijn. De waarden zijn sterk afhankelijk van de gebruikte bepaling en worden in klinische context beoordeeld.", + "ft4": "Vrij T4 (thyroxine) is de ongebonden vorm van het belangrijkste hormoon dat de schildklier aan het bloed afgeeft. Het dient als voorraad die weefsels naar behoefte omzetten in het actievere T3. De vrije fractie weerspiegelt wat het lichaam werkelijk beschikbaar heeft, ongeacht de hoeveelheid transporteiwitten. Het wordt meestal samen met TSH gemeten om problemen van de schildklier zelf te onderscheiden van de aansturing door de hypofyse. Zwangerschap en bepaalde medicijnen kunnen het verschuiven.", + "ferritin": "Ferritine is het belangrijkste ijzeropslageiwit van het lichaam, en de waarde in het bloed weerspiegelt globaal de totale ijzervoorraad. Een lage waarde wijst op uitgeputte voorraden, terwijl een hoge waarde kan wijzen op ijzerstapeling, of simpelweg op ontsteking, omdat ferritine ook stijgt als acutefase-eiwit. Daarom wordt het vaak beoordeeld samen met andere ijzermarkers en tekenen van ontsteking. Het is een van de kernmetingen om de ijzerstatus te beoordelen.", + "transferrin-saturation": "Transferrineverzadiging is het percentage transferrine (het eiwit dat ijzer door het bloed vervoert) dat op dat moment met ijzer is beladen. Het koppelt de hoeveelheid ijzer die onderweg is aan de ijzertransportcapaciteit van het lichaam en geeft zo een momentopname van de ijzerbeschikbaarheid, als aanvulling op het beeld van de opslag dat ferritine geeft. Een lage verzadiging wijst op een tekort aan ijzer, terwijl een hoge waarde kan wijzen op ijzerstapeling. Het wordt samen met ferritine en het volledige ijzerpanel beoordeeld.", + "vitamin-d": "Vitamine D wordt gemeten als 25-hydroxyvitamine D, de circulerende opslagvorm en de standaardmarker voor de algehele status van vitamine D. Het lichaam maakt het aan in huid die aan zonlicht wordt blootgesteld en neemt een deel op uit voeding; het ondersteunt de calciumbalans, de botgezondheid en de afweer. De waarden variëren met het seizoen, de breedtegraad, de huidskleur en suppletie. Het wordt gevolgd om te beoordelen of de voorraden in de tijd toereikend zijn.", + "vitamin-b12": "Vitamine B12 (cobalamine) is een essentiële vitamine die vooral uit dierlijke voeding komt en grotendeels in de lever wordt opgeslagen. Het is nodig voor de aanmaak van rode bloedcellen, de DNA-synthese en de gezondheid van het zenuwstelsel. Een langdurig tekort, door te lage inname of verminderde opname, kan leiden tot bloedarmoede en zenuwgerelateerde klachten. Het wordt gemeten om de voedingsstatus te beoordelen, vooral als inname of opname beperkt kan zijn.", + "folate": "Folaat (vitamine B9) is een B-vitamine die voorkomt in bladgroenten, peulvruchten en verrijkte voedingsmiddelen, en een centrale rol speelt bij de aanmaak van rode bloedcellen en de DNA-synthese. Het werkt nauw samen met vitamine B12, en een tekort aan een van beide kan een vergelijkbaar type bloedarmoede veroorzaken. Voldoende folaat is vooral rond het begin van de zwangerschap belangrijk voor een gezonde ontwikkeling van de foetus. Het wordt gemeten om de voedingsstatus en de oorzaak van bepaalde vormen van bloedarmoede te beoordelen.", + "hs-crp": "Hooggevoelig CRP meet C-reactief proteïne, een marker die de lever afgeeft als reactie op ontsteking, met een bepaling die is verfijnd om de lage concentraties te meten die relevant zijn voor het cardiovasculaire risico. Anders dan het standaard-CRP dat bij acute infecties wordt gebruikt, brengt de hooggevoelige variant de subtiele, chronische ontsteking in beeld die met vaatziekte samenhangt. Omdat elke recente infectie of verwonding de waarde kan verhogen, wordt deze buiten een acute ziekte beoordeeld en vaak bevestigd met een herhaalde afname. Het wordt gezien als één factor in het totale cardiovasculaire risico.", + "creatinine": "Creatinine is een afvalproduct van de normale spierstofwisseling dat de nieren in een vrij constant tempo uit het bloed filteren. Omdat de aanmaak relatief constant is, is de waarde in het bloed een praktische maat voor hoe goed de nieren afvalstoffen verwijderen. De waarden worden ook beïnvloed door spiermassa, vochtbalans en voeding, dus ze worden meestal samen met de geschatte filtratiesnelheid beoordeeld. Het is een kernmarker voor de nierfunctie.", + "egfr": "eGFR (geschatte glomerulaire filtratiesnelheid) schat hoeveel bloed de nieren per minuut filteren, berekend uit creatinine samen met leeftijd en geslacht. Het vertaalt een ruwe creatininewaarde naar een direct interpreteerbare maat voor de nierfunctie. Een dalende eGFR in de tijd is de belangrijkste manier waarop chronische nierveranderingen worden ingedeeld en gevolgd. Omdat het een schatting is, wordt het gelezen als trend en niet als één exact getal.", + "alt": "ALAT (alanineaminotransferase) is een enzym dat vooral in levercellen voorkomt en in het bloed vrijkomt wanneer die cellen belast of beschadigd raken. Omdat het relatief leverspecifiek is, is het een van de belangrijkste markers om leverschade of leverontsteking op te sporen. De waarden kunnen stijgen bij leververvetting, virale hepatitis, alcohol of bepaalde medicijnen. Het wordt meestal samen met ASAT en de andere markers van het leverpanel beoordeeld.", + "ast": "ASAT (aspartaataminotransferase) is een enzym dat in de lever voorkomt, maar ook in spieren, het hart en rode bloedcellen, en vrijkomt wanneer een van die weefsels beschadigd raakt. Omdat het minder leverspecifiek is dan ALAT, worden de twee samen beoordeeld; hun verhouding kan een aanwijzing geven over de bron en de aard van het probleem. Intensieve inspanning of spierletsel kan de waarde los van de lever verhogen. Het is een van de standaardenzymen van het leverpanel.", + "ggt": "GGT (gamma-glutamyltransferase) is een enzym dat in de lever en de galwegen voorkomt en vooral stijgt bij een belemmerde galafvloed of door alcoholgebruik. Het wordt vaak gebruikt om te verduidelijken waarom een andere levermarker verhoogd is, bijvoorbeeld om onderscheid te maken tussen een oorzaak in de lever of in de galwegen. Het is gevoelig maar niet erg specifiek, en wordt daarom in samenhang met de rest van het leverpanel beoordeeld. Het is een van de markers waarmee de gezondheid van lever en galwegen wordt beoordeeld.", + "sodium": "Natrium is het belangrijkste elektrolyt in het vocht buiten de lichaamscellen en de belangrijkste drijvende kracht achter de vochtbalans en het bloedvolume. Het lichaam reguleert het nauwkeurig via dorst, hormonen en de nieren, waardoor de waarde in het bloed meer de balans tussen water en zout weerspiegelt dan alleen de inname via voeding. Afwijkende waarden wijzen meestal op een verstoring van de waterhuishouding en niet van het natrium zelf. Het is een vast onderdeel van het basale stofwisselings- en elektrolytenpanel.", + "potassium": "Kalium is het belangrijkste elektrolyt in de lichaamscellen en is essentieel voor de prikkelgeleiding in zenuwen en het regelmatige ritme van de hartspier. De waarde in het bloed wordt door de nieren en hormonale signalen binnen een smal bereik gehouden, omdat zowel hoge als lage waarden de elektrische activiteit van het hart kunnen verstoren. De waarden kunnen worden beïnvloed door de nierfunctie, de vochtbalans en verschillende veelgebruikte medicijnen. Het is een kernmeting in het elektrolytenpanel.", + "hemoglobin": "Hemoglobine is het ijzerhoudende eiwit in rode bloedcellen dat in de longen zuurstof bindt en naar de weefsels vervoert. De concentratie ervan is de belangrijkste maat voor het zuurstoftransporterend vermogen van het bloed en de centrale marker om bloedarmoede op te sporen. Lage waarden kunnen wijzen op bloedverlies, een tekort aan ijzer of vitaminen of een verminderde aanmaak, terwijl hoge waarden kunnen optreden bij uitdroging of zuurstofarme omstandigheden. Het is een hoeksteen van het volledige bloedbeeld.", + "hematocrit": "Hematocriet is het aandeel van het bloedvolume dat uit rode bloedcellen bestaat, uitgedrukt als percentage. Het beweegt nauw mee met hemoglobine en geeft een aanvullend beeld van de rodebloedcelmassa en het zuurstoftransporterend vermogen van het bloed. De vochtbalans heeft er invloed op, omdat veranderingen in het plasmavolume het aandeel verschuiven, ook als het aantal rode bloedcellen stabiel is. Het wordt samen met hemoglobine en de rest van het bloedbeeld beoordeeld.", + "wbc": "Het aantal witte bloedcellen (leukocyten) is het totale aantal afweercellen dat in het bloed circuleert, de mobiele verdediging van het lichaam tegen infecties. Het stijgt als reactie op infectie, ontsteking of stress en kan dalen als het beenmerg onderdrukt wordt of bij sommige immuunaandoeningen. Omdat het de som is van verschillende celtypen, volgt op een opvallende verandering vaak een leukocytendifferentiatie die het aantal uitsplitst. Het is een kernonderdeel van het volledige bloedbeeld.", + "platelets": "Bloedplaatjes (trombocyten) zijn kleine celfragmenten in het bloed die samenklonteren en de eerste prop vormen die een bloeding uit een beschadigd bloedvat stopt. Hun aantal weerspiegelt de balans tussen aanmaak in het beenmerg en verbruik of afbraak. Een laag aantal kan de neiging tot bloeden vergroten, terwijl een hoog aantal kan optreden na een ontsteking of andere prikkels. Het maakt deel uit van het volledige bloedbeeld en is een basismaat voor het stollingsvermogen.", + "apob": "Apolipoproteïne B is het structurele eiwit dat op elk atherogeen lipoproteïnedeeltje zit, zodat een meting ervan deze deeltjes direct telt in plaats van het cholesterol dat ze vervoeren. Omdat er op elk LDL-, VLDL- en verwant deeltje één ApoB-molecuul zit, kan het een cardiovasculair risico zichtbaar maken dat een LDL-cholesterolwaarde mist, vooral wanneer het aantal deeltjes en het cholesterolgehalte uiteenlopen. Daarom wordt het steeds vaker gebruikt om de risicobeoordeling op basis van lipiden te verfijnen. Het wordt samen met het standaard lipidenprofiel beoordeeld.", + "lp-a": "Lipoproteïne(a) is een LDL-achtig deeltje met een extra gebonden eiwit; de waarde wordt grotendeels genetisch bepaald en blijft het hele leven vrij stabiel. Een verhoogd Lp(a) is een onafhankelijke, erfelijke risicofactor voor hart- en vaatziekten en vernauwing van de aortaklep. Omdat het weinig verandert, wordt het meestal één keer gemeten om iemands levenslange risico vast te stellen in plaats van het herhaaldelijk te volgen. Het wordt in molaire eenheden gerapporteerd en beoordeeld als onderdeel van het totale cardiovasculaire risico.", + "fasting-insulin": "Nuchtere insuline is de insulinewaarde (insuline is het hormoon dat glucose uit het bloed naar de cellen verplaatst), gemeten na een nacht vasten. Samen met de nuchtere glucose helpt het om insulineresistentie in te schatten, de toestand waarin het lichaam meer insuline nodig heeft om de glucose binnen het bereik te houden. Een hoge nuchtere insuline bij een normale glucose kan een vroeg teken zijn dat deze compensatie al gaande is. Het wordt beoordeeld als onderdeel van het totaalbeeld van de metabole gezondheid, niet op zichzelf.", + "omega-3-index": "De omega-3-index is het aandeel EPA en DHA (de twee langeketen-omega-3-vetzuren uit zeevoedsel) onder de vetzuren in de membranen van rode bloedcellen. Omdat rode bloedcellen langzaam worden vernieuwd, weerspiegelt de index de omega-3-inname op lange termijn en niet een recente maaltijd. Een hogere index is in observationele studies in verband gebracht met een lager cardiovasculair risico. De index wordt gevolgd als stabiele marker van de omega-3-status, die over een periode van maanden op de voeding reageert.", + "alkaline-phosphatase": "Alkalische fosfatase (ALP) is een enzym dat vooral voorkomt in de lever, de galwegen en het bot. Het stijgt wanneer de galafvoer geblokkeerd is en tijdens fasen van actieve botaanmaak, zoals de groei bij kinderen en adolescenten of botgenezing. Omdat beide organen het afgeven, wordt een verhoogde waarde meestal samen met GGT en de andere levermarkers beoordeeld om een bron in de lever te onderscheiden van een bron in het bot. Het is een van de standaardmarkers van het leverpanel.", + "bilirubin-total": "Totaal bilirubine is het gele afbraakproduct van hemoglobine uit versleten rode bloedcellen, gemeten als de som van de ongeconjugeerde en de geconjugeerde vorm. De lever neemt het op, conjugeert het en scheidt het uit via de gal, zodat de waarde laat zien hoe goed deze route werkt. Het kan stijgen bij leverziekte, geblokkeerde galwegen of een verhoogde afbraak van rode bloedcellen, en onschuldig bij het syndroom van Gilbert. Het wordt samen met de andere levermarkers beoordeeld." + }, + "apob": "Apolipoproteïne B (ApoB)", + "lp-a": "Lipoproteïne(a)", + "fasting-insulin": "Nuchtere insuline", + "omega-3-index": "Omega-3-index", + "alkaline-phosphatase": "Alkalische fosfatase (ALP)", + "bilirubin-total": "Totaal bilirubine" + }, + "noteLoadFailed": "De notitie kon niet worden geladen; bij het opslaan blijft ze ongewijzigd.", + "showingLatestOf": "De laatste {shown} van {total} metingen worden getoond", + "convertedFrom": "omgerekend van {value} {unit}", + "ocr": { + "scanButton": "Rapport scannen", + "addScan": "Document scannen", + "addManual": "Waarde handmatig toevoegen", + "uploadHint": "Upload een foto of PDF van een labrapport", + "acceptWithPdf": "JPEG, PNG, WebP of PDF", + "acceptImageOnly": "JPEG, PNG of WebP", + "extracting": "Je rapport wordt gelezen…", + "readingOnDevice": "Wordt gelezen op je apparaat…", + "localModeHint": "Wordt op je apparaat gelezen en daarna als tekst verzonden. Minder nauwkeurig: controleer elke waarde.", + "rangeFromScan": "Referentiebereik overgenomen uit de scan", + "rangeVerify": "Controleer het referentiebereik", + "reviewTitle": "Controleren voor het opslaan", + "reviewHint": "Controleer elke meting en sla daarna de metingen op die je wilt bewaren.", + "foundCount": "{count} metingen gevonden", + "pagesCapped": "Alleen de eerste {read} van {total} pagina's zijn gelezen. Waarden op latere pagina's staan niet in deze lijst.", + "confirmRow": "Deze meting opnemen", + "analyteLabel": "Testnaam", + "resultLabel": "Uitslag", + "valueLabel": "Waarde", + "unitLabel": "Eenheid", + "dateLabel": "Datum", + "refLowLabel": "Referentie ondergrens", + "refHighLabel": "Referentie bovengrens", + "newBiomarker": "Nieuwe biomarker, wordt aangemaakt", + "linksExisting": "Wordt gekoppeld aan bestaande {name}", + "duplicateWarning": "Er bestaat al een overeenkomende meting", + "lowConfidence": "Controleer deze waarde nog eens", + "lowConfidenceBadge": "Lage betrouwbaarheid", + "valueUnreadable": "Waarde onleesbaar. Voer deze handmatig in", + "saveSelected": "{count} geselecteerde opslaan", + "discardAll": "Alles verwerpen", + "savedToast": "{count} labuitslagen opgeslagen", + "savedPartialToast": "{count} labuitslagen opgeslagen, {skipped} overgeslagen als duplicaat", + "savedNothingToast": "Niets opgeslagen: {skipped} metingen waren al vastgelegd", + "savedEmptyToast": "Niets om op te slaan", + "noRows": "Er zijn geen metingen gevonden in dit rapport.", + "nothingToSave": "Selecteer ten minste één meting om op te slaan.", + "validationSummary": "Metingen die aandacht nodig hebben: {count}. Vul de gemarkeerde velden in of deselecteer die metingen.", + "errorDate": "Voeg de afnamedatum toe.", + "errorAnalyte": "Voeg een naam voor de biomarker toe.", + "errorValue": "Voeg een waarde toe.", + "errorResult": "Voeg een uitslag toe.", + "errorUnit": "Voeg een eenheid toe.", + "errorUnitMismatch": "Deze marker wordt bijgehouden in {markerUnit}. Wijzig de eenheid als het rapport verkeerd is gelezen, of deselecteer deze meting.", + "unitDiffersBadge": "Bijgehouden in {markerUnit}; dit rapport vermeldt {unit}", + "unitConvertedBadge": "Opgeslagen als {value} {markerUnit}, omgerekend van {statedValue} {unit}", + "savedPartialUnitToast": "{count} labuitslagen opgeslagen. Niet opgeslagen omdat de eenheid afwijkt van die van de marker: {analytes}", + "savedNothingUnitToast": "Niets opgeslagen: de eenheid wijkt af van die van de marker voor {analytes}", + "saveFailed": "De metingen konden niet worden opgeslagen. Probeer het opnieuw.", + "providerUnsupported": "Je AI-provider kan geen afbeeldingen lezen. Configureer een model met beeldherkenning.", + "consentRequired": "Om een rapport te scannen is toestemming voor AI-verwerking nodig.", + "rateLimited": "Te veel scans. Probeer het later opnieuw.", + "budgetExceeded": "Je AI-gebruiksbudget voor vandaag is bereikt.", + "fileTooLarge": "Het bestand is te groot (max. 12 MB).", + "fileType": "Upload een JPEG, PNG, WebP of PDF.", + "extractFailed": "Het rapport kon niet worden gelezen. Probeer een scherpere foto.", + "pdfNeedsAnthropic": "Voor het scannen van PDF's is een Claude-provider met beeldherkenning nodig; upload in plaats daarvan een foto.", + "refTextLabel": "Bereik zoals afgedrukt", + "refTextPlaceholder": "bijv. 3,5 - 5,0", + "aiUnavailable": "Een rapport scannen met AI is hier op dit moment niet beschikbaar." + }, + "loadMoreReadings": "Meer metingen laden", + "documentsLink": "Documenten met labrapporten", + "notLinkedYet": "Nog niet gekoppeld aan een biomarker", + "sourceRange": { + "fromReport": "Bereik volgens rapport: {range}", + "catalogDiffers": "jouw bereik: {range}", + "printed": "zoals afgedrukt in {unit}: {range}" + }, + "match": { + "viaAlias": "via een naam die je eerder hebt gekozen", + "viaCatalog": "herkend als gangbare afkorting", + "chooseLabel": "Hoort bij", + "suggestionOption": "{name} ({unit})", + "newMarkerOption": "Een nieuwe biomarker", + "rememberHint": "Deze naam wordt onthouden voor het volgende rapport.", + "chooseHint": "Kies een biomarker als je deze al bijhoudt." + }, + "aliases": { + "title": "Ook geschreven als", + "taken": "{alias} hoort al bij een andere biomarker.", + "saveError": "De namen konden niet worden opgeslagen. Probeer het opnieuw.", + "remove": "{alias} verwijderen", + "empty": "Voeg de namen toe die andere labs voor {name} gebruiken, zodat hun rapporten hier terechtkomen.", + "placeholder": "bijv. Alk.P", + "addLabel": "Andere naam voor deze biomarker", + "add": "Toevoegen", + "alsoWritten": "Ook geschreven als {aliases}" + }, + "merge": { + "open": "Samenvoegen", + "title": "Biomarkers samenvoegen", + "description": "Voeg markers samen die dezelfde test zijn, maar anders geschreven worden.", + "pickHint": "Selecteer ten minste twee biomarkers.", + "keepLabel": "Behouden", + "keepHint": "De andere worden hierin samengevoegd en hun namen worden alternatieve namen van deze biomarker.", + "showPreview": "Voorbeeld tonen", + "back": "Terug", + "confirm": "Nu samenvoegen", + "previewSummaryOne": "{count} meting gaat naar {name} ({unit}).", + "previewSummaryFew": "{count} metingen gaan naar {name} ({unit}).", + "previewSummaryOther": "{count} metingen gaan naar {name} ({unit}).", + "movesOne": "{count} meting, al in dezelfde eenheid", + "movesFew": "{count} metingen, al in dezelfde eenheid", + "movesOther": "{count} metingen, al in dezelfde eenheid", + "convertedOne": "{count} meting, omgerekend van {unit} naar {targetUnit}", + "convertedFew": "{count} metingen, omgerekend van {unit} naar {targetUnit}", + "convertedOther": "{count} metingen, omgerekend van {unit} naar {targetUnit}", + "refused": "{unit} kan niet worden omgerekend naar {targetUnit}.", + "aliasesAdded": "Deze namen verwijzen voortaan naar de behouden biomarker:", + "blocked": "Er kan niets worden samengevoegd zolang een eenheid niet kan worden omgerekend. Laat die biomarker weg of behoud een andere.", + "noUndo": "Samenvoegen kan niet ongedaan worden gemaakt.", + "doneToastOne": "Samengevoegd in {name}, {count} meting verplaatst", + "doneToastFew": "Samengevoegd in {name}, {count} metingen verplaatst", + "doneToastOther": "Samengevoegd in {name}, {count} metingen verplaatst", + "error": "De biomarkers konden niet worden samengevoegd. Probeer het opnieuw." + } + }, + "modules": { + "cycle": { + "label": "Cyclus", + "description": "Houd je menstruatie, fasen en voorspellingen bij." + }, + "mood": { + "label": "Stemming", + "description": "Leg dagelijks je stemming en tags vast." + }, + "sleep": { + "label": "Slaap", + "description": "Slaapduur, slaapfasen en tijdlijn." + }, + "glucose": { + "label": "Glucose", + "description": "Bloedglucosemetingen en trends." + }, + "workouts": { + "label": "Trainingen", + "description": "Trainingssessies en activiteit." + }, + "recovery": { + "label": "Herstel", + "description": "Herstel- en belastingswaarden van je apparaten." + }, + "labs": { + "label": "Labuitslagen", + "description": "Leg labuitslagen vast en bewaar hun geschiedenis." + }, + "achievements": { + "label": "Prestaties", + "description": "Badges en reeksen voor je routine." + }, + "coach": { + "label": "Coach", + "description": "AI-chat op basis van je eigen gegevens." + }, + "insights": { + "label": "AI-analyse", + "description": "Briefing, statusnotities en trainingsnotities die een model schrijft, nooit je gegevens of scores." + }, + "doctorReport": { + "label": "Artsenrapport", + "description": "PDF- en FHIR-export voor je zorgverlener." + }, + "medications": { + "label": "Medicatie", + "description": "Schema's, innames en therapietrouw." + }, + "illness": { + "label": "Ziektedagboek", + "description": "Houd episodes van ziekten en aandoeningen bij met een dagelijkse symptoomtijdlijn." + }, + "mcp": { + "label": "Toegang voor externe assistent (MCP)", + "description": "Leestoegang voor een assistent die MCP ondersteunt, via een token met beperkte rechten." + }, + "environment": { + "label": "Omgeving", + "description": "Dagelijks weer en daglicht op je locatie, naast stemming, slaap en vitale waarden." + }, + "inboundDocuments": { + "label": "Documenten", + "description": "Medische brieven, rapporten en scans op één versleutelde, doorzoekbare plek." + }, + "mentalHealth": { + "label": "Mentaal welzijn", + "description": "Vier optionele vragenlijsten naast het bijhouden van je stemming." + }, + "nutrients": { + "label": "Inname van voedingsstoffen", + "description": "Dagelijkse totalen van micronutriënten, gesynchroniseerd vanuit Apple Health." + }, + "vaccinations": { + "label": "Vaccinaties", + "description": "Je vaccinatieoverzicht, gestructureerd: dosis, serie, volgende booster." + }, + "timeline": { + "label": "Tijdlijn", + "description": "Jaren in één oogopslag: aandoeningen, medicatie en bezoeken naast je metingen, plus je eigen levensgebeurtenissen." + } + }, + "moduleOff": { + "disabled": { + "description": "{module} staat uit voor dit dossier, dus de pagina's ervan blijven verborgen. Zet de module weer aan om ze terug te halen.", + "title": "{module} is uitgeschakeld" + }, + "notGranted": { + "description": "{module} valt buiten de onderdelen die met je zijn gedeeld. Wat een gedeeld dossier omvat, bepaalt de eigenaar ervan.", + "title": "Geen onderdeel van de gedeelde toegang" + }, + "unavailable": { + "description": "De beheerder heeft {module} voor alle accounts op deze server uitgeschakeld. Met je eigen instellingen kun je de module niet terugzetten.", + "title": "Niet beschikbaar op deze server" + }, + "openModules": "Instellingen, Modules openen" + }, + "vaccinations": { + "title": "Vaccinaties", + "subtitle": "Je vaccinatieoverzicht, dosis voor dosis.", + "listLoadError": "De vaccinaties konden niet worden geladen.", + "series": { + "booster": "Booster", + "ofTotal": "Dosis {position} van {total}", + "doseN": "Dosis {position}" + }, + "row": { + "lot": "Batch {lot}" + }, + "form": { + "date": "Datum", + "catalogLabel": "Vaccin", + "identityHint": "Kies een vaccin uit de lijst of typ het hieronder in. Eén van beide is genoeg.", + "catalogNone": "Kies een vaccin", + "catalogSearch": "Vaccins zoeken", + "catalogNoMatch": "Geen catalogusitem gevonden", + "catalogClear": "Selectie wissen", + "freeTextLabel": "Vrije tekst", + "freeTextPlaceholder": "zoals het op je vaccinatiebewijs staat", + "seriesToggle": "Seriegegevens toevoegen", + "doseNumber": "Dosisnr.", + "seriesDoses": "Doses in serie", + "lot": "Batchnummer", + "site": "Injectieplaats", + "siteNone": "Niet opgegeven", + "practitioner": "Praktijk of arts", + "note": "Notitie", + "linkDocuments": "Document koppelen", + "linkNothingToOffer": "Nog geen documenten." + }, + "site": { + "LEFT_ARM": "Linkerbovenarm", + "RIGHT_ARM": "Rechterbovenarm", + "LEFT_THIGH": "Linkerdij", + "RIGHT_THIGH": "Rechterdij", + "ORAL": "Oraal", + "NASAL": "Nasaal", + "OTHER": "Anders" + }, + "createTitle": "Vaccinatie vastleggen", + "editTitle": "Vaccinatie bewerken", + "formDescription": "Een datum en het vaccin zijn genoeg; al het andere is optioneel.", + "created": "Vaccinatie opgeslagen", + "updated": "Vaccinatie bijgewerkt", + "saveFailed": "De vaccinatie kon niet worden opgeslagen.", + "deleteTitle": "Deze vaccinatie verwijderen?", + "deleteDescription": "De registratie wordt uit je dossier verwijderd. Een geplande boosterherinnering blijft staan.", + "deleteFailed": "De vaccinatie kon niet worden verwijderd.", + "info": { + "primarySeriesOne": "Basisserie: {count} dosis", + "primarySeriesFew": "Basisserie: {count} doses", + "primarySeriesOther": "Basisserie: {count} doses", + "yearly": "Jaarlijkse vaccinatie", + "boosterYearsOne": "Booster doorgaans om de {count} jaar", + "boosterYearsFew": "Booster doorgaans om de {count} jaar", + "boosterYearsOther": "Booster doorgaans om de {count} jaar", + "boosterMonthsOne": "Booster doorgaans om de {count} maand", + "boosterMonthsFew": "Booster doorgaans om de {count} maanden", + "boosterMonthsOther": "Booster doorgaans om de {count} maanden", + "standard60": "Standaardvaccinatie vanaf 60 jaar", + "sourceLabel": "Bron: {source}", + "affordanceLabel": "Schema-informatie" + }, + "booster": { + "title": "Booster plannen?", + "body": "Je kunt vanaf deze dosis een herinnering instellen voor de volgende booster. Wijzig het interval of het label, of sla het aanbod af.", + "interval": "Interval", + "label": "Label", + "labelSuffix": "booster", + "decline": "Niet nu", + "confirm": "Herinnering instellen", + "planned": "Booster gepland", + "failed": "De herinnering kon niet worden gemaakt.", + "everyYearsOne": "om de {count} jaar", + "everyYearsFew": "om de {count} jaar", + "everyYearsOther": "om de {count} jaar", + "everyMonthsOne": "om de {count} maand", + "everyMonthsFew": "om de {count} maanden", + "everyMonthsOther": "om de {count} maanden" + }, + "suggestion": { + "single": "Bij deze vaccinatie opslaan?", + "choose": "Bij welke vaccinatie hoort deze scan?", + "linked": "Gekoppeld aan vaccinatie", + "failed": "Koppelen mislukt.", + "unnamed": "Vaccinatie" + }, + "empty": { + "title": "Nog geen vaccinatie vastgelegd", + "description": "Neem je vaccinatiebewijs regel voor regel over. Een datum en het vaccin zijn genoeg." + }, + "catalog": { + "tetanus": "Tetanus", + "diphtheria": "Difterie", + "pertussis": "Kinkhoest (pertussis)", + "polio": "Polio", + "measles": "Mazelen", + "mumps": "Bof", + "rubella": "Rodehond (rubella)", + "varicella": "Waterpokken (varicella)", + "hib": "Hib (Haemophilus influenzae type b)", + "hepatitis-a": "Hepatitis A", + "hepatitis-b": "Hepatitis B", + "influenza": "Influenza (griep)", + "pneumococcal": "Pneumokokken", + "herpes-zoster": "Gordelroos (herpes zoster)", + "rsv": "RSV", + "covid-19": "COVID-19", + "fsme": "Tekenencefalitis (TBE)", + "hpv": "HPV (humaan papillomavirus)", + "meningococcal-acwy": "Meningokokken ACWY", + "meningococcal-b": "Meningokokken B", + "rotavirus": "Rotavirus", + "typhoid": "Buiktyfus", + "rabies": "Hondsdolheid (rabiës)", + "yellow-fever": "Gele koorts", + "japanese-encephalitis": "Japanse encefalitis", + "cholera": "Cholera", + "td": "Td (tetanus, difterie)", + "tdap": "Tdap (tetanus, difterie, kinkhoest)", + "tdap-ipv": "Tdap-IPV (vier-in-één)", + "dtap-ipv": "DTaP-IPV (vier-in-één voor kinderen)", + "hexavalent": "Zes-in-één (DTaP-IPV-Hib-HepB)", + "mmr": "BMR (bof, mazelen, rodehond)", + "mmrv": "BMRV (bof, mazelen, rodehond, waterpokken)", + "hepa-hepb": "Hepatitis A en B", + "hepa-typhoid": "Hepatitis A en buiktyfus" + }, + "renewal": { + "overdue": "Booster over tijd sinds {date}", + "dueSoon": "Booster nodig op {date}", + "current": "Volgende booster: {date}" + }, + "custom": { + "title": "Eigen vaccins", + "add": "Eigen vaccin toevoegen", + "name": "Naam", + "components": "Beschermt tegen", + "seriesDoses": "Doses in de basisserie", + "boosterMonths": "Booster om de (maanden)", + "saved": "Vaccin opgeslagen", + "deleted": "Vaccin verwijderd", + "deleteConfirm": "Dit vaccin verwijderen? Al vastgelegde doses behouden hun naam.", + "saveFailed": "Het vaccin kon niet worden opgeslagen.", + "nameTaken": "Je hebt al een vaccin met deze naam.", + "editTitle": "Eigen vaccin bewerken", + "description": "Een vaccin dat niet in de catalogus staat en net als elk catalogusitem wordt meegeteld.", + "componentsHint": "Kies elke ziekte waartegen het beschermt.", + "boosterHint": "Laat leeg als er geen booster is.", + "protectsAgainst": "Beschermt tegen {list}.", + "deleteTitle": "Eigen vaccin verwijderen?", + "sectionDescription": "Vaccins die je zelf hebt toegevoegd omdat ze niet in de catalogus staan.", + "catalogGroup": "Catalogus" + } + }, + "illness": { + "title": "Ziekte", + "subtitle": "Een terugblikkend logboek van je ziekte- en aandoeningsepisodes.", + "settings": { + "viewDescription": "Kies of episodes als kaarten of als compacte lijst worden getoond.", + "orderDescription": "Sleep je episodes in de volgorde waarin je ze wilt zien." + }, + "customize": "Ziektedagboek aanpassen", + "newEpisode": "Nieuwe episode", + "logDay": "Dag vastleggen", + "markRecovered": "Markeren als hersteld", + "deletedToast": "Episode verwijderd", + "restoreError": "De episode kon niet worden teruggezet", + "onsetOn": "Begonnen op {date}", + "recoveredOn": "hersteld op {date}", + "status": { + "active": "Actief", + "ongoing": "Lopend", + "recovered": "Hersteld" + }, + "empty": { + "title": "Nog geen episodes", + "body": "Start een episode om een dagelijkse symptoomtijdlijn bij te houden en terug te kijken hoe die verliep." + }, + "type": { + "INFECTION": "Infectie", + "ALLERGY": "Allergie", + "INJURY": "Letsel", + "MENTAL_HEALTH": "Mentale gezondheid", + "AUTOIMMUNE": "Auto-immuun", + "CHRONIC": "Chronisch", + "OTHER": "Anders" + }, + "lifecycle": { + "ACUTE": "Acuut", + "CHRONIC_ONGOING": "Chronisch / aanhoudend", + "RECURRING": "Terugkerend", + "FLARE": "Opflakkering" + }, + "new": { + "title": "Nieuwe episode", + "description": "Leg een ziekte of aandoening vast. Daarna kun je dagelijks symptomen registreren.", + "label": "Naam", + "labelPlaceholder": "bijv. Verkoudheid", + "type": "Type", + "lifecycle": "Verloop", + "onset": "Begonnen op", + "note": "Notitie", + "notePlaceholder": "Alles wat het onthouden waard is (versleuteld).", + "saveError": "De episode kon niet worden opgeslagen. Probeer het opnieuw.", + "parent": "Onderdeel van", + "parentNone": "Niet gekoppeld", + "resolved": "Geëindigd op", + "resolvedHelp": "Laat leeg zolang de episode nog loopt.", + "markOngoing": "Loopt nog", + "bodySiteHint": "Bijvoorbeeld knie of onderrug." + }, + "sheet": { + "title": "{date} vastleggen", + "description": "Leg de symptomen van vandaag vast, hoe je functioneert en eventuele koorts.", + "symptoms": "Symptomen", + "functionalImpact": "Hoe je functioneert", + "fever": "Temperatuur", + "note": "Notitie", + "noteSet": "Ingevuld", + "notePlaceholder": "Hoe de dag voelde (versleuteld).", + "severityFor": "Ernst van {symptom}", + "saveError": "De dag kon niet worden opgeslagen. Probeer het opnieuw.", + "day": "Dag" + }, + "impact": { + "0": "Volledig functionerend", + "1": "Licht beperkt", + "2": "Grotendeels aan het rusten", + "3": "Bedlegerig" + }, + "symptom": { + "runnyNose": "Loopneus", + "stuffyNose": "Verstopte neus", + "sneezing": "Niezen", + "soreThroat": "Keelpijn", + "cough": "Hoesten", + "headache": "Hoofdpijn", + "bodyAches": "Spierpijn", + "fatigue": "Vermoeidheid" + }, + "correlation": { + "title": "Hoe het verliep", + "learning": "Nog aan het leren. Leg nog een paar dagen vast om hier patronen te zien.", + "preOnsetTitle": "Hoe het zich aankondigde", + "preOnsetBody": "Signalen die afweken van je basislijn voordat je het begin markeerde.", + "nadirTitle": "Wat er veranderde", + "nadirBody": "Hoe ver elk bijgehouden signaal afweek van je gebruikelijke bereik.", + "recoveryGapTitle": "Herstelkloof", + "recoveryGapLag": "Je waarden stabiliseerden {days} dagen nadat je je beter voelde.", + "recoveryGapLead": "Je waarden stabiliseerden {days} dagen voordat je je als hersteld markeerde.", + "recoveryGapLagSymptom": "Je voelde je {days} dagen beter voordat je vastgelegde symptomen afnamen.", + "recoveryGapLeadSymptom": "Je vastgelegde symptomen namen {days} dagen af voordat je je als hersteld markeerde.", + "recoveryGapSame": "Je waarden stabiliseerden op dezelfde dag dat je je beter voelde.", + "sleepContextMore": "Tijdens deze episode sliep je merkbaar meer dan normaal (ongeveer {hours} u per nacht).", + "sleepContextLess": "Tijdens deze episode sliep je merkbaar minder dan normaal (ongeveer {hours} u per nacht).", + "redFlagTitle": "Verdient nadere aandacht", + "redFlagSpo2": "Je zuurstofverzadiging bleef meerdere dagen laag. Zoek medische hulp als dit opnieuw gebeurt.", + "redFlagFever": "Je had aanhoudende koorts. Zoek medische hulp als dit opnieuw gebeurt.", + "direction": { + "above": "boven je gebruikelijke waarde", + "below": "onder je gebruikelijke waarde" + }, + "settled": "Tijdens deze episode week niets opvallend af van je gebruikelijke bereik." + }, + "insights": { + "title": "Je ziektegeschiedenis", + "countOne": "Je hebt in deze periode 1 episode vastgelegd.", + "countOther": "Je hebt in deze periode {count} episodes vastgelegd.", + "typicalGap": "Gebruikelijke herstelkloof: {days} dagen tussen je beter voelen en het stabiliseren van je waarden.", + "typicalGapWithDriver": "Gebruikelijke herstelkloof: {days} dagen; je voelt je meestal beter voordat je {vital} stabiliseert.", + "typicalGapLearning": "Na nog een paar afgesloten episodes verschijnt hier een gebruikelijke herstelkloof.", + "none": "Geen episodes vastgelegd in deze periode.", + "analyze": "Herstelkloof analyseren" + }, + "section": { + "active": "Actief", + "resolved": "Afgesloten" + }, + "flares": { + "countOne": "1 opflakkering", + "countOther": "{count} opflakkeringen" + }, + "timeline": { + "title": "Dagtijdlijn", + "error": "De tijdlijn kon niet worden geladen.", + "severity": "Ernst {severity}", + "noSymptoms": "Geen symptomen vastgelegd.", + "impact": "Hoe je functioneerde: {impact}", + "fever": "Temperatuur: {value} {unit}", + "empty": "Nog geen dagen vastgelegd." + }, + "loadError": "Deze episode kon niet worden geladen.", + "backToList": "Terug naar dagboek", + "detail": { + "note": "Notitie" + }, + "edit": { + "title": "Episode bewerken", + "description": "Werk de gegevens van deze episode bij." + }, + "menu": { + "label": "Acties voor episode" + }, + "deleteConfirm": { + "title": "Deze episode verwijderen?", + "body": "“{label}” en alle bijbehorende dagregistraties worden verwijderd. Je kunt dit daarna nog even ongedaan maken." + }, + "vital": { + "RESTING_HEART_RATE": "Rusthartslag", + "HEART_RATE_VARIABILITY": "Hartslagvariabiliteit", + "RECOVERY_SCORE": "Herstel", + "OXYGEN_SATURATION": "Zuurstofverzadiging", + "BODY_TEMPERATURE": "Lichaamstemperatuur", + "RESPIRATORY_RATE": "Ademhalingsfrequentie", + "BLOOD_PRESSURE_SYS": "Systolische bloeddruk", + "BLOOD_PRESSURE_DIA": "Diastolische bloeddruk", + "PULSE": "Hartslag", + "WEIGHT": "Gewicht", + "FUNCTIONAL_IMPACT": "Invloed op functioneren" + }, + "listLoadError": "Je episodes konden niet worden geladen." + }, + "coach": { + "reminderSuggestion": { + "title": "Herinnering instellen?", + "accept": "Herinnering instellen", + "dismiss": "Niet nu", + "stop": "Ik meet al genoeg", + "accepted": "Herinnering ingesteld", + "dismissed": "Oké, ik stel dit niet meer voor", + "stopped": "Begrepen, ik stel geen herinneringen meer voor", + "failed": "Dat is niet gelukt. Probeer het opnieuw", + "cadence": { + "weightDaily": "Weeg jezelf dagelijks, rond hetzelfde tijdstip", + "bp722": "Meet een week lang twee keer per dag je bloeddruk", + "glucoseStructured": "Meet je glucose volgens een vast dagelijks schema" + } + }, + "suggestedAction": { + "apply": "Toevoegen", + "dismiss": "Niet nu", + "applied": "Toegevoegd", + "dismissed": "Genegeerd", + "failed": "Toevoegen is niet gelukt. Probeer het opnieuw", + "checkup": { + "title": "Herinnering voor een controle toevoegen?" + }, + "note": { + "title": "Herinnering opslaan?" + }, + "interval": { + "yearly": "Elk jaar", + "halfYearly": "Elk halfjaar", + "quarterly": "Elk kwartaal", + "monthly": "Elke maand" + } + }, + "settings": { + "reminderSuggestionsLabel": "Suggesties voor meetfrequentie", + "reminderSuggestionsDescription": "Laat de Coach af en toe een onderbouwde herinnering voorstellen om een waarde regelmatiger te meten." + }, + "plans": { + "title": "Plannen", + "pageDescription": "Als-dan-plannen die je in je gesprekken met de Coach hebt afgesproken. Bevestig een voorstel om het onderdeel te maken van het geheugen van de Coach.", + "readOnlyNote": "De Coach is nu niet beschikbaar, maar je kunt je plannen nog wel lezen en verwijderen.", + "proposalTitle": "Planvoorstel", + "ifThen": "Als {cue}, dan {action}.", + "targetPrefix": "Doel: {target}", + "reviewPrefix": "Evaluatie: {when}", + "accept": "Plan accepteren", + "decline": "Afwijzen", + "accepted": "Plan geaccepteerd. De Coach houdt er rekening mee.", + "declined": "Voorstel afgewezen.", + "failed": "Dat is niet gelukt. Probeer het opnieuw.", + "markMet": "Doel bereikt", + "abandon": "Plan beëindigen", + "remove": "Verwijderen", + "removeTitle": "Dit plan verwijderen?", + "removeBody": "Het plan en hoe het verliep verdwijnen uit je geschiedenis. Je kunt het daarna niet meer terughalen.", + "removeConfirm": "Plan verwijderen", + "empty": "Nog geen plannen. Als je je in een gesprek vastlegt op een concreet als-dan-voornemen, stelt de Coach het hier ter bevestiging voor.", + "groupProposed": "Suggesties", + "groupActive": "Actief", + "groupPast": "Afgerond", + "status": { + "proposed": "Voorgesteld", + "active": "Actief", + "met": "Bereikt", + "abandoned": "Beëindigd", + "review_due": "Check-in nodig", + "reviewed": "Geëvalueerd" + } + }, + "refusal": { + "outOfScope": "Ik kan alleen helpen met de gezondheidswaarden in je logboek: metingen, medicatie, stemming, trends. Vragen daarbuiten kan ik niet beantwoorden.", + "promptInjection": "Ik zie formuleringen die mijn instructies proberen te overschrijven. Ik ben de HealthLog Coach en vat alleen je eigen gezondheidsgegevens samen. Stel je vraag opnieuw binnen dat kader.", + "conversationPoisoned": "Een eerder bericht in dit gesprek bevat formuleringen die mijn instructies overschrijven. Begin een nieuw gesprek." + }, + "noRecordedData": "Ik heb geen vastgelegde metingen voor waar je naar vraagt, dus ik kan je geen cijfer geven. Zodra je er een paar hebt vastgelegd, kun je het me opnieuw vragen en ga ik uit van je eigen cijfers.", + "step": { + "read": "Bekijken: {domain}", + "readWindow": "Bekijken: {domain}, {window}", + "snapshot": "Je dossieroverzicht lezen", + "showResult": "Een eerdere tabel openen", + "reuse": "De tabel van eerder gebruiken", + "headerActive": "{label}…", + "listLabel": "Wat de Coach heeft bekeken", + "toggleShow": "Tonen wat de Coach heeft bekeken", + "toggleHide": "Verbergen wat de Coach heeft bekeken", + "announceDone": "Klaar: {label}", + "readingsOne": "1 meting", + "readingsFew": "{count} metingen", + "readingsOther": "{count} metingen", + "rowsOne": "1 rij", + "rowsFew": "{count} rijen", + "rowsOther": "{count} rijen", + "metricsOne": "1 waarde", + "metricsFew": "{count} waarden", + "metricsOther": "{count} waarden", + "reason": { + "noData": "geen metingen", + "outsideWindow": "geen metingen in deze periode", + "moduleDisabled": "uitgeschakeld", + "retrievalFailed": "kon niet worden gelezen", + "invalidArguments": "verzoek niet begrepen" + }, + "domain": { + "labs": "Labuitslagen", + "illness": "Ziekte en herstel", + "cycle": "Cyclus", + "correlations": "Verbanden tussen waarden", + "snapshot": "Dossieroverzicht", + "environment": "Weer en luchtkwaliteit", + "day": "Eén dag" + }, + "window": { + "last7days": "afgelopen 7 dagen", + "last30days": "afgelopen 30 dagen", + "last90days": "afgelopen 90 dagen", + "lastYear": "afgelopen 12 maanden", + "allTime": "sinds het begin" + }, + "period": { + "current": "deze periode", + "previous": "de periode ervoor", + "yearAgo": "een jaar eerder" + }, + "granularity": { + "day": "per dag", + "week": "per week", + "month": "per maand" + } + }, + "result": { + "title": { + "byDay": "{metric} per dag", + "byWeek": "{metric} per week", + "byMonth": "{metric} per maand", + "previousPeriod": "{metric}, de periode ervoor", + "yearAgo": "{metric}, een jaar eerder", + "workoutsBySport": "Trainingen per sport", + "labsLatest": "Laatste labuitslagen", + "sleepByNight": "Slaap per nacht", + "complianceByDay": "Therapietrouw per dag", + "distribution": "{metric}: hoe vaak elk bereik voorkwam" + }, + "column": { + "day": "Dag", + "week": "Week", + "month": "Maand", + "night": "Nacht", + "sport": "Sport", + "sessions": "Sessies", + "analyte": "Test", + "value": "Waarde", + "unit": "Eenheid", + "date": "Datum", + "referenceRange": "Referentiebereik", + "systolic": "Systolisch", + "diastolic": "Diastolisch", + "mean": "Gemiddelde", + "total": "Totaal", + "min": "Laagste", + "max": "Hoogste", + "readings": "Metingen", + "rate": "Therapietrouw", + "duration": "Duur", + "range": "Bereik", + "count": "Aantal keer" + }, + "other": "Overig", + "noReading": "geen meting", + "showAll": "Alles tonen ({count})", + "showFewer": "Minder tonen", + "copyMenu": "Tabel kopiëren", + "copyForSpreadsheet": "Kopiëren voor spreadsheet", + "copyAsText": "Kopiëren als tekst", + "copied": "Gekopieerd", + "copyFailed": "De tabel kon niet worden gekopieerd", + "viewLabel": "Weergave", + "viewChart": "Grafiek", + "viewTable": "Tabel", + "chartSummary": "{title}, weergegeven als grafiek. De tabelweergave toont elke waarde.", + "dataUsed": "Gebruikte gegevens ({count})", + "truncated": "De laatste {shown} van {total} rijen worden getoond", + "withheld": { + "moduleDisabled": "Deze tabel is verborgen omdat de bijbehorende module is uitgeschakeld.", + "unavailable": "Deze tabel kon niet worden geladen." + }, + "loading": "Tabel laden…", + "loadFailed": "De tabellen konden niet worden geladen.", + "reusedFrom": "Uit een eerder antwoord ({date})", + "reusedFromUndated": "Uit een eerder antwoord", + "histogramBin": "{from}–{to} {unit}" + }, + "method": { + "label": "Hoe dit is berekend", + "entry": "{domain}, {window}: {detail}", + "entryNoWindow": "{domain}: {detail}", + "reused": "uit een eerder antwoord", + "readingsOne": "1 meting", + "readingsFew": "{count} metingen", + "readingsOther": "{count} metingen", + "aggregation": { + "mean": "gemiddelde", + "median": "mediaan", + "latest": "laatste meting", + "sum": "totaal", + "count": "aantal", + "rate": "percentage" + }, + "averages": { + "day": "daggemiddelden", + "week": "weekgemiddelden", + "month": "maandgemiddelden" + }, + "totals": { + "day": "dagtotalen", + "week": "weektotalen", + "month": "maandtotalen" + }, + "absent": { + "noData": "geen metingen", + "outsideWindow": "geen metingen in deze periode", + "moduleDisabled": "uitgeschakeld" + } + }, + "followUp": { + "groupLabel": "Voorgestelde vervolgvragen", + "widenWindow": "Verder terugkijken", + "previousPeriod": "Vergelijken met de periode ervoor", + "yearAgo": "Vergelijken met een jaar eerder", + "asChart": "Als grafiek tonen", + "asTable": "Als tabel tonen", + "relatedMetric": "Zie ook: {metric}", + "continue": "Verder zoeken", + "settingLabel": "Vervolgvragen voorstellen", + "settingHint": "Toon maximaal drie vervolgsuggesties onder het laatste antwoord van de Coach.", + "changeAssumption": "In plaats daarvan: {value}" + }, + "clarify": { + "cardLabel": "De Coach heeft een vraag", + "choicesLabel": "Mogelijke antwoorden", + "freeTextHint": "Je kunt ook zelf een antwoord typen.", + "contextHint": "Typ hieronder je antwoord.", + "window": { + "last7days": "Afgelopen 7 dagen", + "last30days": "Afgelopen 30 dagen", + "last90days": "Afgelopen 90 dagen", + "lastYear": "Afgelopen 12 maanden", + "allTime": "Sinds het begin" + }, + "comparison": { + "baseline90d": "Vergelijken met mijn gebruikelijke 90 dagen" + }, + "anchor": { + "illness": "Sinds de ziekte van {date}" + } + }, + "reuse": { + "caption": "Hier zijn dezelfde cijfers uit mijn vorige antwoord, ongewijzigd." + } + }, + "safety": { + "floor": { + "bpHighTitle": "Zeer hoge bloeddruk", + "bpHighDoctor": "Twee recente metingen waren {systolic}/{diastolic} mmHg of hoger. Rust uit, meet over een paar minuten opnieuw en neem zo snel mogelijk contact op met je arts als de bloeddruk zo hoog blijft.", + "bpHighEmergency": "Twee recente metingen waren {systolic}/{diastolic} mmHg of hoger en je hebt klachten genoteerd. Als je pijn op de borst, kortademigheid, zwakte of veranderingen in zien of spreken hebt, bel dan nu het alarmnummer.", + "bpLowTitle": "Lage bloeddruk", + "bpLowDoctor": "Twee recente metingen hadden een systolische waarde onder {systolic} mmHg. Als je duizelig bent of je flauw voelt, ga dan zitten of liggen, en neem contact op met je arts als het aanhoudt.", + "bpLowEmergency": "Twee recente metingen hadden een systolische waarde onder {systolic} mmHg en je hebt klachten genoteerd. Als je je flauw voelt, verward bent of een koude, klamme huid hebt, bel dan nu het alarmnummer.", + "glucoseLowTitle": "Lage bloedsuiker", + "glucoseLowDoctor": "Twee recente metingen waren lager dan {threshold} {unit} ({value} {unit}). Neem snelwerkende koolhydraten, meet na 15 minuten opnieuw en neem contact op met je arts als lage waarden aanhouden.", + "glucoseLowEmergency": "Twee recente metingen waren lager dan {threshold} {unit} ({value} {unit}) en je hebt klachten genoteerd. Behandel nu met snelwerkende suiker; als dat niet lukt of als je je erg onwel voelt, bel dan het alarmnummer.", + "glucoseLowSevereTitle": "Zeer lage bloedsuiker", + "glucoseLowSevereDoctor": "Twee recente metingen waren lager dan {threshold} {unit} ({value} {unit}). Behandel direct met snelwerkende koolhydraten, meet na 15 minuten opnieuw en neem contact op met je arts.", + "glucoseLowSevereEmergency": "Twee recente metingen waren lager dan {threshold} {unit} ({value} {unit}) en je hebt klachten genoteerd. Behandel nu; als je geen eten binnen kunt houden of je erg onwel voelt, bel dan het alarmnummer.", + "glucoseHighTitle": "Zeer hoge bloedsuiker", + "glucoseHighDoctor": "Twee recente metingen waren {value} {unit} of hoger. Meet opnieuw, drink voldoende en neem zo snel mogelijk contact op met je arts als de waarde zo hoog blijft.", + "glucoseHighEmergency": "Twee recente metingen waren {value} {unit} of hoger en je hebt klachten genoteerd. Als je moet overgeven, snel ademt of verward bent, bel dan nu het alarmnummer." + } + }, + "version": { + "updateAvailable": { + "title": "Er is een nieuwe versie beschikbaar", + "reload": "Opnieuw laden", + "dismiss": "Sluiten" + } + }, + "mentalHealth": { + "pageTitle": "Mentaal welzijn", + "pageDescription": "Vier gevalideerde, vrijwillige zelftests. De trend over langere tijd zegt meer dan één losse score.", + "attributionLabel": "Bronvermelding", + "attributionShow": "Bron en licentie van {instrument}", + "choosePrompt": "Kies een check-in", + "start": "Starten", + "back": "Terug", + "submit": "Bekijk mijn resultaat", + "submitting": "Opslaan…", + "saved": "Opgeslagen", + "error": "Er is iets misgegaan. Probeer het opnieuw.", + "instrument": { + "phq9": "PHQ-9 (stemming)", + "gad7": "GAD-7 (piekeren)", + "who5": "WHO-5 (welzijn)", + "sci": "SCI (slaap)" + }, + "instrumentSub": { + "phq9": "Screening op depressie, 9 vragen", + "gad7": "Screening op angst, 7 vragen", + "who5": "Welzijnscheck, 5 vragen", + "sci": "Slaapcheck, 8 vragen" + }, + "options": { + "0": "Helemaal niet", + "1": "Meerdere dagen", + "2": "Meer dan de helft van de dagen", + "3": "Bijna elke dag" + }, + "functionalTitle": "Als je een of meer problemen hebt aangevinkt: hoe moeilijk was het door deze problemen om je werk te doen, voor je huishouden te zorgen of met andere mensen om te gaan?", + "functional": { + "0": "Helemaal niet moeilijk", + "1": "Enigszins moeilijk", + "2": "Erg moeilijk", + "3": "Extreem moeilijk" + }, + "functionalOptionalHint": "Optioneel: je kunt ook versturen zonder deze vraag te beantwoorden.", + "result": { + "title": "Je resultaat", + "totalLabel": "Totaalscore", + "bandLabel": "Bereik voor deze screening", + "takeAnother": "Nog een check-in doen" + }, + "band": { + "PHQ9": { + "minimal": "Geen / minimaal", + "mild": "Licht", + "moderate": "Matig", + "modSevere": "Matig ernstig", + "severe": "Ernstig" + }, + "GAD7": { + "minimal": "Geen / minimaal", + "mild": "Licht", + "moderate": "Matig", + "severe": "Ernstig" + }, + "WHO5": { + "low": "Lager welzijn", + "good": "Goed welzijn" + }, + "SCI": { + "belowThreshold": "Mogelijk bereik van slapeloosheid", + "aboveThreshold": "Geen aanwijzing voor slapeloosheid" + } + }, + "history": { + "title": "Je geschiedenis", + "empty": "Nog geen check-ins. Je trend verschijnt hier zodra je er een hebt ingevuld.", + "flaggedBadge": "Hulp getoond", + "chartTitle": "Scoreverloop", + "totalLabel": "Score", + "bandLabel": "Categorie", + "answersToggle": "Antwoorden", + "answersUnavailable": "De opgeslagen antwoorden van deze check-in kunnen niet worden ontsleuteld." + }, + "crisis": { + "title": "Je hoeft dit niet alleen te doen", + "intro": "Je hebt aangegeven dat je gedachten hebt dat je beter dood zou kunnen zijn of dat je jezelf iets wilt aandoen. Er is nu meteen hulp beschikbaar, en contact zoeken is een teken van kracht.", + "ifDanger": "Ben je in direct gevaar? Bel dan nu {emergency}.", + "resourcesTitle": "Mensen die je kunnen helpen" + }, + "items": { + "phq9": { + "1": "Weinig interesse in of plezier aan activiteiten", + "2": "Zich neerslachtig, depressief of hopeloos voelen", + "3": "Moeilijk in slaap vallen of doorslapen, of te veel slapen", + "4": "Zich moe voelen of weinig energie hebben", + "5": "Weinig eetlust of overmatig eten", + "6": "Een negatief beeld van uzelf hebben, of het gevoel hebben dat u een mislukkeling bent of dat u uzelf of uw familie teleurgesteld hebt", + "7": "Moeite met concentreren, bijvoorbeeld bij het lezen van de krant of het televisiekijken", + "8": "Zo traag bewegen of praten dat andere mensen het zouden kunnen opmerken. Of juist het tegenovergestelde: zo gejaagd of rusteloos zijn dat u veel meer beweegt dan gewoonlijk", + "9": "Gedachten dat u beter dood zou kunnen zijn of gedachten om uzelf op een of andere manier pijn te doen" + }, + "gad7": { + "1": "Zich nerveus, angstig of gespannen voelen", + "2": "Niet in staat zijn om te stoppen met piekeren of om het piekeren onder controle te houden", + "3": "Zich te veel zorgen maken over verschillende dingen", + "4": "Moeite met ontspannen", + "5": "Zo rusteloos zijn dat het moeilijk is om stil te zitten", + "6": "Snel geërgerd of geïrriteerd zijn", + "7": "Bang zijn dat er iets vreselijks zou kunnen gebeuren" + }, + "who5": { + "1": "… voelde ik me opgewekt en goedgehumeurd", + "2": "… voelde ik me rustig en ontspannen", + "3": "… voelde ik me actief en energiek", + "4": "… voelde ik me fris en uitgerust bij het wakker worden", + "5": "… was mijn dagelijks leven gevuld met dingen die mij interesseren" + }, + "sci": { + "1": "… how long does it take you to fall asleep?", + "2": "… if you then wake up during the night … how long are you awake for in total? (add all the wakenings up)", + "3": "… how many nights a week do you have a problem with your sleep?", + "4": "… how would you rate your sleep quality?", + "5": "… affected your mood, energy, or relationships?", + "6": "… affected your concentration, productivity, or ability to stay awake?", + "7": "… troubled you in general?", + "8": "… how long have you had a problem with your sleep?" + } + }, + "crisisResource": { + "telefonSeelsorge": { + "name": "TelefonSeelsorge (dag en nacht, gratis, vertrouwelijk)" + }, + "nummerGegenKummer": { + "name": "Nummer gegen Kummer (voor jongeren)" + }, + "telefonSeelsorgeAt": { + "name": "Telefonseelsorge Österreich (dag en nacht, gratis, vertrouwelijk)" + }, + "dargeboteneHand": { + "name": "Die Dargebotene Hand (dag en nacht, gratis, vertrouwelijk)" + }, + "krisenchat": { + "name": "krisenchat (24/7 chat, jongeren)" + }, + "findahelpline": { + "name": "Find a Helpline (wereldwijd overzicht)" + }, + "euEmotionalSupport": { + "name": "Hulplijn voor emotionele steun" + }, + "lifeline988": { + "name": "988 Suicide & Crisis Lifeline" + }, + "crisisTextLine": { + "name": "Crisis Text Line" + } + }, + "instrumentDescription": { + "phq9": "Screening op depressie met 9 vragen. Beantwoord ze voor de afgelopen twee weken.", + "gad7": "Screening op angst met 7 vragen. Beantwoord ze voor de afgelopen twee weken.", + "who5": "Welzijnscheck met 5 vragen. Beantwoord ze voor de afgelopen twee weken; hogere getallen betekenen een beter welzijn.", + "sci": "Slaapcheck met 8 vragen. De meeste vragen gaan over de afgelopen maand; hogere scores betekenen een betere slaap." + }, + "progress": "{current} / {total}", + "next": "Volgende", + "lastResult": "Laatste test", + "lastScore": "Laatste resultaat", + "noResultYet": "Nog geen check-in", + "backToList": "Overzicht", + "followUpHint": { + "phq9": "Je score valt in een bereik waarbij een gesprek met een zorgverlener kan helpen. Dit is een voorzichtige suggestie, geen diagnose.", + "gad7": "Je score valt in een bereik waarbij een gesprek met een zorgverlener kan helpen. Dit is een voorzichtige suggestie, geen diagnose.", + "who5": "Een welzijnsscore van 50 of lager kan het waard zijn om beter naar te kijken. Als je wilt, gaat de PHQ-9-check-in op deze pagina dieper in op je stemming. Dit is een voorzichtige suggestie, geen diagnose.", + "sci": "In het onderzoek achter deze vragenlijst hingen scores van 16 of lager samen met waarschijnlijke slapeloosheid. Blijf je last houden van slecht slapen, dan kan een gesprek met een zorgverlener helpen. Dit is geen diagnose." + }, + "validatedInEnglishNote": "Deze vragenlijst is in het Engels gevalideerd; de vragen worden in de oorspronkelijke Engelse formulering getoond.", + "who5Options": { + "0": "Nooit", + "1": "Af en toe", + "2": "Minder dan de helft van de tijd", + "3": "Meer dan de helft van de tijd", + "4": "Meestal", + "5": "Altijd" + }, + "sciOptions": { + "duration": { + "0": "≥ 61 min", + "1": "46–60 min", + "2": "31–45 min", + "3": "16–30 min", + "4": "0–15 min" + }, + "nights": { + "0": "5–7", + "1": "4", + "2": "3", + "3": "2", + "4": "0–1" + }, + "quality": { + "0": "Very poor", + "1": "Poor", + "2": "Average", + "3": "Good", + "4": "Very good" + }, + "impact": { + "0": "Very much", + "1": "Much", + "2": "Somewhat", + "3": "A little", + "4": "Not at all" + }, + "problemDuration": { + "0": "> 1 year", + "1": "7–12 months", + "2": "3–6 months", + "3": "1–2 months", + "4": "I don't have a problem / < 1 month" + } + }, + "stems": { + "who5": { + "period": "In de afgelopen twee weken …" + }, + "sci": { + "night": "Thinking about a typical night in the last month …", + "impact": "Thinking about the past month, to what extent has poor sleep …", + "finally": "Finally …" + } + }, + "openDetail": "Details tonen", + "historyLoadError": "Je testgeschiedenis kon niet worden geladen", + "historyLoadErrorHint": "Dit betekent niet dat je geen resultaten hebt; de lijst kon niet worden opgehaald. Probeer het opnieuw.", + "privacyNote": "Je antwoorden worden versleuteld opgeslagen en komen nooit bij de AI-coach terecht." + }, + "records": { + "aiInclusion": { + "cardTitle": "AI-toegang tot profiel", + "cardDescription": "Kies welke delen van je gezondheidsprofiel de Coach en uitgebreide briefings mogen gebruiken.", + "sectionAboutMe": "Over mij", + "sectionConditions": "Chronische aandoeningen", + "sectionAllergies": "Allergieën en intoleranties", + "sectionCoachFocus": "Focus van de Coach", + "sectionFamilyHistory": "Familiegeschiedenis", + "sectionSmoking": "Rookstatus", + "sectionAlcohol": "Alcoholgebruik", + "sectionShiftSchedule": "Werkrooster", + "save": "Toegang opslaan", + "savedToast": "AI-toegang tot profiel opgeslagen", + "saveError": "AI-toegang tot profiel kon niet worden opgeslagen", + "loadError": "AI-toegang tot profiel kon niet worden geladen" + }, + "profileFacts": { + "cardTitle": "Leefstijlcontext", + "smokingLabel": "Rookstatus", + "alcoholLabel": "Alcoholgebruik", + "shiftLabel": "Werkrooster", + "notRecorded": "Niet vastgelegd", + "remove": "{kind} verwijderen", + "values": { + "SMOKING_STATUS": { + "NEVER": "Nooit gerookt", + "FORMER": "Voormalig roker", + "CURRENT": "Rookt momenteel" + }, + "ALCOHOL_PATTERN": { + "NONE": "Geen", + "OCCASIONAL": "Af en toe", + "WEEKLY": "Wekelijks", + "MOST_DAYS": "Bijna dagelijks" + }, + "SHIFT_SCHEDULE": { + "NONE": "Geen ploegendienst", + "FIXED_SHIFT": "Vaste dienst", + "ROTATING": "Wisselende diensten" + } + } + }, + "disclaimer": "Dit zijn je eigen gegevens, geen medische diagnose. HealthLog stelt geen diagnose, geeft geen behandeling en interpreteert deze gegevens niet.", + "allergies": { + "cardTitle": "Allergieën en intoleranties", + "cardDescription": "Stoffen waarop je reageert, met de reactie en hoe ernstig die is.", + "description": "Leg een allergie of intolerantie vast.", + "add": "Allergie toevoegen", + "addFirst": "Je eerste allergie toevoegen", + "addTitle": "Allergie toevoegen", + "editTitle": "Allergie bewerken", + "formDescription": "De stof wordt als platte tekst opgeslagen; de reactie en de notitie worden versleuteld.", + "emptyTitle": "Geen allergieën vastgelegd", + "emptyDescription": "Voeg stoffen toe waarop je reageert, met je reacties erop.", + "loadError": "Je allergieën konden niet worden geladen.", + "deletedToast": "Allergie verwijderd", + "deleteError": "De allergie kon niet worden verwijderd.", + "deleteConfirmTitle": "Deze allergie verwijderen?", + "deleteConfirmDescription": "Hiermee wordt de registratie verwijderd. Dit kan niet ongedaan worden gemaakt.", + "category": { + "FOOD": "Voeding", + "MEDICATION": "Medicatie", + "ENVIRONMENT": "Omgeving", + "BIOLOGIC": "Biologisch middel", + "OTHER": "Overig" + }, + "type": { + "ALLERGY": "Allergie", + "INTOLERANCE": "Intolerantie" + }, + "severity": { + "NONE": "Niet beoordeeld", + "MILD": "Licht", + "MODERATE": "Matig", + "SEVERE": "Ernstig" + }, + "status": { + "ACTIVE": "Actief", + "INACTIVE": "Inactief", + "RESOLVED": "Verdwenen" + }, + "form": { + "substance": "Stof", + "substancePlaceholder": "bijv. penicilline, pinda's", + "category": "Categorie", + "type": "Soort", + "severity": "Ernst", + "status": "Status", + "onset": "Voor het eerst opgemerkt", + "reaction": "Reactie", + "reactionPlaceholder": "bijv. netelroos, zwelling, anafylaxie", + "note": "Notitie", + "notePlaceholder": "Wat verder nog de moeite waard is om te onthouden", + "requiredError": "Vul de stof in.", + "savedToast": "Allergie opgeslagen", + "updatedToast": "Allergie bijgewerkt", + "saveError": "De allergie kon niet worden opgeslagen." + }, + "freeText": { + "label": "Vrije notitie (allergieën en intoleranties)", + "hint": "Een vrije aanvulling op de gestructureerde lijst hierboven, voor context die niet in één registratie past.", + "savedToast": "Allergienotitie opgeslagen", + "saveError": "Opslaan is mislukt. Probeer het opnieuw." + } + }, + "family": { + "cardTitle": "Familiegeschiedenis", + "cardDescription": "Aandoeningen bij je familieleden, één registratie per aandoening.", + "description": "Leg een aandoening bij een familielid vast.", + "add": "Registratie toevoegen", + "addFirst": "Je eerste registratie toevoegen", + "addTitle": "Familiegeschiedenis toevoegen", + "editTitle": "Familiegeschiedenis bewerken", + "formDescription": "De familierelatie en de aandoening worden als platte tekst opgeslagen; de notitie wordt versleuteld.", + "emptyTitle": "Geen familiegeschiedenis vastgelegd", + "emptyDescription": "Voeg aandoeningen toe die in je familie voorkomen.", + "loadError": "Je familiegeschiedenis kon niet worden geladen.", + "deletedToast": "Registratie verwijderd", + "deleteError": "De registratie kon niet worden verwijderd.", + "deleteConfirmTitle": "Deze registratie verwijderen?", + "deleteConfirmDescription": "Hiermee wordt de registratie verwijderd. Dit kan niet ongedaan worden gemaakt.", + "ageAtOnsetShort": "Leeftijd {age}", + "relationship": { + "MOTHER": "Moeder", + "FATHER": "Vader", + "SISTER": "Zus", + "BROTHER": "Broer", + "DAUGHTER": "Dochter", + "SON": "Zoon", + "GRANDMOTHER_MATERNAL": "Grootmoeder (van moederskant)", + "GRANDFATHER_MATERNAL": "Grootvader (van moederskant)", + "GRANDMOTHER_PATERNAL": "Grootmoeder (van vaderskant)", + "GRANDFATHER_PATERNAL": "Grootvader (van vaderskant)", + "AUNT": "Tante", + "UNCLE": "Oom", + "COUSIN": "Neef of nicht", + "HALF_SIBLING": "Halfbroer of halfzus", + "OTHER": "Ander familielid" + }, + "form": { + "relationship": "Familielid", + "condition": "Aandoening", + "conditionPlaceholder": "bijv. diabetes type 2, borstkanker", + "ageAtOnset": "Leeftijd bij ontstaan", + "ageAtOnsetPlaceholder": "bijv. 55", + "note": "Notitie", + "notePlaceholder": "Wat verder nog de moeite waard is om te onthouden", + "requiredError": "Vul de aandoening in.", + "ageError": "Vul een leeftijd tussen 0 en 120 in.", + "savedToast": "Registratie opgeslagen", + "updatedToast": "Registratie bijgewerkt", + "saveError": "De registratie kon niet worden opgeslagen." + } + }, + "conditions": { + "cardTitle": "Bestaande aandoeningen", + "cardDescription": "Chronische aandoeningen en waar de Coach op let.", + "conditionsLabel": "Chronische aandoeningen", + "focusLabel": "Waar de Coach op let", + "loadError": "Je aandoeningen konden niet worden geladen.", + "savedToast": "Aandoeningen opgeslagen", + "saveError": "Opslaan is mislukt. Probeer het opnieuw." + }, + "emergency": { + "cardTitle": "Noodinformatie", + "cardDescription": "Wat een hulpverlener als eerste nodig heeft: bloedgroep, contactpersonen, wilsverklaringen.", + "bloodType": "Bloedgroep", + "organDonor": "Orgaandonor", + "advanceDirective": "Wilsverklaring", + "contacts": "Contactpersonen voor noodgevallen", + "implants": "Implantaten en hulpmiddelen", + "note": "Aanvullende opmerkingen", + "notRecorded": "Niet vastgelegd", + "bloodTypeValues": { + "A_POS": "A positief", + "A_NEG": "A negatief", + "B_POS": "B positief", + "B_NEG": "B negatief", + "AB_POS": "AB positief", + "AB_NEG": "AB negatief", + "O_POS": "O positief", + "O_NEG": "O negatief", + "UNKNOWN": "Onbekend" + }, + "organDonorValues": { + "YES": "Ja", + "NO": "Nee", + "UNKNOWN": "Niet opgegeven" + }, + "advanceDirectiveValues": { + "EXISTS": "Aanwezig", + "NONE": "Geen", + "UNKNOWN": "Niet opgegeven" + }, + "contactsPlaceholder": "Naam en telefoonnummer van wie er gebeld moet worden", + "implantsPlaceholder": "Bijv. pacemaker, insulinepomp, metalen implantaat", + "notePlaceholder": "Alles wat een zorgverlener in een noodgeval moet weten", + "reportHint": "Dit staat op de eerste pagina van je artsenrapport.", + "save": "Opslaan", + "savedToast": "Noodinformatie opgeslagen", + "saveError": "Je noodinformatie kon niet worden opgeslagen.", + "loadError": "Je noodinformatie kon niet worden geladen." + }, + "life": { + "cardTitle": "Leefomstandigheden", + "cardDescription": "Roken, alcohol, beweging, werk, gewoonten en doelen, met datum en allemaal optioneel.", + "loadError": "Je leefomstandigheden konden niet worden geladen.", + "noAnswer": "Geen antwoord", + "yes": "Ja", + "no": "Nee", + "validSince": "Geldig sinds", + "month": "Maand", + "year": "Jaar", + "lastConfirmed": "Laatst bevestigd op {date}", + "notAnswered": "Nog niet beantwoord", + "unreadable": "Dit antwoord kan op deze server niet worden gelezen.", + "save": "Sectie opslaan", + "savedToast": "Sectie opgeslagen", + "saveError": "De sectie kon niet worden opgeslagen.", + "review": { + "question": "Klopt dit nog? Je laatste antwoord is meer dan een jaar oud.", + "confirm": "Klopt nog", + "confirmedToast": "Bedankt, gemarkeerd als nog steeds juist", + "confirmError": "De bevestiging kon niet worden opgeslagen." + }, + "ai": { + "label": "Deze sectie delen met de AI", + "shiftLabel": "Ploegendienst delen met de AI", + "hint": "Uit betekent dat de Coach en de briefings deze antwoorden nooit te zien krijgen.", + "savedToast": "Delen met de AI bijgewerkt", + "saveError": "De AI-instelling kon niet worden opgeslagen." + }, + "sections": { + "tobacco": { + "title": "Roken en nicotine" + }, + "alcohol": { + "title": "Alcoholgebruik" + }, + "activity": { + "title": "Beweging en zitten" + }, + "work": { + "title": "Werk en ritme" + }, + "habits": { + "title": "Slaap, voeding en cafeïne" + }, + "goals": { + "title": "Doelen" + } + }, + "fields": { + "smokingStatus": "Rookstatus", + "products": "Gebruikte producten", + "cigarettesPerDay": "Sigaretten per dag", + "startYear": "Jaar waarin je begon", + "quitMonth": "Wanneer je bent gestopt", + "secondhandSmoke": "Regelmatig meeroken", + "moderateDaysPerWeek": "Dagen per week met matige tot zware lichamelijke activiteit, zoals stevig wandelen", + "moderateMinutesPerDay": "Minuten op die dagen, gemiddeld", + "sittingHoursWorkday": "Uren zitten op een werkdag", + "shiftSchedule": "Ploegendienst", + "situation": "Werksituatie", + "physicalNature": "Soort werk", + "nightWork": "Nachtwerk", + "exposures": "Blootstelling op het werk", + "freeWeekdays": "Vrije dagen in de week", + "napRegularly": "Regelmatig een dutje", + "snoringReported": "Anderen zeggen dat je snurkt", + "dietPattern": "Voedingspatroon", + "dietSpecifics": "Bijzonderheden", + "lateMealsPerWeek": "Maaltijden na 21.00 uur per week", + "fruitVegPortionsPerDay": "Porties groente en fruit per dag", + "caffeineDrinksPerDay": "Cafeïnehoudende dranken per dag", + "latestCaffeine": "Laatste cafeïne van de dag", + "goals": "Waar je aan wilt werken", + "goalsHint": "Maximaal drie." + }, + "values": { + "products": { + "cigarettes": "Sigaretten", + "cigars_pipe": "Sigaren of pijp", + "e_cigarette": "E-sigaret", + "heated_tobacco": "Verhitte tabak", + "snus_pouches": "Snus of nicotinezakjes" + }, + "situation": { + "none": "Geen betaald werk", + "indoor": "Vooral binnen", + "outdoor": "Vooral buiten", + "mixed": "Binnen en buiten" + }, + "physicalNature": { + "mostly_sitting": "Vooral zittend", + "standing_walking": "Staand of lopend", + "heavy_physical": "Zwaar lichamelijk werk" + }, + "exposures": { + "heat": "Hitte", + "cold": "Kou", + "dust": "Stof", + "fumes_solvents": "Dampen of oplosmiddelen", + "noise": "Lawaai" + }, + "dietPattern": { + "mixed": "Gemengde voeding", + "vegetarian": "Vegetarisch", + "vegan": "Veganistisch", + "pescetarian": "Pescotarisch", + "other": "Anders" + }, + "dietSpecifics": { + "intermittent_fasting": "Periodiek vasten", + "low_carb": "Koolhydraatarm", + "prescribed_diet": "Dieet voorgeschreven door een arts" + }, + "latestCaffeine": { + "before_12": "Vóór 12.00 uur", + "12_15": "12.00 tot 15.00 uur", + "15_18": "15.00 tot 18.00 uur", + "after_18": "Na 18.00 uur" + }, + "goals": { + "weight": "Gewicht", + "blood_pressure": "Bloeddruk", + "blood_sugar": "Bloedsuiker", + "sleep": "Slaap", + "fitness": "Conditie", + "stress_recovery": "Stress en herstel", + "medication_routine": "Medicatie regelmatig innemen", + "quit_smoking": "Stoppen met roken", + "less_alcohol": "Minder alcohol drinken" + }, + "weekdays": { + "1": "ma", + "2": "di", + "3": "wo", + "4": "do", + "5": "vr", + "6": "za", + "7": "zo" + } + }, + "derived": { + "packYears": "{value} pakjaren", + "packYearsMissing": "Voor pakjaren zijn het aantal sigaretten per dag en het jaar waarin je begon nodig.", + "activityMinutes": "{value} minuten per week.", + "meetsWho": "Dat voldoet aan het WHO-advies van 150 minuten per week.", + "belowWho": "Dat is minder dan het WHO-advies van 150 minuten per week.", + "measuredSteps": "Je gemeten stappen gaan voor; dit antwoord geeft extra context.", + "freeDaysDefault": "Zonder antwoord gelden zaterdag en zondag als vrije dagen." + }, + "auditC": { + "intro": "Drie vragen over alcohol uit de AUDIT van de WHO. Een screening, geen diagnose.", + "start": "Vragen beantwoorden", + "again": "Opnieuw beantwoorden", + "offerDue": "Eén keer per jaar even kijken is genoeg.", + "notValidated": "Er is nog geen gevalideerde vertaling voor jouw taal, daarom worden de vragen in het Engels getoond.", + "submit": "Antwoorden opslaan", + "savedToast": "Antwoorden opgeslagen", + "saveError": "De antwoorden konden niet worden opgeslagen.", + "result": "{score} van 12 punten", + "above": "Op of boven de screeningsgrens van {cutoff}.", + "below": "Onder de screeningsgrens van {cutoff}.", + "noCutoff": "Zonder geslacht in je profiel wordt alleen de totaalscore getoond.", + "source": "Bron: {source}", + "history": "Eerdere registraties", + "remove": "Registratie verwijderen", + "removeConfirmTitle": "Deze registratie verwijderen?", + "removeConfirmBody": "De registratie verdwijnt uit je geschiedenis. Dit kan hier niet ongedaan worden gemaakt.", + "removedToast": "Registratie verwijderd", + "removeError": "De registratie kon niet worden verwijderd.", + "historyEntry": "{date}: {score} van 12", + "legacyLabel": "Eerder antwoord: {value}", + "legacyHint": "Van de korte alcoholvraag die vóór deze vragenlijst werd gesteld. Zodra er een vragenlijstresultaat is opgeslagen, leest de Coach dit niet meer.", + "legacyRemove": "Eerder antwoord verwijderen", + "legacyRemoveConfirmTitle": "Het eerdere antwoord verwijderen?", + "legacyRemoveConfirmBody": "Het eerdere antwoord verdwijnt uit je dossier. Vragenlijstresultaten blijven bewaard.", + "legacyRemovedToast": "Eerder antwoord verwijderd", + "legacyRemoveError": "Het eerdere antwoord kon niet worden verwijderd." + }, + "takeOver": { + "conditionsButton": "Toevoegen aan aandoeningendagboek", + "allergiesButton": "Toevoegen aan allergieën", + "conditionsTitle": "Een chronische aandoening toevoegen", + "allergiesTitle": "Een allergie toevoegen", + "description": "Je vrije tekst blijft staan zoals hij is, totdat je hem zelf wist.", + "freeTextLabel": "Je vrije tekst", + "conditionLabel": "Aandoening", + "onset": "Sinds", + "save": "Toevoegen", + "savedToast": "Registratie toegevoegd", + "saveError": "De registratie kon niet worden toegevoegd.", + "clearQuestion": "De registratie is opgeslagen. De vrije tekst nu wissen?", + "clear": "Vrije tekst wissen", + "keep": "Behouden", + "clearedToast": "Vrije tekst gewist", + "clearError": "De vrije tekst kon niet worden gewist." + }, + "screening": { + "cardTitle": "Screeningstips", + "cardDescription": "Op basis van je leefomstandigheden, met de regel en het land waar die vandaan komt.", + "noReminder": "Dit is alleen een tip; stel zelf een herinnering in als je die wilt.", + "source": "Bron: {source}", + "titles": { + "lung_ldct": "Lagedosis-CT-scan voor longkanker", + "aaa_ultrasound": "Echografie van de buikaorta" + }, + "status": { + "suggested": "Kan op jou van toepassing zijn", + "not_eligible": "Niet op jou van toepassing", + "unknown": "Onvoldoende informatie" + }, + "reasons": { + "never_smoked": "Je hebt nooit gerookt.", + "missing_birth_date": "Je geboortedatum ontbreekt.", + "age_out_of_range": "Je leeftijd valt buiten het bereik.", + "missing_smoking_status": "Je rookstatus ontbreekt.", + "no_cigarettes": "De regel telt alleen sigaretten mee.", + "missing_smoking_history": "Het aantal sigaretten per dag of het beginjaar ontbreekt.", + "pack_years_below_15": "Minder dan 15 pakjaren.", + "pack_years_below_20": "Minder dan 20 pakjaren.", + "smoked_years_below_25": "Minder dan 25 jaar gerookt.", + "missing_quit_date": "De datum waarop je bent gestopt ontbreekt.", + "quit_over_10_years": "Je bent meer dan 10 jaar geleden gestopt.", + "quit_over_15_years": "Je bent meer dan 15 jaar geleden gestopt.", + "missing_sex": "Je geslacht ontbreekt in je profiel.", + "sex_not_male": "De regel geldt voor mannen." + } + } + } + }, + "environment": { + "fields": { + "tempMean": "Dagtemperatuur", + "tempMin": "Laagste nachttemperatuur", + "sunshine": "Zonneschijn", + "daylight": "Daglicht", + "precip": "Neerslag", + "pressureMean": "Luchtdruk", + "pressureDelta": "Luchtdrukschommeling", + "pm25": "Zeer fijnstof (PM2.5)", + "pm10": "Fijnstof (PM10)", + "no2": "Stikstofdioxide", + "ozone8h": "Ozon (8-uursmaximum)", + "europeanAqi": "Europese luchtkwaliteitsindex", + "uvIndexMax": "UV-index (maximum)", + "dustMax": "Saharastof", + "pollenMax": "Pollen (hoogste)" + }, + "chip": { + "day": "Weer op {date}", + "pollenHigh": "Veel pollen: {kinds}", + "hotNight": "Warme nacht", + "veryPoorAir": "Zeer slechte luchtkwaliteit" + }, + "pollen": { + "alder": "els", + "birch": "berk", + "grass": "gras", + "mugwort": "bijvoet", + "olive": "olijf", + "ragweed": "ambrosia" + }, + "movement": { + "awayFromHome": "Tijd buitenshuis", + "distance": "Afgelegde afstand" + } + }, + "documents": { + "title": "Documenten", + "subtitle": "Alle brieven, verslagen en scans op één doorzoekbare plek, versleuteld opgeslagen.", + "pageUpload": "Uploaden", + "ownerOnlyUpload": "Alleen de eigenaar van het dossier kan documenten toevoegen.", + "kind": { + "DOCTOR_REPORT": "Artsenrapport", + "DISCHARGE_LETTER": "Ontslagbrief", + "OTHER": "Overig", + "LAB_RESULT": "Labuitslag", + "IMAGING": "Beeldvorming", + "PRESCRIPTION": "Recept", + "REFERRAL": "Verwijzing", + "INSURANCE": "Verzekering", + "VACCINATION": "Vaccinatie", + "SICK_NOTE": "Ziekteverklaring" + }, + "filter": { + "searchLabel": "Documenten zoeken", + "searchPlaceholder": "Zoeken op titel of bestandsnaam…", + "typeGroup": "Documenttype", + "conditionGroup": "Aandoening", + "procedureGroup": "Ingrepen en operaties", + "yearGroup": "Jaar", + "clear": "Filters wissen", + "typeAll": "Alle typen", + "typeCount": "{count} typen", + "conditionAll": "Alle aandoeningen", + "procedureAll": "Alle ingrepen", + "yearAll": "Alle jaren" + }, + "card": { + "untitled": "Document zonder titel", + "selectLabel": "{title} selecteren", + "openLabel": "{title} openen", + "attachmentBadge": "Alleen downloaden", + "uploading": "Uploaden…", + "dismissFailed": "Mislukte upload sluiten", + "processing": "Verwerken…", + "ready": "Gereed", + "deleteKey": "Del" + }, + "error": { + "fileTooLarge": "Dit bestand is groter dan de limiet van {maxSize}.", + "quotaExceeded": "De opslag is vol: {used} van {quota} gebruikt.", + "unsupportedType": "Dit bestandstype wordt niet ondersteund.", + "purged": "Dit document is definitief verwijderd en kan niet worden hersteld.", + "duplicateExists": "Er is al een identiek document opgeslagen.", + "rateLimited": "Te veel uploads op dit moment. Probeer het over een paar minuten opnieuw.", + "generic": "Uploaden is mislukt. Probeer het opnieuw." + }, + "toast": { + "duplicate": "Al opgeslagen. Het bestaande document is gemarkeerd.", + "deleted": "Document verwijderd", + "restoreFailed": "Het document kon niet worden hersteld." + }, + "timeline": { + "loadingMore": "Meer laden…", + "listLabel": "Tijdlijn van documenten" + }, + "upload": { + "browse": "Bestanden kiezen", + "quotaAlmostFull": "Opslag bijna vol", + "quotaUsed": "{used} van {quota} gebruikt", + "queuedAnnouncement": "{count} bestand(en) toegevoegd aan de uploadwachtrij" + }, + "selection": { + "count": "{count} geselecteerd", + "clear": "Selectie wissen" + }, + "list": { + "loadError": "Je documenten konden niet worden geladen." + }, + "empty": { + "title": "Je documentenkluis is leeg", + "description": "Bewaar artsenbrieven, labverslagen, beeldvorming, recepten en vaccinatiebewijzen. Ze worden versleuteld en zijn doorzoekbaar op type, aandoening en jaar.", + "action": "Een eerste document uploaden", + "noMatchesTitle": "Geen overeenkomende documenten", + "noMatchesDescription": "Niets komt overeen met de huidige zoekopdracht en filters." + }, + "detail": { + "title": "Documentdetails", + "summary": { + "title": "Samenvatting", + "pending": "De samenvatting wordt voorbereid.", + "none": "Er is nog geen samenvatting voor dit document gemaakt.", + "withheld": "Er is een samenvatting gemaakt, maar die kwam niet door de veiligheidscontrole en wordt daarom niet getoond. Je kunt het opnieuw proberen of het document zelf lezen.", + "unavailable": "Voor dit document kon geen samenvatting worden gemaakt.", + "generate": "Samenvatting genereren", + "generating": "Genereren…" + }, + "index": { + "outcome": { + "local-empty": "Er is geen leesbare tekst gevonden. Dit lijkt een scan; een AI-provider met beeldherkenning kan hem lezen.", + "local-unsupported": "Dit bestandstype kan niet worden gelezen voor de zoekfunctie.", + "decrypt-error": "Het opgeslagen bestand kon niet worden geopend om te lezen.", + "raster-failed": "De PDF-pagina's konden niet worden weergegeven om te lezen. Compressieformaten van gescande faxen zijn een bekende oorzaak.", + "provider-error": "De AI-provider kon dit document bij de laatste poging niet lezen.", + "pdf-needs-anthropic": "De ingestelde AI-provider kan geen PDF-bestanden lezen. Een Claude-provider of lokale OCR kan dat wel.", + "empty-transcription": "De AI-provider gaf geen tekst terug voor dit document." + } + }, + "loadError": "Dit document kon niet worden geladen.", + "saveError": "De wijziging kon niet worden opgeslagen.", + "deleteError": "Het document kon niet worden verwijderd.", + "download": "Downloaden", + "openInNewTab": "Openen in nieuw tabblad", + "delete": "Verwijderen", + "titleLabel": "Titel", + "titlePlaceholder": "Titel toevoegen", + "kindLabel": "Soort", + "dateLabel": "Documentdatum", + "conditionsLabel": "Gekoppelde aandoeningen", + "linkCondition": "Koppelen", + "noConditions": "Niet gekoppeld aan een aandoening", + "previewUnavailable": "Geen voorbeeld beschikbaar voor dit bestandstype", + "uploadedMeta": "Toegevoegd op {date}, {size}", + "importedFrom": "Geïmporteerd uit {system}", + "importedFromWithId": "Geïmporteerd uit {system}, ID {id}", + "sourceOther": "een ander systeem", + "share": "Delen", + "labValuesLink": "{count} labwaarden bekijken", + "visitsLabel": "Hoort bij bezoek", + "vaccinationsLabel": "Vaccinaties", + "noVisitsToLink": "Nog geen bezoeken vastgelegd.", + "noVaccinationsToLink": "Nog geen vaccinaties vastgelegd." + }, + "dropOverlay": { + "title": "Zet bestanden neer om te uploaden", + "hint": "Ze worden versleuteld opgeslagen in je documentenkluis" + }, + "bulk": { + "barLabel": "Acties voor geselecteerde documenten", + "setKind": "Soort wijzigen", + "linkCondition": "Aandoening koppelen", + "delete": "Verwijderen", + "updated": "{count} document(en) bijgewerkt", + "deleted": "{count} document(en) verwijderd", + "restored": "{count} document(en) hersteld", + "partialFailure": "{failed} van {total} konden niet worden bijgewerkt", + "failed": "De actie kon niet worden voltooid", + "share": "Delen", + "shareTooMany": "Een deellink kan maximaal {max} documenten bevatten. Deselecteer er een paar en probeer het opnieuw.", + "linkVisit": "Aan bezoek koppelen" + }, + "episodeCard": { + "title": "Documenten", + "link": "Koppelen", + "upload": "Uploaden", + "viewAll": "Alles tonen", + "emptyLine": "Nog geen documenten aan deze aandoening gekoppeld.", + "loadError": "De gekoppelde documenten konden niet worden geladen" + }, + "linkPicker": { + "title": "Documenten koppelen", + "description": "Kies documenten uit je kluis die bij deze aandoening horen.", + "searchPlaceholder": "Zoeken op titel of bestandsnaam", + "empty": "Geen documenten gevonden." + }, + "assist": { + "suggest": "Gegevens voorstellen", + "suggesting": "Lezen…", + "suggestedTitle": "Voorgestelde titel", + "suggestedKind": "Voorgestelde soort", + "suggestedDate": "Voorgestelde datum", + "apply": "Toepassen", + "useTitle": "Titel gebruiken", + "applied": "Toegepast", + "dismiss": "Negeren", + "empty": "Er kon niets uit dit document worden gelezen.", + "unavailableBody": "Stel een AI-provider in om een titel, soort en datum voor te stellen.", + "unavailableLocalOcr": "Zet lokale OCR aan in de AI-instellingen om afbeeldingen op dit apparaat te lezen.", + "unavailableAction": "AI-instellingen openen", + "errorGeneric": "Het document kon niet worden gelezen. Probeer het opnieuw.", + "errorOcr": "Er kon geen tekst uit deze afbeelding worden gelezen.", + "errorRateLimited": "De limiet voor lezen met AI per uur is bereikt. Probeer het later opnieuw.", + "errorRateLimitedWaitOne": "De limiet voor lezen met AI per uur is bereikt. Probeer het over ongeveer een minuut opnieuw.", + "errorRateLimitedWaitFew": "De limiet voor lezen met AI per uur is bereikt. Probeer het over ongeveer {count} minuten opnieuw.", + "errorRateLimitedWaitOther": "De limiet voor lezen met AI per uur is bereikt. Probeer het over ongeveer {count} minuten opnieuw.", + "errorBudget": "Je AI-budget voor vandaag is op.", + "errorPdfNeedsVision": "Voor het scannen van PDF's is een Claude-provider met beeldherkenning nodig.", + "errorFileType": "Dit bestandstype kan niet worden gelezen.", + "errorNotIndexed": "Laat het document eerst lezen en extraheer daarna.", + "errorLocalOcrDisabled": "Zet eerst lokale OCR aan in de AI-instellingen.", + "errorProvider": "Hiervoor is geen AI-provider ingesteld.", + "errorTextImageOnly": "Lokale OCR leest alleen afbeeldingen, niet dit bestand.", + "errorConsent": "Voor het lezen van documenten met AI is eerst je toestemming nodig.", + "errorUnavailable": "Documenten lezen met AI is hier op dit moment niet beschikbaar." + }, + "summary": { + "summarise": "Samenvatten", + "showText": "Geëxtraheerde tekst tonen", + "summaryTitle": "Samenvatting", + "textTitle": "Geëxtraheerde tekst", + "close": "Verbergen" + }, + "ai": { + "readDone": "De AI heeft je document gelezen.", + "readStagedOne": "De AI heeft je document gelezen. 1 labwaarde staat klaar om te controleren.", + "readStagedFew": "De AI heeft je document gelezen. {count} labwaarden staan klaar om te controleren.", + "readStagedOther": "De AI heeft je document gelezen. {count} labwaarden staan klaar om te controleren.", + "read": "Lezen met AI", + "reread": "Opnieuw lezen", + "reading": "Lezen…", + "notReadYet": "Dit document is nog niet gelezen." + }, + "review": { + "title": "Geëxtraheerde waarden controleren", + "hint": "Keur goed wat overeenkomt met het document. Niet-aangevinkte waarden worden verworpen; er wordt niets opgeslagen zonder jouw bevestiging.", + "openOne": "Geëxtraheerde waarde controleren", + "openFew": "Geëxtraheerde waarden controleren ({count})", + "openOther": "Geëxtraheerde waarden controleren ({count})", + "includeAria": "{value} opnemen", + "type": { + "OBSERVATION": "Labwaarde", + "CONDITION": "Aandoening", + "MEDICATION_STATEMENT": "Medicatie" + }, + "statedRange": "Opgegeven bereik {range}", + "needsCheck": "Controleer deze waarde aan de hand van het document en sla haar daarna op.", + "verify": "Controleren", + "verifySave": "Waarde opslaan", + "verifyInvalid": "Vul een naam in en een numerieke waarde of een tekstuitslag, niet allebei.", + "verifyFailed": "De correctie kon niet worden opgeslagen. Probeer het opnieuw.", + "fieldName": "Naam", + "fieldDate": "Datum", + "fieldValue": "Waarde", + "fieldValueText": "Uitslag (tekst)", + "fieldUnit": "Eenheid", + "fieldDose": "Dosis", + "unverifiedNoteOne": "1 waarde moet nog worden gecontroleerd en blijft in afwachting.", + "unverifiedNoteFew": "{count} waarden moeten nog worden gecontroleerd en blijven in afwachting.", + "unverifiedNoteOther": "{count} waarden moeten nog worden gecontroleerd en blijven in afwachting.", + "finish": "Controle afronden", + "confirmFailed": "De controle kon niet worden opgeslagen. Probeer het opnieuw.", + "savedToastOne": "1 waarde opgeslagen", + "savedToastFew": "{count} waarden opgeslagen", + "savedToastOther": "{count} waarden opgeslagen", + "nothingSavedToast": "Controle opgeslagen. Er zijn geen waarden toegevoegd.", + "extract": "Labwaarden extraheren", + "extracting": "Extraheren…", + "extractHint": "Gebruikt de tekst die al uit dit document is gelezen. Geëxtraheerde waarden wachten op jouw controle; er wordt niets automatisch opgeslagen.", + "extractEmpty": "Er konden geen waarden uit dit document worden geëxtraheerd.", + "failUnitRequired": "Een numerieke waarde heeft een eenheid nodig voordat ze kan worden opgeslagen.", + "failUnitMismatch": "De opgegeven eenheid komt niet overeen met de opgeslagen eenheid voor deze biomarker. Pas de eenheid aan en rond de controle daarna opnieuw af.", + "failGeneric": "Deze waarde kon niet worden opgeslagen.", + "failUnknownBiomarker": "De gekozen biomarker bestaat niet meer. Kies een andere." + }, + "contentIndex": { + "indexPrompt": "Maak de inhoud van documenten doorzoekbaar.", + "indexAll": "Alles indexeren voor zoeken", + "indexAllPending": "Starten…", + "indexAllQueued": "{count} document(en) worden op de achtergrond geïndexeerd.", + "indexAllNothing": "Alles is al geïndexeerd.", + "indexAllError": "Het indexeren kon niet worden gestart." + }, + "share": { + "title": "Dit document delen", + "multiTitle": "Deze documenten delen", + "multiLabel": "{count} documenten", + "description": "Maak een alleen-lezenlink voor een zorgverlener met dit document als bijlage. De link en de bijbehorende wachtwoordzin worden één keer getoond." + }, + "chat": { + "title": "Chatten over dit document", + "openAria": "De Coach een vraag stellen over dit document", + "openButton": "Vraag het de Coach" + }, + "readingConsent": { + "body": "Bij lezen met AI wordt dit naar je AI-dienst buiten deze server gestuurd. Mag HealthLog documenten, labverslagen en medicatiebeschrijvingen versturen om ze te laten lezen?", + "grant": "Lezen toestaan", + "error": "De toestemming kon niet worden opgeslagen. Probeer het opnieuw." + }, + "sourcePicker": { + "open": "Importeren uit archief", + "openNamed": "Importeren uit {name}", + "title": "Importeren uit {name}", + "description": "Zoek op naam en vink de documenten aan die HealthLog moet kopiëren.", + "sourceLabel": "Archief", + "searchLabel": "Documentnaam", + "searchPlaceholder": "Zoeken op naam", + "tagLabel": "Label", + "tagAny": "Elk label", + "fromLabel": "Van", + "toLabel": "Tot", + "clearFilters": "Label en datums wissen", + "rangeInvalid": "De einddatum ligt vóór de begindatum.", + "empty": "{name} heeft geen documenten om te tonen.", + "noMatch": "Geen overeenkomende documenten.", + "loadMore": "Meer laden", + "stateImported": "Staat in HealthLog", + "stateDeleted": "Verwijderd in HealthLog", + "selectedCount": "{count} van maximaal {max} geselecteerd", + "importAction": "{count} importeren", + "importing": "Importeren, één document tegelijk…", + "done": "Klaar", + "summary": "Geïmporteerd: {imported}. Al aanwezig: {present}. Niet geïmporteerd: {failed}.", + "stopped": "Gestopt: {reason}", + "result": { + "waiting": "Wachten", + "working": "Importeren…", + "imported": "Geïmporteerd", + "importedLinked": "Geïmporteerd en gekoppeld", + "duplicate": "Staat al in HealthLog", + "duplicateLinked": "Staat al in HealthLog, nu gekoppeld", + "deleted": "Verwijderd in HealthLog, ongemoeid gelaten" + }, + "errors": { + "unavailable": "Documentarchieven zijn niet ingeschakeld op deze server.", + "notConnected": "Dit archief is niet gekoppeld. Koppel het onder Instellingen, Koppelingen.", + "originNotAllowed": "Dit adres staat niet op de lijst met toegestane archieven van de server. Vraag de beheerder om het toe te voegen.", + "unreachable": "Het archief is niet bereikbaar. Controleer of het draait en of het adres klopt.", + "redirected": "Het archief heeft het verzoek doorgestuurd. Vul het adres in waarnaar het doorstuurt.", + "authRefused": "Het archief heeft het token geweigerd. Controleer het token en de rechten ervan.", + "versionTooOld": "Het archief is te oud. Paperless-ngx 2.16 of nieuwer is vereist.", + "badResponse": "Het antwoord van het archief kon niet worden gelezen. Controleer of het adres naar het archief zelf verwijst.", + "notFound": "Het archief heeft zo'n document niet, of de organisatie-ID is onjuist of niet van jou.", + "linkTargetNotFound": "De registratie waaraan gekoppeld moet worden bestaat niet meer.", + "rateLimited": "Te veel verzoeken. Wacht een minuut en probeer het opnieuw.", + "browserOnly": "Documentarchieven kunnen alleen in de browser worden gebruikt.", + "invalidAddress": "Vul het volledige adres in, beginnend met https:// of http://.", + "organizationRequired": "Vul de organisatie-ID van Papra in.", + "tokenRequired": "Vul het API-token in. Bij een nieuw adres is het opnieuw nodig.", + "fileTooLarge": "Het bestand is groter dan HealthLog accepteert.", + "quotaExceeded": "Je documentopslag is vol.", + "fileType": "HealthLog accepteert dit bestandstype niet.", + "uploadLimit": "De uploadlimiet per uur is bereikt. Probeer het later opnieuw.", + "uploadBusy": "Er lopen nog andere uploads. Probeer het zo meteen opnieuw.", + "moduleDisabled": "Documenten zijn uitgeschakeld in Instellingen.", + "generic": "Er is iets misgegaan. Probeer het opnieuw.", + "permissionMissing": "De Papra-sleutel kan geen tags lezen. Geef de sleutel het recht tags:read." + }, + "pickMore": "Meer kiezen", + "finishedHint": "Zoek opnieuw of wijzig een filter om meer documenten te kiezen.", + "maxReached": "Je kunt maximaal {max} documenten tegelijk importeren.", + "noMatchHint": "Probeer een deel van de naam, of wis het label en de datums." + }, + "customize": "Weergave aanpassen", + "layout": { + "viewDescription": "Voorbeeldkaarten met miniaturen, of een compacte lijst.", + "arrangementHeading": "Indeling", + "arrangementDescription": "Elke maand als eigen blok, of alles doorlopend over de volle breedte.", + "stacked": "Maanden onder elkaar", + "flow": "Doorlopend", + "saveFailed": "De weergave kon niet worden opgeslagen." + }, + "deleteConfirm": { + "titleOne": "Dit document verwijderen?", + "titleMany": "{count} documenten verwijderen?", + "body": "Je kunt dit direct daarna ongedaan maken. Na 30 dagen wordt het definitief verwijderd.", + "action": "Verwijderen" + } + }, + "selfDescription": { + "dataPosture": "HealthLog is zelf gehost: je gezondheidsgegevens staan in de database van je eigen instantie. Notities en andere vrije tekst, documenten, antwoorden op vragenlijsten, door AI geschreven tekst en toegangstokens worden versleuteld opgeslagen; meetwaarden, labwaarden, medicijnnamen en stemmingsscores worden onversleuteld opgeslagen en zijn afhankelijk van de beveiliging van je server. AI-functies sturen alleen gegevens naar de AI-provider die voor je account is ingesteld, en er is geen analyse door derden van je gezondheidsgegevens." + }, + "customMetrics": { + "sectionTitle": "Eigen metingen", + "sectionSubtitle": "Metingen die je zelf definieert en bijhoudt.", + "add": "Eigen meting toevoegen", + "addValue": "Waarde toevoegen", + "defineTitle": "Een eigen meting definiëren", + "defineDescription": "Geef de meting een naam, stel de eenheid in en eventueel een streefbereik.", + "editTitle": "Eigen meting bewerken", + "edit": "Bewerken", + "delete": "Verwijderen", + "deleteConfirmTitle": "Deze eigen meting verwijderen?", + "deleteConfirmDescription": "De meting wordt uit je lijst verwijderd. De vastgelegde waarden blijven bewaard.", + "deletedToast": "Eigen meting verwijderd", + "deleteError": "De eigen meting kon niet worden verwijderd", + "showAllValues": "Alle waarden tonen", + "emptyDescription": "Definieer je eigen metingen om ze bij te houden en in een grafiek te zien.", + "noValuesYet": "Nog geen waarden", + "loadError": "Eigen metingen konden niet worden geladen", + "loadMore": "Meer waarden laden", + "showingLatestOf": "De laatste {shown} van {total} worden getoond", + "backToMeasurements": "Terug naar metingen", + "form": { + "name": "Naam", + "namePlaceholder": "bijv. knijpkracht 's ochtends", + "unit": "Eenheid", + "unitPlaceholder": "bijv. kg", + "decimals": "Aantal decimalen", + "decimalsPlaceholder": "bijv. 1", + "targetLow": "Ondergrens doel", + "targetLowPlaceholder": "Ondergrens", + "targetHigh": "Bovengrens doel", + "targetHighPlaceholder": "Bovengrens", + "description": "Beschrijving", + "descriptionPlaceholder": "Wat dit meet (optioneel)", + "targetHint": "Het streefbereik is optioneel en wordt als band in de grafiek getekend.", + "correlationEnabled": "Gebruiken bij het ontdekken van verbanden", + "correlationEnabledHint": "Voegt deze meting toe als begrensd dagelijks gedragskanaal. Dit staat standaard uit.", + "requiredError": "Naam en eenheid zijn verplicht", + "rangeOrderError": "De ondergrens van het doel mag niet hoger zijn dan de bovengrens", + "save": "Opslaan", + "savedToast": "Eigen meting opgeslagen", + "updatedToast": "Eigen meting bijgewerkt", + "saveError": "De eigen meting kon niet worden opgeslagen" + }, + "entry": { + "value": "Waarde", + "measuredAt": "Datum", + "note": "Notitie", + "addDescription": "Leg een waarde vast voor deze meting.", + "edit": "Waarde bewerken", + "editTitle": "Waarde bewerken", + "editDescription": "Werk de waarde, datum of notitie bij.", + "delete": "Waarde verwijderen", + "deleteConfirmTitle": "Deze waarde verwijderen?", + "deleteConfirmDescription": "Deze waarde wordt definitief verwijderd.", + "valueError": "Vul een numerieke waarde in", + "timestampError": "Vul een geldige datum in", + "savedToast": "Waarde vastgelegd", + "saveError": "De waarde kon niet worden vastgelegd", + "editedToast": "Waarde bijgewerkt", + "editError": "De waarde kon niet worden bijgewerkt", + "deletedToast": "Waarde verwijderd", + "restoredToast": "Waarde hersteld", + "restoreError": "Herstellen is mislukt", + "deleteError": "De waarde kon niet worden verwijderd" + }, + "chart": { + "empty": "Geen waarden in deze periode", + "valueLabel": "Waarde", + "range": { + "30": "30 d", + "90": "90 d", + "365": "1 j", + "all": "Alles" + } + }, + "detail": { + "title": "Eigen meting", + "genericDescription": "Een meting die je bijhoudt. Voeg waarden toe om het verloop te volgen.", + "emptyTitle": "Nog geen waarden", + "emptyDescription": "Voeg je eerste waarde toe om deze meting in een grafiek te zien.", + "valuesTitle": "{metric}: alle waarden", + "valuesDescription": "Alle vastgelegde waarden voor deze meting.", + "backToMetric": "Terug naar {metric}" + } + }, + "nutrients": { + "names": { + "vitamin_a": "Vitamine A", + "thiamin": "Thiamine (B1)", + "riboflavin": "Riboflavine (B2)", + "niacin": "Niacine (B3)", + "pantothenic_acid": "Pantotheenzuur (B5)", + "vitamin_b6": "Vitamine B6", + "biotin": "Biotine (B7)", + "folate": "Folaat (B9)", + "vitamin_b12": "Vitamine B12", + "vitamin_c": "Vitamine C", + "vitamin_d": "Vitamine D", + "vitamin_e": "Vitamine E", + "vitamin_k": "Vitamine K", + "calcium": "Calcium", + "iron": "IJzer", + "magnesium": "Magnesium", + "phosphorus": "Fosfor", + "zinc": "Zink", + "copper": "Koper", + "manganese": "Mangaan", + "selenium": "Seleen", + "chromium": "Chroom", + "molybdenum": "Molybdeen", + "iodine": "Jodium", + "water": "Water", + "caffeine": "Cafeïne", + "dha": "DHA (omega-3)", + "epa": "EPA (omega-3)" + }, + "page": { + "title": "Inname van voedingsstoffen", + "description": "Vochtinname en inname van vitaminen en mineralen, gesynchroniseerd vanuit de gezondheidsapp op je telefoon, plus handmatig ingevoerd water.", + "moduleOffDescription": "Zet de module voedingsstoffen aan om hier je vochtinname en je inname van vitaminen en mineralen te zien. Gesynchroniseerde inname wordt onderdeel van de gegevens die de Coach kan lezen.", + "moduleOffCta": "Voedingsstoffen aanzetten", + "emptyTitle": "Nog geen gegevens over voedingsstoffen", + "emptyDescription": "Gegevens komen binnen via de synchronisatie met de gezondheidsapp op je telefoon of via handmatig ingevoerd water.", + "loadError": "Je gegevens over voedingsstoffen konden niet worden geladen", + "lastAttemptTitle": "Er is een synchronisatie binnengekomen, maar er kon niets worden opgeslagen", + "lastAttemptAt": "Laatste poging: {date}", + "lastAttemptReason": { + "unitMismatch": "De ontvangen waarden kwamen niet overeen met de eenheden die deze app voor deze voedingsstoffen verwacht, dus ze konden niet worden opgeslagen.", + "valueOutOfRange": "De ontvangen hoeveelheden waren hoger dan deze app aannemelijk kan opslaan, dus ze konden niet worden opgeslagen.", + "dayInvalid": "De registraties hadden een datum die de server niet kon accepteren. Dit kan gebeuren als de klok of tijdzone aan de verzendende kant verkeerd staat, dus het is de moeite waard om dat te controleren.", + "upsertFailed": "Deze registraties hebben de server bereikt, maar door een probleem aan onze kant konden ze niet worden opgeslagen. Je hoeft zelf niets te doen.", + "unknown": "Deze registraties zijn binnengekomen, maar konden niet worden opgeslagen." + } + }, + "hydration": { + "referenceMeta": "Referentie-inname {value} {unit}/dag (EFSA)" + }, + "caffeine": { + "ceilingMeta": "Veilige bovengrens {value} {unit}/dag (EFSA)" + }, + "micronutrients": { + "title": "Vitaminen en mineralen", + "rowMeta": "{days} van {window} dagen, ref. {value} {unit} (EFSA)", + "rowMetaNoRef": "{days} van {window} dagen", + "footer": "{tracked} van {total} gevolgde micronutriënten hebben gegevens in deze periode.", + "emptyTitle": "Nog geen gegevens over micronutriënten gesynchroniseerd", + "loadError": "Je gegevens over voedingsstoffen konden niet worden geladen", + "sourcePart": "{source} {value} {unit}", + "aboveUpperLimit": "Boven de aanvaardbare bovengrens van inname voor volwassenen van {value} {unit} per dag ({source}).", + "aboveUpperLimitSupplemental": "Het aandeel uit supplementen ligt boven de aanvaardbare bovengrens van inname voor volwassenen van {value} {unit} per dag voor supplementen ({source}).", + "upperLimitForm": { + "retinol": "De grens geldt alleen voor voorgevormd vitamine A (retinol): als de hoeveelheid uit bètacaroteen komt, is hij niet van toepassing.", + "folic_acid": "De grens geldt voor foliumzuur uit supplementen en verrijkte voedingsmiddelen, niet voor het folaat in gewone voeding.", + "magnesium_salts": "De grens geldt voor gemakkelijk dissocieerbare magnesiumzouten in supplementen, niet voor het magnesium in voeding.", + "alpha_tocopherol": "De grens is vastgesteld voor alfa-tocoferol." + } + }, + "sparseNote": "Een laag getal betekent hier meestal dat er weinig is vastgelegd, niet dat er een tekort is. Dagtotalen in Apple Health weerspiegelen wat je apps hebben vastgelegd, niet je totale inname via voeding.", + "units": { + "IU": "IE" + }, + "sources": { + "APPLE_HEALTH": "Gesynchroniseerd", + "MANUAL": "Ingevoerd", + "SUPPLEMENT": "Supplementen" + } + }, + "daily": { + "line": { + "allClear": "Er vraagt vandaag niets om je aandacht.", + "scoreReady": "Je gezondheidsscore voor vandaag staat klaar." + }, + "push": { + "title": "Je ochtendoverzicht", + "bodyProvisional": "{line}\nDe slaap van afgelopen nacht is nog niet binnen.", + "titleScore": "Ochtendscore {score}", + "band": { + "green": "Alles ziet er vandaag stabiel uit.", + "yellow": "Een paar dingen zijn vandaag het bekijken waard.", + "red": "Sommige onderdelen vragen vandaag om aandacht." + } + }, + "item": { + "doseWindow": { + "title": "Tijd voor medicatie", + "body": "Er is binnenkort een dosis gepland.", + "bodyNamed": "{name} moet binnenkort worden ingenomen.", + "overdueTitle": "Medicatie te laat", + "overdueBody": "Een dosis is over tijd.", + "overdueBodyNamed": "{name} is over tijd." + }, + "preventiveCare": { + "title": "Tijd voor een controle", + "body": "{label} staat gepland.", + "bodyManyNamed": "Gepland: {labels}" + }, + "syncIssue": { + "title": "Synchronisatie vraagt aandacht", + "body": "{integration} synchroniseert niet. Maak opnieuw verbinding om je gegevens actueel te houden." + }, + "coachCheckin": { + "title": "Tijd om een plan te evalueren", + "body": "Het is ongeveer een week geleden dat je dit plan hebt opgesteld. Houd het aan, pas het aan of laat het los. Geen druk, wat je ook kiest.", + "bodyPlan": "Ongeveer een week geleden heb je dit opgesteld: “{plan}”. Houd het aan, pas het aan of laat het los. Geen druk, wat je ook kiest.", + "adjustPrompt": "Ik wil mijn check-inplan aanpassen.", + "adjustPromptPlan": "Ik wil dit plan aanpassen: “{plan}”" + }, + "tensionWindow": { + "title": "Mogelijk spanning vandaag", + "body": { + "morning": "Je hartslag lag vanochtend een langere tijd boven je basislijn in rust terwijl je stilzat, mogelijk door wat spanning.", + "afternoon": "Je hartslag lag vanmiddag een langere tijd boven je basislijn in rust terwijl je stilzat, mogelijk door wat spanning.", + "evening": "Je hartslag lag vanavond een langere tijd boven je basislijn in rust terwijl je stilzat, mogelijk door wat spanning.", + "night": "Je hartslag lag afgelopen nacht een langere tijd boven je basislijn in rust terwijl je stillag, mogelijk door wat spanning." + } + }, + "ecgNewRecording": { + "title": "Nieuwe ECG-opname", + "body": "Je apparaat heeft een nieuw ECG opgenomen. Je kunt het nu bekijken.", + "bodyVerdict": "Je apparaat heeft een nieuw ECG opgenomen en meldde: {verdict}.", + "verdict": { + "irregular": "een mogelijk onregelmatig ritme", + "notDetected": "geen onregelmatig ritme", + "inconclusive": "een niet-eenduidig resultaat" + } + }, + "sameTimeBaseline": { + "title": { + "below": "Achter op je gebruikelijke tempo", + "above": "Voor op je gebruikelijke tempo" + }, + "body": { + "below": "Om {time} sta je op {today} stappen. Op een gewone dag zit je nu rond de {typical}.", + "above": "Om {time} sta je op {today} stappen, meer dan de {typical} die je rond deze tijd normaal hebt." + } + }, + "upcomingVisit": { + "title": "Afspraak binnenkort", + "bodyToday": "{what} vandaag", + "bodyTomorrow": "{what} morgen", + "bodyDayAfterTomorrow": "{what} overmorgen" + } + }, + "action": { + "logDose": "Dosis registreren", + "reconnect": "Opnieuw verbinden", + "viewCheckups": "Controles bekijken", + "checkinKeep": "Aanhouden", + "checkinAdjust": "Aanpassen", + "checkinLetGo": "Loslaten", + "viewMilestone": "Bekijken", + "viewPulse": "Hartslag bekijken", + "viewEcg": "Opname bekijken", + "viewSteps": "Stappen bekijken" + }, + "today": { + "scoreLabel": "Gezondheidsscore", + "deltaVsBaseline": "{delta} t.o.v. je basislijn", + "deltaFlat": "In lijn met je basislijn", + "sleepPending": "De slaap van afgelopen nacht is nog niet binnen, dus het beeld van vandaag is voorlopig.", + "worthALook": "Het bekijken waard", + "allClear": "Er vraagt vandaag niets om je aandacht.", + "ringLink": "Details van {metric} openen", + "heading": "Vandaag", + "steadyWeeksOne": "Al {count} week stabiel", + "steadyWeeksFew": "Al {count} weken stabiel", + "steadyWeeksOther": "Al {count} weken stabiel", + "valueWithUnit": "{value} {unit}", + "rangeWithUnit": "{low} tot {high} {unit}", + "rangeAtThisTime": "{range} voor dit tijdstip van de dag", + "vital": { + "RESTING_HEART_RATE": "Rusthartslag", + "HEART_RATE_VARIABILITY": "Hartslagvariabiliteit", + "RESPIRATORY_RATE": "Ademhalingsfrequentie", + "OXYGEN_SATURATION": "Zuurstofsaturatie", + "BODY_TEMPERATURE": "Lichaamstemperatuur", + "SKIN_TEMPERATURE": "Huidtemperatuur", + "BLOOD_PRESSURE_SYS": "Systolische bloeddruk", + "BLOOD_PRESSURE_DIA": "Diastolische bloeddruk", + "BLOOD_GLUCOSE": "Bloedglucose", + "PULSE": "Hartslag", + "WEIGHT": "Gewicht", + "generic": "Een vitale waarde" + }, + "steadyAtLeastWeeksOne": "Al minstens {count} week stabiel", + "steadyAtLeastWeeksFew": "Al minstens {count} weken stabiel", + "steadyAtLeastWeeksOther": "Al minstens {count} weken stabiel" + }, + "milestone": { + "metric": { + "restingHeartRate": "rusthartslag", + "heartRateVariability": "hartslagvariabiliteit", + "respiratoryRate": "ademhalingsfrequentie", + "weight": "gewicht", + "generic": "deze waarde" + }, + "record": { + "title": "Nieuw record voor je {metric}", + "body": "Vandaag een persoonlijk record voor je {metric}. Rustig genoteerd, je hoeft niets te doen." + }, + "returnToBaseline": { + "title": "Weer binnen bereik: {metric}", + "body": "Je {metric} zit weer binnen je gebruikelijke bereik. Wat het ook was, het is voorbij." + }, + "sustainedInRange": { + "week1": { + "title": "Een week binnen bereik", + "body": "Je {metric} zit nu al een week binnen je gebruikelijke bereik. Mooi stabiel." + }, + "week2": { + "title": "Twee weken binnen bereik", + "body": "Je {metric} is twee weken binnen je gebruikelijke bereik gebleven. Rustig en stabiel." + }, + "week3": { + "title": "Drie weken binnen bereik", + "body": "Al drie weken zit je {metric} binnen je gebruikelijke bereik. Een flinke periode van stabiliteit." + }, + "week4": { + "title": "Een maand binnen bereik", + "body": "Een volle maand met je {metric} binnen je gebruikelijke bereik. Prachtig stabiel." + } + } + }, + "lead": { + "vitalOutside": { + "above": "{metric} staat op {value}, boven je gebruikelijke bereik van {range}.", + "below": "{metric} staat op {value}, onder je gebruikelijke bereik van {range}." + }, + "vitalsOutside": { + "aboveOne": "{metric} staat op {value}, boven je gebruikelijke bereik van {range}, en nog {count} vitale waarde valt ook buiten het bereik.", + "aboveFew": "{metric} staat op {value}, boven je gebruikelijke bereik van {range}, en nog {count} vitale waarden vallen ook buiten hun bereik.", + "aboveOther": "{metric} staat op {value}, boven je gebruikelijke bereik van {range}, en nog {count} vitale waarden vallen ook buiten hun bereik.", + "belowOne": "{metric} staat op {value}, onder je gebruikelijke bereik van {range}, en nog {count} vitale waarde valt ook buiten het bereik.", + "belowFew": "{metric} staat op {value}, onder je gebruikelijke bereik van {range}, en nog {count} vitale waarden vallen ook buiten hun bereik.", + "belowOther": "{metric} staat op {value}, onder je gebruikelijke bereik van {range}, en nog {count} vitale waarden vallen ook buiten hun bereik." + }, + "sleep": { + "more": "Afgelopen nacht sliep je {duration}, {diff} langer dan gebruikelijk.", + "less": "Afgelopen nacht sliep je {duration}, {diff} korter dan gebruikelijk.", + "usual": "Afgelopen nacht sliep je {duration}, ongeveer zoals gebruikelijk.", + "plain": "Afgelopen nacht sliep je {duration}." + }, + "vitalsInRangeOne": "Je laatste vitale waarde ligt binnen het gebruikelijke bereik.", + "vitalsInRangeFew": "Alle {count} laatste vitale waarden liggen binnen hun gebruikelijke bereik.", + "vitalsInRangeOther": "Alle {count} laatste vitale waarden liggen binnen hun gebruikelijke bereik.", + "vitalInRange": "{metric} staat op {value}, binnen je gebruikelijke bereik van {range}." + }, + "todayFact": { + "restMode": { + "label": "Rustmodus", + "value": "Dag {day}" + }, + "medications": { + "label": "Medicatie", + "value": "{taken} van {scheduled} ingenomen" + }, + "appointment": { + "label": "Afspraak", + "today": "Vandaag {time}, {what}", + "tomorrow": "Morgen {time}, {what}" + }, + "sleep": { + "label": "Afgelopen nacht", + "plain": "{duration}", + "usual": "{duration}, ongeveer zoals gebruikelijk", + "more": "{duration}, {diff} langer dan gebruikelijk", + "less": "{duration}, {diff} korter dan gebruikelijk" + }, + "vitals": { + "label": "Vitale waarden", + "allInOne": "{count} gecontroleerd, binnen je bereik", + "allInFew": "{count} gecontroleerd, alle binnen je bereik", + "allInOther": "{count} gecontroleerd, alle binnen je bereik", + "oneOut": { + "above": "{metric} boven je bereik", + "below": "{metric} onder je bereik" + }, + "someOut": "{count} van {total} buiten je bereik" + }, + "cycle": { + "label": "Cyclus", + "value": "{phase}, dag {day}", + "dayOnly": "Dag {day}" + } + } + }, + "reportSelection": { + "leafAnamnesis": "Gezondheidsprofiel", + "groupIdentity": "Persoonsgegevens", + "groupVitals": "Vitale functies", + "groupCardio": "Hart en bloedsomloop", + "groupBody": "Lichaamsmaten", + "groupSleepRecovery": "Slaap en herstel", + "groupActivity": "Activiteit", + "groupMobility": "Mobiliteit en looppatroon", + "groupEnvironment": "Omgeving", + "groupGlucose": "Bloedglucose", + "groupLabs": "Labuitslagen", + "groupMedications": "Medicatie", + "groupHistory": "Aandoeningen en allergieën", + "groupSensitive": "Gevoelige gegevens", + "leafPatientIdentity": "Naam, geboortedatum, geslacht, lengte", + "leafInsurance": "Zorgverzekeraar en polisnummer", + "leafGlucosePanel": "Glucosepanel (tijd binnen bereik, GMI, variabiliteit)", + "leafLabResults": "Labuitslagen", + "leafMedicationList": "Medicatielijst", + "leafMedicationAdministrations": "Elke geregistreerde dosis", + "leafMedicationCompliance": "Therapietrouw", + "leafGlp1Therapy": "GLP-1-therapie (dosisgeschiedenis, bijwerkingen)", + "leafAllergies": "Allergieën en intoleranties", + "leafIllnessEpisodes": "Ziekte-episodes", + "leafFamilyHistory": "Familiegeschiedenis", + "leafMood": "Stemming", + "leafCycle": "Menstruatiecyclus", + "templateStandard": "Standaard artsenrapport", + "applyStandard": "{template} toepassen", + "standardHint": "Met één klik vul je in wat een algemeen consult meestal nodig heeft. Elk onderdeel blijft aanpasbaar.", + "groupCount": "{on}/{total}", + "groupDisclosure": "Onderdelen in {group} tonen", + "sensitiveHint": "Hier wordt nooit iets vooraf geselecteerd. Kies elk onderdeel zelf.", + "scopeNone": "Nog niets geselecteerd. Kies wat je wilt opnemen of pas het standaardrapport toe.", + "scopeCount": "{count} onderdelen uit {groups} rubrieken", + "scopeSensitive": "incl. {names}", + "leafVisits": "Bezoeken", + "leafSurgicalHistory": "Operatiegeschiedenis", + "leafImmunizations": "Vaccinaties", + "leafEmergency": "Noodinformatie (bloedgroep, contactpersonen, wilsverklaringen)" + }, + "recordSharing": { + "banner": { + "viewing": "Je bent in het dossier van {name}", + "readOnly": "Je kunt het lezen, maar niet wijzigen.", + "canAdd": "Je kunt er iets aan toevoegen, maar niet wijzigen of verwijderen wat er al staat.", + "leave": "Terug naar mijn dossier" + }, + "switcher": { + "label": "Een dossier openen", + "ownRecord": "Mijn eigen dossier" + }, + "switch": { + "failed": "Kan dat dossier niet openen. Probeer het opnieuw.", + "noLongerAvailable": "Dat dossier wordt niet meer met je gedeeld." + }, + "unavailable": { + "title": "Valt buiten gedeelde toegang", + "description": "Delen betreft het gezondheidsdossier zelf, inclusief de gezondheidsachtergrond onder Anamnese. Accountinstellingen, gekoppelde diensten, meldingen en de AI-functies blijven bij de persoon die eigenaar is van het account.", + "leave": "Terug naar mijn dossier" + }, + "state": { + "active": "Actief", + "pending": "Wacht op acceptatie", + "expired": "Verlopen", + "revoked": "Beëindigd" + }, + "row": { + "readOnly": "Kan het dossier lezen", + "canWrite": "Kan lezen en registraties toevoegen", + "canManage": "Kan het dossier lezen, aanvullen en de inhoud wijzigen of verwijderen", + "entireRecord": "Geldt voor het hele dossier", + "sections": "Geldt voor: {sections}", + "noSections": "Geldt voor niets: deze toegang opent geen enkel deel van het dossier", + "invited": "Uitgenodigd", + "accepted": "Geaccepteerd", + "expires": "Verloopt", + "lastUsed": "Laatst geopend", + "neverUsed": "nooit", + "endedByYou": "Door jou beëindigd", + "endedByOwner": "Ingetrokken", + "handedBack": "Teruggegeven", + "ended": "Beëindigd" + }, + "invite": { + "title": "Iemand uitnodigen", + "description": "Er wordt niets gedeeld totdat de ander accepteert.", + "needsAccount": "De persoon heeft een eigen HealthLog-account op deze instantie nodig en vindt de uitnodiging onder Instellingen → Gedeelde toegang.", + "identifierLabel": "Gebruikersnaam of e-mailadres", + "identifierPlaceholder": "De naam waarmee de ander inlogt", + "identifierHint": "De ander heeft een account op deze instantie nodig. Uitnodigingen kunnen niet worden verstuurd naar een e-mailadres dat niet geregistreerd is.", + "accessLegend": "Wat de ander mag doen", + "accessReadLabel": "Mag bekijken", + "accessReadCapability": "De ander kan alles lezen wat dit dossier deelt, maar niets toevoegen of wijzigen.", + "accessWriteLabel": "Mag bekijken en toevoegen", + "accessWriteCapability": "De ander kan iets aan het dossier toevoegen, maar niets bewerken of verwijderen, ook niet de eigen toevoegingen.", + "accessWriteDetail": "De ander kan meetwaarden, labuitslagen, een nieuwe te volgen labwaarde, een ziekteregistratie, een bijwerking bij een geneesmiddel en een nieuw medicijn toevoegen, en een dosis als ingenomen of overgeslagen markeren. Bewerken of verwijderen kan niet, ook niet bij de eigen toevoegingen, en een van je herinneringen uitstellen kan ook niet. Dat kun alleen jij.", + "accessManageLabel": "Mag beheren", + "accessManageCapability": "De ander kan registraties toevoegen, wijzigen en verwijderen, ook die je zelf hebt ingevoerd.", + "accessManageDetail": "De ander kan ook de inzichten lezen die uit je dossier worden gegenereerd. Je login, je beveiligingsinstellingen, je koppelingen en wie er verder toegang heeft, kan de ander niet wijzigen. Je kunt dit op elk moment beëindigen.", + "manageStepUpNote": "Dit aanbieden kan alleen in een browser en vraagt om je tweede factor als je die hebt.", + "scopeLegend": "Wat de ander kan openen", + "scopeAllLabel": "Hele dossier", + "scopeAllCapability": "Elk onderdeel ervan, zoals delen altijd al werkte.", + "scopeSomeLabel": "Alleen de onderdelen die je kiest", + "scopeSomeCapability": "Alles wat je niet kiest, blijft voor de ander gesloten.", + "scopeManageNote": "Beheertoegang geldt altijd voor het hele dossier.", + "scopeLeakNote": "Een onderdeel kan in notities en namen naar de rest van je gezondheid verwijzen. Als je een onderdeel deelt, deel je alles wat erin staat.", + "scopeAggregateNote": "Het dashboardoverzicht, de gezondheidsscore en het dagoverzicht verschijnen alleen als het hele dossier wordt gedeeld.", + "scopeDocumentsNote": "Een document kan van alles bevatten. Deel dit alleen als de ander alles mag lezen.", + "scopeEmptyHint": "Kies minstens één onderdeel of ga terug naar het delen van het hele dossier.", + "scopeChooseHint": "Kies of je het hele dossier deelt of alleen geselecteerde onderdelen.", + "expiresLabel": "Toegang eindigt op (optioneel)", + "expiresHint": "Laat dit leeg voor toegang die blijft bestaan totdat iemand die beëindigt. Een datum hier wordt bij elk verzoek gecontroleerd, dus de toegang stopt vanzelf aan het einde van die dag.", + "submit": "Uitnodiging versturen", + "submitting": "Versturen…", + "sent": "Uitnodiging verstuurd naar {name}.", + "errorNoAccount": "Er is geen account op deze instantie met die naam.", + "errorDuplicate": "Dat account heeft al toegang tot je dossier.", + "errorSelf": "Dat is je eigen account.", + "errorInvalid": "Voer een gebruikersnaam of e-mailadres in.", + "errorRateLimited": "Te veel uitnodigingen. Probeer het later opnieuw.", + "errorFailed": "De uitnodiging kon niet worden verstuurd. Probeer het opnieuw.", + "errorScope": "Die onderdelen kunnen niet op die manier worden gedeeld. Kies minstens één onderdeel of deel het hele dossier.", + "errorManageBrowserOnly": "Beheertoegang kan alleen in een browser worden aangeboden.", + "errorStepUp": "Bevestig je tweede factor of passkey en probeer het daarna opnieuw.", + "errorOffline": "Dit heeft de server niet bereikt. Je uitnodiging staat er nog. Controleer je verbinding en probeer het opnieuw." + }, + "given": { + "title": "Wie mijn dossier kan openen", + "description": "Beëindigde toegang blijft in de lijst staan, zodat je altijd kunt zien wie toegang had en wanneer.", + "emptyTitle": "Niemand anders kan je dossier openen", + "emptyDescription": "Nodig hierboven iemand uit als je wilt dat die het kan lezen.", + "loadError": "De lijst kon niet worden geladen.", + "revoke": "Toegang beëindigen", + "withdrawInvite": "Intrekken", + "revokeTitle": "Toegang van {name} beëindigen?", + "revokeBody": "De ander verliest direct de toegang, ook in een browser waarin je dossier nog openstaat. Wat al is gezien, kan niet worden teruggedraaid. Je kunt de ander op elk moment opnieuw uitnodigen.", + "revokeEntriesStay": "Alles wat de ander heeft ingevoerd, blijft in je dossier staan en je kunt daar zelf alles van verwijderen.", + "revokeAttribution": "Wie wat heeft ingevoerd, blijft {days} dagen zichtbaar in je activiteitenoverzicht.", + "revokeConfirm": "Toegang beëindigen" + }, + "received": { + "title": "Dossiers die ik kan openen", + "description": "Een uitnodiging geeft je niets totdat je die accepteert.", + "emptyTitle": "Niemand heeft een dossier met je gedeeld", + "emptyDescription": "Als iemand je uitnodigt, verschijnt de uitnodiging hier.", + "loadError": "De lijst kon niet worden geladen.", + "accept": "Accepteren", + "accepting": "Accepteren…", + "writeConsent": "Als je accepteert, wordt wat je toevoegt onderdeel van het dossier van {name}. Je kunt registraties daarna niet meer wijzigen of verwijderen; alleen {name} kan dat.", + "manageConsent": "Als je accepteert, kun je iets toevoegen aan het dossier van {name} en ook wijzigen of verwijderen wat er al in staat, inclusief registraties die {name} zelf heeft gemaakt. Alles wat je doet, wordt onder jouw naam vastgelegd in het activiteitenoverzicht van die persoon, en {name} kan je toegang op elk moment beëindigen.", + "open": "Openen", + "renounce": "Teruggeven", + "renounceTitle": "Dossier van {name} teruggeven?", + "renounceBody": "Je verliest direct de toegang. Je kunt op elk moment opnieuw worden uitgenodigd.", + "renounceConfirm": "Teruggeven", + "detail": "Je kunt de toegang teruggeven wanneer je wilt." + }, + "activity": { + "title": "Wanneer mijn dossier is geopend", + "description": "Elke keer dat iemand anders je dossier heeft geopend.", + "retention": "Dit beslaat de afgelopen {days} dagen. Oudere vermeldingen worden verwijderd.", + "emptyTitle": "Niemand heeft je dossier geopend", + "emptyDescription": "Openingen door anderen dan jij verschijnen hier, één regel per persoon per dag.", + "loadError": "De activiteit kon niet worden geladen.", + "opened": "{name} heeft je dossier {count}× geopend", + "acted": "{name} heeft iets gewijzigd in je dossier", + "deletedAccount": "Een verwijderd account", + "truncated": "Deze lijst toont de meest recente activiteit, niet alles." + }, + "delegate": { + "addOnlyNote": "Je kunt iets toevoegen aan dit dossier. Registraties wijzigen of verwijderen kan alleen {name}." + }, + "lookingAfter": { + "kindShared": "Gedeeld dossier", + "kindManaged": "Beheerd profiel" + }, + "managed": { + "title": "Dossiers waar je voor zorgt", + "description": "Gezondheidsdossiers zonder eigen login.", + "explainer": "Een beheerd profiel is een gezondheidsdossier voor iemand die zelf niet inlogt, zoals een kind of iemand voor wie je zorgt. Het heeft geen login en geen e-mailadres, en jij wordt de eerste verzorger. Je kunt later meer verzorgers toevoegen, en ieder van jullie kan naar het dossier overschakelen om het bij te houden.", + "nameLabel": "Naam", + "namePlaceholder": "De naam waaraan je dit dossier herkent", + "nameHint": "Maximaal 80 tekens. Wordt getoond overal waar dit dossier verschijnt.", + "nameRequired": "Geef het dossier een naam.", + "nameTooLong": "Die naam is langer dan 80 tekens.", + "dobLabel": "Geboortedatum (optioneel)", + "dobHint": "Laat dit leeg als je liever geen geboortedatum vastlegt. Er wordt niets afgeleid uit alleen een jaartal.", + "localeLabel": "Taal van dit dossier", + "localeHint": "De taal voor tekst die in dit dossier wordt geschreven. Je eigen schermen blijven in jouw taal.", + "genderLabel": "Geslacht (optioneel)", + "genderHint": "Bepaalt of cyclustracking voor dit dossier standaard aan staat. Je kunt dit altijd wijzigen.", + "genderNone": "Niet opgegeven", + "genderMale": "Man", + "genderFemale": "Vrouw", + "genderOther": "Anders", + "timezoneHint": "De tijdzone waarin de dagen van dit dossier worden gemeten.", + "timezoneInvalid": "Deze browser kent die tijdzone niet.", + "create": "Profiel aanmaken", + "creating": "Aanmaken…", + "created": "{name} is ingesteld. Je kunt via het accountmenu naar dat dossier overschakelen.", + "errorStepUp": "Bevestig je tweede factor of passkey en probeer het daarna opnieuw.", + "errorOffline": "Dit heeft de server niet bereikt. Er is niets gewijzigd. Controleer je verbinding en probeer het opnieuw.", + "errorInvalid": "De server heeft die gegevens geweigerd. Controleer de naam, de datum en de tijdzone.", + "errorFailed": "Het profiel kon niet worden aangemaakt.", + "edit": "Bewerken", + "editSave": "Wijzigingen opslaan", + "editSaving": "Opslaan…", + "editLoadError": "Die gegevens konden niet worden geladen.", + "editErrorGone": "Dat dossier bestaat niet meer, of je zorgt er niet meer voor.", + "editErrorFailed": "De wijzigingen konden niet worden opgeslagen.", + "delete": "Profiel verwijderen", + "deleteTitle": "{name} verwijderen?", + "deleteBody": "Alles wat voor {name} is vastgelegd, verdwijnt samen met het profiel: metingen, medicatie, documenten en notities. Dit kan niet ongedaan worden gemaakt.", + "deleteGuardiansOne": "{count} persoon zorgt op dit moment voor dit dossier en verliest het.", + "deleteGuardiansFew": "{count} personen zorgen op dit moment voor dit dossier en verliezen het.", + "deleteGuardiansOther": "{count} personen zorgen op dit moment voor dit dossier en verliezen het.", + "deleteFloorNote": "Dit is ook de uitweg als je de laatste verzorger bent: je mag het dossier beëindigen, maar je mag het niet achterlaten zonder dat iemand ervoor zorgt.", + "deleteConfirm": "Profiel verwijderen", + "guardiansTitle": "Wie voor {name} zorgt", + "guardianYou": "(jij)", + "guardianSince": "Zorgt sinds {date} voor dit dossier", + "guardianPending": "Uitgenodigd op {date}, nog niet geaccepteerd", + "guardianRemove": "Toegang beëindigen", + "guardianRemoveTitle": "Toegang van {name} beëindigen?", + "guardianRemoveBody": "{name} kan {profile} niet meer openen. Alles wat die persoon heeft ingevoerd, blijft in het dossier.", + "guardianWithdrawBody": "De uitnodiging aan {name} wordt ingetrokken. Die persoon heeft {profile} nooit geopend, dus er verandert niets in het dossier.", + "guardianRemoveConfirm": "Toegang beëindigen", + "soleGuardian": "Jij bent de enige die voor {name} zorgt, dus hier is geen toegang die je kunt beëindigen. Nodig iemand uit en wacht tot die accepteert, geef je eigen toegang terug onder “Dossiers die ik kan openen” of verwijder het profiel.", + "guardianInviteLabel": "Nog een verzorger uitnodigen", + "guardianInvite": "Uitnodiging versturen", + "guardianInviting": "Versturen…", + "guardianInvited": "Uitnodiging verstuurd naar {name}.", + "guardianExpiresHint": "Optioneel. De toegang eindigt aan het einde van die dag in jouw tijdzone.", + "guardianPendingNote": "Een uitgenodigde verzorger telt pas mee na acceptatie. Tot die tijd ben jij nog steeds de laatste, en wordt het teruggeven van je eigen toegang nog steeds geweigerd.", + "guardianErrorDuplicate": "Dat account heeft al toegang tot dit dossier.", + "guardianErrorManagedInvitee": "Een beheerd profiel kan niet voor een ander dossier zorgen. Nodig een account uit dat zelf inlogt.", + "guardianErrorNoAccount": "Er is geen account op deze instantie met die naam of dat e-mailadres.", + "guardianErrorRateLimit": "Te veel uitnodigingen in het afgelopen uur. Wacht even en probeer het opnieuw.", + "guardianErrorFailed": "De uitnodiging kon niet worden verstuurd.", + "errorMfaRequired": "Hiervoor is een tweede factor of passkey nodig, en je account heeft nog geen van beide. Stel er een in onder Instellingen → Beveiliging en probeer het daarna opnieuw.", + "rosterLoadError": "Kan niet laden wie voor dit dossier zorgt.", + "errorRateLimit": "Te veel profielen aangemaakt in het afgelopen uur. Wacht even en probeer het opnieuw.", + "handover": { + "action": "Overdragen", + "title": "Overdragen aan {name}", + "description": "Geef {name} een eigen login. Er wordt niets gekopieerd of verplaatst: het dossier wordt een eigen account.", + "guardiansLabel": "Toegang na de overdracht", + "guardiansHint": "Jouw voorstel. {name} ziet het en beslist na het inloggen.", + "access": { + "end": "Geen toegang", + "read": "Alleen bekijken", + "manage": "Beheren" + }, + "expiryLabel": "Link geldig voor", + "expiry1": "1 dag", + "expiry7": "7 dagen", + "expiry14": "14 dagen", + "minorHint": "{name} is jonger dan 16. Het is het overwegen waard om leestoegang te houden, en ook om de stap samen door te spreken.", + "irreversible": "Zodra {name} de link gebruikt, kan de overdracht niet ongedaan worden gemaakt. Het dossier is dan van die persoon, en die beslist wie toegang houdt.", + "afterwards": "{name} bevestigt de disclaimer en eventuele AI-toestemming zelf. Herinneringen voor dit dossier bereiken jou niet meer.", + "replaceNote": "Als je een nieuwe link aanmaakt, wordt de openstaande link ingetrokken.", + "create": "Link aanmaken", + "creating": "Aanmaken…", + "linkOnce": "Deze link wordt alleen nu getoond. Geef hem persoonlijk aan {name} of via een kanaal dat je vertrouwt, of laat de ander de code scannen.", + "qrAlt": "QR-code van de overdrachtslink voor {name}", + "urlLabel": "Overdrachtslink", + "copy": "Kopiëren", + "copied": "Link gekopieerd", + "copyError": "De link kon niet worden gekopieerd. Selecteer hem en kopieer hem handmatig.", + "linkExpires": "Geldig tot {date}.", + "done": "Klaar", + "pending": "Er staat een overdrachtslink open tot {date}.", + "replace": "Nieuwe link", + "revoke": "Link intrekken", + "revoked": "Link ingetrokken", + "revokeFailed": "De link kon niet worden ingetrokken. Probeer het opnieuw.", + "errorFailed": "De overdrachtslink kon niet worden aangemaakt.", + "errorRosterChanged": "De lijst met verzorgers is intussen gewijzigd. Sluit dit venster en open het opnieuw.", + "oidcOnly": "Een profiel overdragen is niet beschikbaar op deze server.", + "loadError": "De overdrachtsstatus kon niet worden geladen.", + "entryHint": "Wanneer {name} er klaar voor is om zelf voor dit dossier te zorgen.", + "methodSso": "{name} logt via single sign-on in bij het gebruiken van de link.", + "methodBoth": "{name} kan een wachtwoord instellen of inloggen via single sign-on." + } + }, + "toast": { + "savedTo": "Opgeslagen in het dossier van {name}" + }, + "activityVerb": { + "measurementCreate": "{name} heeft een meting toegevoegd", + "labResultCreate": "{name} heeft een labuitslag toegevoegd", + "allergyCreate": "{name} heeft een allergie toegevoegd", + "familyHistoryCreate": "{name} heeft een registratie in de familiegeschiedenis toegevoegd", + "illnessEpisodeCreate": "{name} heeft een ziekteregistratie toegevoegd", + "biomarkerCreate": "{name} heeft een biomarker toegevoegd", + "customMetricEntryCreate": "{name} heeft een bijgehouden waarde vastgelegd", + "medicationSideEffectCreate": "{name} heeft een bijwerking genoteerd", + "medicationCreate": "{name} heeft een medicijn toegevoegd", + "medicationIntake": "{name} heeft een dosis gemarkeerd", + "medicationIntakeRefused": "{name} probeerde een dosis te wijzigen of een herinnering uit te stellen, maar dat werd geweigerd", + "measurementUpdate": "{name} heeft een meting gewijzigd", + "measurementDelete": "{name} heeft een meting verwijderd", + "measurementDeleteBulk": "{name} heeft meerdere metingen tegelijk verwijderd", + "measurementRestore": "{name} heeft een meting hersteld", + "measurementReminderCreate": "{name} heeft een meetherinnering toegevoegd", + "measurementReminderUpdate": "{name} heeft een meetherinnering gewijzigd", + "measurementReminderDelete": "{name} heeft een meetherinnering verwijderd", + "measurementReminderComplete": "{name} heeft een meetherinnering voltooid", + "measurementReminderSatisfy": "{name} heeft een meetherinnering afgevinkt", + "measurementReminderSkip": "{name} heeft een meetherinnering overgeslagen", + "measurementReminderSnooze": "{name} heeft een meetherinnering uitgesteld", + "labResultUpdate": "{name} heeft een labuitslag gewijzigd", + "labResultDelete": "{name} heeft een labuitslag verwijderd", + "labResultRestore": "{name} heeft een labuitslag hersteld", + "biomarkerUpdate": "{name} heeft een biomarker gewijzigd", + "biomarkerDelete": "{name} heeft een biomarker verwijderd", + "allergyUpdate": "{name} heeft een allergie gewijzigd", + "allergyDelete": "{name} heeft een allergie verwijderd", + "familyHistoryUpdate": "{name} heeft een registratie in de familiegeschiedenis gewijzigd", + "familyHistoryDelete": "{name} heeft een registratie in de familiegeschiedenis verwijderd", + "illnessEpisodeUpdate": "{name} heeft een ziekteregistratie gewijzigd", + "illnessEpisodeDelete": "{name} heeft een ziekteregistratie verwijderd", + "illnessEpisodeResolve": "{name} heeft een ziekte als voorbij gemarkeerd", + "illnessEpisodeRestore": "{name} heeft een ziekteregistratie hersteld", + "encounterVisitCreate": "{name} heeft een bezoek toegevoegd", + "encounterVisitUpdate": "{name} heeft een bezoek bewerkt", + "encounterVisitDelete": "{name} heeft een bezoek verwijderd", + "encounterVisitRestore": "{name} heeft een bezoek hersteld", + "vaccinationRecordCreate": "{name} heeft een vaccinatie toegevoegd", + "vaccinationRecordUpdate": "{name} heeft een vaccinatie bewerkt", + "vaccinationRecordDelete": "{name} heeft een vaccinatie verwijderd", + "vaccinationRecordRestore": "{name} heeft een vaccinatie hersteld", + "practitionerContactCreate": "{name} heeft een praktijk aan het adresboek toegevoegd", + "practitionerContactUpdate": "{name} heeft een item in het adresboek bewerkt", + "practitionerContactDelete": "{name} heeft een item uit het adresboek verwijderd", + "practitionerContactRestore": "{name} heeft een item in het adresboek hersteld", + "illnessDayLogUpsert": "{name} heeft een ziektedag vastgelegd", + "medicationUpdate": "{name} heeft een medicijn gewijzigd", + "medicationDelete": "{name} heeft een medicijn verwijderd", + "medicationGlp1Update": "{name} heeft een GLP-1-kuur gewijzigd", + "medicationScheduleCreate": "{name} heeft een doseerschema toegevoegd", + "medicationScheduleUpdate": "{name} heeft een doseerschema gewijzigd", + "medicationScheduleDelete": "{name} heeft een doseerschema verwijderd", + "medicationInventoryCreate": "{name} heeft een medicatieverpakking toegevoegd", + "medicationInventoryUpdate": "{name} heeft een medicatieverpakking gewijzigd", + "medicationInventoryDelete": "{name} heeft een medicatieverpakking verwijderd", + "medicationSideEffectDelete": "{name} heeft een bijwerking verwijderd", + "medicationIntakeUpdate": "{name} heeft een dosis gewijzigd", + "medicationIntakeDelete": "{name} heeft een dosis verwijderd", + "medicationIntakeBulkDelete": "{name} heeft meerdere doses tegelijk verwijderd", + "medicationIntakePurge": "{name} heeft de volledige dosisgeschiedenis van een medicijn verwijderd", + "medicationIntakeImport": "{name} is een dosisimport voor één medicijn gestart", + "medicationIntakeHistoryImport": "{name} is een import van de dosisgeschiedenis gestart", + "moodEntryCreate": "{name} heeft een stemmingsregistratie toegevoegd", + "moodEntryUpdate": "{name} heeft een stemmingsregistratie gewijzigd", + "moodEntryDelete": "{name} heeft een stemmingsregistratie verwijderd", + "moodDeleteBulk": "{name} heeft meerdere stemmingsregistraties tegelijk verwijderd", + "moodRestore": "{name} heeft een stemmingsregistratie hersteld", + "mentalHealthCreate": "{name} heeft een vragenlijstresultaat vastgelegd", + "cycleDelete": "{name} heeft een cyclus verwijderd", + "cycleDayLogUpsert": "{name} heeft een cyclusdag vastgelegd", + "cycleDayLogUpdate": "{name} heeft een cyclusdag gewijzigd", + "cycleDayLogDelete": "{name} heeft een cyclusdag verwijderd", + "cyclePeriodBoundary": "{name} heeft het begin of einde van een menstruatie gewijzigd", + "cycleSymptomCreate": "{name} heeft een cyclussymptoom toegevoegd", + "nutrientWaterWrite": "{name} heeft waterinname vastgelegd", + "healthRecordExport": "{name} heeft het dossier geëxporteerd", + "rejectedMeasurementQuery": "{name} heeft een zoekopdracht naar metingen gestuurd die dit dossier niet kon lezen", + "rejectedDoseQuery": "{name} heeft een zoekopdracht naar doses gestuurd die dit dossier niet kon lezen", + "rejectedMoodQuery": "{name} heeft een zoekopdracht naar stemmingen gestuurd die dit dossier niet kon lezen", + "rejectedMeasurementCreate": "{name} probeerde een meting toe te voegen, maar dat werd geweigerd", + "rejectedMeasurementBatch": "{name} probeerde meerdere metingen toe te voegen, maar dat werd geweigerd", + "rejectedMeasurementUpdate": "{name} probeerde een meting te wijzigen, maar dat werd geweigerd", + "rejectedLabCreate": "{name} probeerde een labuitslag toe te voegen, maar dat werd geweigerd", + "rejectedLabUpdate": "{name} probeerde een labuitslag te wijzigen, maar dat werd geweigerd", + "rejectedBiomarkerCreate": "{name} probeerde een biomarker toe te voegen, maar dat werd geweigerd", + "rejectedBiomarkerUpdate": "{name} probeerde een biomarker te wijzigen, maar dat werd geweigerd", + "rejectedReminderCreate": "{name} probeerde een meetherinnering toe te voegen, maar dat werd geweigerd", + "rejectedReminderUpdate": "{name} probeerde een meetherinnering te wijzigen, maar dat werd geweigerd", + "rejectedMoodCreate": "{name} probeerde een stemmingsregistratie toe te voegen, maar dat werd geweigerd", + "rejectedMoodUpdate": "{name} probeerde een stemmingsregistratie te wijzigen, maar dat werd geweigerd", + "rejectedDoseCreate": "{name} probeerde een dosis vast te leggen, maar dat werd geweigerd", + "rejectedDoseUpdate": "{name} probeerde een dosis te wijzigen, maar dat werd geweigerd", + "rejectedDoseImport": "{name} probeerde doses te importeren, maar dat werd geweigerd", + "rejectedTrackedValue": "{name} probeerde een bijgehouden waarde vast te leggen, maar dat werd geweigerd", + "deniedDoseImport": "Een dosisimport die {name} had gestart, kon niet in de wachtrij worden gezet", + "anamnesisFactCreate": "{name} heeft een gegeven aan de gezondheidsachtergrond toegevoegd", + "customMetricCreate": "{name} heeft een type bijgehouden waarde toegevoegd", + "customMetricUpdate": "{name} heeft een type bijgehouden waarde gewijzigd", + "customMetricDelete": "{name} heeft een type bijgehouden waarde verwijderd", + "documentStore": "{name} heeft een document toegevoegd", + "documentUpdate": "{name} heeft een document gewijzigd", + "documentDiscard": "{name} heeft een document weggegooid", + "medicationIntakeImportFinished": "De dosisimport die {name} had gestart, is voltooid", + "medicationOneShotReconciled": "Een eenmalig medicijn is geopend of afgesloten na een dosis die {name} had vastgelegd", + "vaccinationBoosterPlanned": "{name} heeft een booster gepland", + "medicationCategoryCreate": "{name} heeft een medicatiecategorie toegevoegd", + "symptomEventCreate": "{name} heeft een symptoom vastgelegd", + "symptomEventUpdate": "{name} heeft een symptoomregistratie bewerkt", + "symptomEventDelete": "{name} heeft een symptoomregistratie verwijderd", + "symptomDefinitionCreate": "{name} heeft een symptoom toegevoegd", + "symptomDefinitionUpdate": "{name} heeft een symptoom gewijzigd", + "symptomDefinitionDelete": "{name} heeft een symptoom verwijderd", + "customVaccineCreate": "{name} heeft een eigen vaccin toegevoegd", + "customVaccineUpdate": "{name} heeft een eigen vaccin bewerkt", + "customVaccineDelete": "{name} heeft een eigen vaccin verwijderd", + "lifeEventCreate": "{name} heeft een levensgebeurtenis toegevoegd", + "lifeEventUpdate": "{name} heeft een levensgebeurtenis gewijzigd", + "lifeEventDelete": "{name} heeft een levensgebeurtenis verwijderd", + "biomarkerMerge": "{name} heeft biomarkers samengevoegd", + "medicationIngredientsUpdate": "{name} heeft de samenstelling van een supplement gewijzigd", + "auditCCreate": "{name} heeft de AUDIT-C-vragen beantwoord", + "auditCDelete": "{name} heeft een AUDIT-C-registratie verwijderd" + }, + "section": { + "measurements": { + "label": "Metingen", + "detail": "Gewicht, bloeddruk, hartslag, glucose, slaap, trainingen en de waarden die je bijhoudt." + }, + "medications": { + "label": "Medicatie", + "detail": "De medicatielijst, de schema's, de ingenomen doses, bijwerkingen en voorraad." + }, + "labs": { + "label": "Labuitslagen", + "detail": "Labuitslagen en de lijst met labwaarden waarop ze gebaseerd zijn." + }, + "profile": { + "label": "Gezondheidsachtergrond", + "detail": "Allergieën, familiegeschiedenis, de gegevens in je gezondheidsprofiel, je bezoeken en praktijken, en je vaccinatieoverzicht." + }, + "illness": { + "label": "Ziekte", + "detail": "Ziekte-episodes en de dagregistraties die daarbij horen." + }, + "mind": { + "label": "Stemming en mentale gezondheid", + "detail": "Stemmingsregistraties en de geschiedenis van de vragenlijsten over mentale gezondheid. Een ingevulde vragenlijst slaat de totaalscore ook op als meting." + }, + "cycle": { + "label": "Cyclus", + "detail": "Cyclustracking." + }, + "documents": { + "label": "Documenten", + "detail": "Alles wat in de documentenkluis is opgeslagen." + } + }, + "actionError": { + "retry": "Opnieuw proberen", + "offline": "Dit heeft de server niet bereikt. Er is niets gewijzigd. Controleer je verbinding en probeer het opnieuw.", + "rateLimited": "Te veel pogingen achter elkaar. Wacht een minuut en probeer het opnieuw.", + "acceptExpired": "Die uitnodiging is verlopen. Vraag om een nieuwe.", + "acceptWithdrawn": "Die uitnodiging is ingetrokken.", + "acceptNotPending": "Die uitnodiging is al geaccepteerd.", + "acceptNotFound": "Die uitnodiging bestaat niet meer.", + "acceptFailed": "De uitnodiging kon niet worden geaccepteerd.", + "lastGuardian": "Dit is de enige persoon die voor dat profiel zorgt, dus deze toegang kan nog niet worden beëindigd. Voeg eerst een andere verzorger toe of verwijder het profiel.", + "alreadyEnded": "Die toegang is al beëindigd.", + "notFound": "Die toegang bestaat niet meer.", + "revokeFailed": "De toegang kon niet worden beëindigd.", + "renounceFailed": "De toegang kon niet worden teruggegeven.", + "profileNotFound": "Dat profiel bestaat niet meer. Mogelijk is het al verwijderd of is je toegang ertoe beëindigd.", + "deleteProfileFailed": "Het profiel kon niet worden verwijderd.", + "removeGuardianFailed": "Die toegang kon niet worden beëindigd." + }, + "anamnesis": { + "relativeNote": "Een registratie in de familiegeschiedenis beschrijft familieleden van deze persoon. Voeg die alleen toe als zij zouden willen dat het hier wordt vastgelegd." + }, + "handoverDecision": { + "title": "Wie toegang houdt tot je dossier", + "description": "Bepaal wat de mensen die voor je dossier hebben gezorgd voortaan mogen doen.", + "proposed": "Voorgesteld: {access}", + "settled": "Al gewijzigd onder Gedeelde toegang", + "empty": "Niemand anders had toegang tot je dossier.", + "later": "Je kunt dit altijd wijzigen onder Instellingen, Gedeelde toegang.", + "save": "Bevestigen", + "saving": "Opslaan…", + "decideLater": "Later", + "errorFailed": "Je beslissing kon niet worden opgeslagen. Probeer het opnieuw.", + "loadError": "Je voormalige verzorgers konden niet worden geladen.", + "notificationsTitle": "Stel je eigen herinneringen in", + "notificationsBody": "Herinneringen voor dit dossier gingen tot nu toe naar de mensen die ervoor zorgden. Vanaf nu gaan ze naar jou, zodra je een meldingskanaal toevoegt.", + "notificationsAction": "Meldingsinstellingen openen" + } + }, + "encounters": { + "kind": { + "routine": "Routinebezoek", + "acute": "Acuut bezoek", + "specialist": "Bezoek aan specialist", + "preventive": "Preventieve controle", + "emergency": "Spoedgeval", + "hospital": "Ziekenhuis", + "therapy": "Therapiesessie", + "other": "Afspraak", + "procedure": "Ingreep of operatie" + }, + "laterality": { + "left": "Links", + "right": "Rechts", + "both": "Beide zijden", + "none": "Niet vermeld" + }, + "bodySiteWithSide": "{site} ({side})", + "sectionTitle": "Bezoeken", + "sectionDescription": "Doktersbezoeken en geplande afspraken op één plek.", + "add": "Bezoek", + "loadError": "Bezoeken konden niet worden geladen.", + "emptyTitle": "Nog geen bezoek vastgelegd", + "emptyDescription": "Een datum is genoeg. Al het andere is optioneel.", + "upcomingHeading": "Gepland", + "pastHeading": "Eerder", + "createTitle": "Bezoek vastleggen", + "editTitle": "Bezoek bewerken", + "formDescription": "Alleen de datum is verplicht.", + "created": "Bezoek opgeslagen", + "updated": "Bezoek bijgewerkt", + "saveFailed": "Het bezoek kon niet worden opgeslagen.", + "checkupNotClosed": "Bezoek opgeslagen. De controle blijft openstaan, omdat je toegang daar niet voor geldt.", + "status": { + "planned": "Gepland", + "done": "Bijgewoond", + "cancelled": "Geannuleerd", + "noShow": "Gemist" + }, + "card": { + "documentCount": "gekoppelde documenten", + "labCount": "gekoppelde labuitslagen", + "conditionCount": "gekoppelde aandoeningen" + }, + "form": { + "date": "Datum en tijd", + "dateDerivesStatusHint": "Een datum in de toekomst is een geplande afspraak.", + "status": "Status", + "practitioner": "Praktijk of arts", + "practitionerHint": "Optioneel: je kunt de naam later toevoegen.", + "practitionerNone": "Niet opgegeven", + "practitionerSearch": "Zoek op naam of praktijk", + "practitionerNoMatch": "Geen vermelding gevonden.", + "practitionerAdd": "Nieuwe toevoegen", + "practitionerClear": "Selectie wissen", + "kind": "Soort", + "reason": "Reden", + "outcome": "Uitkomst", + "outcomeReveal": "Uitkomst toevoegen", + "bodySite": "Lichaamsdeel", + "bodySiteHint": "Bijvoorbeeld knie of galblaas.", + "laterality": "Zijde", + "linkDocuments": "Documenten", + "linkLabResults": "Labuitslagen", + "linkConditions": "Aandoeningen", + "linkNothingToOffer": "Nog niets om te koppelen." + }, + "deleteTitle": "Dit bezoek verwijderen?", + "deleteDescription": "De registratie wordt verwijderd. Als het bezoek gepland is, stopt ook de bijbehorende herinnering.", + "deleteFailed": "Het bezoek kon niet worden verwijderd.", + "suggestion": { + "single": "Hoort dit bij dit bezoek?", + "choose": "Bij welk bezoek hoort dit?" + }, + "episodeCard": { + "title": "Bezoeken hierover", + "emptyLine": "Nog geen bezoek aan deze aandoening gekoppeld.", + "add": "Bezoek toevoegen" + }, + "dashboard": { + "nextVisit": "Volgende afspraak: {what} op {when}" + }, + "procedures": { + "title": "Ingrepen en operaties", + "description": "Alle ingrepen en operaties die je hebt gehad, nieuwste eerst.", + "add": "Ingreep", + "searchLabel": "Filteren op lichaamsdeel", + "searchPlaceholder": "Bijvoorbeeld knie", + "sitesLabel": "Lichaamsdelen", + "allSites": "Alle", + "count": "{shown} van {total}", + "emptyTitle": "Nog geen ingreep vastgelegd", + "emptyDescription": "Leg een bezoek vast met de soort Ingreep of operatie, of zet een bestaand bezoek op die soort.", + "noMatchTitle": "Niets komt overeen met dit filter", + "clearFilter": "Filter wissen", + "loadError": "Ingrepen konden niet worden geladen." + } + }, + "checkups": { + "viewSwitchLabel": "Controles, bezoeken, ingrepen of lichaamsdelen tonen", + "tabVorsorge": "Controles", + "tabVisits": "Bezoeken", + "tabProcedures": "Ingrepen", + "tabBodySites": "Lichaamsdelen" + }, + "practitioners": { + "title": "Praktijken en artsen", + "description": "Je eigen adresboek: voer een praktijk één keer in en kies hem overal.", + "linkLabel": "Adresboek", + "searchPlaceholder": "Zoek op naam, praktijk of specialisme", + "loadError": "Het adresboek kon niet worden geladen.", + "emptyTitle": "Nog geen vermelding", + "emptyDescription": "Voeg een praktijk toe, zodat je die kunt kiezen wanneer je een bezoek vastlegt.", + "noMatchTitle": "Geen resultaat", + "noMatchDescription": "Geen vermelding komt overeen met deze zoekopdracht.", + "createTitle": "Vermelding toevoegen", + "editTitle": "Vermelding bewerken", + "formDescription": "Alleen de naam is verplicht.", + "name": "Naam", + "specialty": "Specialisme", + "practice": "Praktijk", + "location": "Adres", + "phone": "Telefoon", + "note": "Notitie", + "noteHint": "Wordt versleuteld opgeslagen.", + "saveFailed": "De vermelding kon niet worden opgeslagen.", + "deleteTitle": "Deze vermelding verwijderen?", + "deleteDescription": "Je bestaande bezoeken blijven bestaan en houden deze naam.", + "deleteFailed": "De vermelding kon niet worden verwijderd.", + "noSpecialtyGroup": "Geen specialisme" + }, + "links": { + "picker": { + "add": "Toevoegen", + "done": "Klaar", + "selectAll": "Alles selecteren", + "searchPlaceholder": "Zoeken", + "searchNoMatch": "Geen resultaat", + "suggested": "Rond deze datum", + "loadError": "De lijst kon niet worden geladen.", + "removeNamed": "{name} verwijderen", + "removed": "{name} ontkoppeld", + "linked": "Gekoppeld", + "loadNewer": "Nieuwere laden", + "loadOlder": "Oudere laden", + "period": { + "showing": "Weergave: {period}" + } + }, + "related": { + "title": "Gerelateerd", + "kind": { + "labResult": "Labuitslag", + "encounter": "Bezoek", + "document": "Document", + "conditionEpisode": "Aandoening", + "medication": "Medicatie", + "vaccination": "Vaccinatie" + }, + "via": { + "encounter": "via een bezoek", + "efficacyTarget": "via het werkzaamheidsdoel" + }, + "pick": { + "conditionEpisode": "Aandoeningen", + "document": "Documenten", + "encounter": "Bezoeken", + "medication": "Medicatie", + "vaccination": "Vaccinaties" + }, + "nothingToOffer": "Nog niets om te koppelen.", + "saveError": "De koppeling kon niet worden opgeslagen." + } + }, + "bodySites": { + "title": "Lichaamsdelen", + "description": "Ingrepen en aandoeningen, geordend naar de plek op het lichaam.", + "loadError": "Lichaamsdelen konden niet worden geladen.", + "emptyTitle": "Nog geen lichaamsdeel vastgelegd", + "emptyDescription": "Voeg een lichaamsdeel toe aan een ingreep of aandoening, dan verschijnt het hier.", + "sitesLabel": "Lichaamsdelen", + "sidesLabel": "Zijde", + "allSides": "Alle zijden", + "pickPrompt": "Kies een lichaamsdeel om te zien wat daar is vastgelegd.", + "noMatchTitle": "Niets vastgelegd aan deze zijde", + "visitsTitle": "Ingrepen en bezoeken", + "conditionsTitle": "Aandoeningen", + "hiddenDocument": "Een document dat niet met je is gedeeld", + "hiddenLabResult": "Een labuitslag die niet met je is gedeeld", + "hiddenCondition": "Een aandoening die niet met je is gedeeld", + "hiddenVisit": "Een bezoek dat niet met je is gedeeld", + "linkedLabel": "Gekoppelde gegevens", + "conditionSince": "Sinds {onset}", + "conditionDates": "{onset} tot {resolved}" + }, + "aiRuns": { + "backgroundDocument": "Wordt op de achtergrond gelezen. Je kunt deze pagina verlaten; het resultaat wordt bij het document opgeslagen.", + "backgroundScan": "Wordt op de achtergrond gelezen. Met een traag model kan dit een paar minuten duren.", + "waitingForWorker": "Wachten op het achtergrondproces. Als dit niet verandert, draait het achtergrondproces van de server mogelijk niet.", + "errorWorkerUnavailable": "Het achtergrondproces is op dit moment niet beschikbaar. Probeer het zo opnieuw, of vraag de beheerder van de server om het te controleren.", + "errorTimedOut": "Het lezen duurde langer dan je ingestelde AI-responstijd toestaat. Probeer het opnieuw, of verhoog de responstijd in de AI-instellingen." + }, + "symptoms": { + "add": "Nieuw symptoom", + "nameLabel": "Naam", + "namePlaceholder": "bijv. aura", + "iconLabel": "Pictogram", + "icons": { + "Tag": "Label", + "Activity": "Activiteit", + "Heart": "Hart", + "HeartPulse": "Hartslag", + "Brain": "Hersenen", + "Zap": "Bliksem", + "Flame": "Vlam", + "Snowflake": "Sneeuwvlok", + "Droplet": "Druppel", + "CircleDot": "Stip", + "BatteryLow": "Bijna lege batterij", + "MoonStar": "Maan en ster", + "PersonStanding": "Persoon", + "Drama": "Maskers", + "Frown": "Fronsend gezicht", + "Cookie": "Koekje", + "Soup": "Soep", + "Pill": "Pil", + "Thermometer": "Thermometer", + "Stethoscope": "Stethoscoop" + }, + "limitReached": "Je hebt 8 symptomen. Verberg er een om een nieuw symptoom toe te voegen.", + "saveError": "Het symptoom kon niet worden opgeslagen. Probeer het opnieuw.", + "nameRequired": "Geef het symptoom een naam.", + "unreadableLabel": "Onleesbaar symptoom", + "intensityPill": "{value}/10", + "entry": { + "sheetDescription": "Een van je eigen symptomen: hoe sterk en wanneer.", + "symptom": "Symptoom", + "symptomRequired": "Kies een symptoom.", + "intensity": "Intensiteit", + "intensityRequired": "Geef aan hoe sterk het was.", + "intensityUnset": "Niet ingesteld", + "anchorLow": "Geen", + "anchorHigh": "Ergst denkbaar", + "intensityValueText": "{value} van {max} ({low} tot {high})", + "when": "Wanneer", + "during": "Tijdens een ziekte", + "duringNone": "Niet gekoppeld", + "note": "Notitie", + "notePlaceholder": "Wat speelde er verder?", + "reset": "Formulier leegmaken", + "emptyHint": "Voeg je eerste symptoom toe, bijvoorbeeld aura of hoofdpijn.", + "emptyHintNoManage": "Voor dit dossier zijn nog geen symptomen ingesteld.", + "limitHint": "Maximaal {limit} symptomen. Verberg er een op de ziektepagina om een ander toe te voegen." + }, + "section": { + "title": "Je symptomen", + "log": "Vastleggen", + "loadError": "Je symptomen konden niet worden geladen.", + "summaryOne": "Eén keer in 30 dagen, {max}/10, laatst op {date}", + "summaryFew": "{count} keer in 30 dagen, tot {max}/10, laatst op {date}", + "summaryOther": "{count} keer in 30 dagen, tot {max}/10, laatst op {date}", + "summaryNoneRecent": "Niet in de afgelopen 30 dagen, laatst op {date}", + "summaryNever": "Nog niet vastgelegd", + "menuLabel": "Opties voor {symptom}", + "eventMenuLabel": "Opties voor deze registratie van {symptom}", + "hide": "Verbergen", + "show": "Weer tonen", + "deleteTitle": "Symptoom verwijderen?", + "deleteBody": "\"{symptom}\" en alle registraties ervan worden verwijderd. Wil je de geschiedenis bewaren, verberg het symptoom dan.", + "deleteEventTitle": "Registratie verwijderen?", + "deleteEventBody": "Deze registratie wordt verwijderd.", + "hiddenOne": "Verborgen (1)", + "hiddenFew": "Verborgen ({count})", + "hiddenOther": "Verborgen ({count})", + "recent": "Afgelopen 30 dagen", + "recentEmpty": "Niets vastgelegd in de afgelopen 30 dagen.", + "editEventTitle": "{symptom} bewerken", + "editSymptomTitle": "Symptoom bewerken" + }, + "episode": { + "title": "Vastgelegde symptomen", + "during": "tijdens {illness}" + } + }, + "day": { + "scoreOfMax": "van {max}", + "cycleDay": "Cyclusdag {n}", + "cyclePhaseLine": { + "MENSTRUAL": "Cyclusdag {n}, menstruatiefase", + "FOLLICULAR": "Cyclusdag {n}, folliculaire fase", + "OVULATORY": "Cyclusdag {n}, ovulatiefase", + "LUTEAL": "Cyclusdag {n}, luteale fase" + }, + "previousDay": "Vorige dag", + "nextDay": "Volgende dag", + "close": "Dag sluiten", + "hidePanel": "Dag verbergen", + "showPanel": "{date} tonen", + "openDay": "Dag openen", + "viewWholeDay": "Hele dag bekijken", + "captureForDay": "Toevoegen voor deze dag", + "empty": "Er zijn geen registraties voor deze dag.", + "notShared": "Sommige onderdelen zijn niet met je gedeeld.", + "inTimeline": "In de tijdlijn", + "askCoach": "Vraag de Coach naar deze dag", + "loadFailed": "Deze dag kon niet worden geladen.", + "dayOf": "Dag {n} van {m}", + "dayN": "Dag {n}", + "usualRange": "Meestal {lo} tot {hi}", + "groups": { + "scores": "Scores", + "running": "Lopend op die dag", + "values": "Waarden", + "happened": "Wat er gebeurde", + "movement": "Onderweg" + }, + "notable": { + "extremeHigh": "Hoogste dagwaarde sinds {since}", + "extremeLow": "Laagste dagwaarde sinds {since}", + "firstValue": "Eerste meting van deze soort", + "gap": "{days} dagen geen meting" + }, + "previousDayShortcut": "Vorige dag (Alt + pijl-links)", + "nextDayShortcut": "Volgende dag (Alt + pijl-rechts)", + "captureShort": "Vastleggen", + "inTimelineShort": "Tijdlijn", + "askCoachPrompt": "Wat gebeurde er op {date}?", + "coachChips": "Dagen in dit antwoord", + "description": "Alles wat je dossier over deze dag bevat.", + "openDocument": "Document openen", + "previousReading": "Eerder, {date}", + "sheetExpand": "Uitklappen tot volledige hoogte", + "sheetShrink": "Verkleinen", + "valuesLegend": "Stip voor deze dag, balk voor de 30 dagen ervoor", + "valuesAllOne": "Alle waarden", + "valuesAllFew": "Alle {count} waarden", + "valuesAllOther": "Alle {count} waarden", + "valuesFewer": "Minder waarden", + "countEntriesOne": "1 registratie", + "countEntriesFew": "{count} registraties", + "countEntriesOther": "{count} registraties", + "meanOfReadingsOne": "Gemiddelde van 1 meting", + "meanOfReadingsFew": "Gemiddelde van {count} metingen", + "meanOfReadingsOther": "Gemiddelde van {count} metingen", + "sinceLastVisit": { + "title": "Sinds het laatste bezoek op {date}", + "countOne": "1 registratie", + "countFew": "{count} registraties", + "countOther": "{count} registraties", + "allOne": "Alles tonen", + "allFew": "Alle {count} tonen", + "allOther": "Alle {count} tonen", + "fewer": "Minder tonen", + "note": "Samengesteld uit je registraties, zonder oordeel. Elke datum opent de hele dag.", + "report": "Artsenrapport van {date} tot vandaag" + }, + "travel": "Op reis", + "event": { + "started": "{label} gestart", + "ended": "{label} beëindigd", + "paused": "{label} gepauzeerd", + "resumed": "{label} hervat", + "illnessBegan": "{label} begonnen", + "illnessResolved": "{label} voorbij" + }, + "pickDate": "Kies een datum", + "pickerTitle": "Naar een dag gaan", + "today": "Vandaag", + "hasEntries": "heeft registraties", + "dayNSince": "Dag {n}, sinds {date}", + "sinceDate": "Sinds {date}", + "movement": { + "total": "Afstand", + "driving": "Met de auto", + "train": "Met de trein", + "places": "Bezochte plaatsen", + "away": "Van huis", + "travel": "Reisdag", + "travelYes": "Ja", + "kilometres": "{value} km", + "miles": "{value} mi" + } + }, + "timeline": { + "title": "Tijdlijn", + "subtitle": "Wat er wanneer gebeurde, naast je waarden.", + "standing": "Lopend", + "startUnknown": "begin onbekend", + "zoom": { + "all": "Alles", + "year": "12 maanden", + "quarter": "3 maanden", + "range": "Periode" + }, + "lanes": { + "life": "Leven", + "illness": "Aandoeningen", + "allergies": "Allergieën", + "medications": "Medicatie", + "vaccinations": "Vaccinaties", + "visits": "Arts en ingrepen", + "labs": "Lab", + "documents": "Documenten", + "cycle": "Cyclus" + }, + "readiness": { + "title": "Wat je tijdlijn al te bieden heeft", + "subtitle": "Een eerlijke inventaris voordat je hem opent.", + "menuEntry": "Gegevensdekking", + "hint": "Lege rijen blijven verborgen tot er iets in staat. Modules die je hebt uitgeschakeld, verschijnen nooit. Je vindt dit overzicht later onder Gegevensdekking in de tijdlijn.", + "later": "Later", + "open": "Tijdlijn openen", + "verdict": { + "carries": "Er staat al genoeg in.", + "thin": "Nog mager. Voorlopig toont de tijdlijn vooral je waarden." + }, + "status": { + "carries": "voldoende", + "thin": "mager", + "empty": "leeg" + }, + "lanes": { + "values": "Waarden", + "mood": "Stemming", + "environment": "Omgeving", + "life": "Levensgebeurtenissen" + }, + "meter": "{carrying} van {total} rijen voldoende gevuld", + "carriesDetail": "{carrying} van {total} rijen geven een overzicht vanaf {since}.", + "loadFailed": "De inventaris kon niet worden geladen.", + "card": { + "title": "Wat de tijdlijn al te bieden heeft", + "summary": "Hij reikt terug tot {since}; {carrying} van {total} rijen zijn al voldoende gevuld.", + "dismiss": "Verbergen" + }, + "detail": { + "valuesOne": "{count} soort meting sinds {since}", + "valuesFew": "{count} soorten metingen sinds {since}", + "valuesOther": "{count} soorten metingen sinds {since}", + "illnessOne": "{count} episode, waarvan {chronic} chronisch", + "illnessFew": "{count} episodes, waarvan {chronic} chronisch", + "illnessOther": "{count} episodes, waarvan {chronic} chronisch", + "allergiesOne": "{count} allergie", + "allergiesFew": "{count} allergieën", + "allergiesOther": "{count} allergieën", + "medicationsOne": "{count} medicijn, {missingStart} zonder startdatum", + "medicationsFew": "{count} medicijnen, {missingStart} zonder startdatum", + "medicationsOther": "{count} medicijnen, {missingStart} zonder startdatum", + "medicationsDatedOne": "{count} medicijn met een startdatum", + "medicationsDatedFew": "{count} medicijnen met een startdatum", + "medicationsDatedOther": "{count} medicijnen met een startdatum", + "vaccinationsOne": "{count} vaccinatie", + "vaccinationsFew": "{count} vaccinaties", + "vaccinationsOther": "{count} vaccinaties", + "visitsOne": "{count} bezoek, {procedures} met een ingreep", + "visitsFew": "{count} bezoeken, {procedures} met een ingreep", + "visitsOther": "{count} bezoeken, {procedures} met een ingreep", + "visitsPlannedOne": "{count} bezoek, alleen gepland", + "visitsPlannedFew": "{count} bezoeken, alleen gepland", + "visitsPlannedOther": "{count} bezoeken, alleen gepland", + "labsOne": "{count} dag met uitslagen", + "labsFew": "{count} dagen met uitslagen", + "labsOther": "{count} dagen met uitslagen", + "documentsOne": "{count} gedateerd document", + "documentsFew": "{count} gedateerde documenten", + "documentsOther": "{count} gedateerde documenten", + "lifeOne": "{count} levensgebeurtenis", + "lifeFew": "{count} levensgebeurtenissen", + "lifeOther": "{count} levensgebeurtenissen", + "cycleOne": "{count} cyclus", + "cycleFew": "{count} cycli", + "cycleOther": "{count} cycli", + "moodOne": "{count} registratie sinds {since}", + "moodFew": "{count} registraties sinds {since}", + "moodOther": "{count} registraties sinds {since}", + "environmentOne": "{count} dag met omgevingsgegevens", + "environmentFew": "{count} dagen met omgevingsgegevens", + "environmentOther": "{count} dagen met omgevingsgegevens", + "empty": "Nog geen" + }, + "gap": { + "valuesEmpty": "Bronnen koppelen", + "illnessEmpty": "Episode toevoegen", + "medicationsWithoutStart": "Aanvullen", + "visitsEmpty": "Bezoek toevoegen", + "documentsUndated": "Controleren", + "labsEmpty": "Uitslag toevoegen", + "vaccinationsEmpty": "Vaccinaties toevoegen", + "lifeEventsEmpty": "Toevoegen" + }, + "gapLine": { + "medicationsWithoutStartOne": "{count} medicijn zonder startdatum", + "medicationsWithoutStartFew": "{count} medicijnen zonder startdatum", + "medicationsWithoutStartOther": "{count} medicijnen zonder startdatum", + "documentsUndatedOne": "{count} document zonder datum", + "documentsUndatedFew": "{count} documenten zonder datum", + "documentsUndatedOther": "{count} documenten zonder datum", + "valuesEmpty": "Nog geen waarden over een langere periode", + "illnessEmpty": "Nog geen aandoeningen met een startdatum", + "visitsEmpty": "Nog geen afgeronde doktersbezoeken", + "labsEmpty": "Nog geen labuitslagen", + "vaccinationsEmpty": "Nog geen vaccinaties", + "lifeEventsEmpty": "Nog geen levensgebeurtenissen" + } + }, + "legendSpan": "Periode", + "legendEvent": "Gebeurtenis", + "legendMeanQuarter": "Kwartaalgemiddelde", + "legendMeanMonth": "Maandgemiddelde", + "legendMeanWeek": "Weekgemiddelde", + "legendThin": "Minder dan 3 metingen", + "legendGap": "Korte onderbreking zonder metingen", + "today": "Vandaag", + "noDataYet": "Nog geen gegevens", + "layers": "Lagen", + "layersLanes": "Rijen", + "zoomLabel": "Weergavebereik", + "chartLabel": "Tijdlijn van {from} tot {to}", + "keyboardHint": "Pijltjestoetsen verplaatsen de selectie, Home en End springen naar het begin of het einde, Enter opent de dag.", + "loadFailed": "De tijdlijn kon niet worden geladen.", + "empty": { + "title": "Nog niets op de tijdlijn", + "description": "Gedateerde registraties verschijnen hier zodra die er zijn." + }, + "values": { + "menuTitle": "Waarden onder de rijen", + "trigger": "Waarden ({count})", + "noneInWindow": "Geen waarden in deze periode", + "series": { + "BLOOD_PRESSURE_SYS": "Bloeddruk sys.", + "BLOOD_PRESSURE_DIA": "Bloeddruk dia." + }, + "noValue": "geen waarde", + "bloodPressure": "Bloeddruk", + "readingsOne": "1 meting", + "readingsFew": "gemiddelde van {count} metingen", + "readingsOther": "gemiddelde van {count} metingen" + }, + "table": { + "caption": "Registraties op de tijdlijn", + "lane": "Rij", + "entry": "Registratie", + "start": "Begin", + "end": "Einde", + "seriesCaption": "Gemiddelde waarden per periode", + "period": "Periode" + }, + "selection": { + "empty": "Geen registraties in deze periode", + "since": "sinds {date}", + "range": "{from} tot {to}", + "mean": "Ø {values}", + "week": "Week van {date}", + "hintClick": "Klik op een tijdstip om het hier te zien", + "hintTap": "Tik op een tijdstip om het hier te zien" + }, + "chronicle": { + "months": "Maanden", + "years": "Jaren", + "groupingLabel": "Groepering", + "empty": "Geen registraties van {from} tot {to}", + "emptySingle": "Geen registraties in {period}", + "ended": "{label} beëindigd", + "afterDaysOne": "na 1 dag", + "afterDaysFew": "na {count} dagen", + "afterDaysOther": "na {count} dagen", + "notable": { + "extremeHigh": "Hoogste waarde in lange tijd", + "extremeLow": "Laagste waarde in lange tijd", + "firstValue": "Eerste waarde van een soort meting", + "gap": "Een langere onderbreking in de waarden" + }, + "notableMeta": "Open de dag voor details" + }, + "standingAllergiesOne": "{count} allergie", + "standingAllergiesFew": "{count} allergieën", + "standingAllergiesOther": "{count} allergieën", + "legendMeanDay": "Daggemiddelde", + "range": { + "from": "Van", + "to": "Tot", + "label": "Gekozen periode", + "open": "Periode kiezen", + "clear": "Alles tonen", + "apply": "Toepassen" + }, + "item": { + "labValuesOne": "1 labwaarde", + "labValuesFew": "{count} labwaarden", + "labValuesOther": "{count} labwaarden" + } + }, + "lifeEvents": { + "title": "Levensgebeurtenis", + "add": "Levensgebeurtenis", + "privacy": "Titel en notitie worden versleuteld opgeslagen. Ze gaan naar geen enkele AI.", + "emptyHint": "Een verhuizing, een geboorte of een nieuwe baan geeft de jaren een ankerpunt.", + "save": "Opslaan", + "cancel": "Annuleren", + "delete": "Levensgebeurtenis verwijderen", + "saved": "Levensgebeurtenis opgeslagen", + "deleted": "Levensgebeurtenis verwijderd", + "fields": { + "title": "Wat is er gebeurd?", + "category": "Soort", + "when": "Wanneer", + "precision": "Nauwkeurigheid", + "addEnd": "Einddatum, als het een periode was", + "endDate": "Tot", + "note": "Notitie", + "optionalTag": "optioneel", + "notePlaceholder": "Iets wat je later wilt weten", + "removeEnd": "Einddatum verwijderen" + }, + "category": { + "FAMILY": "Gezin", + "HOME": "Wonen", + "WORK": "Werk", + "LOSS": "Verlies", + "OTHER": "Overig" + }, + "precision": { + "DAY": "Dag", + "MONTH": "Maand", + "YEAR": "Jaar" + }, + "edit": "Levensgebeurtenis bewerken", + "errors": { + "titleRequired": "Geef de gebeurtenis een naam.", + "titleTooLong": "Maximaal 120 tekens.", + "categoryRequired": "Kies een soort.", + "dateRequired": "Voer een geldige datum in.", + "endBeforeStart": "Het einde ligt vóór het begin.", + "noteTooLong": "Maximaal 2000 tekens." + }, + "saveFailed": "Opslaan is niet gelukt.", + "deleteFailed": "Verwijderen is niet gelukt.", + "deleteConfirm": { + "title": "Deze levensgebeurtenis verwijderen?", + "body": "De titel en notitie zijn dan weg." + } + }, + "palette": { + "title": "Zoeken", + "description": "Vind een pagina, instelling, module, actie of registratie in je dossier.", + "placeholder": "Zoek in pagina's, instellingen, je dossier…", + "results": "Resultaten", + "noResults": "Niets gevonden voor “{query}”.", + "moduleOn": "Aan", + "moduleOff": "Uit", + "hintMove": "Verplaatsen", + "hintOpen": "Openen", + "hintClose": "Sluiten", + "groups": { + "recent": "Recent", + "pages": "Pagina's", + "insights": "Inzichten", + "settings": "Instellingen", + "modules": "Modules", + "actions": "Acties", + "records": "In je dossier" + }, + "actions": { + "capture": "Nieuwe registratie", + "coach": "Vraag het de Coach", + "backup": "Back-up maken", + "today": "Vandaag openen", + "shortcuts": "Sneltoetsen tonen" + }, + "records": { + "loading": "Je dossier wordt doorzocht…", + "empty": "Niets in je dossier voor “{query}”.", + "error": "Je dossier kon niet worden doorzocht. Probeer het zo opnieuw.", + "truncated": "Alleen de meest recente registraties zijn doorzocht.", + "kind": { + "visit": "Bezoek", + "condition": "Aandoening", + "document": "Document", + "vaccination": "Vaccinatie", + "lab": "Labuitslag", + "medication": "Medicatie", + "symptom": "Symptoom", + "workout": "Training", + "note": "Notitie" + }, + "source": { + "mood": "Stemmingsnotitie", + "measurement": "Notitie bij een meting", + "illness": "Ziektedagboek" + } + } + }, + "shortcuts": { + "title": "Sneltoetsen", + "description": "Toetsen die overal in de app werken, behalve terwijl je in een veld typt.", + "menuEntry": "Sneltoetsen", + "then": "daarna", + "search": "Zoeken", + "help": "Deze lijst tonen", + "close": "Een dialoogvenster of paneel sluiten", + "previousDay": "Vorige dag", + "nextDay": "Volgende dag", + "toggleDay": "De dag openen of sluiten", + "dayHint": "Vorige en volgende dag werken terwijl een dag geopend is.", + "groups": { + "navigation": "Navigatie", + "actions": "Acties", + "day": "Dag" + } + }, + "aboutPage": { + "eyebrow": "Over", + "title": "Over HealthLog", + "lastUpdated": "Laatst bijgewerkt: {date}", + "project": "Project", + "credits": "Credits" + }, + "series": { + "reference": { + "targetUpper": "Je doel, bovengrens", + "targetLower": "Je doel, ondergrens", + "clinicalUpper": "Klinische bovengrens", + "clinicalLower": "Klinische ondergrens" + } + } +} diff --git a/scripts/generate-i18n-boot.mjs b/scripts/generate-i18n-boot.mjs index 16b565b37..37e8a17fd 100644 --- a/scripts/generate-i18n-boot.mjs +++ b/scripts/generate-i18n-boot.mjs @@ -28,7 +28,7 @@ const __dirname = dirname(fileURLToPath(import.meta.url)); const repoRoot = join(__dirname, ".."); const outDir = join(repoRoot, "public", "i18n"); -const LOCALES = ["de", "en", "fr", "es", "it", "pl", "ko"]; +const LOCALES = ["de", "en", "fr", "es", "it", "pl", "ko", "nl"]; mkdirSync(outDir, { recursive: true }); diff --git a/scripts/i18n-key-tool.mjs b/scripts/i18n-key-tool.mjs index e8fb2baa8..0e027eda9 100644 --- a/scripts/i18n-key-tool.mjs +++ b/scripts/i18n-key-tool.mjs @@ -11,7 +11,7 @@ */ import { readFileSync, writeFileSync } from "node:fs"; -const LOCALES = ["de", "en", "es", "fr", "it", "pl", "ko"]; +const LOCALES = ["de", "en", "es", "fr", "it", "pl", "ko", "nl"]; const file = (loc) => `messages/${loc}.json`; function read(loc) { diff --git a/scripts/split-description.mjs b/scripts/split-description.mjs index d26634386..0b5699a14 100644 --- a/scripts/split-description.mjs +++ b/scripts/split-description.mjs @@ -18,7 +18,7 @@ */ import { readFileSync, writeFileSync } from "node:fs"; -const LOCALES = ["de", "en", "es", "fr", "it", "pl", "ko"]; +const LOCALES = ["de", "en", "es", "fr", "it", "pl", "ko", "nl"]; const BOUNDARY = /(?<=[.!?])\s+(?=[A-ZÄÖÜÀÂÉÈÊÎÔÙÛÇŁŚŹŻĄĆĘŃÓ0-9„"„«])/u; /** diff --git a/src/__tests__/coach-voice-guard.test.ts b/src/__tests__/coach-voice-guard.test.ts index 2e2475681..a78f4f90c 100644 --- a/src/__tests__/coach-voice-guard.test.ts +++ b/src/__tests__/coach-voice-guard.test.ts @@ -25,7 +25,7 @@ import { gradeVoice } from "@/lib/ai/coach/eval/grade-voice"; import { DEFAULT_COACH_PREFS } from "@/lib/validations/coach-prefs"; import type { Locale } from "@/lib/i18n/config"; -const LOCALES: Locale[] = ["de", "en", "fr", "es", "it", "pl", "ko"]; +const LOCALES: Locale[] = ["de", "en", "fr", "es", "it", "pl", "ko", "nl"]; /** The rules a voice section must state; `[]` when it states them all. */ function missingVoiceRules(prompt: string, lang: "de" | "en"): string[] { diff --git a/src/__tests__/copy-matches-behaviour-guard.test.ts b/src/__tests__/copy-matches-behaviour-guard.test.ts index ef05f53da..70e5c2153 100644 --- a/src/__tests__/copy-matches-behaviour-guard.test.ts +++ b/src/__tests__/copy-matches-behaviour-guard.test.ts @@ -42,7 +42,7 @@ import { describe, expect, it } from "vitest"; import { consentNeededForProviders } from "@/lib/ai/capabilities/resolve"; const MESSAGES = join(__dirname, "../../messages"); -const LOCALES = ["de", "en", "es", "fr", "it", "pl", "ko"] as const; +const LOCALES = ["de", "en", "es", "fr", "it", "pl", "ko", "nl"] as const; function bundle(locale: string): Record { return JSON.parse(readFileSync(join(MESSAGES, `${locale}.json`), "utf8")); @@ -81,6 +81,7 @@ const FINALITY_PHRASES: Record = { ], pl: ["nie można cofnąć", "nie można tego cofnąć", "trwale", "nieodwracaln"], ko: ["되돌릴 수 없", "복구할 수 없", "영구", "완전히 삭제"], + nl: ["niet ongedaan", "definitief", "permanent", "onherroepelijk"], }; /** Per-locale phrase that promises the short undo window. */ @@ -92,6 +93,7 @@ const UNDO_PHRASES: Record = { it: "annullare", pl: "cofnąć", ko: "되돌릴 수 있", + nl: "ongedaan maken", }; /** Confirmation bodies whose surface renders an Undo affordance. */ @@ -176,6 +178,7 @@ describe("sleep debt is labelled as a balance, not a summed deficit", () => { it: ["cumulato", "cumulata", "accumulato", "deficit"], pl: ["skumulowan", "niedobór", "niedoboru"], ko: ["누적", "부족분", "적자", "쌓인"], + nl: ["cumulatief", "opgeteld", "tekort", "opgebouwd"], }; for (const locale of LOCALES) { @@ -302,6 +305,17 @@ describe("the mood prognosis never states a cause", () => { ], pl: ["ponieważ", "powoduje", "z powodu", "wywołuje", "poprawia twój"], ko: ["때문", "탓", "원인", "유발", "초래", "야기", "덕분", "인해"], + nl: [ + "omdat", + "veroorzaakt", + "leidt tot", + "zorgt voor", + "vanwege", + "verbetert je", + "verslechtert je", + "verlaagt je", + "verhoogt je", + ], }; /** Every leaf string under `insights.mood.prognosis`, flattened. */ @@ -401,6 +415,11 @@ describe("the MCP token copy never claims the mint is read-only", () => { it: ["token in sola lettura"], pl: ["token tylko do odczytu"], ko: ["읽기 전용 토큰", "읽기전용 토큰"], + nl: [ + "alleen-lezen token", + "alleen-lezentoken", + "token met alleen leesrechten", + ], }; for (const locale of LOCALES) { @@ -450,6 +469,7 @@ describe("AI consent withdrawal copy matches what withdrawing does", () => { it: ["tua chiave", "modello locale"], pl: ["własnym kluczu", "lokalnym modelu"], ko: ["자신의 키", "로컬 모델"], + nl: ["eigen sleutel", "lokaal model"], }; for (const locale of LOCALES) { diff --git a/src/__tests__/dynamic-key-exhaustiveness.test.ts b/src/__tests__/dynamic-key-exhaustiveness.test.ts index 337d49a7f..52d886c26 100644 --- a/src/__tests__/dynamic-key-exhaustiveness.test.ts +++ b/src/__tests__/dynamic-key-exhaustiveness.test.ts @@ -166,7 +166,7 @@ describe("dynamic-key exhaustiveness (enum-derived)", () => { expect(LOCALES.length).toBeGreaterThanOrEqual(6); }); - it("discovers all seven shipped locales", () => { + it("discovers all eight shipped locales", () => { expect(LOCALES.map((l) => l.locale).sort()).toEqual([ "de", "en", @@ -174,6 +174,7 @@ describe("dynamic-key exhaustiveness (enum-derived)", () => { "fr", "it", "ko", + "nl", "pl", ]); }); diff --git a/src/__tests__/i18n-english-leak-guard.test.ts b/src/__tests__/i18n-english-leak-guard.test.ts index dfd9cbdf4..451ab270f 100644 --- a/src/__tests__/i18n-english-leak-guard.test.ts +++ b/src/__tests__/i18n-english-leak-guard.test.ts @@ -33,7 +33,7 @@ const EN_PATH = join(MESSAGES_DIR, "en.json"); // intentionally excluded — it carries accepted anglicisms (e.g. "Health // Score") that would be noise here, and is covered by its own pinned checks in // `i18n-locale-integrity`. -const LEAK_LOCALES = ["es", "fr", "it", "pl", "ko"] as const; +const LEAK_LOCALES = ["es", "fr", "it", "pl", "ko", "nl"] as const; function flattenValues( obj: unknown, @@ -209,6 +209,16 @@ const LEGIT_IDENTICAL = new Set([ "settings.nightscoutUrl", "admin.aiServerKey.baseUrlLabel", "admin.webPushVapidSubject", + // Dutch spells these exactly as English does: "In bed" and "capsule(s)" are + // ordinary Dutch, and the clinical index names and the fatty-acid + // abbreviations are written in their international form. + "mood.dayContext.linkedInBed", + "insights.sleep.stages.inBed", + "medications.wizard.steps.step3.unit.capsules", + "doctorReport.glucoseClinical.gmi", + "insights.bloodGlucose.clinical.advanced.jIndex.label", + "nutrients.names.dha", + "nutrients.names.epa", ]); describe("i18n English-leak guard", () => { diff --git a/src/__tests__/insights-unit-literal-guard.test.ts b/src/__tests__/insights-unit-literal-guard.test.ts index a3422f501..6561f5577 100644 --- a/src/__tests__/insights-unit-literal-guard.test.ts +++ b/src/__tests__/insights-unit-literal-guard.test.ts @@ -20,7 +20,7 @@ import { join } from "node:path"; * the key is a prop, not a call argument. Both halves are asserted here. */ -const LOCALES = ["en", "de", "es", "fr", "it", "pl", "ko"] as const; +const LOCALES = ["en", "de", "es", "fr", "it", "pl", "ko", "nl"] as const; const INSIGHTS_PAGES_DIR = join(process.cwd(), "src/app/insights"); /** diff --git a/src/__tests__/manage-activity-inventory.test.ts b/src/__tests__/manage-activity-inventory.test.ts index 57a68c1c3..ea8e83590 100644 --- a/src/__tests__/manage-activity-inventory.test.ts +++ b/src/__tests__/manage-activity-inventory.test.ts @@ -93,7 +93,7 @@ const NOT_IN_THE_FEED = [ /** What an action with no sentence of its own renders as. */ const FALLBACK_KEY = "recordSharing.activity.acted"; /** The six bundles the product ships. */ -const LOCALES = ["de", "en", "es", "fr", "it", "pl", "ko"] as const; +const LOCALES = ["de", "en", "es", "fr", "it", "pl", "ko", "nl"] as const; /** Every `route.ts` under `src/app/api`, walked rather than globbed: a glob's * `*` skips a leading dot and this tree has dot-directories. */ diff --git a/src/__tests__/moodlog-removal-guard.test.ts b/src/__tests__/moodlog-removal-guard.test.ts index 708b1c6e7..6bd82e6a3 100644 --- a/src/__tests__/moodlog-removal-guard.test.ts +++ b/src/__tests__/moodlog-removal-guard.test.ts @@ -25,7 +25,7 @@ import { INTEGRATION_DISPLAY_NAMES } from "@/components/settings/integrations/in const ROOT = path.resolve(__dirname, "../.."); -const LOCALES = ["de", "en", "es", "fr", "it", "pl", "ko"] as const; +const LOCALES = ["de", "en", "es", "fr", "it", "pl", "ko", "nl"] as const; /** Every path the retired bridge occupied. */ const REMOVED_PATHS = [ diff --git a/src/__tests__/record-settings-ui.test.tsx b/src/__tests__/record-settings-ui.test.tsx index cff7a4479..caa025978 100644 --- a/src/__tests__/record-settings-ui.test.tsx +++ b/src/__tests__/record-settings-ui.test.tsx @@ -50,7 +50,7 @@ describe("managed record settings UI", () => { fromRoot("src/components/settings/record-settings-section-gate.tsx"), "utf8", ), - ...["de", "en", "es", "fr", "it", "pl", "ko"].map((locale) => + ...["de", "en", "es", "fr", "it", "pl", "ko", "nl"].map((locale) => readFile(fromRoot(`messages/${locale}.json`), "utf8"), ), ]); diff --git a/src/__tests__/sharing-boundary-copy.test.ts b/src/__tests__/sharing-boundary-copy.test.ts index 7c6233c7f..dfd7e2136 100644 --- a/src/__tests__/sharing-boundary-copy.test.ts +++ b/src/__tests__/sharing-boundary-copy.test.ts @@ -38,7 +38,7 @@ import { * it — which is the part that rots silently. */ const ROOT = process.cwd(); -const LOCALES = ["de", "en", "es", "fr", "it", "pl", "ko"] as const; +const LOCALES = ["de", "en", "es", "fr", "it", "pl", "ko", "nl"] as const; /** The published description of the level, off the Zod schema itself. */ function accessDescription(): string { diff --git a/src/__tests__/v1341-locale-parity.test.ts b/src/__tests__/v1341-locale-parity.test.ts index 611783b68..85ce47df5 100644 --- a/src/__tests__/v1341-locale-parity.test.ts +++ b/src/__tests__/v1341-locale-parity.test.ts @@ -4,7 +4,7 @@ import { join } from "node:path"; import { describe, expect, it } from "vitest"; const ROOT = join(__dirname, "../.."); -const LOCALES = ["en", "de", "es", "fr", "it", "pl", "ko"] as const; +const LOCALES = ["en", "de", "es", "fr", "it", "pl", "ko", "nl"] as const; const REQUIRED_KEYS = [ // Security: adding a passkey now requires an existing sign-in factor. diff --git a/src/app/__tests__/not-found-copy.test.ts b/src/app/__tests__/not-found-copy.test.ts index b3c0bab44..6fbd93c80 100644 --- a/src/app/__tests__/not-found-copy.test.ts +++ b/src/app/__tests__/not-found-copy.test.ts @@ -10,7 +10,7 @@ import { readFileSync } from "node:fs"; import { join } from "node:path"; const ROOT = join(__dirname, "../../.."); -const LOCALES = ["en", "de", "fr", "es", "it", "pl", "ko"] as const; +const LOCALES = ["en", "de", "fr", "es", "it", "pl", "ko", "nl"] as const; interface Messages { notFound: { diff --git a/src/app/api/admin/notifications/test/route.ts b/src/app/api/admin/notifications/test/route.ts index 4c71a805e..80957925d 100644 --- a/src/app/api/admin/notifications/test/route.ts +++ b/src/app/api/admin/notifications/test/route.ts @@ -119,7 +119,8 @@ function isLocale(value: string | null | undefined): value is Locale { value === "es" || value === "it" || value === "pl" || - value === "ko" + value === "ko" || + value === "nl" ); } diff --git a/src/app/api/medications/extract/route.ts b/src/app/api/medications/extract/route.ts index aaf949bfb..50eed8970 100644 --- a/src/app/api/medications/extract/route.ts +++ b/src/app/api/medications/extract/route.ts @@ -118,7 +118,7 @@ const requestSchema = z .object({ text: z.string().min(1).max(MAX_TEXT_LENGTH), /** Optional UI locale; informational hint for the model. */ - locale: z.enum(["en", "de", "es", "fr", "it", "pl", "ko"]).optional(), + locale: z.enum(["en", "de", "es", "fr", "it", "pl", "ko", "nl"]).optional(), /** * Optional override of the reference date used to resolve relative * phrases ("tomorrow", "next Monday"). Defaults to the server's diff --git a/src/app/api/notifications/apns/test/route.ts b/src/app/api/notifications/apns/test/route.ts index c3318238c..63225121d 100644 --- a/src/app/api/notifications/apns/test/route.ts +++ b/src/app/api/notifications/apns/test/route.ts @@ -33,7 +33,8 @@ function isLocale(value: string | null | undefined): value is Locale { value === "es" || value === "it" || value === "pl" || - value === "ko" + value === "ko" || + value === "nl" ); } diff --git a/src/app/api/settings/telegram/test/route.ts b/src/app/api/settings/telegram/test/route.ts index 5b387ab21..2cf0d33bb 100644 --- a/src/app/api/settings/telegram/test/route.ts +++ b/src/app/api/settings/telegram/test/route.ts @@ -16,7 +16,8 @@ function isLocale(value: string | null | undefined): value is Locale { value === "es" || value === "it" || value === "pl" || - value === "ko" + value === "ko" || + value === "nl" ); } diff --git a/src/components/charts/__tests__/trend-card-baseline-alignment.test.tsx b/src/components/charts/__tests__/trend-card-baseline-alignment.test.tsx index cffc653c9..bee89b738 100644 --- a/src/components/charts/__tests__/trend-card-baseline-alignment.test.tsx +++ b/src/components/charts/__tests__/trend-card-baseline-alignment.test.tsx @@ -202,7 +202,7 @@ describe("dashboard.*Short keys exist across all six locales", () => { // Resolved at test time so the assertion runs against the current // bundle, not a stale cached snapshot. - const locales = ["en", "de", "fr", "es", "it", "pl", "ko"] as const; + const locales = ["en", "de", "fr", "es", "it", "pl", "ko", "nl"] as const; it.each(locales)("%s carries every dashboard.*Short key", async (locale) => { const messages = (await import(`../../../../messages/${locale}.json`)) diff --git a/src/components/clinician/__tests__/clinician-view-locales.test.tsx b/src/components/clinician/__tests__/clinician-view-locales.test.tsx index 75ce2d798..fd3198b0e 100644 --- a/src/components/clinician/__tests__/clinician-view-locales.test.tsx +++ b/src/components/clinician/__tests__/clinician-view-locales.test.tsx @@ -223,9 +223,9 @@ const FULL_RECORD = { const DOTTED_KEY = /\b[a-z][A-Za-z0-9]*(\.[A-Za-z0-9_]+){2,}\b/g; describe(" resolves every label in every locale", () => { - it("covers all seven shipped locales", () => { + it("covers all eight shipped locales", () => { // A floor: an empty locale list would make the loop below assert nothing. - expect(locales.length).toBe(7); + expect(locales.length).toBe(8); }); for (const locale of locales) { diff --git a/src/components/insights/derived/__tests__/coach-read-strip-latest-date.test.tsx b/src/components/insights/derived/__tests__/coach-read-strip-latest-date.test.tsx index b10d567eb..37a63b163 100644 --- a/src/components/insights/derived/__tests__/coach-read-strip-latest-date.test.tsx +++ b/src/components/insights/derived/__tests__/coach-read-strip-latest-date.test.tsx @@ -89,6 +89,7 @@ describe("CoachReadStrip — the latest reading's day", () => { es: "1 de octubre", fr: "1 octobre", it: "1 ottobre", + nl: "1 oktober", ko: "10월 1일", pl: "1 października", }; diff --git a/src/components/layout/__tests__/keyboard-shortcuts-dialog.test.tsx b/src/components/layout/__tests__/keyboard-shortcuts-dialog.test.tsx index 002edbe8d..ecd79740a 100644 --- a/src/components/layout/__tests__/keyboard-shortcuts-dialog.test.tsx +++ b/src/components/layout/__tests__/keyboard-shortcuts-dialog.test.tsx @@ -103,7 +103,7 @@ describe("", () => { expect(kbd).not.toMatch(/#[0-9a-f]{3,6}|dracula|\[/i); }); - it.each(["de", "es", "fr", "it", "pl", "ko"])( + it.each(["de", "es", "fr", "it", "pl", "ko", "nl"])( "is translated in %s", (locale) => { const html = render({}, locale); diff --git a/src/components/layout/__tests__/offline-banner.test.tsx b/src/components/layout/__tests__/offline-banner.test.tsx index c36744696..63511b74c 100644 --- a/src/components/layout/__tests__/offline-banner.test.tsx +++ b/src/components/layout/__tests__/offline-banner.test.tsx @@ -66,7 +66,16 @@ describe("", () => { }); it("ships the message key in every supported locale", () => { - for (const locale of ["en", "de", "fr", "es", "it", "pl", "ko"] as const) { + for (const locale of [ + "en", + "de", + "fr", + "es", + "it", + "pl", + "ko", + "nl", + ] as const) { const m = loadMessages(locale); expect(m.offlineBanner.message.length, locale).toBeGreaterThan(0); } diff --git a/src/components/links/__tests__/period-query.test.ts b/src/components/links/__tests__/period-query.test.ts index ee13a4805..b33875342 100644 --- a/src/components/links/__tests__/period-query.test.ts +++ b/src/components/links/__tests__/period-query.test.ts @@ -8,7 +8,7 @@ import { describe, expect, it } from "vitest"; import { formatPeriod, parsePeriodQuery } from "../period-query"; const NOW = new Date("2026-10-15T12:00:00.000Z"); -const LOCALES = ["de", "en", "es", "fr", "it", "pl", "ko"] as const; +const LOCALES = ["de", "en", "es", "fr", "it", "pl", "ko", "nl"] as const; function window(term: string, locale: string) { const parsed = parsePeriodQuery(term, locale, NOW); diff --git a/src/components/measurement-reminders/__tests__/type-labels-i18n.test.ts b/src/components/measurement-reminders/__tests__/type-labels-i18n.test.ts index 6122de57a..fa84f8871 100644 --- a/src/components/measurement-reminders/__tests__/type-labels-i18n.test.ts +++ b/src/components/measurement-reminders/__tests__/type-labels-i18n.test.ts @@ -41,7 +41,7 @@ const REQUIRED_KEYS = [ ]; describe("measurement-reminder + bulk-share dynamic i18n keys", () => { - it("discovers all seven shipped locales", () => { + it("discovers all eight shipped locales", () => { expect(LOCALES.map((l) => l.locale).sort()).toEqual([ "de", "en", @@ -49,6 +49,7 @@ describe("measurement-reminder + bulk-share dynamic i18n keys", () => { "fr", "it", "ko", + "nl", "pl", ]); }); diff --git a/src/components/medications/scheduling/natural-language-extractor.tsx b/src/components/medications/scheduling/natural-language-extractor.tsx index 0824067a5..c86967a52 100644 --- a/src/components/medications/scheduling/natural-language-extractor.tsx +++ b/src/components/medications/scheduling/natural-language-extractor.tsx @@ -72,7 +72,7 @@ export interface NaturalLanguageExtractorProps { * UI locale forwarded to the route as a hint. The route accepts an * undefined value and falls back to the resolver chain. */ - locale?: "en" | "de" | "es" | "fr" | "it" | "pl" | "ko"; + locale?: "en" | "de" | "es" | "fr" | "it" | "pl" | "ko" | "nl"; /** * Optional override of the API path so the wizard test harness can * point at a mock server. Defaults to the production route. diff --git a/src/components/settings/__tests__/import-panel.test.tsx b/src/components/settings/__tests__/import-panel.test.tsx index a16248279..e06be042f 100644 --- a/src/components/settings/__tests__/import-panel.test.tsx +++ b/src/components/settings/__tests__/import-panel.test.tsx @@ -108,7 +108,7 @@ describe(" — SSR smoke", () => { }); describe("", () => { - it.each(["en", "de", "es", "fr", "it", "pl", "ko"] as const)( + it.each(["en", "de", "es", "fr", "it", "pl", "ko", "nl"] as const)( "renders localized estimate disclosure for %s", (locale) => { const html = render(, locale); diff --git a/src/components/settings/__tests__/managed-record-settings-section.test.tsx b/src/components/settings/__tests__/managed-record-settings-section.test.tsx index 4b58f4e43..484e0402a 100644 --- a/src/components/settings/__tests__/managed-record-settings-section.test.tsx +++ b/src/components/settings/__tests__/managed-record-settings-section.test.tsx @@ -10,7 +10,7 @@ import { ManagedRecordSettingsForm, } from "../managed-record-settings-section"; -const LOCALES = ["de", "en", "es", "fr", "it", "pl", "ko"] as const; +const LOCALES = ["de", "en", "es", "fr", "it", "pl", "ko", "nl"] as const; const render = ( family: Parameters[0]["family"], diff --git a/src/components/settings/access/__tests__/managed-profile-affordances.test.tsx b/src/components/settings/access/__tests__/managed-profile-affordances.test.tsx index c57eb3786..1ccb24492 100644 --- a/src/components/settings/access/__tests__/managed-profile-affordances.test.tsx +++ b/src/components/settings/access/__tests__/managed-profile-affordances.test.tsx @@ -285,12 +285,12 @@ describe("the managed-profile card, in the shared-access section", () => { } // The timezone control is the shared picker, which labels itself. expect(html).toContain('id="managed-profile-timezone"'); - // Six languages offered, which is the route's enum exactly. + // Eight languages offered, which is the route's enum exactly. const options = /]*data-slot="managed-profile-locale"[\s\S]*?<\/select>/ .exec(html)?.[0] .match(/