diff --git a/app/src/components/intelligence/ModelCouncilTab.tsx b/app/src/components/intelligence/ModelCouncilTab.tsx index adcc8af96..e04a409ff 100644 --- a/app/src/components/intelligence/ModelCouncilTab.tsx +++ b/app/src/components/intelligence/ModelCouncilTab.tsx @@ -84,12 +84,14 @@ interface ModelPickerState { onSelect: (model: string) => void; } +// `value` is the stable hint identifier; `labelKey` is resolved via `useT()` +// at render (this is a module-level const with no hook scope of its own). const MODEL_HINTS = [ - { value: 'default', label: 'Default' }, - { value: 'hint:chat', label: 'Chat' }, - { value: 'hint:reasoning', label: 'Reasoning' }, - { value: 'hint:code', label: 'Code' }, - { value: 'hint:summarize', label: 'Summarize' }, + { value: 'default', labelKey: 'modelCouncil.hint.default' }, + { value: 'hint:chat', labelKey: 'modelCouncil.hint.chat' }, + { value: 'hint:reasoning', labelKey: 'modelCouncil.hint.reasoning' }, + { value: 'hint:code', labelKey: 'modelCouncil.hint.code' }, + { value: 'hint:summarize', labelKey: 'modelCouncil.hint.summarize' }, ] as const; interface ConnectedModelProvider { @@ -326,7 +328,7 @@ const ModelPickerDialog = ({ ? 'border-primary-500 bg-primary-50 text-primary-700 dark:bg-primary-500/15 dark:text-primary-200' : 'border-stone-200 text-stone-700 hover:bg-stone-50 dark:border-neutral-700 dark:text-neutral-200 dark:hover:bg-neutral-900' }`}> - {hint.label} + {t(hint.labelKey)} {hint.value} diff --git a/app/src/lib/i18n/ar.ts b/app/src/lib/i18n/ar.ts index 0f44a0a31..e9d1d798a 100644 --- a/app/src/lib/i18n/ar.ts +++ b/app/src/lib/i18n/ar.ts @@ -5140,6 +5140,11 @@ const messages: TranslationMap = { 'modelCouncil.selectModel': 'Select', 'modelCouncil.modelPickerHelp': 'اختر تلميح توجيه أو حدد نموذج مزود بدقة.', 'modelCouncil.closeModelPicker': 'Close', + 'modelCouncil.hint.chat': 'محادثة', + 'modelCouncil.hint.code': 'الشيفرة', + 'modelCouncil.hint.default': 'افتراضي', + 'modelCouncil.hint.reasoning': 'الاستدلال', + 'modelCouncil.hint.summarize': 'تلخيص', 'modelCouncil.modelPickerHints': 'Hints', 'modelCouncil.modelPickerProviderModel': 'المزود + النموذج', 'modelCouncil.modelProviderLabel': 'مزود النموذج', diff --git a/app/src/lib/i18n/bn.ts b/app/src/lib/i18n/bn.ts index ec9a54bf5..c2ff96c9e 100644 --- a/app/src/lib/i18n/bn.ts +++ b/app/src/lib/i18n/bn.ts @@ -5242,6 +5242,11 @@ const messages: TranslationMap = { 'modelCouncil.modelPickerHelp': 'রাউটিং ইঙ্গিত নির্বাচন করুন বা সুনির্দিষ্ট প্রদানকারী মডেল পিন করুন।', 'modelCouncil.closeModelPicker': 'Close', + 'modelCouncil.hint.chat': 'চ্যাট', + 'modelCouncil.hint.code': 'কোড', + 'modelCouncil.hint.default': 'ডিফল্ট', + 'modelCouncil.hint.reasoning': 'যুক্তি', + 'modelCouncil.hint.summarize': 'সারসংক্ষেপ', 'modelCouncil.modelPickerHints': 'Hints', 'modelCouncil.modelPickerProviderModel': 'প্রদানকারী + মডেল', 'modelCouncil.modelProviderLabel': 'মডেল প্রদানকারী', diff --git a/app/src/lib/i18n/de.ts b/app/src/lib/i18n/de.ts index ca55e154a..1f0d5bacb 100644 --- a/app/src/lib/i18n/de.ts +++ b/app/src/lib/i18n/de.ts @@ -5379,6 +5379,11 @@ const messages: TranslationMap = { 'modelCouncil.modelPickerHelp': 'Wählen Sie einen Routing-Hinweis oder pinnen Sie ein genaues Anbietermodell.', 'modelCouncil.closeModelPicker': 'Close', + 'modelCouncil.hint.chat': 'Chat', + 'modelCouncil.hint.code': 'Code', + 'modelCouncil.hint.default': 'Standard', + 'modelCouncil.hint.reasoning': 'Schlussfolgern', + 'modelCouncil.hint.summarize': 'Zusammenfassung', 'modelCouncil.modelPickerHints': 'Hints', 'modelCouncil.modelPickerProviderModel': 'Anbieter + Modell', 'modelCouncil.modelProviderLabel': 'Modellanbieter', diff --git a/app/src/lib/i18n/en.ts b/app/src/lib/i18n/en.ts index 07b1d6b33..89142295c 100644 --- a/app/src/lib/i18n/en.ts +++ b/app/src/lib/i18n/en.ts @@ -543,6 +543,11 @@ const en: TranslationMap = { 'modelCouncil.selectModel': 'Select', 'modelCouncil.modelPickerHelp': 'Select a routing hint or pin an exact provider model.', 'modelCouncil.closeModelPicker': 'Close', + 'modelCouncil.hint.chat': 'Chat', + 'modelCouncil.hint.code': 'Code', + 'modelCouncil.hint.default': 'Default', + 'modelCouncil.hint.reasoning': 'Reasoning', + 'modelCouncil.hint.summarize': 'Summarize', 'modelCouncil.modelPickerHints': 'Hints', 'modelCouncil.modelPickerProviderModel': 'Provider + model', 'modelCouncil.modelProviderLabel': 'Model provider', diff --git a/app/src/lib/i18n/es.ts b/app/src/lib/i18n/es.ts index fb54de0b7..c70795fe7 100644 --- a/app/src/lib/i18n/es.ts +++ b/app/src/lib/i18n/es.ts @@ -5351,6 +5351,11 @@ const messages: TranslationMap = { 'modelCouncil.modelPickerHelp': 'Selecciona una pista de enrutamiento o fija un modelo de proveedor exacto.', 'modelCouncil.closeModelPicker': 'Cerrar', + 'modelCouncil.hint.chat': 'Chat', + 'modelCouncil.hint.code': 'Código', + 'modelCouncil.hint.default': 'Predeterminado', + 'modelCouncil.hint.reasoning': 'Razonamiento', + 'modelCouncil.hint.summarize': 'Resumen', 'modelCouncil.modelPickerHints': 'Sugerencias', 'modelCouncil.modelPickerProviderModel': 'Proveedor + modelo', 'modelCouncil.modelProviderLabel': 'Proveedor del modelo', diff --git a/app/src/lib/i18n/fr.ts b/app/src/lib/i18n/fr.ts index 111cb1e3d..02ef0472f 100644 --- a/app/src/lib/i18n/fr.ts +++ b/app/src/lib/i18n/fr.ts @@ -5369,6 +5369,11 @@ const messages: TranslationMap = { 'modelCouncil.modelPickerHelp': 'Sélectionnez un indice de routage ou épinglez un modèle fournisseur exact.', 'modelCouncil.closeModelPicker': 'Close', + 'modelCouncil.hint.chat': 'Conversation', + 'modelCouncil.hint.code': 'Code', + 'modelCouncil.hint.default': 'Par défaut', + 'modelCouncil.hint.reasoning': 'Raisonnement', + 'modelCouncil.hint.summarize': 'Résumé', 'modelCouncil.modelPickerHints': 'Hints', 'modelCouncil.modelPickerProviderModel': 'Fournisseur + modèle', 'modelCouncil.modelProviderLabel': 'Fournisseur du modèle', diff --git a/app/src/lib/i18n/hi.ts b/app/src/lib/i18n/hi.ts index b1eee3e76..3cd15ac15 100644 --- a/app/src/lib/i18n/hi.ts +++ b/app/src/lib/i18n/hi.ts @@ -5246,6 +5246,11 @@ const messages: TranslationMap = { 'modelCouncil.selectModel': 'Select', 'modelCouncil.modelPickerHelp': 'रूटिंग संकेत चुनें या सटीक प्रदाता मॉडल पिन करें।', 'modelCouncil.closeModelPicker': 'Close', + 'modelCouncil.hint.chat': 'चैट', + 'modelCouncil.hint.code': 'कोड', + 'modelCouncil.hint.default': 'डिफ़ॉल्ट', + 'modelCouncil.hint.reasoning': 'तर्क', + 'modelCouncil.hint.summarize': 'सारांश', 'modelCouncil.modelPickerHints': 'Hints', 'modelCouncil.modelPickerProviderModel': 'प्रदाता + मॉडल', 'modelCouncil.modelProviderLabel': 'मॉडल प्रदाता', diff --git a/app/src/lib/i18n/id.ts b/app/src/lib/i18n/id.ts index c15c09027..e0d8d9148 100644 --- a/app/src/lib/i18n/id.ts +++ b/app/src/lib/i18n/id.ts @@ -5259,6 +5259,11 @@ const messages: TranslationMap = { 'modelCouncil.selectModel': 'Select', 'modelCouncil.modelPickerHelp': 'Pilih petunjuk routing atau pin model penyedia yang tepat.', 'modelCouncil.closeModelPicker': 'Close', + 'modelCouncil.hint.chat': 'Obrolan', + 'modelCouncil.hint.code': 'Kode', + 'modelCouncil.hint.default': 'Bawaan', + 'modelCouncil.hint.reasoning': 'Penalaran', + 'modelCouncil.hint.summarize': 'Ringkasan', 'modelCouncil.modelPickerHints': 'Hints', 'modelCouncil.modelPickerProviderModel': 'Penyedia + model', 'modelCouncil.modelProviderLabel': 'Penyedia model', diff --git a/app/src/lib/i18n/it.ts b/app/src/lib/i18n/it.ts index 78576f457..3854f30e1 100644 --- a/app/src/lib/i18n/it.ts +++ b/app/src/lib/i18n/it.ts @@ -5338,6 +5338,11 @@ const messages: TranslationMap = { 'modelCouncil.modelPickerHelp': 'Seleziona un suggerimento di routing o fissa un modello fornitore esatto.', 'modelCouncil.closeModelPicker': 'Close', + 'modelCouncil.hint.chat': 'Chat', + 'modelCouncil.hint.code': 'Codice', + 'modelCouncil.hint.default': 'Predefinito', + 'modelCouncil.hint.reasoning': 'Ragionamento', + 'modelCouncil.hint.summarize': 'Riassunto', 'modelCouncil.modelPickerHints': 'Hints', 'modelCouncil.modelPickerProviderModel': 'Fornitore + modello', 'modelCouncil.modelProviderLabel': 'Fornitore del modello', diff --git a/app/src/lib/i18n/ko.ts b/app/src/lib/i18n/ko.ts index 75ed6a3d7..fe3381684 100644 --- a/app/src/lib/i18n/ko.ts +++ b/app/src/lib/i18n/ko.ts @@ -5194,6 +5194,11 @@ const messages: TranslationMap = { 'modelCouncil.selectModel': 'Select', 'modelCouncil.modelPickerHelp': '라우팅 힌트를 선택하거나 정확한 공급자 모델을 고정하세요.', 'modelCouncil.closeModelPicker': 'Close', + 'modelCouncil.hint.chat': '채팅', + 'modelCouncil.hint.code': '코드', + 'modelCouncil.hint.default': '기본값', + 'modelCouncil.hint.reasoning': '추론', + 'modelCouncil.hint.summarize': '요약', 'modelCouncil.modelPickerHints': 'Hints', 'modelCouncil.modelPickerProviderModel': '공급자 + 모델', 'modelCouncil.modelProviderLabel': '모델 공급자', diff --git a/app/src/lib/i18n/pl.ts b/app/src/lib/i18n/pl.ts index caedc854a..33084ce3e 100644 --- a/app/src/lib/i18n/pl.ts +++ b/app/src/lib/i18n/pl.ts @@ -5293,6 +5293,11 @@ const messages: TranslationMap = { 'modelCouncil.modelPickerHelp': 'Wybierz wskazówkę routingu lub przypnij dokładny model dostawcy.', 'modelCouncil.closeModelPicker': 'Close', + 'modelCouncil.hint.chat': 'Czat', + 'modelCouncil.hint.code': 'Kod', + 'modelCouncil.hint.default': 'Domyślny', + 'modelCouncil.hint.reasoning': 'Rozumowanie', + 'modelCouncil.hint.summarize': 'Podsumowanie', 'modelCouncil.modelPickerHints': 'Hints', 'modelCouncil.modelPickerProviderModel': 'Dostawca + model', 'modelCouncil.modelProviderLabel': 'Dostawca modelu', diff --git a/app/src/lib/i18n/pt.ts b/app/src/lib/i18n/pt.ts index 75ca6e9b1..f7256c5ba 100644 --- a/app/src/lib/i18n/pt.ts +++ b/app/src/lib/i18n/pt.ts @@ -5335,6 +5335,11 @@ const messages: TranslationMap = { 'modelCouncil.modelPickerHelp': 'Selecione uma dica de roteamento ou fixe um modelo de provedor exato.', 'modelCouncil.closeModelPicker': 'Close', + 'modelCouncil.hint.chat': 'Bate-papo', + 'modelCouncil.hint.code': 'Código', + 'modelCouncil.hint.default': 'Padrão', + 'modelCouncil.hint.reasoning': 'Raciocínio', + 'modelCouncil.hint.summarize': 'Resumo', 'modelCouncil.modelPickerHints': 'Hints', 'modelCouncil.modelPickerProviderModel': 'Provedor + modelo', 'modelCouncil.modelProviderLabel': 'Provedor do modelo', diff --git a/app/src/lib/i18n/ru.ts b/app/src/lib/i18n/ru.ts index 1a8ad84e4..4dbc1b5d3 100644 --- a/app/src/lib/i18n/ru.ts +++ b/app/src/lib/i18n/ru.ts @@ -5299,6 +5299,11 @@ const messages: TranslationMap = { 'modelCouncil.modelPickerHelp': 'Выберите подсказку маршрутизации или закрепите точную модель провайдера.', 'modelCouncil.closeModelPicker': 'Close', + 'modelCouncil.hint.chat': 'Чат', + 'modelCouncil.hint.code': 'Код', + 'modelCouncil.hint.default': 'По умолчанию', + 'modelCouncil.hint.reasoning': 'Рассуждение', + 'modelCouncil.hint.summarize': 'Сводка', 'modelCouncil.modelPickerHints': 'Hints', 'modelCouncil.modelPickerProviderModel': 'Провайдер + модель', 'modelCouncil.modelProviderLabel': 'Провайдер модели', diff --git a/app/src/lib/i18n/zh-CN.ts b/app/src/lib/i18n/zh-CN.ts index e51241e59..16f025438 100644 --- a/app/src/lib/i18n/zh-CN.ts +++ b/app/src/lib/i18n/zh-CN.ts @@ -4983,6 +4983,11 @@ const messages: TranslationMap = { 'modelCouncil.selectModel': 'Select', 'modelCouncil.modelPickerHelp': '选择路由提示或指定精确的供应商模型。', 'modelCouncil.closeModelPicker': 'Close', + 'modelCouncil.hint.chat': '聊天', + 'modelCouncil.hint.code': '代码', + 'modelCouncil.hint.default': '默认', + 'modelCouncil.hint.reasoning': '推理', + 'modelCouncil.hint.summarize': '总结', 'modelCouncil.modelPickerHints': 'Hints', 'modelCouncil.modelPickerProviderModel': '供应商 + 模型', 'modelCouncil.modelProviderLabel': '模型供应商',