# Multi-Language Support Implementation Plan ## Overview Add comprehensive multi-language support to the Ghid Biblic application, starting with English as the second language alongside Romanian. ## Current State - **Database**: Already supports multiple languages (`lang` field) and translations (`translation` field) - **Frontend**: Hardcoded Romanian interface - **Vector Search**: Romanian-only search logic - **Bible Data**: Only Romanian (FIDELA) version imported ## Implementation Phases ### Phase 1: Core Infrastructure 1. **Install i18n Framework** - Add `next-intl` for Next.js internationalization - Configure locale routing (`/ro/`, `/en/`) - Set up translation file structure 2. **Language Configuration** - Create language detection and switching logic - Add language persistence (localStorage/cookies) - Configure default language fallbacks 3. **Translation Files Structure** ``` messages/ ├── ro.json (Romanian - existing content) ├── en.json (English translations) └── common.json (shared terms) ``` ### Phase 2: UI Internationalization 1. **Navigation Component** - Translate all menu items and labels - Add language switcher dropdown - Update routing for locale-aware navigation 2. **Chat Interface** - Translate all UI text and prompts - Add suggested questions per language - Update loading states and error messages 3. **Page Content** - Home page (`/` → `/[locale]/`) - Bible browser (`/bible` → `/[locale]/bible`) - Search page (`/search` → `/[locale]/search`) - Prayer requests (`/prayers` → `/[locale]/prayers`) ### Phase 3: Backend Localization 1. **Vector Search Updates** - Modify search functions to filter by language - Add language parameter to search APIs - Update hybrid search for language-specific full-text search 2. **Chat API Enhancement** - Language-aware Bible verse retrieval - Localized AI response prompts - Language-specific fallback responses 3. **API Route Updates** - Add locale parameter to all API endpoints - Update error responses for each language - Configure language-specific search configurations ### Phase 4: Bible Data Management 1. **English Bible Import** - Source: API.Bible or public domain English Bible (KJV/ESV) - Adapt existing import script for English - Generate English embeddings using Azure OpenAI 2. **Language-Aware Bible Browser** - Add language selector in Bible interface - Filter books/chapters/verses by selected language - Show parallel verses when both languages available ### Phase 5: Enhanced Features 1. **Parallel Bible View** - Side-by-side Romanian/English verse display - Cross-reference linking between translations - Language comparison in search results 2. **Smart Language Detection** - Auto-detect query language in chat - Suggest language switch based on user input - Mixed-language search capabilities 3. **Advanced Search Features** - Cross-language semantic search - Translation comparison tools - Language-specific biblical term glossaries ## Technical Implementation Details ### Routing Structure ``` Current: /page New: /[locale]/page Examples: - /ro/biblia (Romanian Bible) - /en/bible (English Bible) - /ro/rugaciuni (Romanian Prayers) - /en/prayers (English Prayers) ``` ### Database Schema Changes **No changes needed** - current schema already supports: - Multiple languages via `lang` field - Multiple translations via `translation` field - Unique constraints per translation/language ### Vector Search Updates ```typescript // Current searchBibleHybrid(query: string, limit: number) // Enhanced searchBibleHybrid(query: string, language: string, limit: number) ``` ### Translation File Structure ```json // messages/en.json { "navigation": { "home": "Home", "bible": "Bible", "prayers": "Prayers", "search": "Search" }, "chat": { "placeholder": "Ask your biblical question...", "suggestions": [ "What does the Bible say about love?", "Explain the parable of the sower", "What are the fruits of the Spirit?" ] } } ``` ### Language Switcher Component - Dropdown in navigation header - Flag icons for visual identification - Persist language choice across sessions - Redirect to equivalent page in new language ## Dependencies to Add ```json { "next-intl": "^3.x", "@formatjs/intl-localematcher": "^0.x", "negotiator": "^0.x" } ``` ## File Structure Changes ``` app/ ├── [locale]/ │ ├── page.tsx │ ├── bible/ │ ├── prayers/ │ ├── search/ │ └── layout.tsx ├── api/ (unchanged) └── globals.css messages/ ├── en.json ├── ro.json └── index.ts components/ ├── language-switcher.tsx ├── navigation.tsx (updated) └── chat/ (updated) ``` ## Testing Strategy 1. **Unit Tests**: Translation loading and language switching 2. **Integration Tests**: API endpoints with locale parameters 3. **E2E Tests**: Complete user flows in both languages 4. **Performance Tests**: Vector search with language filtering ## Rollout Plan 1. **Development**: Implement Phase 1-3 (core infrastructure and UI) 2. **Testing**: Deploy to staging with Romanian/English support 3. **Beta Release**: Limited user testing with feedback collection 4. **Production**: Full release with both languages 5. **Future**: Add additional languages based on user demand ## Estimated Timeline - **Phase 1-2**: 2-3 days (i18n setup and UI translation) - **Phase 3**: 1-2 days (backend localization) - **Phase 4**: 2-3 days (English Bible import and embeddings) - **Phase 5**: 3-4 days (enhanced features) - **Total**: 8-12 days for complete implementation ## Success Metrics - Language switching works seamlessly - Vector search returns accurate results in both languages - AI chat responses are contextually appropriate per language - User can browse Bible in preferred language - Performance remains optimal with language filtering ## Future Considerations - Spanish, French, German language support - Regional dialect variations - Audio Bible integration per language - Collaborative translation features for community contributions