Skip to content

Feature/internationalization support#73

Open
meauxt wants to merge 11 commits intomainfrom
feature/internationalization-support
Open

Feature/internationalization support#73
meauxt wants to merge 11 commits intomainfrom
feature/internationalization-support

Conversation

@meauxt
Copy link
Copy Markdown
Contributor

@meauxt meauxt commented Mar 11, 2026

This pull request introduces internationalization (i18n) support for the application, laying the groundwork for multi-language functionality. It adds core i18n libraries and configuration, and provides initial English and Arabic translation files for common UI elements, chores, and settings.

Internationalization Infrastructure:

  • Added i18next, i18next-browser-languagedetector, i18next-http-backend, and react-i18next dependencies to package.json to enable i18n support in the frontend.
  • Introduced a crowdin.yml configuration file for integrating with Crowdin, streamlining the translation workflow and file structure.

meauxt added 11 commits March 8, 2026 15:57
- 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.
- Add LocalizationSettings to RouterContext routes
- Add localization card to SettingsOverview menu
- Update LocalizationSettings to use SettingsLayout
- Add Language icon import

Now accessible at /settings/localization
…RTL support

- Add navigation translations (All Tasks, Archived, Things, etc.)
- Translate NavBar menu items and logout button
- Add comprehensive SettingsOverview translations
- Translate upgrade card and all settings sections
- Add ChoreView translations structure
- Improve RTL CSS support for better card alignment
- Fix flex, list, and container alignment for RTL languages

Navigation drawer now shows translated menu items in user's language.
Settings overview page fully translated.
RTL languages (Arabic, Hebrew) now have proper alignment for sidepanel cards.
…mat preferences

Navigation:
- Fix drawer to slide from right in RTL languages (Arabic, Hebrew)
- Add anchor prop based on isRTL flag
- Drawer now properly positioned for RTL languages

ChoreView Translations:
- Add comprehensive Arabic and Spanish translations for ChoreView
- Translate info cards (Assignment, Schedule, Statistics, Details)
- Translate notification messages (Task Completed, Undo, etc.)
- Translate action buttons and confirmation modals
- Translate timer-related modals (Reset Timer, Clear All Time Records)

Date Format Application:
- Replace hardcoded moment date formats with formatDate()
- Apply user's selected date format preference in ChoreView
- Due date chip now respects user's date format setting
- Dates display consistently according to user preference

All UI text in ChoreView now translates to Arabic and Spanish.
Navigation drawer slides from correct side for RTL languages.
…eView

The formatDate function was being called with a boolean (true) as the format
parameter, which caused moment.js to throw 'format.match is not a function' error.
Changed to use formatDateTime() which properly formats both date and time.
- Add all missing translation keys to ChoreView component
- Replace hardcoded strings with i18n translation calls
- Complete Spanish (es) translations for ChoreView and Settings
- Complete Arabic (ar) translations for ChoreView and Settings
- Update ProfileSettings component with full translation support
- Add translations for notifications, confirmations, and UI labels
- 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant