diff --git a/src/pages/views/workspace/WorkspaceInput.tsx b/src/pages/views/workspace/WorkspaceInput.tsx
index a06eb7b..9c4ee92 100644
--- a/src/pages/views/workspace/WorkspaceInput.tsx
+++ b/src/pages/views/workspace/WorkspaceInput.tsx
@@ -11,21 +11,7 @@ import { useVoiceStream } from '../../../hooks/useSpeechAudioCapture';
import type { WorkspaceFile, DataSource, FeatureDataSource } from './useWorkspace';
import { useLanguage } from '../../../providers/language/LanguageContext';
-
-const _STT_LANGUAGES = [
- { code: 'de-DE', label: 'Deutsch' },
- { code: 'en-US', label: 'English (US)' },
- { code: 'en-GB', label: 'English (UK)' },
- { code: 'fr-FR', label: 'Francais' },
- { code: 'it-IT', label: 'Italiano' },
- { code: 'es-ES', label: 'Espanol' },
- { code: 'pt-BR', label: 'Portugues' },
- { code: 'nl-NL', label: 'Nederlands' },
- { code: 'pl-PL', label: 'Polski' },
- { code: 'ru-RU', label: 'Russkij' },
- { code: 'ja-JP', label: 'Japanese' },
- { code: 'zh-CN', label: 'Chinese' },
-];
+import { useVoiceCatalog } from '../../../contexts/VoiceCatalogContext';
interface PendingFile {
fileId: string;
@@ -88,6 +74,7 @@ export const WorkspaceInput: React.FC
= ({ instanceId: _ins
onDraftAppendConsumed,
}) => {
const { t } = useLanguage();
+ const { languages: voiceCatalogLanguages } = useVoiceCatalog();
const [prompt, setPrompt] = useState('');
const [showAutocomplete, setShowAutocomplete] = useState(false);
const [autocompleteFilter, setAutocompleteFilter] = useState('');
@@ -617,23 +604,23 @@ export const WorkspaceInput: React.FC = ({ instanceId: _ins
borderRadius: 8, boxShadow: '0 -2px 8px rgba(0,0,0,0.1)', zIndex: 20,
maxHeight: 240, overflowY: 'auto', minWidth: 160,
}}>
- {_STT_LANGUAGES.map(lang => (
+ {voiceCatalogLanguages.map(lang => (
{
- setVoiceLanguage(lang.code);
+ setVoiceLanguage(lang.bcp47);
setShowLangPicker(false);
- fetch('/api/voice/preferences', { method: 'PUT', credentials: 'include', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ sttLanguage: lang.code }) }).catch(() => {});
+ fetch('/api/voice/preferences', { method: 'PUT', credentials: 'include', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ sttLanguage: lang.bcp47 }) }).catch(() => {});
}}
style={{
padding: '8px 12px', cursor: 'pointer', fontSize: 13,
- background: lang.code === voiceLanguage ? 'var(--primary-color, #F25843)' : 'transparent',
- color: lang.code === voiceLanguage ? '#fff' : 'var(--text-primary, #333)',
+ background: lang.bcp47 === voiceLanguage ? 'var(--primary-color, #F25843)' : 'transparent',
+ color: lang.bcp47 === voiceLanguage ? '#fff' : 'var(--text-primary, #333)',
}}
- onMouseEnter={e => { if (lang.code !== voiceLanguage) e.currentTarget.style.background = 'var(--bg-secondary, #f5f5f5)'; }}
- onMouseLeave={e => { if (lang.code !== voiceLanguage) e.currentTarget.style.background = ''; }}
+ onMouseEnter={e => { if (lang.bcp47 !== voiceLanguage) e.currentTarget.style.background = 'var(--bg-secondary, #f5f5f5)'; }}
+ onMouseLeave={e => { if (lang.bcp47 !== voiceLanguage) e.currentTarget.style.background = ''; }}
>
- {lang.label} ({lang.code})
+ {lang.flag ? `${lang.flag} ` : ''}{lang.label} ({lang.bcp47})
))}