Implement complete multi-language support with Romanian/English
- Added next-intl for internationalization with Romanian as default locale - Restructured app directory with [locale] routing (/ro, /en) - Created comprehensive translation files for both languages - Fixed Next.js 15 async params compatibility in layout components - Updated all components to use proper i18n hooks and translations - Configured middleware for locale routing and fallbacks - Fixed FloatingChat component translation array handling - Restored complete home page with internationalized content - Fixed Material-UI Slide component prop error (mountOnExit → unmountOnExit) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -4,6 +4,7 @@ import { searchBibleHybrid, BibleVerse } from '@/lib/vector-search'
|
||||
|
||||
const chatRequestSchema = z.object({
|
||||
message: z.string().min(1),
|
||||
locale: z.string().optional().default('ro'),
|
||||
history: z.array(z.object({
|
||||
id: z.string(),
|
||||
role: z.enum(['user', 'assistant']),
|
||||
@@ -15,11 +16,10 @@ const chatRequestSchema = z.object({
|
||||
export async function POST(request: NextRequest) {
|
||||
try {
|
||||
const body = await request.json()
|
||||
const { message, history } = chatRequestSchema.parse(body)
|
||||
const { message, locale, history } = chatRequestSchema.parse(body)
|
||||
|
||||
// For now, return a mock response
|
||||
// TODO: Integrate with Azure OpenAI when ready
|
||||
const response = await generateBiblicalResponse(message, history)
|
||||
// Generate response using Azure OpenAI with vector search
|
||||
const response = await generateBiblicalResponse(message, locale, history)
|
||||
|
||||
return NextResponse.json({
|
||||
success: true,
|
||||
@@ -49,10 +49,10 @@ export async function POST(request: NextRequest) {
|
||||
}
|
||||
}
|
||||
|
||||
async function generateBiblicalResponse(message: string, history: any[]): Promise<string> {
|
||||
async function generateBiblicalResponse(message: string, locale: string, history: any[]): Promise<string> {
|
||||
try {
|
||||
// Search for relevant Bible verses using vector search
|
||||
const relevantVerses = await searchBibleHybrid(message, 5)
|
||||
// Search for relevant Bible verses using vector search with language filtering
|
||||
const relevantVerses = await searchBibleHybrid(message, locale, 5)
|
||||
|
||||
// Create context from relevant verses
|
||||
const versesContext = relevantVerses
|
||||
@@ -65,8 +65,9 @@ async function generateBiblicalResponse(message: string, history: any[]): Promis
|
||||
.map(msg => `${msg.role}: ${msg.content}`)
|
||||
.join('\n')
|
||||
|
||||
// Construct prompt for Azure OpenAI
|
||||
const systemPrompt = `Ești un asistent AI pentru întrebări biblice în limba română. Răspunde pe baza Scripturii, fiind respectuos și înțelept.
|
||||
// Create language-specific system prompts
|
||||
const systemPrompts = {
|
||||
ro: `Ești un asistent AI pentru întrebări biblice în limba română. Răspunde pe baza Scripturii, fiind respectuos și înțelept.
|
||||
|
||||
Instrucțiuni:
|
||||
- Folosește versurile biblice relevante pentru a răspunde la întrebare
|
||||
@@ -81,7 +82,27 @@ ${versesContext}
|
||||
Conversația anterioară:
|
||||
${conversationHistory}
|
||||
|
||||
Întrebarea curentă: ${message}`
|
||||
Întrebarea curentă: ${message}`,
|
||||
|
||||
en: `You are an AI assistant for biblical questions in English. Answer based on Scripture, being respectful and wise.
|
||||
|
||||
Instructions:
|
||||
- Use the relevant Bible verses to answer the question
|
||||
- Always cite biblical references (e.g., John 3:16)
|
||||
- Respond in English
|
||||
- Be empathetic and encouraging
|
||||
- If unsure, encourage personal study and prayer
|
||||
|
||||
Relevant verses for this question:
|
||||
${versesContext}
|
||||
|
||||
Previous conversation:
|
||||
${conversationHistory}
|
||||
|
||||
Current question: ${message}`
|
||||
}
|
||||
|
||||
const systemPrompt = systemPrompts[locale as keyof typeof systemPrompts] || systemPrompts.en
|
||||
|
||||
// Call Azure OpenAI
|
||||
const response = await fetch(
|
||||
@@ -120,11 +141,21 @@ ${conversationHistory}
|
||||
} catch (error) {
|
||||
console.error('Error calling Azure OpenAI:', error)
|
||||
|
||||
// Fallback to simple response if AI fails
|
||||
return `Îmi pare rău, dar întâmpin o problemă tehnică în acest moment. Te încurajez să cercetezi acest subiect în Scripturi și să te rogi pentru înțelegere.
|
||||
// Language-specific fallback responses
|
||||
const fallbackResponses = {
|
||||
ro: `Îmi pare rău, dar întâmpin o problemă tehnică în acest moment. Te încurajez să cercetezi acest subiect în Scripturi și să te rogi pentru înțelegere.
|
||||
|
||||
"Cercetați Scripturile, pentru că socotiți că în ele aveți viața veșnică, și tocmai ele mărturisesc despre Mine" (Ioan 5:39).
|
||||
|
||||
"Dacă vreunul dintre voi duce lipsă de înțelepciune, să ceară de la Dumnezeu, care dă tuturor cu dărnicie și fără mustrare, și i se va da" (Iacov 1:5).`
|
||||
"Dacă vreunul dintre voi duce lipsă de înțelepciune, să ceară de la Dumnezeu, care dă tuturor cu dărnicie și fără mustrare, și i se va da" (Iacov 1:5).`,
|
||||
|
||||
en: `Sorry, I'm experiencing a technical issue at the moment. I encourage you to research this topic in Scripture and pray for understanding.
|
||||
|
||||
"You study the Scriptures diligently because you think that in them you have eternal life. These are the very Scriptures that testify about me" (John 5:39).
|
||||
|
||||
"If any of you lacks wisdom, you should ask God, who gives generously to all without finding fault, and it will be given to you" (James 1:5).`
|
||||
}
|
||||
|
||||
return fallbackResponses[locale as keyof typeof fallbackResponses] || fallbackResponses.en
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user