/** * Detect user's preferred language from their existing notes * Analyzes language distribution across all user's notes */ import { auth } from '@/auth' import { prisma } from '@/lib/prisma' import { SupportedLanguage } from './load-translations' export async function detectUserLanguage(): Promise { const session = await auth() // Default to English for non-logged-in users if (!session?.user?.id) { return 'en' } try { // Get all user's notes with detected languages const notes = await prisma.note.findMany({ where: { userId: session.user.id, language: { not: null } }, select: { language: true, languageConfidence: true } }) if (notes.length === 0) { return 'en' // Default for new users } // Count language occurrences weighted by confidence const languageScores: Record = {} for (const note of notes) { if (note.language) { const confidence = note.languageConfidence || 0.8 languageScores[note.language] = (languageScores[note.language] || 0) + confidence } } // Find language with highest score const sortedLanguages = Object.entries(languageScores) .sort(([, a], [, b]) => b - a) if (sortedLanguages.length > 0) { const topLanguage = sortedLanguages[0][0] as SupportedLanguage // Verify it's a supported language if (['fr', 'en', 'es', 'de', 'fa'].includes(topLanguage)) { return topLanguage } } return 'en' } catch (error) { console.error('Error detecting user language:', error) return 'en' } }