From 58c3a8d9d54f4ff836c0309737dde578efa73fec Mon Sep 17 00:00:00 2001 From: Andrei Date: Fri, 3 Oct 2025 15:03:02 +0000 Subject: [PATCH] feat: Complete Spanish, French, Portuguese, Chinese localization and add German/Italian support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Updated all Spanish (es) translation files with comprehensive translations for tracking, AI, family, insights, children, and settings pages - Updated French (fr), Portuguese (pt), and Chinese (zh) translations to match English structure - Added German (de) and Italian (it) language support with complete translation files - Fixed medicine tracker route from /track/medication to /track/medicine - Updated i18n config to support 7 languages: en, es, fr, pt, zh, de, it - All tracking pages now fully localized: sleep, feeding, diaper, medicine, activity - AI assistant interface fully translated with thinking messages and suggested questions - Family management and insights pages now support all languages 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- maternal-web/app/(auth)/onboarding/page.tsx | 16 +- maternal-web/app/children/page.tsx | 4 +- maternal-web/app/family/page.tsx | 4 +- maternal-web/app/page.tsx | 28 +- maternal-web/app/settings/page.tsx | 8 +- maternal-web/app/track/page.tsx | 4 +- .../features/analytics/InsightsDashboard.tsx | 28 +- maternal-web/lib/i18n/config.ts | 74 +++- maternal-web/locales/de/ai.json | 107 ++++++ maternal-web/locales/de/auth.json | 88 +++++ maternal-web/locales/de/children.json | 50 +++ maternal-web/locales/de/common.json | 79 +++++ maternal-web/locales/de/dashboard.json | 30 ++ maternal-web/locales/de/errors.json | 69 ++++ maternal-web/locales/de/family.json | 43 +++ maternal-web/locales/de/insights.json | 73 ++++ maternal-web/locales/de/onboarding.json | 99 ++++++ maternal-web/locales/de/settings.json | 147 ++++++++ maternal-web/locales/de/tracking.json | 279 +++++++++++++++ maternal-web/locales/es/ai.json | 137 +++++--- maternal-web/locales/es/auth.json | 142 ++++---- maternal-web/locales/es/children.json | 25 +- maternal-web/locales/es/common.json | 22 +- maternal-web/locales/es/dashboard.json | 12 +- maternal-web/locales/es/errors.json | 104 +++--- maternal-web/locales/es/family.json | 43 +++ maternal-web/locales/es/insights.json | 73 ++++ maternal-web/locales/es/onboarding.json | 134 ++++---- maternal-web/locales/es/settings.json | 205 ++++++----- maternal-web/locales/es/tracking.json | 316 ++++++++++++----- maternal-web/locales/fr/ai.json | 137 +++++--- maternal-web/locales/fr/auth.json | 142 ++++---- maternal-web/locales/fr/children.json | 25 +- maternal-web/locales/fr/common.json | 16 +- maternal-web/locales/fr/dashboard.json | 8 +- maternal-web/locales/fr/errors.json | 104 +++--- maternal-web/locales/fr/family.json | 43 +++ maternal-web/locales/fr/insights.json | 73 ++++ maternal-web/locales/fr/onboarding.json | 134 ++++---- maternal-web/locales/fr/settings.json | 199 ++++++----- maternal-web/locales/fr/tracking.json | 294 ++++++++++++---- maternal-web/locales/it/ai.json | 107 ++++++ maternal-web/locales/it/auth.json | 88 +++++ maternal-web/locales/it/children.json | 50 +++ maternal-web/locales/it/common.json | 79 +++++ maternal-web/locales/it/dashboard.json | 30 ++ maternal-web/locales/it/errors.json | 69 ++++ maternal-web/locales/it/family.json | 43 +++ maternal-web/locales/it/insights.json | 73 ++++ maternal-web/locales/it/onboarding.json | 99 ++++++ maternal-web/locales/it/settings.json | 147 ++++++++ maternal-web/locales/it/tracking.json | 279 +++++++++++++++ maternal-web/locales/pt/ai.json | 139 +++++--- maternal-web/locales/pt/auth.json | 142 ++++---- maternal-web/locales/pt/children.json | 29 +- maternal-web/locales/pt/common.json | 16 +- maternal-web/locales/pt/dashboard.json | 10 +- maternal-web/locales/pt/errors.json | 104 +++--- maternal-web/locales/pt/family.json | 43 +++ maternal-web/locales/pt/insights.json | 73 ++++ maternal-web/locales/pt/onboarding.json | 134 ++++---- maternal-web/locales/pt/settings.json | 205 ++++++----- maternal-web/locales/pt/tracking.json | 318 ++++++++++++----- maternal-web/locales/zh/ai.json | 139 +++++--- maternal-web/locales/zh/auth.json | 142 ++++---- maternal-web/locales/zh/children.json | 47 ++- maternal-web/locales/zh/common.json | 24 +- maternal-web/locales/zh/dashboard.json | 12 +- maternal-web/locales/zh/errors.json | 104 +++--- maternal-web/locales/zh/family.json | 43 +++ maternal-web/locales/zh/insights.json | 73 ++++ maternal-web/locales/zh/onboarding.json | 136 ++++---- maternal-web/locales/zh/settings.json | 209 ++++++----- maternal-web/locales/zh/tracking.json | 324 +++++++++++++----- 74 files changed, 5413 insertions(+), 1735 deletions(-) create mode 100644 maternal-web/locales/de/ai.json create mode 100644 maternal-web/locales/de/auth.json create mode 100644 maternal-web/locales/de/children.json create mode 100644 maternal-web/locales/de/common.json create mode 100644 maternal-web/locales/de/dashboard.json create mode 100644 maternal-web/locales/de/errors.json create mode 100644 maternal-web/locales/de/family.json create mode 100644 maternal-web/locales/de/insights.json create mode 100644 maternal-web/locales/de/onboarding.json create mode 100644 maternal-web/locales/de/settings.json create mode 100644 maternal-web/locales/de/tracking.json create mode 100644 maternal-web/locales/es/family.json create mode 100644 maternal-web/locales/es/insights.json create mode 100644 maternal-web/locales/fr/family.json create mode 100644 maternal-web/locales/fr/insights.json create mode 100644 maternal-web/locales/it/ai.json create mode 100644 maternal-web/locales/it/auth.json create mode 100644 maternal-web/locales/it/children.json create mode 100644 maternal-web/locales/it/common.json create mode 100644 maternal-web/locales/it/dashboard.json create mode 100644 maternal-web/locales/it/errors.json create mode 100644 maternal-web/locales/it/family.json create mode 100644 maternal-web/locales/it/insights.json create mode 100644 maternal-web/locales/it/onboarding.json create mode 100644 maternal-web/locales/it/settings.json create mode 100644 maternal-web/locales/it/tracking.json create mode 100644 maternal-web/locales/pt/family.json create mode 100644 maternal-web/locales/pt/insights.json create mode 100644 maternal-web/locales/zh/family.json create mode 100644 maternal-web/locales/zh/insights.json diff --git a/maternal-web/app/(auth)/onboarding/page.tsx b/maternal-web/app/(auth)/onboarding/page.tsx index dce47d7..dc48ed5 100644 --- a/maternal-web/app/(auth)/onboarding/page.tsx +++ b/maternal-web/app/(auth)/onboarding/page.tsx @@ -15,14 +15,26 @@ import { Alert, CircularProgress, MenuItem, + Card, + CardActionArea, + CardContent, + Radio, + RadioGroup, + FormControlLabel, + FormControl, + Grid, } from '@mui/material'; -import { ArrowBack, ArrowForward, Check } from '@mui/icons-material'; +import { ArrowBack, ArrowForward, Check, Language, Straighten } from '@mui/icons-material'; import { motion, AnimatePresence } from 'framer-motion'; import { useRouter } from 'next/navigation'; import { useAuth } from '@/lib/auth/AuthContext'; import { childrenApi } from '@/lib/api/children'; +import { useLocale, MeasurementSystem } from '@/hooks/useLocale'; +import { useTranslation } from '@/hooks/useTranslation'; +import { supportedLanguages } from '@/lib/i18n/config'; +import { usersApi } from '@/lib/api/users'; -const steps = ['Welcome', 'Add Child', 'Invite Family', 'Notifications']; +const steps = ['Welcome', 'Language', 'Measurements', 'Add Child', 'Complete']; export default function OnboardingPage() { const [activeStep, setActiveStep] = useState(0); diff --git a/maternal-web/app/children/page.tsx b/maternal-web/app/children/page.tsx index e55a649..9e5642a 100644 --- a/maternal-web/app/children/page.tsx +++ b/maternal-web/app/children/page.tsx @@ -216,7 +216,9 @@ export default function ChildrenPage() { > - + {t('shareCode.title')} @@ -241,7 +241,7 @@ export default function FamilyPage() { {/* Family Members */} - + {t('members.title', { count: members.length })} diff --git a/maternal-web/app/page.tsx b/maternal-web/app/page.tsx index 6f5f56a..c412704 100644 --- a/maternal-web/app/page.tsx +++ b/maternal-web/app/page.tsx @@ -165,7 +165,9 @@ export default function HomePage() { aria-label={t('quickActions.navigateTo', { action: action.label })} sx={{ p: 3, - height: '100%', + height: '140px', // Fixed height for consistency + minHeight: '140px', // Ensure minimum height + width: '100%', // Full width of grid container display: 'flex', flexDirection: 'column', alignItems: 'center', @@ -225,8 +227,10 @@ export default function HomePage() { display: 'flex', flexDirection: 'column', alignItems: 'center', - height: '100%', - minHeight: '120px' + justifyContent: 'center', + height: '120px', // Fixed height for consistency + minHeight: '120px', + width: '100%' }} >