mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-09 21:10:59 +00:00
i18n(meds): localise the v1.5 scheduling surface across six locales
Populates messages/{de,en}.json with native copy for every key the
new picker primitives, the wizard, the edit-form refactor, and the
plain-language summary consume. The remaining four locales ship the
English fallback for v1.5.0; native polish lands in a follow-up.
CadencePicker rolling-explainer key flipped to `kind.rollingExplainer`
so the i18n resolver can return both the rolling label and its
explainer (the original `kind.rolling.explainer` path collided with
the `kind.rolling` string leaf — JSON cannot host both shapes on the
same prefix). Adds the dose-unit SI tokens (mg / g / ml) to the
placeholder-allowlist in the locale-integrity guard since those
labels are intentionally identical across every locale.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
1bdbc2106f
commit
030e97906c
8 files changed
+1202
-2
No files matched your search
@@ -654,6 +654,205 @@
|
||||
"budget": "Tägliches KI-Budget erreicht — bitte morgen erneut versuchen.",
|
||||
"network": "KI-Anbieter nicht erreichbar — bitte erneut versuchen."
|
||||
}
|
||||
},
|
||||
"cadence": {
|
||||
"section": "Rhythmus",
|
||||
"label": "Wie oft",
|
||||
"kind": {
|
||||
"daily": "Jeden Tag",
|
||||
"weekdays": "An bestimmten Wochentagen",
|
||||
"everyNWeeks": "Alle N Wochen an bestimmten Tagen",
|
||||
"monthly": "Monatlich an einem bestimmten Tag",
|
||||
"everyNMonths": "Alle N Monate an einem bestimmten Tag",
|
||||
"yearly": "Einmal im Jahr",
|
||||
"rolling": "Alle N Tage seit der letzten Einnahme (flexibel)",
|
||||
"rollingExplainer": "Zählt ab der letzten erfassten Einnahme — pausiert, wenn du eine Dosis auslässt.",
|
||||
"oneShot": "Einmaldosis"
|
||||
},
|
||||
"weekdays": {
|
||||
"label": "Wochentage",
|
||||
"short": {
|
||||
"mo": "Mo",
|
||||
"tu": "Di",
|
||||
"we": "Mi",
|
||||
"th": "Do",
|
||||
"fr": "Fr",
|
||||
"sa": "Sa",
|
||||
"su": "So"
|
||||
},
|
||||
"long": {
|
||||
"mo": "Montag",
|
||||
"tu": "Dienstag",
|
||||
"we": "Mittwoch",
|
||||
"th": "Donnerstag",
|
||||
"fr": "Freitag",
|
||||
"sa": "Samstag",
|
||||
"su": "Sonntag"
|
||||
}
|
||||
},
|
||||
"intervalWeeks": {
|
||||
"suffix": "Wochen"
|
||||
},
|
||||
"dayOfMonth": {
|
||||
"label": "Tag"
|
||||
},
|
||||
"intervalMonths": {
|
||||
"suffix": "Monate",
|
||||
"dayOnLabel": "am Tag"
|
||||
},
|
||||
"yearly": {
|
||||
"date": {
|
||||
"label": "Datum"
|
||||
}
|
||||
},
|
||||
"rollingDays": {
|
||||
"suffix": "Tage"
|
||||
}
|
||||
},
|
||||
"timesOfDay": {
|
||||
"section": "Uhrzeiten",
|
||||
"label": "Uhrzeiten",
|
||||
"empty": {
|
||||
"cta": "Erste Uhrzeit hinzufügen."
|
||||
},
|
||||
"add": "Uhrzeit hinzufügen",
|
||||
"remove": "Entfernen",
|
||||
"presets": {
|
||||
"morning": "Morgens",
|
||||
"noon": "Mittags",
|
||||
"evening": "Abends",
|
||||
"night": "Nachts"
|
||||
},
|
||||
"max": {
|
||||
"reached": "Maximum erreicht — bitte zuerst eine Uhrzeit entfernen."
|
||||
}
|
||||
},
|
||||
"courseWindow": {
|
||||
"section": "Behandlungszeitraum",
|
||||
"startsOn": {
|
||||
"label": "Beginnt am"
|
||||
},
|
||||
"endsOn": {
|
||||
"label": "Endet am"
|
||||
},
|
||||
"noEndDate": "Kein Enddatum",
|
||||
"oneShotCaption": "(einmalige Dosis)",
|
||||
"invalidRange": "Das Enddatum muss am oder nach dem Startdatum liegen."
|
||||
},
|
||||
"oneShot": {
|
||||
"section": "Einmaldosis"
|
||||
},
|
||||
"legacyWindow": {
|
||||
"section": "Erinnerungsfenster (alt)",
|
||||
"help": "Ältere Pläne nutzen noch ein Zeitfenster-Paar. Neue Pläne nutzen die Uhrzeiten oben — das Fenster bleibt aus Kompatibilitätsgründen erhalten und entfällt in einer späteren Version."
|
||||
}
|
||||
},
|
||||
"create": {
|
||||
"wizard": {
|
||||
"header": {
|
||||
"stepOf": "Schritt {current} von {total}",
|
||||
"title": {
|
||||
"step1": "Wie heißt das Medikament und was ist eine Einzeldosis?",
|
||||
"step2": "Ist das eine einmalige Dosis oder nimmst du es regelmäßig?",
|
||||
"step3": "Wie oft?",
|
||||
"step4": "Etwas Besonderes zu den Tagen?",
|
||||
"step5": "Zu welcher Uhrzeit?",
|
||||
"step6": "Wann beginnt der Plan? Wann endet er (falls überhaupt)?",
|
||||
"step7": "Erinnerungen und Übersicht"
|
||||
}
|
||||
},
|
||||
"step1": {
|
||||
"name": {
|
||||
"label": "Name",
|
||||
"placeholder": "z. B. Mounjaro, Ibuprofen, Vitamin D"
|
||||
},
|
||||
"dose": {
|
||||
"amount": {
|
||||
"label": "Dosis",
|
||||
"placeholder": "z. B. 5"
|
||||
},
|
||||
"unit": {
|
||||
"label": "Einheit",
|
||||
"mg": "mg",
|
||||
"g": "g",
|
||||
"ml": "ml",
|
||||
"iu": "I.E.",
|
||||
"tablets": "Tabletten",
|
||||
"drops": "Tropfen",
|
||||
"puffs": "Hübe",
|
||||
"sprays": "Sprühstöße",
|
||||
"capsules": "Kapseln",
|
||||
"pieces": "Stück",
|
||||
"other": "andere"
|
||||
}
|
||||
},
|
||||
"naturalLanguage": {
|
||||
"button": "✨ Beschreiben",
|
||||
"placeholderCopy": "Beschreibe das Medikament in eigenen Worten — der Assistent füllt die Schritte für dich aus."
|
||||
}
|
||||
},
|
||||
"step2": {
|
||||
"oneShot": {
|
||||
"title": "Einmaldosis",
|
||||
"description": "Ein einzelner Termin — Grippeimpfung, Spritze, die letzte Dosis einer Kur."
|
||||
},
|
||||
"recurring": {
|
||||
"title": "Wiederkehrend",
|
||||
"description": "Ein Medikament, das du nach einem Plan nimmst — täglich oder anders."
|
||||
}
|
||||
},
|
||||
"step3": {
|
||||
"helper": "Wähle das Muster, das zu deiner Einnahme passt. Unteroptionen erscheinen, sobald du eines auswählst."
|
||||
},
|
||||
"step4": {
|
||||
"recap": "Das hast du gewählt. Tippe auf Zurück, wenn etwas nicht passt.",
|
||||
"oneShotSkipped": "(übersprungen — Einmaldosis)"
|
||||
},
|
||||
"step5": {
|
||||
"helper": "Füge eine oder mehrere Uhrzeiten hinzu. Zu jeder Uhrzeit wird eine Erinnerung gesendet.",
|
||||
"oneShotDate": {
|
||||
"label": "Datum der Einmaldosis",
|
||||
"helper": "Wir verwenden dieses Datum für die Erinnerung und für die Einnahmehistorie."
|
||||
}
|
||||
},
|
||||
"step6": {
|
||||
"helper": "Der Plan läuft ab dem Startdatum. Lass das Enddatum offen, wenn du es dauerhaft nimmst."
|
||||
},
|
||||
"step7": {
|
||||
"reminders": {
|
||||
"label": "Erinnerungen an",
|
||||
"description": "Sendet eine Push-Benachrichtigung an deine konfigurierten Kanäle zu jeder geplanten Uhrzeit."
|
||||
},
|
||||
"summary": {
|
||||
"title": "Übersicht",
|
||||
"cadence": {
|
||||
"daily": "Jeden Tag",
|
||||
"weekdays": "An ausgewählten Wochentagen",
|
||||
"weekly": "Einmal pro Woche",
|
||||
"biweekly": "Alle zwei Wochen",
|
||||
"monthly": "Monatlich",
|
||||
"quarterly": "Alle drei Monate",
|
||||
"yearly": "Einmal im Jahr",
|
||||
"rolling": "Alle {n} Tage seit der letzten Einnahme",
|
||||
"oneShot": "Eine Einmaldosis",
|
||||
"everyNWeeks": "Alle {n} Wochen",
|
||||
"everyNMonths": "Alle {n} Monate"
|
||||
},
|
||||
"times": "um {times}",
|
||||
"startsOn": "Beginn: {date}",
|
||||
"endsOn": "Ende: {date}",
|
||||
"noEndDate": "Kein Enddatum"
|
||||
}
|
||||
},
|
||||
"nav": {
|
||||
"back": "Zurück",
|
||||
"next": "Weiter",
|
||||
"create": "Medikament anlegen"
|
||||
},
|
||||
"errors": {
|
||||
"submitFailed": "Medikament konnte nicht angelegt werden — bitte erneut versuchen.",
|
||||
"fieldRequired": "Pflichtfeld"
|
||||
}
|
||||
}
|
||||
},
|
||||
"titration": {
|
||||
|
||||
@@ -654,6 +654,205 @@
|
||||
"budget": "Daily AI budget reached — try again tomorrow.",
|
||||
"network": "Could not reach the AI provider — please retry."
|
||||
}
|
||||
},
|
||||
"cadence": {
|
||||
"section": "Cadence",
|
||||
"label": "How often",
|
||||
"kind": {
|
||||
"daily": "Every day",
|
||||
"weekdays": "Certain days of the week",
|
||||
"everyNWeeks": "Every N weeks on certain days",
|
||||
"monthly": "Monthly on a specific day",
|
||||
"everyNMonths": "Every N months on a specific day",
|
||||
"yearly": "Once a year",
|
||||
"rolling": "Every N days from when I last took it (flexible)",
|
||||
"rollingExplainer": "Counts from your last logged intake — pauses if you skip a dose.",
|
||||
"oneShot": "One-time dose"
|
||||
},
|
||||
"weekdays": {
|
||||
"label": "Days of the week",
|
||||
"short": {
|
||||
"mo": "Mo",
|
||||
"tu": "Tu",
|
||||
"we": "We",
|
||||
"th": "Th",
|
||||
"fr": "Fr",
|
||||
"sa": "Sa",
|
||||
"su": "Su"
|
||||
},
|
||||
"long": {
|
||||
"mo": "Monday",
|
||||
"tu": "Tuesday",
|
||||
"we": "Wednesday",
|
||||
"th": "Thursday",
|
||||
"fr": "Friday",
|
||||
"sa": "Saturday",
|
||||
"su": "Sunday"
|
||||
}
|
||||
},
|
||||
"intervalWeeks": {
|
||||
"suffix": "weeks"
|
||||
},
|
||||
"dayOfMonth": {
|
||||
"label": "Day"
|
||||
},
|
||||
"intervalMonths": {
|
||||
"suffix": "months",
|
||||
"dayOnLabel": "on day"
|
||||
},
|
||||
"yearly": {
|
||||
"date": {
|
||||
"label": "Date"
|
||||
}
|
||||
},
|
||||
"rollingDays": {
|
||||
"suffix": "days"
|
||||
}
|
||||
},
|
||||
"timesOfDay": {
|
||||
"section": "Times of day",
|
||||
"label": "Times of day",
|
||||
"empty": {
|
||||
"cta": "Add the first time."
|
||||
},
|
||||
"add": "Add time",
|
||||
"remove": "Remove",
|
||||
"presets": {
|
||||
"morning": "Morning",
|
||||
"noon": "Noon",
|
||||
"evening": "Evening",
|
||||
"night": "Night"
|
||||
},
|
||||
"max": {
|
||||
"reached": "Maximum reached — remove a time before adding another."
|
||||
}
|
||||
},
|
||||
"courseWindow": {
|
||||
"section": "Course window",
|
||||
"startsOn": {
|
||||
"label": "Starts on"
|
||||
},
|
||||
"endsOn": {
|
||||
"label": "Ends on"
|
||||
},
|
||||
"noEndDate": "No end date",
|
||||
"oneShotCaption": "(one-time dose)",
|
||||
"invalidRange": "End date must be on or after the start date."
|
||||
},
|
||||
"oneShot": {
|
||||
"section": "Single dose"
|
||||
},
|
||||
"legacyWindow": {
|
||||
"section": "Reminder window (legacy)",
|
||||
"help": "Older schedules still use a window pair. New schedules use times of day above — the window stays for backwards compatibility and is dropped in a future release."
|
||||
}
|
||||
},
|
||||
"create": {
|
||||
"wizard": {
|
||||
"header": {
|
||||
"stepOf": "Step {current} of {total}",
|
||||
"title": {
|
||||
"step1": "What's the medication called and what's a single dose?",
|
||||
"step2": "Is this a one-time dose, or do you take it regularly?",
|
||||
"step3": "How often?",
|
||||
"step4": "Anything special about the days?",
|
||||
"step5": "What time(s) of day?",
|
||||
"step6": "When does the schedule start? When does it end (if ever)?",
|
||||
"step7": "Reminders and summary"
|
||||
}
|
||||
},
|
||||
"step1": {
|
||||
"name": {
|
||||
"label": "Name",
|
||||
"placeholder": "e.g. Mounjaro, Ibuprofen, Vitamin D"
|
||||
},
|
||||
"dose": {
|
||||
"amount": {
|
||||
"label": "Dose",
|
||||
"placeholder": "e.g. 5"
|
||||
},
|
||||
"unit": {
|
||||
"label": "Unit",
|
||||
"mg": "mg",
|
||||
"g": "g",
|
||||
"ml": "ml",
|
||||
"iu": "IU",
|
||||
"tablets": "tablets",
|
||||
"drops": "drops",
|
||||
"puffs": "puffs",
|
||||
"sprays": "sprays",
|
||||
"capsules": "capsules",
|
||||
"pieces": "pieces",
|
||||
"other": "other"
|
||||
}
|
||||
},
|
||||
"naturalLanguage": {
|
||||
"button": "✨ Describe it",
|
||||
"placeholderCopy": "Type the medication in your own words and we will pre-fill the wizard."
|
||||
}
|
||||
},
|
||||
"step2": {
|
||||
"oneShot": {
|
||||
"title": "One-time dose",
|
||||
"description": "A single appointment — flu shot, vaccine, the last dose of a course."
|
||||
},
|
||||
"recurring": {
|
||||
"title": "Recurring",
|
||||
"description": "A medication you take on a schedule, daily or otherwise."
|
||||
}
|
||||
},
|
||||
"step3": {
|
||||
"helper": "Pick the pattern that matches how often you take it. Sub-options appear once you choose."
|
||||
},
|
||||
"step4": {
|
||||
"recap": "Here's the cadence you picked. Tap Back if anything looks wrong.",
|
||||
"oneShotSkipped": "(skipped — one-time dose)"
|
||||
},
|
||||
"step5": {
|
||||
"helper": "Add one or more times of day. Reminders fire at each entry.",
|
||||
"oneShotDate": {
|
||||
"label": "Date of the single dose",
|
||||
"helper": "We use this date to schedule the reminder and to log the intake."
|
||||
}
|
||||
},
|
||||
"step6": {
|
||||
"helper": "The schedule runs from the start date. Leave the end date open if you take it indefinitely."
|
||||
},
|
||||
"step7": {
|
||||
"reminders": {
|
||||
"label": "Reminders on",
|
||||
"description": "Send a push to your configured channels at every scheduled time."
|
||||
},
|
||||
"summary": {
|
||||
"title": "Summary",
|
||||
"cadence": {
|
||||
"daily": "Every day",
|
||||
"weekdays": "On selected days of the week",
|
||||
"weekly": "Once a week",
|
||||
"biweekly": "Every two weeks",
|
||||
"monthly": "Monthly",
|
||||
"quarterly": "Every three months",
|
||||
"yearly": "Once a year",
|
||||
"rolling": "Every {n} days from your last intake",
|
||||
"oneShot": "A single dose",
|
||||
"everyNWeeks": "Every {n} weeks",
|
||||
"everyNMonths": "Every {n} months"
|
||||
},
|
||||
"times": "at {times}",
|
||||
"startsOn": "Starts: {date}",
|
||||
"endsOn": "Ends: {date}",
|
||||
"noEndDate": "No end date"
|
||||
}
|
||||
},
|
||||
"nav": {
|
||||
"back": "Back",
|
||||
"next": "Next",
|
||||
"create": "Create medication"
|
||||
},
|
||||
"errors": {
|
||||
"submitFailed": "Could not create the medication — please retry.",
|
||||
"fieldRequired": "Required"
|
||||
}
|
||||
}
|
||||
},
|
||||
"titration": {
|
||||
|
||||
@@ -654,6 +654,205 @@
|
||||
"budget": "Se alcanzó el presupuesto diario de IA — inténtalo de nuevo mañana.",
|
||||
"network": "No se pudo contactar con el proveedor de IA — inténtalo de nuevo."
|
||||
}
|
||||
},
|
||||
"cadence": {
|
||||
"section": "Cadence",
|
||||
"label": "How often",
|
||||
"kind": {
|
||||
"daily": "Every day",
|
||||
"weekdays": "Certain days of the week",
|
||||
"everyNWeeks": "Every N weeks on certain days",
|
||||
"monthly": "Monthly on a specific day",
|
||||
"everyNMonths": "Every N months on a specific day",
|
||||
"yearly": "Once a year",
|
||||
"rolling": "Every N days from when I last took it (flexible)",
|
||||
"rollingExplainer": "Counts from your last logged intake — pauses if you skip a dose.",
|
||||
"oneShot": "One-time dose"
|
||||
},
|
||||
"weekdays": {
|
||||
"label": "Days of the week",
|
||||
"short": {
|
||||
"mo": "Mo",
|
||||
"tu": "Tu",
|
||||
"we": "We",
|
||||
"th": "Th",
|
||||
"fr": "Fr",
|
||||
"sa": "Sa",
|
||||
"su": "Su"
|
||||
},
|
||||
"long": {
|
||||
"mo": "Monday",
|
||||
"tu": "Tuesday",
|
||||
"we": "Wednesday",
|
||||
"th": "Thursday",
|
||||
"fr": "Friday",
|
||||
"sa": "Saturday",
|
||||
"su": "Sunday"
|
||||
}
|
||||
},
|
||||
"intervalWeeks": {
|
||||
"suffix": "weeks"
|
||||
},
|
||||
"dayOfMonth": {
|
||||
"label": "Day"
|
||||
},
|
||||
"intervalMonths": {
|
||||
"suffix": "months",
|
||||
"dayOnLabel": "on day"
|
||||
},
|
||||
"yearly": {
|
||||
"date": {
|
||||
"label": "Date"
|
||||
}
|
||||
},
|
||||
"rollingDays": {
|
||||
"suffix": "days"
|
||||
}
|
||||
},
|
||||
"timesOfDay": {
|
||||
"section": "Times of day",
|
||||
"label": "Times of day",
|
||||
"empty": {
|
||||
"cta": "Add the first time."
|
||||
},
|
||||
"add": "Add time",
|
||||
"remove": "Remove",
|
||||
"presets": {
|
||||
"morning": "Morning",
|
||||
"noon": "Noon",
|
||||
"evening": "Evening",
|
||||
"night": "Night"
|
||||
},
|
||||
"max": {
|
||||
"reached": "Maximum reached — remove a time before adding another."
|
||||
}
|
||||
},
|
||||
"courseWindow": {
|
||||
"section": "Course window",
|
||||
"startsOn": {
|
||||
"label": "Starts on"
|
||||
},
|
||||
"endsOn": {
|
||||
"label": "Ends on"
|
||||
},
|
||||
"noEndDate": "No end date",
|
||||
"oneShotCaption": "(one-time dose)",
|
||||
"invalidRange": "End date must be on or after the start date."
|
||||
},
|
||||
"oneShot": {
|
||||
"section": "Single dose"
|
||||
},
|
||||
"legacyWindow": {
|
||||
"section": "Reminder window (legacy)",
|
||||
"help": "Older schedules still use a window pair. New schedules use times of day above — the window stays for backwards compatibility and is dropped in a future release."
|
||||
}
|
||||
},
|
||||
"create": {
|
||||
"wizard": {
|
||||
"header": {
|
||||
"stepOf": "Step {current} of {total}",
|
||||
"title": {
|
||||
"step1": "What's the medication called and what's a single dose?",
|
||||
"step2": "Is this a one-time dose, or do you take it regularly?",
|
||||
"step3": "How often?",
|
||||
"step4": "Anything special about the days?",
|
||||
"step5": "What time(s) of day?",
|
||||
"step6": "When does the schedule start? When does it end (if ever)?",
|
||||
"step7": "Reminders and summary"
|
||||
}
|
||||
},
|
||||
"step1": {
|
||||
"name": {
|
||||
"label": "Name",
|
||||
"placeholder": "e.g. Mounjaro, Ibuprofen, Vitamin D"
|
||||
},
|
||||
"dose": {
|
||||
"amount": {
|
||||
"label": "Dose",
|
||||
"placeholder": "e.g. 5"
|
||||
},
|
||||
"unit": {
|
||||
"label": "Unit",
|
||||
"mg": "mg",
|
||||
"g": "g",
|
||||
"ml": "ml",
|
||||
"iu": "IU",
|
||||
"tablets": "tablets",
|
||||
"drops": "drops",
|
||||
"puffs": "puffs",
|
||||
"sprays": "sprays",
|
||||
"capsules": "capsules",
|
||||
"pieces": "pieces",
|
||||
"other": "other"
|
||||
}
|
||||
},
|
||||
"naturalLanguage": {
|
||||
"button": "✨ Describe it",
|
||||
"placeholderCopy": "Type the medication in your own words and we will pre-fill the wizard."
|
||||
}
|
||||
},
|
||||
"step2": {
|
||||
"oneShot": {
|
||||
"title": "One-time dose",
|
||||
"description": "A single appointment — flu shot, vaccine, the last dose of a course."
|
||||
},
|
||||
"recurring": {
|
||||
"title": "Recurring",
|
||||
"description": "A medication you take on a schedule, daily or otherwise."
|
||||
}
|
||||
},
|
||||
"step3": {
|
||||
"helper": "Pick the pattern that matches how often you take it. Sub-options appear once you choose."
|
||||
},
|
||||
"step4": {
|
||||
"recap": "Here's the cadence you picked. Tap Back if anything looks wrong.",
|
||||
"oneShotSkipped": "(skipped — one-time dose)"
|
||||
},
|
||||
"step5": {
|
||||
"helper": "Add one or more times of day. Reminders fire at each entry.",
|
||||
"oneShotDate": {
|
||||
"label": "Date of the single dose",
|
||||
"helper": "We use this date to schedule the reminder and to log the intake."
|
||||
}
|
||||
},
|
||||
"step6": {
|
||||
"helper": "The schedule runs from the start date. Leave the end date open if you take it indefinitely."
|
||||
},
|
||||
"step7": {
|
||||
"reminders": {
|
||||
"label": "Reminders on",
|
||||
"description": "Send a push to your configured channels at every scheduled time."
|
||||
},
|
||||
"summary": {
|
||||
"title": "Summary",
|
||||
"cadence": {
|
||||
"daily": "Every day",
|
||||
"weekdays": "On selected days of the week",
|
||||
"weekly": "Once a week",
|
||||
"biweekly": "Every two weeks",
|
||||
"monthly": "Monthly",
|
||||
"quarterly": "Every three months",
|
||||
"yearly": "Once a year",
|
||||
"rolling": "Every {n} days from your last intake",
|
||||
"oneShot": "A single dose",
|
||||
"everyNWeeks": "Every {n} weeks",
|
||||
"everyNMonths": "Every {n} months"
|
||||
},
|
||||
"times": "at {times}",
|
||||
"startsOn": "Starts: {date}",
|
||||
"endsOn": "Ends: {date}",
|
||||
"noEndDate": "No end date"
|
||||
}
|
||||
},
|
||||
"nav": {
|
||||
"back": "Back",
|
||||
"next": "Next",
|
||||
"create": "Create medication"
|
||||
},
|
||||
"errors": {
|
||||
"submitFailed": "Could not create the medication — please retry.",
|
||||
"fieldRequired": "Required"
|
||||
}
|
||||
}
|
||||
},
|
||||
"titration": {
|
||||
|
||||
@@ -654,6 +654,205 @@
|
||||
"budget": "Budget IA quotidien atteint — réessaie demain.",
|
||||
"network": "Impossible de joindre le fournisseur d'IA — réessaie."
|
||||
}
|
||||
},
|
||||
"cadence": {
|
||||
"section": "Cadence",
|
||||
"label": "How often",
|
||||
"kind": {
|
||||
"daily": "Every day",
|
||||
"weekdays": "Certain days of the week",
|
||||
"everyNWeeks": "Every N weeks on certain days",
|
||||
"monthly": "Monthly on a specific day",
|
||||
"everyNMonths": "Every N months on a specific day",
|
||||
"yearly": "Once a year",
|
||||
"rolling": "Every N days from when I last took it (flexible)",
|
||||
"rollingExplainer": "Counts from your last logged intake — pauses if you skip a dose.",
|
||||
"oneShot": "One-time dose"
|
||||
},
|
||||
"weekdays": {
|
||||
"label": "Days of the week",
|
||||
"short": {
|
||||
"mo": "Mo",
|
||||
"tu": "Tu",
|
||||
"we": "We",
|
||||
"th": "Th",
|
||||
"fr": "Fr",
|
||||
"sa": "Sa",
|
||||
"su": "Su"
|
||||
},
|
||||
"long": {
|
||||
"mo": "Monday",
|
||||
"tu": "Tuesday",
|
||||
"we": "Wednesday",
|
||||
"th": "Thursday",
|
||||
"fr": "Friday",
|
||||
"sa": "Saturday",
|
||||
"su": "Sunday"
|
||||
}
|
||||
},
|
||||
"intervalWeeks": {
|
||||
"suffix": "weeks"
|
||||
},
|
||||
"dayOfMonth": {
|
||||
"label": "Day"
|
||||
},
|
||||
"intervalMonths": {
|
||||
"suffix": "months",
|
||||
"dayOnLabel": "on day"
|
||||
},
|
||||
"yearly": {
|
||||
"date": {
|
||||
"label": "Date"
|
||||
}
|
||||
},
|
||||
"rollingDays": {
|
||||
"suffix": "days"
|
||||
}
|
||||
},
|
||||
"timesOfDay": {
|
||||
"section": "Times of day",
|
||||
"label": "Times of day",
|
||||
"empty": {
|
||||
"cta": "Add the first time."
|
||||
},
|
||||
"add": "Add time",
|
||||
"remove": "Remove",
|
||||
"presets": {
|
||||
"morning": "Morning",
|
||||
"noon": "Noon",
|
||||
"evening": "Evening",
|
||||
"night": "Night"
|
||||
},
|
||||
"max": {
|
||||
"reached": "Maximum reached — remove a time before adding another."
|
||||
}
|
||||
},
|
||||
"courseWindow": {
|
||||
"section": "Course window",
|
||||
"startsOn": {
|
||||
"label": "Starts on"
|
||||
},
|
||||
"endsOn": {
|
||||
"label": "Ends on"
|
||||
},
|
||||
"noEndDate": "No end date",
|
||||
"oneShotCaption": "(one-time dose)",
|
||||
"invalidRange": "End date must be on or after the start date."
|
||||
},
|
||||
"oneShot": {
|
||||
"section": "Single dose"
|
||||
},
|
||||
"legacyWindow": {
|
||||
"section": "Reminder window (legacy)",
|
||||
"help": "Older schedules still use a window pair. New schedules use times of day above — the window stays for backwards compatibility and is dropped in a future release."
|
||||
}
|
||||
},
|
||||
"create": {
|
||||
"wizard": {
|
||||
"header": {
|
||||
"stepOf": "Step {current} of {total}",
|
||||
"title": {
|
||||
"step1": "What's the medication called and what's a single dose?",
|
||||
"step2": "Is this a one-time dose, or do you take it regularly?",
|
||||
"step3": "How often?",
|
||||
"step4": "Anything special about the days?",
|
||||
"step5": "What time(s) of day?",
|
||||
"step6": "When does the schedule start? When does it end (if ever)?",
|
||||
"step7": "Reminders and summary"
|
||||
}
|
||||
},
|
||||
"step1": {
|
||||
"name": {
|
||||
"label": "Name",
|
||||
"placeholder": "e.g. Mounjaro, Ibuprofen, Vitamin D"
|
||||
},
|
||||
"dose": {
|
||||
"amount": {
|
||||
"label": "Dose",
|
||||
"placeholder": "e.g. 5"
|
||||
},
|
||||
"unit": {
|
||||
"label": "Unit",
|
||||
"mg": "mg",
|
||||
"g": "g",
|
||||
"ml": "ml",
|
||||
"iu": "IU",
|
||||
"tablets": "tablets",
|
||||
"drops": "drops",
|
||||
"puffs": "puffs",
|
||||
"sprays": "sprays",
|
||||
"capsules": "capsules",
|
||||
"pieces": "pieces",
|
||||
"other": "other"
|
||||
}
|
||||
},
|
||||
"naturalLanguage": {
|
||||
"button": "✨ Describe it",
|
||||
"placeholderCopy": "Type the medication in your own words and we will pre-fill the wizard."
|
||||
}
|
||||
},
|
||||
"step2": {
|
||||
"oneShot": {
|
||||
"title": "One-time dose",
|
||||
"description": "A single appointment — flu shot, vaccine, the last dose of a course."
|
||||
},
|
||||
"recurring": {
|
||||
"title": "Recurring",
|
||||
"description": "A medication you take on a schedule, daily or otherwise."
|
||||
}
|
||||
},
|
||||
"step3": {
|
||||
"helper": "Pick the pattern that matches how often you take it. Sub-options appear once you choose."
|
||||
},
|
||||
"step4": {
|
||||
"recap": "Here's the cadence you picked. Tap Back if anything looks wrong.",
|
||||
"oneShotSkipped": "(skipped — one-time dose)"
|
||||
},
|
||||
"step5": {
|
||||
"helper": "Add one or more times of day. Reminders fire at each entry.",
|
||||
"oneShotDate": {
|
||||
"label": "Date of the single dose",
|
||||
"helper": "We use this date to schedule the reminder and to log the intake."
|
||||
}
|
||||
},
|
||||
"step6": {
|
||||
"helper": "The schedule runs from the start date. Leave the end date open if you take it indefinitely."
|
||||
},
|
||||
"step7": {
|
||||
"reminders": {
|
||||
"label": "Reminders on",
|
||||
"description": "Send a push to your configured channels at every scheduled time."
|
||||
},
|
||||
"summary": {
|
||||
"title": "Summary",
|
||||
"cadence": {
|
||||
"daily": "Every day",
|
||||
"weekdays": "On selected days of the week",
|
||||
"weekly": "Once a week",
|
||||
"biweekly": "Every two weeks",
|
||||
"monthly": "Monthly",
|
||||
"quarterly": "Every three months",
|
||||
"yearly": "Once a year",
|
||||
"rolling": "Every {n} days from your last intake",
|
||||
"oneShot": "A single dose",
|
||||
"everyNWeeks": "Every {n} weeks",
|
||||
"everyNMonths": "Every {n} months"
|
||||
},
|
||||
"times": "at {times}",
|
||||
"startsOn": "Starts: {date}",
|
||||
"endsOn": "Ends: {date}",
|
||||
"noEndDate": "No end date"
|
||||
}
|
||||
},
|
||||
"nav": {
|
||||
"back": "Back",
|
||||
"next": "Next",
|
||||
"create": "Create medication"
|
||||
},
|
||||
"errors": {
|
||||
"submitFailed": "Could not create the medication — please retry.",
|
||||
"fieldRequired": "Required"
|
||||
}
|
||||
}
|
||||
},
|
||||
"titration": {
|
||||
|
||||
@@ -654,6 +654,205 @@
|
||||
"budget": "Budget IA giornaliero raggiunto — riprova domani.",
|
||||
"network": "Impossibile contattare il provider IA — riprova."
|
||||
}
|
||||
},
|
||||
"cadence": {
|
||||
"section": "Cadence",
|
||||
"label": "How often",
|
||||
"kind": {
|
||||
"daily": "Every day",
|
||||
"weekdays": "Certain days of the week",
|
||||
"everyNWeeks": "Every N weeks on certain days",
|
||||
"monthly": "Monthly on a specific day",
|
||||
"everyNMonths": "Every N months on a specific day",
|
||||
"yearly": "Once a year",
|
||||
"rolling": "Every N days from when I last took it (flexible)",
|
||||
"rollingExplainer": "Counts from your last logged intake — pauses if you skip a dose.",
|
||||
"oneShot": "One-time dose"
|
||||
},
|
||||
"weekdays": {
|
||||
"label": "Days of the week",
|
||||
"short": {
|
||||
"mo": "Mo",
|
||||
"tu": "Tu",
|
||||
"we": "We",
|
||||
"th": "Th",
|
||||
"fr": "Fr",
|
||||
"sa": "Sa",
|
||||
"su": "Su"
|
||||
},
|
||||
"long": {
|
||||
"mo": "Monday",
|
||||
"tu": "Tuesday",
|
||||
"we": "Wednesday",
|
||||
"th": "Thursday",
|
||||
"fr": "Friday",
|
||||
"sa": "Saturday",
|
||||
"su": "Sunday"
|
||||
}
|
||||
},
|
||||
"intervalWeeks": {
|
||||
"suffix": "weeks"
|
||||
},
|
||||
"dayOfMonth": {
|
||||
"label": "Day"
|
||||
},
|
||||
"intervalMonths": {
|
||||
"suffix": "months",
|
||||
"dayOnLabel": "on day"
|
||||
},
|
||||
"yearly": {
|
||||
"date": {
|
||||
"label": "Date"
|
||||
}
|
||||
},
|
||||
"rollingDays": {
|
||||
"suffix": "days"
|
||||
}
|
||||
},
|
||||
"timesOfDay": {
|
||||
"section": "Times of day",
|
||||
"label": "Times of day",
|
||||
"empty": {
|
||||
"cta": "Add the first time."
|
||||
},
|
||||
"add": "Add time",
|
||||
"remove": "Remove",
|
||||
"presets": {
|
||||
"morning": "Morning",
|
||||
"noon": "Noon",
|
||||
"evening": "Evening",
|
||||
"night": "Night"
|
||||
},
|
||||
"max": {
|
||||
"reached": "Maximum reached — remove a time before adding another."
|
||||
}
|
||||
},
|
||||
"courseWindow": {
|
||||
"section": "Course window",
|
||||
"startsOn": {
|
||||
"label": "Starts on"
|
||||
},
|
||||
"endsOn": {
|
||||
"label": "Ends on"
|
||||
},
|
||||
"noEndDate": "No end date",
|
||||
"oneShotCaption": "(one-time dose)",
|
||||
"invalidRange": "End date must be on or after the start date."
|
||||
},
|
||||
"oneShot": {
|
||||
"section": "Single dose"
|
||||
},
|
||||
"legacyWindow": {
|
||||
"section": "Reminder window (legacy)",
|
||||
"help": "Older schedules still use a window pair. New schedules use times of day above — the window stays for backwards compatibility and is dropped in a future release."
|
||||
}
|
||||
},
|
||||
"create": {
|
||||
"wizard": {
|
||||
"header": {
|
||||
"stepOf": "Step {current} of {total}",
|
||||
"title": {
|
||||
"step1": "What's the medication called and what's a single dose?",
|
||||
"step2": "Is this a one-time dose, or do you take it regularly?",
|
||||
"step3": "How often?",
|
||||
"step4": "Anything special about the days?",
|
||||
"step5": "What time(s) of day?",
|
||||
"step6": "When does the schedule start? When does it end (if ever)?",
|
||||
"step7": "Reminders and summary"
|
||||
}
|
||||
},
|
||||
"step1": {
|
||||
"name": {
|
||||
"label": "Name",
|
||||
"placeholder": "e.g. Mounjaro, Ibuprofen, Vitamin D"
|
||||
},
|
||||
"dose": {
|
||||
"amount": {
|
||||
"label": "Dose",
|
||||
"placeholder": "e.g. 5"
|
||||
},
|
||||
"unit": {
|
||||
"label": "Unit",
|
||||
"mg": "mg",
|
||||
"g": "g",
|
||||
"ml": "ml",
|
||||
"iu": "IU",
|
||||
"tablets": "tablets",
|
||||
"drops": "drops",
|
||||
"puffs": "puffs",
|
||||
"sprays": "sprays",
|
||||
"capsules": "capsules",
|
||||
"pieces": "pieces",
|
||||
"other": "other"
|
||||
}
|
||||
},
|
||||
"naturalLanguage": {
|
||||
"button": "✨ Describe it",
|
||||
"placeholderCopy": "Type the medication in your own words and we will pre-fill the wizard."
|
||||
}
|
||||
},
|
||||
"step2": {
|
||||
"oneShot": {
|
||||
"title": "One-time dose",
|
||||
"description": "A single appointment — flu shot, vaccine, the last dose of a course."
|
||||
},
|
||||
"recurring": {
|
||||
"title": "Recurring",
|
||||
"description": "A medication you take on a schedule, daily or otherwise."
|
||||
}
|
||||
},
|
||||
"step3": {
|
||||
"helper": "Pick the pattern that matches how often you take it. Sub-options appear once you choose."
|
||||
},
|
||||
"step4": {
|
||||
"recap": "Here's the cadence you picked. Tap Back if anything looks wrong.",
|
||||
"oneShotSkipped": "(skipped — one-time dose)"
|
||||
},
|
||||
"step5": {
|
||||
"helper": "Add one or more times of day. Reminders fire at each entry.",
|
||||
"oneShotDate": {
|
||||
"label": "Date of the single dose",
|
||||
"helper": "We use this date to schedule the reminder and to log the intake."
|
||||
}
|
||||
},
|
||||
"step6": {
|
||||
"helper": "The schedule runs from the start date. Leave the end date open if you take it indefinitely."
|
||||
},
|
||||
"step7": {
|
||||
"reminders": {
|
||||
"label": "Reminders on",
|
||||
"description": "Send a push to your configured channels at every scheduled time."
|
||||
},
|
||||
"summary": {
|
||||
"title": "Summary",
|
||||
"cadence": {
|
||||
"daily": "Every day",
|
||||
"weekdays": "On selected days of the week",
|
||||
"weekly": "Once a week",
|
||||
"biweekly": "Every two weeks",
|
||||
"monthly": "Monthly",
|
||||
"quarterly": "Every three months",
|
||||
"yearly": "Once a year",
|
||||
"rolling": "Every {n} days from your last intake",
|
||||
"oneShot": "A single dose",
|
||||
"everyNWeeks": "Every {n} weeks",
|
||||
"everyNMonths": "Every {n} months"
|
||||
},
|
||||
"times": "at {times}",
|
||||
"startsOn": "Starts: {date}",
|
||||
"endsOn": "Ends: {date}",
|
||||
"noEndDate": "No end date"
|
||||
}
|
||||
},
|
||||
"nav": {
|
||||
"back": "Back",
|
||||
"next": "Next",
|
||||
"create": "Create medication"
|
||||
},
|
||||
"errors": {
|
||||
"submitFailed": "Could not create the medication — please retry.",
|
||||
"fieldRequired": "Required"
|
||||
}
|
||||
}
|
||||
},
|
||||
"titration": {
|
||||
|
||||
@@ -654,6 +654,205 @@
|
||||
"budget": "Osiągnięto dzienny limit AI — spróbuj jutro.",
|
||||
"network": "Nie udało się połączyć z dostawcą AI — spróbuj ponownie."
|
||||
}
|
||||
},
|
||||
"cadence": {
|
||||
"section": "Cadence",
|
||||
"label": "How often",
|
||||
"kind": {
|
||||
"daily": "Every day",
|
||||
"weekdays": "Certain days of the week",
|
||||
"everyNWeeks": "Every N weeks on certain days",
|
||||
"monthly": "Monthly on a specific day",
|
||||
"everyNMonths": "Every N months on a specific day",
|
||||
"yearly": "Once a year",
|
||||
"rolling": "Every N days from when I last took it (flexible)",
|
||||
"rollingExplainer": "Counts from your last logged intake — pauses if you skip a dose.",
|
||||
"oneShot": "One-time dose"
|
||||
},
|
||||
"weekdays": {
|
||||
"label": "Days of the week",
|
||||
"short": {
|
||||
"mo": "Mo",
|
||||
"tu": "Tu",
|
||||
"we": "We",
|
||||
"th": "Th",
|
||||
"fr": "Fr",
|
||||
"sa": "Sa",
|
||||
"su": "Su"
|
||||
},
|
||||
"long": {
|
||||
"mo": "Monday",
|
||||
"tu": "Tuesday",
|
||||
"we": "Wednesday",
|
||||
"th": "Thursday",
|
||||
"fr": "Friday",
|
||||
"sa": "Saturday",
|
||||
"su": "Sunday"
|
||||
}
|
||||
},
|
||||
"intervalWeeks": {
|
||||
"suffix": "weeks"
|
||||
},
|
||||
"dayOfMonth": {
|
||||
"label": "Day"
|
||||
},
|
||||
"intervalMonths": {
|
||||
"suffix": "months",
|
||||
"dayOnLabel": "on day"
|
||||
},
|
||||
"yearly": {
|
||||
"date": {
|
||||
"label": "Date"
|
||||
}
|
||||
},
|
||||
"rollingDays": {
|
||||
"suffix": "days"
|
||||
}
|
||||
},
|
||||
"timesOfDay": {
|
||||
"section": "Times of day",
|
||||
"label": "Times of day",
|
||||
"empty": {
|
||||
"cta": "Add the first time."
|
||||
},
|
||||
"add": "Add time",
|
||||
"remove": "Remove",
|
||||
"presets": {
|
||||
"morning": "Morning",
|
||||
"noon": "Noon",
|
||||
"evening": "Evening",
|
||||
"night": "Night"
|
||||
},
|
||||
"max": {
|
||||
"reached": "Maximum reached — remove a time before adding another."
|
||||
}
|
||||
},
|
||||
"courseWindow": {
|
||||
"section": "Course window",
|
||||
"startsOn": {
|
||||
"label": "Starts on"
|
||||
},
|
||||
"endsOn": {
|
||||
"label": "Ends on"
|
||||
},
|
||||
"noEndDate": "No end date",
|
||||
"oneShotCaption": "(one-time dose)",
|
||||
"invalidRange": "End date must be on or after the start date."
|
||||
},
|
||||
"oneShot": {
|
||||
"section": "Single dose"
|
||||
},
|
||||
"legacyWindow": {
|
||||
"section": "Reminder window (legacy)",
|
||||
"help": "Older schedules still use a window pair. New schedules use times of day above — the window stays for backwards compatibility and is dropped in a future release."
|
||||
}
|
||||
},
|
||||
"create": {
|
||||
"wizard": {
|
||||
"header": {
|
||||
"stepOf": "Step {current} of {total}",
|
||||
"title": {
|
||||
"step1": "What's the medication called and what's a single dose?",
|
||||
"step2": "Is this a one-time dose, or do you take it regularly?",
|
||||
"step3": "How often?",
|
||||
"step4": "Anything special about the days?",
|
||||
"step5": "What time(s) of day?",
|
||||
"step6": "When does the schedule start? When does it end (if ever)?",
|
||||
"step7": "Reminders and summary"
|
||||
}
|
||||
},
|
||||
"step1": {
|
||||
"name": {
|
||||
"label": "Name",
|
||||
"placeholder": "e.g. Mounjaro, Ibuprofen, Vitamin D"
|
||||
},
|
||||
"dose": {
|
||||
"amount": {
|
||||
"label": "Dose",
|
||||
"placeholder": "e.g. 5"
|
||||
},
|
||||
"unit": {
|
||||
"label": "Unit",
|
||||
"mg": "mg",
|
||||
"g": "g",
|
||||
"ml": "ml",
|
||||
"iu": "IU",
|
||||
"tablets": "tablets",
|
||||
"drops": "drops",
|
||||
"puffs": "puffs",
|
||||
"sprays": "sprays",
|
||||
"capsules": "capsules",
|
||||
"pieces": "pieces",
|
||||
"other": "other"
|
||||
}
|
||||
},
|
||||
"naturalLanguage": {
|
||||
"button": "✨ Describe it",
|
||||
"placeholderCopy": "Type the medication in your own words and we will pre-fill the wizard."
|
||||
}
|
||||
},
|
||||
"step2": {
|
||||
"oneShot": {
|
||||
"title": "One-time dose",
|
||||
"description": "A single appointment — flu shot, vaccine, the last dose of a course."
|
||||
},
|
||||
"recurring": {
|
||||
"title": "Recurring",
|
||||
"description": "A medication you take on a schedule, daily or otherwise."
|
||||
}
|
||||
},
|
||||
"step3": {
|
||||
"helper": "Pick the pattern that matches how often you take it. Sub-options appear once you choose."
|
||||
},
|
||||
"step4": {
|
||||
"recap": "Here's the cadence you picked. Tap Back if anything looks wrong.",
|
||||
"oneShotSkipped": "(skipped — one-time dose)"
|
||||
},
|
||||
"step5": {
|
||||
"helper": "Add one or more times of day. Reminders fire at each entry.",
|
||||
"oneShotDate": {
|
||||
"label": "Date of the single dose",
|
||||
"helper": "We use this date to schedule the reminder and to log the intake."
|
||||
}
|
||||
},
|
||||
"step6": {
|
||||
"helper": "The schedule runs from the start date. Leave the end date open if you take it indefinitely."
|
||||
},
|
||||
"step7": {
|
||||
"reminders": {
|
||||
"label": "Reminders on",
|
||||
"description": "Send a push to your configured channels at every scheduled time."
|
||||
},
|
||||
"summary": {
|
||||
"title": "Summary",
|
||||
"cadence": {
|
||||
"daily": "Every day",
|
||||
"weekdays": "On selected days of the week",
|
||||
"weekly": "Once a week",
|
||||
"biweekly": "Every two weeks",
|
||||
"monthly": "Monthly",
|
||||
"quarterly": "Every three months",
|
||||
"yearly": "Once a year",
|
||||
"rolling": "Every {n} days from your last intake",
|
||||
"oneShot": "A single dose",
|
||||
"everyNWeeks": "Every {n} weeks",
|
||||
"everyNMonths": "Every {n} months"
|
||||
},
|
||||
"times": "at {times}",
|
||||
"startsOn": "Starts: {date}",
|
||||
"endsOn": "Ends: {date}",
|
||||
"noEndDate": "No end date"
|
||||
}
|
||||
},
|
||||
"nav": {
|
||||
"back": "Back",
|
||||
"next": "Next",
|
||||
"create": "Create medication"
|
||||
},
|
||||
"errors": {
|
||||
"submitFailed": "Could not create the medication — please retry.",
|
||||
"fieldRequired": "Required"
|
||||
}
|
||||
}
|
||||
},
|
||||
"titration": {
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
* .kind.everyNMonths — "Every N months on day"
|
||||
* .kind.yearly — "Yearly on date"
|
||||
* .kind.rolling — "Every N days from when I last took it (flexible)"
|
||||
* .kind.rolling.explainer — "Counts from your last logged intake — pauses if you skip"
|
||||
* .kind.rollingExplainer — "Counts from your last logged intake — pauses if you skip"
|
||||
* .kind.oneShot — "One-time dose"
|
||||
* .weekdays.label — chip-row aria-label "Days of week"
|
||||
* .weekdays.short.mo|tu|we|th|fr|sa|su — chip abbreviations
|
||||
@@ -401,7 +401,7 @@ function CadenceOption({
|
||||
className="text-muted-foreground text-xs"
|
||||
data-slot="cadence-rolling-explainer"
|
||||
>
|
||||
{t(`${i18nPrefix}.kind.rolling.explainer`)}
|
||||
{t(`${i18nPrefix}.kind.rollingExplainer`)}
|
||||
</p>
|
||||
</div>
|
||||
)}
|
||||
|
||||
@@ -252,6 +252,12 @@ describe("i18n locale file integrity", () => {
|
||||
"targets.status.normal",
|
||||
"targets.status.optimal",
|
||||
"targets.status.fitness",
|
||||
// v1.5 medication scheduling — SI-unit abbreviations the wizard
|
||||
// surfaces in its dose-unit dropdown. The labels are identical
|
||||
// across every locale (mg / g / ml are universal SI tokens).
|
||||
"medications.create.wizard.step1.dose.unit.mg",
|
||||
"medications.create.wizard.step1.dose.unit.g",
|
||||
"medications.create.wizard.step1.dose.unit.ml",
|
||||
]);
|
||||
|
||||
it.each(ALL_LOCALES)("$locale locale has no empty values", ({ path }) => {
|
||||
|
||||
Reference in new issue
Block a user