All existing locales use two-letter codes (ar, en, es, fr, nl) and the
crowdin.yml output path uses %two_letters_code% — using pt-BR would
conflict with any future Crowdin-imported Portuguese.
The display name stays 'Portuguese (Brazil)' / 'Português (Brasil)' so
users still see it's the Brazilian dialect.
Adds public/locales/pt-BR/ with complete translations for common,
chores, and settings namespaces. Registers pt-BR in the
AVAILABLE_LANGUAGES picker in LocalizationContext.jsx.
Tone: informal 'você' form, natural Brazilian Portuguese.
- Updated LocalizationContext to consolidate date and time formatting functions into a single `fmt` object.
- Modified ChoreCardHelpers to accept a time format parameter for due date text.
- Adjusted ChoreView, RepeatSection, TimePassedCard, and other components to utilize the new `fmt` object for date and time formatting.
- Enhanced HistoryCard and TimerEditModal to use the new localization functions for consistent date and time display.
- Refined Settings and CircleSettings to leverage the updated localization methods for subscription and member date displays.
- Improved ThingsHistory and UserActivities to format dates and times using the new localization structure.
- Ensured CalendarCard and CalendarDual components utilize the new formatting functions for better readability.
- Add multi-language support with i18next and react-i18next
- Implement user-selectable date format preferences (5 formats)
- Add time format preferences (12-hour/24-hour)
- Implement RTL (right-to-left) support for Arabic, Hebrew, Persian, Urdu
- Add first day of week preference
- Create LocalizationContext for managing i18n settings
- Add LocalizationSettings component to Settings page
- Include sample translations: English, Spanish, Arabic
- Configure 10 languages: en, es, fr, de, ar, he, zh, ja, pt, ru
- Add translation management documentation and Crowdin config
- Create date formatting utilities that respect user preferences
- Add RTL CSS styles for proper layout mirroring
- Update Settings and ThemeToggle components to use translations
- Add comprehensive documentation (implementation guide, quick reference, translation guide)
All user preferences are persisted to localStorage and apply throughout the app.