mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-15 15:02:04 +00:00
fix(i18n): address the ru review — units, Cyrillic regexes, locale registry
Dose bank
- DRUG_UNIT learns мг / мкг / мл / ЕД / МЕ, so "2,4 мг" anchors a dose again.
- The bank matches verb-first Russian word order too ("принимайте 2 таблетки",
"пропустите дозу метформина", "начните с 5 мг"), and the Cyrillic drug names
people actually see on the box; the deferral words ("спросите врача",
"как назначено") stand those shapes down.
Cyrillic-safe regexes
- \w and \b are ASCII in JavaScript: every stem in the ru bank and in
population-norms/ru.ts is [а-яё]*, and the word edges are lookarounds
(?<![а-яёa-z]), so «высокий риск» and «нормальный диапазон» match again.
- coach-prose-grounding: Russian month names in the genitive, a space as the
thousands separator in parseLocaleNumber and numFrag, and Cyrillic-safe
edges around the written-date pattern.
Registered everywhere a locale has to be
- targetLanguageName() returns "Russian", so the coach, the period narrative
and the document descriptions stop saying "write in English".
- i18n-key-tool.mjs, split-description.mjs, LOINC name normalisation (it
stripped Cyrillic, so no Russian lab name resolved), HOST_TLDS (ru/by/kz/ua),
no-key-fallbacks (32 tables), country-label, the AUDIT-C standard drink.
- docs/api/openapi.yaml regenerated.
Questionnaires
- The PHQ-9 / GAD-7 source comments no longer claim no validated Russian
version exists (Zolotareva 2023; Pfizer's official screeners).
- WHO-5 items are gender-neutral: «чувствовал(а)».
- "body fat" and "fat mass" both read «Жировая масса»; body fat is now
«Процент жировой массы», which is what the two metrics measure.
Tests
- ru in the 13 locale tables, plus mood, onboarding, instruments, clinician
view, status summary, describe screen, citation coverage and LOINC.
- i18n-no-dot-separator: the ru bundle is exempt from the dash rule (a spaced
dash is Russian punctuation, not a fragment join); the middle dot still
fails there.
- Two 800-line baselines raised by the 12 and 5 lines this change adds.
pnpm typecheck, pnpm openapi:check and the full suite (36 316 tests) pass.
This commit is contained in:
1 parent
6b9d222643
commit
48bfbad4e6
44 files changed
+431
-70
No files matched your search
+14
-14
@@ -650,7 +650,7 @@
|
||||
"weight": "Вес",
|
||||
"bloodPressure": "АД",
|
||||
"pulse": "Пульс",
|
||||
"bodyFat": "Жировая масса",
|
||||
"bodyFat": "Процент жировой массы",
|
||||
"sleep": "Сон",
|
||||
"steps": "Шаги",
|
||||
"vo2Max": "VO₂ max",
|
||||
@@ -660,7 +660,7 @@
|
||||
"bloodPressureSysShort": "АД (сист.)",
|
||||
"bloodPressureDiaShort": "АД (диаст.)",
|
||||
"pulseShort": "Пульс",
|
||||
"bodyFatShort": "Жировая масса",
|
||||
"bodyFatShort": "% жира",
|
||||
"moodShort": "Настроение",
|
||||
"sleepShort": "Сон",
|
||||
"stepsShort": "Шаги",
|
||||
@@ -758,7 +758,7 @@
|
||||
"weight": "Вес",
|
||||
"bloodPressure": "АД",
|
||||
"pulse": "Пульс",
|
||||
"bodyFat": "Жировая масса",
|
||||
"bodyFat": "Процент жировой массы",
|
||||
"glucose": "Глюкоза крови",
|
||||
"sleep": "Сон",
|
||||
"steps": "Шаги",
|
||||
@@ -809,7 +809,7 @@
|
||||
"typeBpSys": "Сист.",
|
||||
"typeBpDia": "Диаст.",
|
||||
"typePulse": "Пульс",
|
||||
"typeBodyFat": "Жировая масса",
|
||||
"typeBodyFat": "Процент жировой массы",
|
||||
"typeSleep": "Сон",
|
||||
"typeSteps": "Шаги",
|
||||
"typeBloodGlucose": "Глюкоза крови",
|
||||
@@ -2558,7 +2558,7 @@
|
||||
"weight": "Вес",
|
||||
"bloodPressure": "АД",
|
||||
"pulse": "Пульс",
|
||||
"bodyFat": "Жировая масса",
|
||||
"bodyFat": "Процент жировой массы",
|
||||
"sleep": "Сон",
|
||||
"steps": "Шаги",
|
||||
"hrv": "Вариабельность сердечного ритма",
|
||||
@@ -3134,7 +3134,7 @@
|
||||
"spo2": "Кислород в крови",
|
||||
"pulse_wave_velocity": "Скорость пульсовой волны",
|
||||
"vascular_age": "Сосудистый возраст",
|
||||
"body_fat": "Жировая масса",
|
||||
"body_fat": "Процент жировой массы",
|
||||
"fat_mass": "Жировая масса",
|
||||
"fat_free_mass": "Обезжиренная масса",
|
||||
"muscle_mass": "Мышечная масса",
|
||||
@@ -4055,17 +4055,17 @@
|
||||
}
|
||||
},
|
||||
"bodyFat": {
|
||||
"title": "Жировая масса",
|
||||
"title": "Процент жировой массы",
|
||||
"description": "Ваш процент жировой массы в динамике.",
|
||||
"chartTitle": "Жировая масса",
|
||||
"chartTitle": "Процент жировой массы",
|
||||
"emptyState": {
|
||||
"title": "Пока нет данных о жировой массе",
|
||||
"description": "Измерения жировой массы появятся здесь, как только синхронизируются весы с анализом состава тела или когда вы запишете одно вручную.",
|
||||
"cta": "Записать жировую массу"
|
||||
"cta": "Записать процент жира"
|
||||
}
|
||||
},
|
||||
"navFatMass": "Жировая масса",
|
||||
"navBodyFat": "Жировая масса",
|
||||
"navBodyFat": "Процент жировой массы",
|
||||
"muscleMass": {
|
||||
"title": "Мышечная масса",
|
||||
"description": "Ваша мышечная масса в динамике, в килограммах.",
|
||||
@@ -4997,7 +4997,7 @@
|
||||
"metricBpSys": "АД (систолическое)",
|
||||
"metricBpDia": "АД (диастолическое)",
|
||||
"metricPulse": "Пульс в покое",
|
||||
"metricBodyFat": "Жировая масса",
|
||||
"metricBodyFat": "Процент жировой массы",
|
||||
"metricSleep": "Длительность сна",
|
||||
"metricSteps": "Шаги за день",
|
||||
"metricGlucoseFasting": "Глюкоза (натощак)",
|
||||
@@ -5642,7 +5642,7 @@
|
||||
"weight": "Вес",
|
||||
"bloodPressure": "АД",
|
||||
"pulse": "Пульс",
|
||||
"bodyFat": "Жировая масса",
|
||||
"bodyFat": "Процент жировой массы",
|
||||
"bodyTemperature": "Температура тела",
|
||||
"spo2": "Насыщение кислородом",
|
||||
"hrv": "Вариабельность сердечного ритма",
|
||||
@@ -10003,7 +10003,7 @@
|
||||
"PULSE": "Пульс",
|
||||
"BLOOD_GLUCOSE": "Глюкоза крови",
|
||||
"OXYGEN_SATURATION": "Насыщение кислородом",
|
||||
"BODY_FAT": "Жировая масса",
|
||||
"BODY_FAT": "Процент жировой массы",
|
||||
"BODY_TEMPERATURE": "Температура тела",
|
||||
"FAT_MASS": "Жировая масса",
|
||||
"FAT_FREE_MASS": "Обезжиренная масса",
|
||||
@@ -14095,4 +14095,4 @@
|
||||
"endsOn": "Конец"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user