Implemented comprehensive frontend localization infrastructure supporting 5 languages (English, Spanish, French, Portuguese, Chinese) with measurement unit preferences (Metric/Imperial). This lays the foundation for international user support. **Core Infrastructure:** - Installed i18next, react-i18next, i18next-browser-languagedetector - Created I18nProvider component integrated into app layout - Configured i18next with language detection and localStorage persistence - Created 35 translation files (5 languages × 7 namespaces) **Translation Namespaces:** - common: App-wide UI elements, navigation, actions - tracking: Activity tracking (feeding, sleep, diaper, milestones) - ai: AI assistant chat interface - auth: Authentication flows (login, signup, password reset) - settings: Settings and preferences - onboarding: Onboarding flow - errors: Error messages and validation **Custom Hooks:** - useTranslation: Type-safe translation wrapper - useLocale: Language and measurement system management - useFormatting: Date, time, number, and unit formatting **Measurement Unit Support:** - Created unit conversion utilities (weight, height, temperature, volume) - Metric: kg, cm, °C, ml - Imperial: lb, in, °F, oz - Bidirectional conversion functions **UI Components:** - LanguageSelector: Dropdown to change app language - MeasurementUnitSelector: Toggle between Metric/Imperial - Integrated both into Settings page Preferences section **Next Steps (Remaining):** - Add measurement preferences to backend user schema - Create onboarding flow with language/measurement selection - Apply translations to existing components (dashboard, tracking forms) - Implement multi-language AI responses - Add professional translations (currently using basic translations) **File Highlights:** - lib/i18n/config.ts: i18next configuration - hooks/useFormatting.ts: Formatting utilities with locale support - lib/utils/unitConversion.ts: Unit conversion logic - components/settings/*Selector.tsx: Language and measurement selectors - locales/*/: Translation files for 5 languages 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
109 lines
3.0 KiB
JSON
109 lines
3.0 KiB
JSON
{
|
|
"title": "Settings",
|
|
"account": {
|
|
"title": "Account",
|
|
"profile": "Profile",
|
|
"email": "Email",
|
|
"password": "Password",
|
|
"changePassword": "Change Password",
|
|
"deleteAccount": "Delete Account",
|
|
"confirmDelete": "Are you sure you want to delete your account? This action cannot be undone."
|
|
},
|
|
"preferences": {
|
|
"title": "Preferences",
|
|
"language": "Language",
|
|
"measurementUnits": "Measurement Units",
|
|
"metric": "Metric (kg, cm, °C, ml)",
|
|
"imperial": "Imperial (lb, in, °F, oz)",
|
|
"dateFormat": "Date Format",
|
|
"timeFormat": "Time Format",
|
|
"12hour": "12-hour",
|
|
"24hour": "24-hour",
|
|
"theme": "Theme",
|
|
"light": "Light",
|
|
"dark": "Dark",
|
|
"auto": "Auto (System)"
|
|
},
|
|
"notifications": {
|
|
"title": "Notifications",
|
|
"push": "Push Notifications",
|
|
"email": "Email Notifications",
|
|
"feedingReminders": "Feeding Reminders",
|
|
"sleepReminders": "Sleep Reminders",
|
|
"milestoneAlerts": "Milestone Alerts",
|
|
"familyUpdates": "Family Updates",
|
|
"aiSuggestions": "AI Suggestions"
|
|
},
|
|
"privacy": {
|
|
"title": "Privacy & Security",
|
|
"dataSharing": "Data Sharing",
|
|
"familyAccess": "Family Access",
|
|
"biometric": "Biometric Authentication",
|
|
"enableFaceId": "Enable Face ID",
|
|
"enableTouchId": "Enable Touch ID",
|
|
"enableFingerprint": "Enable Fingerprint",
|
|
"dataExport": "Export Data",
|
|
"downloadData": "Download Your Data"
|
|
},
|
|
"family": {
|
|
"title": "Family",
|
|
"members": "Family Members",
|
|
"inviteMember": "Invite Member",
|
|
"removeMember": "Remove Member",
|
|
"permissions": "Permissions",
|
|
"role": "Role",
|
|
"roles": {
|
|
"admin": "Admin",
|
|
"parent": "Parent",
|
|
"caregiver": "Caregiver",
|
|
"viewer": "Viewer"
|
|
}
|
|
},
|
|
"children": {
|
|
"title": "Children",
|
|
"addChild": "Add Child",
|
|
"editChild": "Edit Child",
|
|
"removeChild": "Remove Child",
|
|
"name": "Name",
|
|
"dateOfBirth": "Date of Birth",
|
|
"gender": "Gender",
|
|
"genders": {
|
|
"male": "Male",
|
|
"female": "Female",
|
|
"other": "Other",
|
|
"preferNotToSay": "Prefer not to say"
|
|
}
|
|
},
|
|
"subscription": {
|
|
"title": "Subscription",
|
|
"plan": "Current Plan",
|
|
"free": "Free",
|
|
"premium": "Premium",
|
|
"upgradeToPremium": "Upgrade to Premium",
|
|
"manageBilling": "Manage Billing",
|
|
"cancelSubscription": "Cancel Subscription",
|
|
"renewalDate": "Renewal Date",
|
|
"features": {
|
|
"unlimitedAi": "Unlimited AI questions",
|
|
"familySync": "Family sync",
|
|
"advancedAnalytics": "Advanced analytics",
|
|
"exportReports": "Export reports",
|
|
"prioritySupport": "Priority support"
|
|
}
|
|
},
|
|
"about": {
|
|
"title": "About",
|
|
"version": "Version",
|
|
"termsOfService": "Terms of Service",
|
|
"privacyPolicy": "Privacy Policy",
|
|
"helpCenter": "Help Center",
|
|
"contactSupport": "Contact Support",
|
|
"rateApp": "Rate App",
|
|
"shareApp": "Share App"
|
|
},
|
|
"save": "Save Changes",
|
|
"saved": "Settings saved successfully",
|
|
"cancel": "Cancel",
|
|
"reset": "Reset to Default"
|
|
}
|