mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-09-07 08:26:51 +00:00
feat(webview-ui): add Nebius provider i18n keys for hi,id,it,ko,pt-BR
This commit is contained in:
parent
371d81c779
commit
14f0d23f99
12 changed files with 117 additions and 1 deletions
|
|
@ -73,6 +73,7 @@ interface LocalCodeIndexSettings {
|
|||
codebaseIndexGeminiApiKey?: string
|
||||
codebaseIndexMistralApiKey?: string
|
||||
codebaseIndexVercelAiGatewayApiKey?: string
|
||||
codebaseIndexNebiusApiKey?: string
|
||||
}
|
||||
|
||||
// Validation schema for codebase index settings
|
||||
|
|
@ -149,6 +150,14 @@ const createValidationSchema = (provider: EmbedderProvider, t: any) => {
|
|||
.min(1, t("settings:codeIndex.validation.modelSelectionRequired")),
|
||||
})
|
||||
|
||||
case "nebius":
|
||||
return baseSchema.extend({
|
||||
codebaseIndexNebiusApiKey: z.string().min(1, t("settings:codeIndex.validation.apiKeyRequired")),
|
||||
codebaseIndexEmbedderModelId: z
|
||||
.string()
|
||||
.min(1, t("settings:codeIndex.validation.modelSelectionRequired")),
|
||||
})
|
||||
|
||||
default:
|
||||
return baseSchema
|
||||
}
|
||||
|
|
@ -194,6 +203,7 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
|
|||
codebaseIndexGeminiApiKey: "",
|
||||
codebaseIndexMistralApiKey: "",
|
||||
codebaseIndexVercelAiGatewayApiKey: "",
|
||||
codebaseIndexNebiusApiKey: "",
|
||||
})
|
||||
|
||||
// Initial settings state - stores the settings when popover opens
|
||||
|
|
@ -229,6 +239,7 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
|
|||
codebaseIndexGeminiApiKey: "",
|
||||
codebaseIndexMistralApiKey: "",
|
||||
codebaseIndexVercelAiGatewayApiKey: "",
|
||||
codebaseIndexNebiusApiKey: "",
|
||||
}
|
||||
setInitialSettings(settings)
|
||||
setCurrentSettings(settings)
|
||||
|
|
@ -345,6 +356,9 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
|
|||
? SECRET_PLACEHOLDER
|
||||
: ""
|
||||
}
|
||||
if (!prev.codebaseIndexNebiusApiKey || prev.codebaseIndexNebiusApiKey === SECRET_PLACEHOLDER) {
|
||||
updated.codebaseIndexNebiusApiKey = secretStatus.hasNebiusApiKey ? SECRET_PLACEHOLDER : ""
|
||||
}
|
||||
|
||||
return updated
|
||||
}
|
||||
|
|
@ -418,7 +432,8 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
|
|||
key === "codebaseIndexOpenAiCompatibleApiKey" ||
|
||||
key === "codebaseIndexGeminiApiKey" ||
|
||||
key === "codebaseIndexMistralApiKey" ||
|
||||
key === "codebaseIndexVercelAiGatewayApiKey"
|
||||
key === "codebaseIndexVercelAiGatewayApiKey" ||
|
||||
key === "codebaseIndexNebiusApiKey"
|
||||
) {
|
||||
dataToValidate[key] = "placeholder-valid"
|
||||
}
|
||||
|
|
@ -669,6 +684,9 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
|
|||
<SelectItem value="vercel-ai-gateway">
|
||||
{t("settings:codeIndex.vercelAiGatewayProvider")}
|
||||
</SelectItem>
|
||||
<SelectItem value="nebius">
|
||||
{t("settings:codeIndex.nebiusProvider")}
|
||||
</SelectItem>
|
||||
</SelectContent>
|
||||
</Select>
|
||||
</div>
|
||||
|
|
@ -1131,6 +1149,71 @@ export const CodeIndexPopover: React.FC<CodeIndexPopoverProps> = ({
|
|||
</>
|
||||
)}
|
||||
|
||||
{currentSettings.codebaseIndexEmbedderProvider === "nebius" && (
|
||||
<>
|
||||
<div className="space-y-2">
|
||||
<label className="text-sm font-medium">
|
||||
{t("settings:codeIndex.nebiusApiKeyLabel")}
|
||||
</label>
|
||||
<VSCodeTextField
|
||||
type="password"
|
||||
value={currentSettings.codebaseIndexNebiusApiKey || ""}
|
||||
onInput={(e: any) =>
|
||||
updateSetting("codebaseIndexNebiusApiKey", e.target.value)
|
||||
}
|
||||
placeholder={t("settings:codeIndex.nebiusApiKeyPlaceholder")}
|
||||
className={cn("w-full", {
|
||||
"border-red-500": formErrors.codebaseIndexNebiusApiKey,
|
||||
})}
|
||||
/>
|
||||
{formErrors.codebaseIndexNebiusApiKey && (
|
||||
<p className="text-xs text-vscode-errorForeground mt-1 mb-0">
|
||||
{formErrors.codebaseIndexNebiusApiKey}
|
||||
</p>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<div className="space-y-2">
|
||||
<label className="text-sm font-medium">
|
||||
{t("settings:codeIndex.modelLabel")}
|
||||
</label>
|
||||
<VSCodeDropdown
|
||||
value={currentSettings.codebaseIndexEmbedderModelId}
|
||||
onChange={(e: any) =>
|
||||
updateSetting("codebaseIndexEmbedderModelId", e.target.value)
|
||||
}
|
||||
className={cn("w-full", {
|
||||
"border-red-500": formErrors.codebaseIndexEmbedderModelId,
|
||||
})}>
|
||||
<VSCodeOption value="" className="p-2">
|
||||
{t("settings:codeIndex.selectModel")}
|
||||
</VSCodeOption>
|
||||
{getAvailableModels().map((modelId) => {
|
||||
const model =
|
||||
codebaseIndexModels?.[
|
||||
currentSettings.codebaseIndexEmbedderProvider
|
||||
]?.[modelId]
|
||||
return (
|
||||
<VSCodeOption key={modelId} value={modelId} className="p-2">
|
||||
{modelId}{" "}
|
||||
{model
|
||||
? t("settings:codeIndex.modelDimensions", {
|
||||
dimension: model.dimension,
|
||||
})
|
||||
: ""}
|
||||
</VSCodeOption>
|
||||
)
|
||||
})}
|
||||
</VSCodeDropdown>
|
||||
{formErrors.codebaseIndexEmbedderModelId && (
|
||||
<p className="text-xs text-vscode-errorForeground mt-1 mb-0">
|
||||
{formErrors.codebaseIndexEmbedderModelId}
|
||||
</p>
|
||||
)}
|
||||
</div>
|
||||
</>
|
||||
)}
|
||||
|
||||
{/* Qdrant Settings */}
|
||||
<div className="space-y-2">
|
||||
<label className="text-sm font-medium">
|
||||
|
|
|
|||
3
webview-ui/src/i18n/locales/de/settings.json
generated
3
webview-ui/src/i18n/locales/de/settings.json
generated
|
|
@ -60,6 +60,9 @@
|
|||
"vercelAiGatewayProvider": "Vercel AI Gateway",
|
||||
"vercelAiGatewayApiKeyLabel": "API-Schlüssel",
|
||||
"vercelAiGatewayApiKeyPlaceholder": "Gib deinen Vercel AI Gateway API-Schlüssel ein",
|
||||
"nebiusProvider": "Nebius AI",
|
||||
"nebiusApiKeyLabel": "API-Schlüssel",
|
||||
"nebiusApiKeyPlaceholder": "Gib deinen Nebius API-Schlüssel ein",
|
||||
"mistralProvider": "Mistral",
|
||||
"mistralApiKeyLabel": "API-Schlüssel:",
|
||||
"mistralApiKeyPlaceholder": "Gib deinen Mistral-API-Schlüssel ein",
|
||||
|
|
|
|||
|
|
@ -69,6 +69,9 @@
|
|||
"vercelAiGatewayProvider": "Vercel AI Gateway",
|
||||
"vercelAiGatewayApiKeyLabel": "API Key",
|
||||
"vercelAiGatewayApiKeyPlaceholder": "Enter your Vercel AI Gateway API key",
|
||||
"nebiusProvider": "Nebius AI",
|
||||
"nebiusApiKeyLabel": "API Key",
|
||||
"nebiusApiKeyPlaceholder": "Enter your Nebius API key",
|
||||
"openaiCompatibleProvider": "OpenAI Compatible",
|
||||
"openAiKeyLabel": "OpenAI API Key",
|
||||
"openAiKeyPlaceholder": "Enter your OpenAI API key",
|
||||
|
|
|
|||
3
webview-ui/src/i18n/locales/es/settings.json
generated
3
webview-ui/src/i18n/locales/es/settings.json
generated
|
|
@ -60,6 +60,9 @@
|
|||
"vercelAiGatewayProvider": "Vercel AI Gateway",
|
||||
"vercelAiGatewayApiKeyLabel": "Clave API",
|
||||
"vercelAiGatewayApiKeyPlaceholder": "Introduce tu clave API de Vercel AI Gateway",
|
||||
"nebiusProvider": "Nebius AI",
|
||||
"nebiusApiKeyLabel": "Clave API",
|
||||
"nebiusApiKeyPlaceholder": "Introduce tu clave API de Nebius",
|
||||
"mistralProvider": "Mistral",
|
||||
"mistralApiKeyLabel": "Clave API:",
|
||||
"mistralApiKeyPlaceholder": "Introduce tu clave de API de Mistral",
|
||||
|
|
|
|||
3
webview-ui/src/i18n/locales/fr/settings.json
generated
3
webview-ui/src/i18n/locales/fr/settings.json
generated
|
|
@ -60,6 +60,9 @@
|
|||
"vercelAiGatewayProvider": "Vercel AI Gateway",
|
||||
"vercelAiGatewayApiKeyLabel": "Clé API",
|
||||
"vercelAiGatewayApiKeyPlaceholder": "Entrez votre clé API Vercel AI Gateway",
|
||||
"nebiusProvider": "Nebius AI",
|
||||
"nebiusApiKeyLabel": "Clé API",
|
||||
"nebiusApiKeyPlaceholder": "Entrez votre clé API Nebius",
|
||||
"mistralProvider": "Mistral",
|
||||
"mistralApiKeyLabel": "Clé d'API:",
|
||||
"mistralApiKeyPlaceholder": "Entrez votre clé d'API Mistral",
|
||||
|
|
|
|||
3
webview-ui/src/i18n/locales/hi/settings.json
generated
3
webview-ui/src/i18n/locales/hi/settings.json
generated
|
|
@ -55,6 +55,9 @@
|
|||
"vercelAiGatewayProvider": "Vercel AI Gateway",
|
||||
"vercelAiGatewayApiKeyLabel": "API कुंजी",
|
||||
"vercelAiGatewayApiKeyPlaceholder": "अपनी Vercel AI Gateway API कुंजी दर्ज करें",
|
||||
"nebiusProvider": "Nebius AI",
|
||||
"nebiusApiKeyLabel": "API कुंजी",
|
||||
"nebiusApiKeyPlaceholder": "अपनी Nebius API कुंजी दर्ज करें",
|
||||
"mistralProvider": "Mistral",
|
||||
"mistralApiKeyLabel": "API कुंजी:",
|
||||
"mistralApiKeyPlaceholder": "अपनी मिस्ट्रल एपीआई कुंजी दर्ज करें",
|
||||
|
|
|
|||
3
webview-ui/src/i18n/locales/id/settings.json
generated
3
webview-ui/src/i18n/locales/id/settings.json
generated
|
|
@ -55,6 +55,9 @@
|
|||
"vercelAiGatewayProvider": "Vercel AI Gateway",
|
||||
"vercelAiGatewayApiKeyLabel": "API Key",
|
||||
"vercelAiGatewayApiKeyPlaceholder": "Masukkan kunci API Vercel AI Gateway Anda",
|
||||
"nebiusProvider": "Nebius AI",
|
||||
"nebiusApiKeyLabel": "API Key",
|
||||
"nebiusApiKeyPlaceholder": "Masukkan kunci API Nebius Anda",
|
||||
"mistralProvider": "Mistral",
|
||||
"mistralApiKeyLabel": "Kunci API:",
|
||||
"mistralApiKeyPlaceholder": "Masukkan kunci API Mistral Anda",
|
||||
|
|
|
|||
3
webview-ui/src/i18n/locales/it/settings.json
generated
3
webview-ui/src/i18n/locales/it/settings.json
generated
|
|
@ -55,6 +55,9 @@
|
|||
"vercelAiGatewayProvider": "Vercel AI Gateway",
|
||||
"vercelAiGatewayApiKeyLabel": "Chiave API",
|
||||
"vercelAiGatewayApiKeyPlaceholder": "Inserisci la tua chiave API Vercel AI Gateway",
|
||||
"nebiusProvider": "Nebius AI",
|
||||
"nebiusApiKeyLabel": "Chiave API",
|
||||
"nebiusApiKeyPlaceholder": "Inserisci la tua chiave API Nebius",
|
||||
"mistralProvider": "Mistral",
|
||||
"mistralApiKeyLabel": "Chiave API:",
|
||||
"mistralApiKeyPlaceholder": "Inserisci la tua chiave API Mistral",
|
||||
|
|
|
|||
3
webview-ui/src/i18n/locales/ja/settings.json
generated
3
webview-ui/src/i18n/locales/ja/settings.json
generated
|
|
@ -55,6 +55,9 @@
|
|||
"vercelAiGatewayProvider": "Vercel AI Gateway",
|
||||
"vercelAiGatewayApiKeyLabel": "APIキー",
|
||||
"vercelAiGatewayApiKeyPlaceholder": "Vercel AI GatewayのAPIキーを入力してください",
|
||||
"nebiusProvider": "Nebius AI",
|
||||
"nebiusApiKeyLabel": "APIキー",
|
||||
"nebiusApiKeyPlaceholder": "Nebius APIキーを入力してください",
|
||||
"mistralProvider": "Mistral",
|
||||
"mistralApiKeyLabel": "APIキー:",
|
||||
"mistralApiKeyPlaceholder": "Mistral APIキーを入力してください",
|
||||
|
|
|
|||
3
webview-ui/src/i18n/locales/ko/settings.json
generated
3
webview-ui/src/i18n/locales/ko/settings.json
generated
|
|
@ -58,6 +58,9 @@
|
|||
"vercelAiGatewayProvider": "Vercel AI Gateway",
|
||||
"vercelAiGatewayApiKeyLabel": "API 키",
|
||||
"vercelAiGatewayApiKeyPlaceholder": "Vercel AI Gateway API 키를 입력하세요",
|
||||
"nebiusProvider": "Nebius AI",
|
||||
"nebiusApiKeyLabel": "API 키",
|
||||
"nebiusApiKeyPlaceholder": "Nebius API 키를 입력하세요",
|
||||
"openaiCompatibleProvider": "OpenAI 호환",
|
||||
"openAiKeyLabel": "OpenAI API 키",
|
||||
"openAiKeyPlaceholder": "OpenAI API 키를 입력하세요",
|
||||
|
|
|
|||
3
webview-ui/src/i18n/locales/pt-BR/settings.json
generated
3
webview-ui/src/i18n/locales/pt-BR/settings.json
generated
|
|
@ -55,6 +55,9 @@
|
|||
"vercelAiGatewayProvider": "Vercel AI Gateway",
|
||||
"vercelAiGatewayApiKeyLabel": "Chave de API",
|
||||
"vercelAiGatewayApiKeyPlaceholder": "Digite sua chave de API do Vercel AI Gateway",
|
||||
"nebiusProvider": "Nebius AI",
|
||||
"nebiusApiKeyLabel": "Chave de API",
|
||||
"nebiusApiKeyPlaceholder": "Digite sua chave de API Nebius",
|
||||
"mistralProvider": "Mistral",
|
||||
"mistralApiKeyLabel": "Chave de API:",
|
||||
"mistralApiKeyPlaceholder": "Digite sua chave de API da Mistral",
|
||||
|
|
|
|||
3
webview-ui/src/i18n/locales/zh-CN/settings.json
generated
3
webview-ui/src/i18n/locales/zh-CN/settings.json
generated
|
|
@ -60,6 +60,9 @@
|
|||
"vercelAiGatewayProvider": "Vercel AI Gateway",
|
||||
"vercelAiGatewayApiKeyLabel": "API 密钥",
|
||||
"vercelAiGatewayApiKeyPlaceholder": "输入您的 Vercel AI Gateway API 密钥",
|
||||
"nebiusProvider": "Nebius AI",
|
||||
"nebiusApiKeyLabel": "API 密钥",
|
||||
"nebiusApiKeyPlaceholder": "输入您的 Nebius API 密钥",
|
||||
"mistralProvider": "Mistral",
|
||||
"mistralApiKeyLabel": "API 密钥:",
|
||||
"mistralApiKeyPlaceholder": "输入您的 Mistral API 密钥",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue