From b03b7d94b7c47297e2a1720d9dda4d3cc98bc0df Mon Sep 17 00:00:00 2001 From: NikhilGangaram Date: Sun, 26 Oct 2025 22:28:56 -0400 Subject: [PATCH] Add language support and localization features --- src/components/chat/ai-chat.tsx | 6 +++++- src/utils/gemini-client.ts | 5 ++++- vite.config.ts | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/components/chat/ai-chat.tsx b/src/components/chat/ai-chat.tsx index c6eedfc..9205586 100644 --- a/src/components/chat/ai-chat.tsx +++ b/src/components/chat/ai-chat.tsx @@ -5,8 +5,10 @@ import { GeminiContextLoader, createContextLoader } from '@/utils/gemini-context import ChatMessageComponent from './chat-message'; import { IoSend, IoRefresh, IoSparkles, IoDocument, IoStop } from 'react-icons/io5'; import { v4 as uuidv4 } from 'uuid'; +import { useTranslation } from 'react-i18next'; export default function AIChat() { + const { i18n } = useTranslation(); const [messages, setMessages] = useState([]); const [inputValue, setInputValue] = useState(''); const [status, setStatus] = useState(ChatStatus.IDLE); @@ -150,13 +152,15 @@ export default function AIChat() { const terminalContext = contextLoader.current?.getCurrentTerminalContext() || ''; // Use the new simplified chat API - all teaching guidelines are now in backend - console.log(`[AIChat] Sending message with session ${sessionId.substring(0, 8)}... (history: ${messages.length} messages)`); + const currentLanguage = i18n.language || 'en'; + console.log(`[AIChat] Sending message with session ${sessionId.substring(0, 8)}... (history: ${messages.length} messages, language: ${currentLanguage})`); await geminiClient.current.chatWithContext( sessionId, userMessage.content, messages, // Conversation history editorContext, terminalContext, + currentLanguage, // User's selected language (content: string) => { // Check if generation was aborted if (abortController.current?.signal.aborted) { diff --git a/src/utils/gemini-client.ts b/src/utils/gemini-client.ts index 31f1e5d..dbca8e8 100644 --- a/src/utils/gemini-client.ts +++ b/src/utils/gemini-client.ts @@ -103,6 +103,7 @@ export class GeminiClient { conversationHistory: ChatMessage[] = [], editorContext: string = '', terminalContext: string = '', + language: string = 'en', onStream?: (content: string) => void, signal?: AbortSignal ): Promise { @@ -121,7 +122,8 @@ export class GeminiClient { content: msg.content })), editor_context: editorContext, - terminal_context: terminalContext + terminal_context: terminalContext, + language: language }; console.log('Sending simplified chat request to backend'); @@ -288,6 +290,7 @@ export class GeminiClient { conversationHistory, '', // No editor context in legacy mode '', // No terminal context in legacy mode + 'en', // Default language for legacy mode onStream, signal ); diff --git a/vite.config.ts b/vite.config.ts index 9db5311..a55a472 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -65,7 +65,7 @@ export default defineConfig({ server: { port: 3000, proxy: { - '/api': 'https://xrp-code-d-u01.wpi.edu' + '/api': 'http://localhost:8000' // 'https://xrp-code-d-u01.wpi.edu' } }, build: {