diff --git a/webview-ui/src/components/settings/providers/HuggingFace.tsx b/webview-ui/src/components/settings/providers/HuggingFace.tsx index a87c59ec72..d4195492dd 100644 --- a/webview-ui/src/components/settings/providers/HuggingFace.tsx +++ b/webview-ui/src/components/settings/providers/HuggingFace.tsx @@ -154,8 +154,14 @@ export const HuggingFace = ({ apiConfiguration, setApiConfigurationField }: Hugg
{currentModel && availableProviders.length > 0 && (
- + ({ value: mapping.provider, @@ -189,9 +195,9 @@ export const HuggingFace = ({ apiConfiguration, setApiConfigurationField }: Hugg }), ), ]} - placeholder="Select a provider..." - searchPlaceholder="Search providers..." - emptyMessage="No providers found" + placeholder={t("settings:providers.huggingFaceSelectProvider")} + searchPlaceholder={t("settings:providers.huggingFaceSearchProviders")} + emptyMessage={t("settings:providers.huggingFaceNoProvidersFound")} />
)} diff --git a/webview-ui/src/components/settings/providers/__tests__/HuggingFace.spec.tsx b/webview-ui/src/components/settings/providers/__tests__/HuggingFace.spec.tsx new file mode 100644 index 0000000000..3fd29e4c72 --- /dev/null +++ b/webview-ui/src/components/settings/providers/__tests__/HuggingFace.spec.tsx @@ -0,0 +1,162 @@ +import React from "react" +import { render, screen } from "@/utils/test-utils" +import { HuggingFace } from "../HuggingFace" +import { ProviderSettings } from "@roo-code/types" + +// Mock the VSCodeTextField component +vi.mock("@vscode/webview-ui-toolkit/react", () => ({ + VSCodeTextField: ({ + children, + value, + onInput, + placeholder, + className, + style, + "data-testid": dataTestId, + ...rest + }: any) => { + return ( +
+ {children} + onInput && onInput(e)} + placeholder={placeholder} + data-testid={dataTestId} + {...rest} + /> +
+ ) + }, + VSCodeLink: ({ children, href, onClick }: any) => ( + + {children} + + ), + VSCodeButton: ({ children, onClick, ...rest }: any) => ( + + ), +})) + +// Mock the translation hook +vi.mock("@src/i18n/TranslationContext", () => ({ + useAppTranslation: () => ({ + t: (key: string) => { + // Return the key for testing, but simulate some actual translations + const translations: Record = { + "settings:providers.getHuggingFaceApiKey": "Get Hugging Face API Key", + "settings:providers.huggingFaceApiKey": "Hugging Face API Key", + "settings:providers.huggingFaceModelId": "Model ID", + } + return translations[key] || key + }, + }), +})) + +// Mock the UI components +vi.mock("@src/components/ui", () => ({ + Select: ({ children }: any) =>
{children}
, + SelectContent: ({ children }: any) =>
{children}
, + SelectItem: ({ children }: any) =>
{children}
, + SelectTrigger: ({ children }: any) =>
{children}
, + SelectValue: ({ placeholder }: any) =>
{placeholder}
, + SearchableSelect: ({ value, onValueChange, placeholder, children }: any) => ( +
+ onValueChange && onValueChange(e.target.value)} + placeholder={placeholder} + /> + {children} +
+ ), +})) + +describe("HuggingFace Component", () => { + const mockSetApiConfigurationField = vi.fn() + + beforeEach(() => { + vi.clearAllMocks() + }) + + it("should render with internationalized labels", () => { + const apiConfiguration: Partial = { + huggingFaceApiKey: "", + huggingFaceModelId: "", + } + + render( + , + ) + + // Check that the translated labels are rendered + expect(screen.getByText("Get Hugging Face API Key")).toBeInTheDocument() + expect(screen.getByText("Hugging Face API Key")).toBeInTheDocument() + expect(screen.getByText("Model ID")).toBeInTheDocument() + }) + + it("should render API key input field", () => { + const apiConfiguration: Partial = { + huggingFaceApiKey: "test-api-key", + huggingFaceModelId: "", + } + + render( + , + ) + + // Check that the API key input is rendered with the correct value + const apiKeyInput = screen.getByDisplayValue("test-api-key") + expect(apiKeyInput).toBeInTheDocument() + }) + + it("should render model selection components", () => { + const apiConfiguration: Partial = { + huggingFaceApiKey: "test-api-key", + huggingFaceModelId: "test-model", + } + + render( + , + ) + + // Check that the searchable select component is rendered + expect(screen.getByTestId("searchable-select")).toBeInTheDocument() + expect(screen.getByTestId("searchable-select-input")).toBeInTheDocument() + }) + + it("should display the get API key link", () => { + const apiConfiguration: Partial = { + huggingFaceApiKey: "", + huggingFaceModelId: "", + } + + render( + , + ) + + // Check that the API key button is rendered + const apiKeyButton = screen.getByTestId("vscode-button") + expect(apiKeyButton).toBeInTheDocument() + expect(apiKeyButton).toHaveTextContent("Get Hugging Face API Key") + }) +}) diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json index cf17a6f919..d61aaa92fb 100644 --- a/webview-ui/src/i18n/locales/ca/settings.json +++ b/webview-ui/src/i18n/locales/ca/settings.json @@ -259,6 +259,19 @@ "geminiApiKey": "Clau API de Gemini", "getGroqApiKey": "Obtenir clau API de Groq", "groqApiKey": "Clau API de Groq", + "getHuggingFaceApiKey": "Obtenir clau API de Hugging Face", + "huggingFaceApiKey": "Clau API de Hugging Face", + "huggingFaceModelId": "ID del model", + "huggingFaceLoading": "Carregant...", + "huggingFaceModelsCount": "({{count}} models)", + "huggingFaceSelectModel": "Selecciona un model...", + "huggingFaceSearchModels": "Cerca models...", + "huggingFaceNoModelsFound": "No s'han trobat models", + "huggingFaceProvider": "Proveïdor", + "huggingFaceProviderAuto": "Automàtic", + "huggingFaceSelectProvider": "Selecciona un proveïdor...", + "huggingFaceSearchProviders": "Cerca proveïdors...", + "huggingFaceNoProvidersFound": "No s'han trobat proveïdors", "getGeminiApiKey": "Obtenir clau API de Gemini", "openAiApiKey": "Clau API d'OpenAI", "apiKey": "Clau API", diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json index 20ffaec525..1cc9f571ad 100644 --- a/webview-ui/src/i18n/locales/de/settings.json +++ b/webview-ui/src/i18n/locales/de/settings.json @@ -259,6 +259,19 @@ "geminiApiKey": "Gemini API-Schlüssel", "getGroqApiKey": "Groq API-Schlüssel erhalten", "groqApiKey": "Groq API-Schlüssel", + "getHuggingFaceApiKey": "Hugging Face API-Schlüssel erhalten", + "huggingFaceApiKey": "Hugging Face API-Schlüssel", + "huggingFaceModelId": "Modell-ID", + "huggingFaceLoading": "Lädt...", + "huggingFaceModelsCount": "({{count}} Modelle)", + "huggingFaceSelectModel": "Modell auswählen...", + "huggingFaceSearchModels": "Modelle durchsuchen...", + "huggingFaceNoModelsFound": "Keine Modelle gefunden", + "huggingFaceProvider": "Anbieter", + "huggingFaceProviderAuto": "Automatisch", + "huggingFaceSelectProvider": "Anbieter auswählen...", + "huggingFaceSearchProviders": "Anbieter durchsuchen...", + "huggingFaceNoProvidersFound": "Keine Anbieter gefunden", "getGeminiApiKey": "Gemini API-Schlüssel erhalten", "openAiApiKey": "OpenAI API-Schlüssel", "apiKey": "API-Schlüssel", diff --git a/webview-ui/src/i18n/locales/en/settings.json b/webview-ui/src/i18n/locales/en/settings.json index c8d0e69719..cdf7b2e21c 100644 --- a/webview-ui/src/i18n/locales/en/settings.json +++ b/webview-ui/src/i18n/locales/en/settings.json @@ -262,6 +262,16 @@ "getHuggingFaceApiKey": "Get Hugging Face API Key", "huggingFaceApiKey": "Hugging Face API Key", "huggingFaceModelId": "Model ID", + "huggingFaceLoading": "Loading...", + "huggingFaceModelsCount": "({{count}} models)", + "huggingFaceSelectModel": "Select a model...", + "huggingFaceSearchModels": "Search models...", + "huggingFaceNoModelsFound": "No models found", + "huggingFaceProvider": "Provider", + "huggingFaceProviderAuto": "Auto", + "huggingFaceSelectProvider": "Select a provider...", + "huggingFaceSearchProviders": "Search providers...", + "huggingFaceNoProvidersFound": "No providers found", "getGeminiApiKey": "Get Gemini API Key", "openAiApiKey": "OpenAI API Key", "apiKey": "API Key", diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json index 4c4f24bb0f..a25395fdf4 100644 --- a/webview-ui/src/i18n/locales/es/settings.json +++ b/webview-ui/src/i18n/locales/es/settings.json @@ -259,6 +259,19 @@ "geminiApiKey": "Clave API de Gemini", "getGroqApiKey": "Obtener clave API de Groq", "groqApiKey": "Clave API de Groq", + "getHuggingFaceApiKey": "Obtener clave API de Hugging Face", + "huggingFaceApiKey": "Clave API de Hugging Face", + "huggingFaceModelId": "ID del modelo", + "huggingFaceLoading": "Cargando...", + "huggingFaceModelsCount": "({{count}} modelos)", + "huggingFaceSelectModel": "Seleccionar un modelo...", + "huggingFaceSearchModels": "Buscar modelos...", + "huggingFaceNoModelsFound": "No se encontraron modelos", + "huggingFaceProvider": "Proveedor", + "huggingFaceProviderAuto": "Automático", + "huggingFaceSelectProvider": "Seleccionar un proveedor...", + "huggingFaceSearchProviders": "Buscar proveedores...", + "huggingFaceNoProvidersFound": "No se encontraron proveedores", "getGeminiApiKey": "Obtener clave API de Gemini", "openAiApiKey": "Clave API de OpenAI", "apiKey": "Clave API", diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json index 6e7a964694..8983b57843 100644 --- a/webview-ui/src/i18n/locales/fr/settings.json +++ b/webview-ui/src/i18n/locales/fr/settings.json @@ -259,6 +259,19 @@ "geminiApiKey": "Clé API Gemini", "getGroqApiKey": "Obtenir la clé API Groq", "groqApiKey": "Clé API Groq", + "getHuggingFaceApiKey": "Obtenir la clé API Hugging Face", + "huggingFaceApiKey": "Clé API Hugging Face", + "huggingFaceModelId": "ID du modèle", + "huggingFaceLoading": "Chargement...", + "huggingFaceModelsCount": "({{count}} modèles)", + "huggingFaceSelectModel": "Sélectionner un modèle...", + "huggingFaceSearchModels": "Rechercher des modèles...", + "huggingFaceNoModelsFound": "Aucun modèle trouvé", + "huggingFaceProvider": "Fournisseur", + "huggingFaceProviderAuto": "Automatique", + "huggingFaceSelectProvider": "Sélectionner un fournisseur...", + "huggingFaceSearchProviders": "Rechercher des fournisseurs...", + "huggingFaceNoProvidersFound": "Aucun fournisseur trouvé", "getGeminiApiKey": "Obtenir la clé API Gemini", "openAiApiKey": "Clé API OpenAI", "apiKey": "Clé API", diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json index ca255ca44e..75b84bbbd8 100644 --- a/webview-ui/src/i18n/locales/hi/settings.json +++ b/webview-ui/src/i18n/locales/hi/settings.json @@ -259,6 +259,19 @@ "geminiApiKey": "Gemini API कुंजी", "getGroqApiKey": "Groq API कुंजी प्राप्त करें", "groqApiKey": "Groq API कुंजी", + "getHuggingFaceApiKey": "Hugging Face API कुंजी प्राप्त करें", + "huggingFaceApiKey": "Hugging Face API कुंजी", + "huggingFaceModelId": "मॉडल ID", + "huggingFaceLoading": "लोड हो रहा है...", + "huggingFaceModelsCount": "({{count}} मॉडल)", + "huggingFaceSelectModel": "एक मॉडल चुनें...", + "huggingFaceSearchModels": "मॉडल खोजें...", + "huggingFaceNoModelsFound": "कोई मॉडल नहीं मिला", + "huggingFaceProvider": "प्रदाता", + "huggingFaceProviderAuto": "स्वचालित", + "huggingFaceSelectProvider": "एक प्रदाता चुनें...", + "huggingFaceSearchProviders": "प्रदाता खोजें...", + "huggingFaceNoProvidersFound": "कोई प्रदाता नहीं मिला", "getGeminiApiKey": "Gemini API कुंजी प्राप्त करें", "openAiApiKey": "OpenAI API कुंजी", "apiKey": "API कुंजी", diff --git a/webview-ui/src/i18n/locales/id/settings.json b/webview-ui/src/i18n/locales/id/settings.json index 0bff5ef4a1..8e795b9e16 100644 --- a/webview-ui/src/i18n/locales/id/settings.json +++ b/webview-ui/src/i18n/locales/id/settings.json @@ -263,7 +263,20 @@ "geminiApiKey": "Gemini API Key", "getGroqApiKey": "Dapatkan Groq API Key", "groqApiKey": "Groq API Key", + "getHuggingFaceApiKey": "Dapatkan Kunci API Hugging Face", + "huggingFaceApiKey": "Kunci API Hugging Face", + "huggingFaceModelId": "ID Model", "getGeminiApiKey": "Dapatkan Gemini API Key", + "huggingFaceLoading": "Memuat...", + "huggingFaceModelsCount": "({{count}} model)", + "huggingFaceSelectModel": "Pilih model...", + "huggingFaceSearchModels": "Cari model...", + "huggingFaceNoModelsFound": "Tidak ada model ditemukan", + "huggingFaceProvider": "Penyedia", + "huggingFaceProviderAuto": "Otomatis", + "huggingFaceSelectProvider": "Pilih penyedia...", + "huggingFaceSearchProviders": "Cari penyedia...", + "huggingFaceNoProvidersFound": "Tidak ada penyedia ditemukan", "openAiApiKey": "OpenAI API Key", "apiKey": "API Key", "openAiBaseUrl": "Base URL", diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json index e5cd37a110..f097002e44 100644 --- a/webview-ui/src/i18n/locales/it/settings.json +++ b/webview-ui/src/i18n/locales/it/settings.json @@ -259,6 +259,19 @@ "geminiApiKey": "Chiave API Gemini", "getGroqApiKey": "Ottieni chiave API Groq", "groqApiKey": "Chiave API Groq", + "getHuggingFaceApiKey": "Ottieni chiave API Hugging Face", + "huggingFaceApiKey": "Chiave API Hugging Face", + "huggingFaceModelId": "ID modello", + "huggingFaceLoading": "Caricamento...", + "huggingFaceModelsCount": "({{count}} modelli)", + "huggingFaceSelectModel": "Seleziona un modello...", + "huggingFaceSearchModels": "Cerca modelli...", + "huggingFaceNoModelsFound": "Nessun modello trovato", + "huggingFaceProvider": "Provider", + "huggingFaceProviderAuto": "Automatico", + "huggingFaceSelectProvider": "Seleziona un provider...", + "huggingFaceSearchProviders": "Cerca provider...", + "huggingFaceNoProvidersFound": "Nessun provider trovato", "getGeminiApiKey": "Ottieni chiave API Gemini", "openAiApiKey": "Chiave API OpenAI", "apiKey": "Chiave API", diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json index e32fac776a..41ef054355 100644 --- a/webview-ui/src/i18n/locales/ja/settings.json +++ b/webview-ui/src/i18n/locales/ja/settings.json @@ -259,6 +259,19 @@ "geminiApiKey": "Gemini APIキー", "getGroqApiKey": "Groq APIキーを取得", "groqApiKey": "Groq APIキー", + "getHuggingFaceApiKey": "Hugging Face APIキーを取得", + "huggingFaceApiKey": "Hugging Face APIキー", + "huggingFaceModelId": "モデルID", + "huggingFaceLoading": "読み込み中...", + "huggingFaceModelsCount": "({{count}}個のモデル)", + "huggingFaceSelectModel": "モデルを選択...", + "huggingFaceSearchModels": "モデルを検索...", + "huggingFaceNoModelsFound": "モデルが見つかりません", + "huggingFaceProvider": "プロバイダー", + "huggingFaceProviderAuto": "自動", + "huggingFaceSelectProvider": "プロバイダーを選択...", + "huggingFaceSearchProviders": "プロバイダーを検索...", + "huggingFaceNoProvidersFound": "プロバイダーが見つかりません", "getGeminiApiKey": "Gemini APIキーを取得", "openAiApiKey": "OpenAI APIキー", "apiKey": "APIキー", diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json index f48860b0ae..7ea99d7657 100644 --- a/webview-ui/src/i18n/locales/ko/settings.json +++ b/webview-ui/src/i18n/locales/ko/settings.json @@ -260,6 +260,19 @@ "getGroqApiKey": "Groq API 키 받기", "groqApiKey": "Groq API 키", "getGeminiApiKey": "Gemini API 키 받기", + "getHuggingFaceApiKey": "Hugging Face API 키 받기", + "huggingFaceApiKey": "Hugging Face API 키", + "huggingFaceModelId": "모델 ID", + "huggingFaceLoading": "로딩 중...", + "huggingFaceModelsCount": "({{count}}개 모델)", + "huggingFaceSelectModel": "모델 선택...", + "huggingFaceSearchModels": "모델 검색...", + "huggingFaceNoModelsFound": "모델을 찾을 수 없음", + "huggingFaceProvider": "제공자", + "huggingFaceProviderAuto": "자동", + "huggingFaceSelectProvider": "제공자 선택...", + "huggingFaceSearchProviders": "제공자 검색...", + "huggingFaceNoProvidersFound": "제공자를 찾을 수 없음", "apiKey": "API 키", "openAiApiKey": "OpenAI API 키", "openAiBaseUrl": "기본 URL", diff --git a/webview-ui/src/i18n/locales/nl/settings.json b/webview-ui/src/i18n/locales/nl/settings.json index bf6e65c995..2054e1dc19 100644 --- a/webview-ui/src/i18n/locales/nl/settings.json +++ b/webview-ui/src/i18n/locales/nl/settings.json @@ -260,6 +260,19 @@ "getGroqApiKey": "Groq API-sleutel ophalen", "groqApiKey": "Groq API-sleutel", "getGeminiApiKey": "Gemini API-sleutel ophalen", + "getHuggingFaceApiKey": "Hugging Face API-sleutel ophalen", + "huggingFaceApiKey": "Hugging Face API-sleutel", + "huggingFaceModelId": "Model ID", + "huggingFaceLoading": "Laden...", + "huggingFaceModelsCount": "({{count}} modellen)", + "huggingFaceSelectModel": "Selecteer een model...", + "huggingFaceSearchModels": "Zoek modellen...", + "huggingFaceNoModelsFound": "Geen modellen gevonden", + "huggingFaceProvider": "Provider", + "huggingFaceProviderAuto": "Automatisch", + "huggingFaceSelectProvider": "Selecteer een provider...", + "huggingFaceSearchProviders": "Zoek providers...", + "huggingFaceNoProvidersFound": "Geen providers gevonden", "apiKey": "API-sleutel", "openAiApiKey": "OpenAI API-sleutel", "openAiBaseUrl": "Basis-URL", diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json index d42e4f51a9..de4ddf40a5 100644 --- a/webview-ui/src/i18n/locales/pl/settings.json +++ b/webview-ui/src/i18n/locales/pl/settings.json @@ -260,6 +260,19 @@ "getGroqApiKey": "Uzyskaj klucz API Groq", "groqApiKey": "Klucz API Groq", "getGeminiApiKey": "Uzyskaj klucz API Gemini", + "getHuggingFaceApiKey": "Uzyskaj klucz API Hugging Face", + "huggingFaceApiKey": "Klucz API Hugging Face", + "huggingFaceModelId": "ID modelu", + "huggingFaceLoading": "Ładowanie...", + "huggingFaceModelsCount": "({{count}} modeli)", + "huggingFaceSelectModel": "Wybierz model...", + "huggingFaceSearchModels": "Szukaj modeli...", + "huggingFaceNoModelsFound": "Nie znaleziono modeli", + "huggingFaceProvider": "Dostawca", + "huggingFaceProviderAuto": "Automatyczny", + "huggingFaceSelectProvider": "Wybierz dostawcę...", + "huggingFaceSearchProviders": "Szukaj dostawców...", + "huggingFaceNoProvidersFound": "Nie znaleziono dostawców", "apiKey": "Klucz API", "openAiApiKey": "Klucz API OpenAI", "openAiBaseUrl": "URL bazowy", diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json index 924542cf09..fbe2119ff5 100644 --- a/webview-ui/src/i18n/locales/pt-BR/settings.json +++ b/webview-ui/src/i18n/locales/pt-BR/settings.json @@ -260,6 +260,19 @@ "getGroqApiKey": "Obter chave de API Groq", "groqApiKey": "Chave de API Groq", "getGeminiApiKey": "Obter chave de API Gemini", + "getHuggingFaceApiKey": "Obter chave de API Hugging Face", + "huggingFaceApiKey": "Chave de API Hugging Face", + "huggingFaceModelId": "ID do modelo", + "huggingFaceLoading": "Carregando...", + "huggingFaceModelsCount": "({{count}} modelos)", + "huggingFaceSelectModel": "Selecionar um modelo...", + "huggingFaceSearchModels": "Buscar modelos...", + "huggingFaceNoModelsFound": "Nenhum modelo encontrado", + "huggingFaceProvider": "Provedor", + "huggingFaceProviderAuto": "Automático", + "huggingFaceSelectProvider": "Selecionar um provedor...", + "huggingFaceSearchProviders": "Buscar provedores...", + "huggingFaceNoProvidersFound": "Nenhum provedor encontrado", "apiKey": "Chave de API", "openAiApiKey": "Chave de API OpenAI", "openAiBaseUrl": "URL Base", diff --git a/webview-ui/src/i18n/locales/ru/settings.json b/webview-ui/src/i18n/locales/ru/settings.json index cf719b0976..8ad7213013 100644 --- a/webview-ui/src/i18n/locales/ru/settings.json +++ b/webview-ui/src/i18n/locales/ru/settings.json @@ -260,6 +260,19 @@ "getGroqApiKey": "Получить Groq API-ключ", "groqApiKey": "Groq API-ключ", "getGeminiApiKey": "Получить Gemini API-ключ", + "getHuggingFaceApiKey": "Получить Hugging Face API-ключ", + "huggingFaceApiKey": "Hugging Face API-ключ", + "huggingFaceModelId": "ID модели", + "huggingFaceLoading": "Загрузка...", + "huggingFaceModelsCount": "({{count}} моделей)", + "huggingFaceSelectModel": "Выберите модель...", + "huggingFaceSearchModels": "Поиск моделей...", + "huggingFaceNoModelsFound": "Модели не найдены", + "huggingFaceProvider": "Провайдер", + "huggingFaceProviderAuto": "Автоматически", + "huggingFaceSelectProvider": "Выберите провайдера...", + "huggingFaceSearchProviders": "Поиск провайдеров...", + "huggingFaceNoProvidersFound": "Провайдеры не найдены", "apiKey": "API-ключ", "openAiApiKey": "OpenAI API-ключ", "openAiBaseUrl": "Базовый URL", diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json index fc8fc9c677..f1d1a271b6 100644 --- a/webview-ui/src/i18n/locales/tr/settings.json +++ b/webview-ui/src/i18n/locales/tr/settings.json @@ -259,6 +259,19 @@ "geminiApiKey": "Gemini API Anahtarı", "getGroqApiKey": "Groq API Anahtarı Al", "groqApiKey": "Groq API Anahtarı", + "getHuggingFaceApiKey": "Hugging Face API Anahtarı Al", + "huggingFaceApiKey": "Hugging Face API Anahtarı", + "huggingFaceModelId": "Model ID", + "huggingFaceLoading": "Yükleniyor...", + "huggingFaceModelsCount": "({{count}} model)", + "huggingFaceSelectModel": "Bir model seç...", + "huggingFaceSearchModels": "Modelleri ara...", + "huggingFaceNoModelsFound": "Model bulunamadı", + "huggingFaceProvider": "Sağlayıcı", + "huggingFaceProviderAuto": "Otomatik", + "huggingFaceSelectProvider": "Bir sağlayıcı seç...", + "huggingFaceSearchProviders": "Sağlayıcıları ara...", + "huggingFaceNoProvidersFound": "Sağlayıcı bulunamadı", "getGeminiApiKey": "Gemini API Anahtarı Al", "openAiApiKey": "OpenAI API Anahtarı", "apiKey": "API Anahtarı", diff --git a/webview-ui/src/i18n/locales/vi/settings.json b/webview-ui/src/i18n/locales/vi/settings.json index 7d3e2803ad..0a46257bd8 100644 --- a/webview-ui/src/i18n/locales/vi/settings.json +++ b/webview-ui/src/i18n/locales/vi/settings.json @@ -259,6 +259,19 @@ "geminiApiKey": "Khóa API Gemini", "getGroqApiKey": "Lấy khóa API Groq", "groqApiKey": "Khóa API Groq", + "getHuggingFaceApiKey": "Lấy Khóa API Hugging Face", + "huggingFaceApiKey": "Khóa API Hugging Face", + "huggingFaceModelId": "ID Mô hình", + "huggingFaceLoading": "Đang tải...", + "huggingFaceModelsCount": "({{count}} mô hình)", + "huggingFaceSelectModel": "Chọn một mô hình...", + "huggingFaceSearchModels": "Tìm kiếm mô hình...", + "huggingFaceNoModelsFound": "Không tìm thấy mô hình", + "huggingFaceProvider": "Nhà cung cấp", + "huggingFaceProviderAuto": "Tự động", + "huggingFaceSelectProvider": "Chọn một nhà cung cấp...", + "huggingFaceSearchProviders": "Tìm kiếm nhà cung cấp...", + "huggingFaceNoProvidersFound": "Không tìm thấy nhà cung cấp", "getGeminiApiKey": "Lấy khóa API Gemini", "openAiApiKey": "Khóa API OpenAI", "apiKey": "Khóa API", diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json index eae71ac706..152c771545 100644 --- a/webview-ui/src/i18n/locales/zh-CN/settings.json +++ b/webview-ui/src/i18n/locales/zh-CN/settings.json @@ -259,6 +259,19 @@ "geminiApiKey": "Gemini API 密钥", "getGroqApiKey": "获取 Groq API 密钥", "groqApiKey": "Groq API 密钥", + "getHuggingFaceApiKey": "获取 Hugging Face API 密钥", + "huggingFaceApiKey": "Hugging Face API 密钥", + "huggingFaceModelId": "模型 ID", + "huggingFaceLoading": "加载中...", + "huggingFaceModelsCount": "({{count}} 个模型)", + "huggingFaceSelectModel": "选择模型...", + "huggingFaceSearchModels": "搜索模型...", + "huggingFaceNoModelsFound": "未找到模型", + "huggingFaceProvider": "提供商", + "huggingFaceProviderAuto": "自动", + "huggingFaceSelectProvider": "选择提供商...", + "huggingFaceSearchProviders": "搜索提供商...", + "huggingFaceNoProvidersFound": "未找到提供商", "getGeminiApiKey": "获取 Gemini API 密钥", "openAiApiKey": "OpenAI API 密钥", "apiKey": "API 密钥", diff --git a/webview-ui/src/i18n/locales/zh-TW/settings.json b/webview-ui/src/i18n/locales/zh-TW/settings.json index 420ece916e..da54ad63d6 100644 --- a/webview-ui/src/i18n/locales/zh-TW/settings.json +++ b/webview-ui/src/i18n/locales/zh-TW/settings.json @@ -259,6 +259,19 @@ "geminiApiKey": "Gemini API 金鑰", "getGroqApiKey": "取得 Groq API 金鑰", "groqApiKey": "Groq API 金鑰", + "getHuggingFaceApiKey": "取得 Hugging Face API 金鑰", + "huggingFaceApiKey": "Hugging Face API 金鑰", + "huggingFaceModelId": "模型 ID", + "huggingFaceLoading": "載入中...", + "huggingFaceModelsCount": "({{count}} 個模型)", + "huggingFaceSelectModel": "選擇模型...", + "huggingFaceSearchModels": "搜尋模型...", + "huggingFaceNoModelsFound": "找不到模型", + "huggingFaceProvider": "提供者", + "huggingFaceProviderAuto": "自動", + "huggingFaceSelectProvider": "選擇提供者...", + "huggingFaceSearchProviders": "搜尋提供者...", + "huggingFaceNoProvidersFound": "找不到提供者", "getGeminiApiKey": "取得 Gemini API 金鑰", "openAiApiKey": "OpenAI API 金鑰", "apiKey": "API 金鑰",