commit
0fa17ecc10
@ -122,7 +122,11 @@ This will start a development server and watch for changes in the source files.
|
|||||||
|
|
||||||
## Local AI Provider
|
## Local AI Provider
|
||||||
|
|
||||||
- [Ollama](https://github.com/ollama/ollama) (Currently the only supported provider. More providers will be added in the future.)
|
- [Ollama](https://github.com/ollama/ollama)
|
||||||
|
|
||||||
|
- Chrome AI (Gemini Nano)
|
||||||
|
|
||||||
|
More providers will be added in the future.
|
||||||
|
|
||||||
## Roadmap
|
## Roadmap
|
||||||
|
|
||||||
|
13
src/assets/locale/en/chrome.json
Normal file
13
src/assets/locale/en/chrome.json
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"heading": "Configure Chrome AI",
|
||||||
|
"status": {
|
||||||
|
"label": "Enable or Disable Chrome AI Support on Page Assist"
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"browser_not_supported": "This version of Chrome is not supported by the Gemini Nano model. Please update to version 127 or later",
|
||||||
|
"ai_not_supported": "The setting chrome://flags/#prompt-api-for-gemini-nano is not enabled. Please enable it.",
|
||||||
|
"ai_not_ready": "Gemini Nano is not ready yet; you need to double-check Chrome settings.",
|
||||||
|
"internal_error": "An internal error occurred. Please try again later."
|
||||||
|
},
|
||||||
|
"errorDescription": "In order to use Chrome AI, you need a browser version greater than 127, which is currently in the Dev and Canary channels. After downloading the supported version, follow these steps:\n\n1. Go to `chrome://flags/#prompt-api-for-gemini-nano` and select \"Enable\".\n2. Go to `chrome://flags/#optimization-guide-on-device-model` and select \"EnabledBypassPrefRequirement\".\n3. Go to `chrome://components`, search for \"Optimization Guide On Device Model\", and click \"Check for Update\". This will download the model. If you don't see the settings, repeat steps 1 and 2 and relaunch your browser."
|
||||||
|
}
|
@ -229,6 +229,18 @@
|
|||||||
"label": "Custom Origin URL",
|
"label": "Custom Origin URL",
|
||||||
"placeholder": "Enter Custom Origin URL"
|
"placeholder": "Enter Custom Origin URL"
|
||||||
},
|
},
|
||||||
|
"headers": {
|
||||||
|
"label": "Custom Headers",
|
||||||
|
"add": "Add Header",
|
||||||
|
"key": {
|
||||||
|
"label": "Header Key",
|
||||||
|
"placeholder": "Authorization"
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"label": "Header Value",
|
||||||
|
"placeholder": "Bearer token"
|
||||||
|
}
|
||||||
|
},
|
||||||
"help": "If you have connection issues with Ollama on Page Assist, you can configure a custom origin URL. To learn more about the configuration, <anchor>click here</anchor>."
|
"help": "If you have connection issues with Ollama on Page Assist, you can configure a custom origin URL. To learn more about the configuration, <anchor>click here</anchor>."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -288,5 +300,8 @@
|
|||||||
"webSearchFollowUpPromptError": "Please input your Web Search Follow Up Prompt!",
|
"webSearchFollowUpPromptError": "Please input your Web Search Follow Up Prompt!",
|
||||||
"webSearchFollowUpPromptPlaceholder": "Your Web Search Follow Up Prompt"
|
"webSearchFollowUpPromptPlaceholder": "Your Web Search Follow Up Prompt"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"chromeAiSettings": {
|
||||||
|
"title": "Chrome AI Settings"
|
||||||
}
|
}
|
||||||
}
|
}
|
13
src/assets/locale/es/chrome.json
Normal file
13
src/assets/locale/es/chrome.json
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"heading": "Configurar Chrome AI",
|
||||||
|
"status": {
|
||||||
|
"label": "Habilitar o deshabilitar el soporte de Chrome AI en Page Assist"
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"browser_not_supported": "Esta versión de Chrome no es compatible con el modelo Gemini Nano. Por favor, actualice a la versión 127 o posterior.",
|
||||||
|
"ai_not_supported": "La configuración chrome://flags/#prompt-api-for-gemini-nano no está habilitada. Por favor, habilítela.",
|
||||||
|
"ai_not_ready": "Gemini Nano aún no está listo; necesita verificar la configuración de Chrome.",
|
||||||
|
"internal_error": "Ocurrió un error interno. Por favor, inténtelo de nuevo más tarde."
|
||||||
|
},
|
||||||
|
"errorDescription": "Para usar Chrome AI, necesita una versión del navegador mayor a la 127, que actualmente está en los canales Dev y Canary. Después de descargar la versión compatible, siga estos pasos:\n\n1. Vaya a `chrome://flags/#prompt-api-for-gemini-nano` y seleccione \"Habilitar\".\n2. Vaya a `chrome://flags/#optimization-guide-on-device-model` y seleccione \"EnabledBypassPrefRequirement\".\n3. Vaya a `chrome://components`, busque \"Optimization Guide On Device Model\" y haga clic en \"Buscar actualización\". Esto descargará el modelo. Si no ve la configuración, repita los pasos 1 y 2 y reinicie su navegador."
|
||||||
|
}
|
@ -229,6 +229,18 @@
|
|||||||
"label": "URL Personalizada",
|
"label": "URL Personalizada",
|
||||||
"placeholder": "Ingresar URL Personalizada"
|
"placeholder": "Ingresar URL Personalizada"
|
||||||
},
|
},
|
||||||
|
"headers": {
|
||||||
|
"label": "Encabezados Personalizados",
|
||||||
|
"add": "Agregar Encabezado",
|
||||||
|
"key": {
|
||||||
|
"label": "Clave del Encabezado",
|
||||||
|
"placeholder": "Autorización"
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"label": "Valor del Encabezado",
|
||||||
|
"placeholder": "Token Bearer"
|
||||||
|
}
|
||||||
|
},
|
||||||
"help": "Si tenes problemas de conexión con Ollama en Page Assist, podes configurar una URL de personalizada. Para saber más sobre la configuración, <anchor>click aqui</anchor>."
|
"help": "Si tenes problemas de conexión con Ollama en Page Assist, podes configurar una URL de personalizada. Para saber más sobre la configuración, <anchor>click aqui</anchor>."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -288,5 +300,8 @@
|
|||||||
"webSearchFollowUpPromptError": "Por favor, ingrese el prompt de seguimiento de la busqueda web",
|
"webSearchFollowUpPromptError": "Por favor, ingrese el prompt de seguimiento de la busqueda web",
|
||||||
"webSearchFollowUpPromptPlaceholder": "Su prompt de seguimiento de busqueda web"
|
"webSearchFollowUpPromptPlaceholder": "Su prompt de seguimiento de busqueda web"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"chromeAiSettings": {
|
||||||
|
"title": "Configuración de IA de Chrome"
|
||||||
}
|
}
|
||||||
}
|
}
|
13
src/assets/locale/fr/chrome.json
Normal file
13
src/assets/locale/fr/chrome.json
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"heading": "Configurer Chrome AI",
|
||||||
|
"status": {
|
||||||
|
"label": "Activer ou désactiver la prise en charge de Chrome AI sur Page Assist"
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"browser_not_supported": "Cette version de Chrome n'est pas supportée par le modèle Gemini Nano. Veuillez mettre à jour vers la version 127 ou ultérieure.",
|
||||||
|
"ai_not_supported": "Le paramètre chrome://flags/#prompt-api-for-gemini-nano n'est pas activé. Veuillez l'activer.",
|
||||||
|
"ai_not_ready": "Gemini Nano n'est pas encore prêt; vous devez vérifier les paramètres de Chrome.",
|
||||||
|
"internal_error": "Une erreur interne est survenue. Veuillez réessayer plus tard."
|
||||||
|
},
|
||||||
|
"errorDescription": "Pour utiliser Chrome AI, vous avez besoin d'une version du navigateur supérieure à 127, actuellement disponible dans les canaux Dev et Canary. Après avoir téléchargé la version prise en charge, suivez ces étapes:\n\n1. Allez à `chrome://flags/#prompt-api-for-gemini-nano` et sélectionnez \"Activer\".\n2. Allez à `chrome://flags/#optimization-guide-on-device-model` et sélectionnez \"EnabledBypassPrefRequirement\".\n3. Allez à `chrome://components`, recherchez \"Optimization Guide On Device Model\" et cliquez sur \"Vérifier la mise à jour\". Cela téléchargera le modèle. Si vous ne voyez pas les paramètres, répétez les étapes 1 et 2 et relancez votre navigateur."
|
||||||
|
}
|
@ -229,6 +229,18 @@
|
|||||||
"label": "URL d'origine personnalisée",
|
"label": "URL d'origine personnalisée",
|
||||||
"placeholder": "Entrez l'URL d'origine personnalisée"
|
"placeholder": "Entrez l'URL d'origine personnalisée"
|
||||||
},
|
},
|
||||||
|
"headers": {
|
||||||
|
"label": "En-têtes Personnalisés",
|
||||||
|
"add": "Ajouter En-tête",
|
||||||
|
"key": {
|
||||||
|
"label": "Clé de l'En-tête",
|
||||||
|
"placeholder": "Autorisation"
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"label": "Valeur de l'En-tête",
|
||||||
|
"placeholder": "Jeton Bearer"
|
||||||
|
}
|
||||||
|
},
|
||||||
"help": "Si vous avez des problèmes de connexion avec OLLAMA sur Page Assist, vous pouvez configurer une URL d'origine personnalisée. Pour en savoir plus sur la configuration, <anchor>cliquez ici</anchor>."
|
"help": "Si vous avez des problèmes de connexion avec OLLAMA sur Page Assist, vous pouvez configurer une URL d'origine personnalisée. Pour en savoir plus sur la configuration, <anchor>cliquez ici</anchor>."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -288,5 +300,8 @@
|
|||||||
"webSearchFollowUpPromptError": "Veuillez saisir votre prompt de suivi de recherche Web!",
|
"webSearchFollowUpPromptError": "Veuillez saisir votre prompt de suivi de recherche Web!",
|
||||||
"webSearchFollowUpPromptPlaceholder": "Votre prompt de suivi de recherche Web"
|
"webSearchFollowUpPromptPlaceholder": "Votre prompt de suivi de recherche Web"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"chromeAiSettings": {
|
||||||
|
"title": "Paramètres IA de Chrome"
|
||||||
}
|
}
|
||||||
}
|
}
|
13
src/assets/locale/it/chrome.json
Normal file
13
src/assets/locale/it/chrome.json
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"heading": "Configura Chrome AI",
|
||||||
|
"status": {
|
||||||
|
"label": "Abilita o disabilita il supporto di Chrome AI su Page Assist"
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"browser_not_supported": "Questa versione di Chrome non è supportata dal modello Gemini Nano. Si prega di aggiornare alla versione 127 o successiva.",
|
||||||
|
"ai_not_supported": "L'impostazione chrome://flags/#prompt-api-for-gemini-nano non è abilitata. Si prega di abilitarla.",
|
||||||
|
"ai_not_ready": "Gemini Nano non è ancora pronto; è necessario verificare le impostazioni di Chrome.",
|
||||||
|
"internal_error": "Si è verificato un errore interno. Si prega di riprovare più tardi."
|
||||||
|
},
|
||||||
|
"errorDescription": "Per utilizzare Chrome AI, è necessaria una versione del browser superiore alla 127, attualmente disponibile nei canali Dev e Canary. Dopo aver scaricato la versione supportata, segui questi passaggi:\n\n1. Vai a `chrome://flags/#prompt-api-for-gemini-nano` e seleziona \"Abilita\".\n2. Vai a `chrome://flags/#optimization-guide-on-device-model` e seleziona \"EnabledBypassPrefRequirement\".\n3. Vai a `chrome://components`, cerca \"Optimization Guide On Device Model\" e clicca su \"Controlla aggiornamenti\". Questo scaricherà il modello. Se non vedi le impostazioni, ripeti i passaggi 1 e 2 e riavvia il browser."
|
||||||
|
}
|
@ -1,292 +1,307 @@
|
|||||||
{
|
{
|
||||||
"generalSettings": {
|
"generalSettings": {
|
||||||
"title": "Impostazioni Generali",
|
"title": "Impostazioni Generali",
|
||||||
"settings": {
|
"settings": {
|
||||||
"heading": "Impostazioni Web UI",
|
"heading": "Impostazioni Web UI",
|
||||||
"speechRecognitionLang": {
|
"speechRecognitionLang": {
|
||||||
"label": "Lingua per il riconoscimento vocale",
|
"label": "Lingua per il riconoscimento vocale",
|
||||||
"placeholder": "Scegli una lingua"
|
"placeholder": "Scegli una lingua"
|
||||||
},
|
},
|
||||||
"language": {
|
"language": {
|
||||||
"label": "Lingua",
|
"label": "Lingua",
|
||||||
"placeholder": "Scegli una lingua"
|
"placeholder": "Scegli una lingua"
|
||||||
},
|
},
|
||||||
"darkMode": {
|
"darkMode": {
|
||||||
"label": "Cambia il Tema",
|
"label": "Cambia il Tema",
|
||||||
"options": {
|
"options": {
|
||||||
"light": "Chiaro",
|
"light": "Chiaro",
|
||||||
"dark": "Scuro"
|
"dark": "Scuro"
|
||||||
}
|
|
||||||
},
|
|
||||||
"copilotResumeLastChat": {
|
|
||||||
"label": "Riprendi l'ultima chat quando apri il Pannello Laterale (Copilot)"
|
|
||||||
},
|
|
||||||
"hideCurrentChatModelSettings": {
|
|
||||||
"label": "Nascondi le impostazioni correnti del modello Chat"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"webSearch": {
|
|
||||||
"heading": "Gestione ricerca Web",
|
|
||||||
"searchMode": {
|
|
||||||
"label": "Effettua ricerca web Internet semplice"
|
|
||||||
},
|
|
||||||
"provider": {
|
|
||||||
"label": "Motori di ricerca",
|
|
||||||
"placeholder": "Scegli un motore di ricerca"
|
|
||||||
},
|
|
||||||
"totalSearchResults": {
|
|
||||||
"label": "Risultati della ricerca",
|
|
||||||
"placeholder": "Inserisci il totale delle ricerche"
|
|
||||||
},
|
|
||||||
"visitSpecificWebsite": {
|
|
||||||
"label": "Visita il sito web menzionato nel messaggio"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"system": {
|
|
||||||
"heading": "Impostazioni di Sistema",
|
|
||||||
"deleteChatHistory": {
|
|
||||||
"label": "Elimina cronologia Chat",
|
|
||||||
"button": "Elimina",
|
|
||||||
"confirm": "Sei sicuro che vuoi eliminare la tua cronologia delle chat? Questa azione non può essere annullata."
|
|
||||||
},
|
|
||||||
"export": {
|
|
||||||
"label": "Esporta la cronologia Chat, Base di Conoscenza, e Prompts",
|
|
||||||
"button": "Esporta Dati",
|
|
||||||
"success": "Esportato con Successo"
|
|
||||||
},
|
|
||||||
"import": {
|
|
||||||
"label": "Imposta la cronologia Chat, Base di Conoscenza, e Prompts",
|
|
||||||
"button": "Importa Dati",
|
|
||||||
"success": "Importato con Successo",
|
|
||||||
"error": "Errore Importazione"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tts": {
|
|
||||||
"heading": "Impostazioni Text-to-Speech",
|
|
||||||
"ttsEnabled": {
|
|
||||||
"label": "Abilita Text-to-Speech"
|
|
||||||
},
|
|
||||||
"ttsProvider": {
|
|
||||||
"label": "Text-to-Speech Provider",
|
|
||||||
"placeholder": "Seleziona un provider"
|
|
||||||
},
|
|
||||||
"ttsVoice": {
|
|
||||||
"label": "Text-to-Speech Voce",
|
|
||||||
"placeholder": "Seleziona una voce"
|
|
||||||
},
|
|
||||||
"ssmlEnabled": {
|
|
||||||
"label": "Abilita SSML (Speech Synthesis Markup Language)"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"copilotResumeLastChat": {
|
||||||
|
"label": "Riprendi l'ultima chat quando apri il Pannello Laterale (Copilot)"
|
||||||
|
},
|
||||||
|
"hideCurrentChatModelSettings": {
|
||||||
|
"label": "Nascondi le impostazioni correnti del modello Chat"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"manageModels": {
|
"webSearch": {
|
||||||
"title": "Gestione Modelli",
|
"heading": "Gestione ricerca Web",
|
||||||
"addBtn": "Aggiungi un nuovo Modello",
|
"searchMode": {
|
||||||
"columns": {
|
"label": "Effettua ricerca web Internet semplice"
|
||||||
"name": "Nome",
|
},
|
||||||
"digest": "Digest",
|
"provider": {
|
||||||
"modifiedAt": "Modificato il",
|
"label": "Motori di ricerca",
|
||||||
"size": "Dimensioni",
|
"placeholder": "Scegli un motore di ricerca"
|
||||||
"actions": "Azioni"
|
},
|
||||||
},
|
"totalSearchResults": {
|
||||||
"expandedColumns": {
|
"label": "Risultati della ricerca",
|
||||||
"parentModel": "Modello Padre",
|
"placeholder": "Inserisci il totale delle ricerche"
|
||||||
"format": "Formato",
|
},
|
||||||
"family": "Famiglia",
|
"visitSpecificWebsite": {
|
||||||
"parameterSize": "Numero di Parametri",
|
"label": "Visita il sito web menzionato nel messaggio"
|
||||||
"quantizationLevel": "Livello di Quantizzazione"
|
}
|
||||||
},
|
|
||||||
"tooltip": {
|
|
||||||
"delete": "Elimina Modello",
|
|
||||||
"repull": "Ri-Scarica Modello"
|
|
||||||
},
|
|
||||||
"confirm": {
|
|
||||||
"delete": "Sei sicuro di voler eliminare questo modello?",
|
|
||||||
"repull": "Se sicuro che vuoi ri-scaricare questo modello?"
|
|
||||||
},
|
|
||||||
"modal": {
|
|
||||||
"title": "Aggiungi Nuovo Modello",
|
|
||||||
"placeholder": "Inserisci il Nome Modello",
|
|
||||||
"pull": "Scarico del Modello"
|
|
||||||
},
|
|
||||||
"notification": {
|
|
||||||
"pullModel": "Scarico del Modello",
|
|
||||||
"pullModelDescription": "Scaricando il modello {{modelName}}. Per ulteriori dettagli visualizza l'icona dell'estensione.",
|
|
||||||
"success": "Completato",
|
|
||||||
"error": "Errore",
|
|
||||||
"successDescription": "Scarico del modello completato",
|
|
||||||
"successDeleteDescription": "Eliminazione del modello completato",
|
|
||||||
"someError": "Qualcosa è andato storto. Riprova più tardi"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"managePrompts": {
|
"system": {
|
||||||
"title": "Gestisci Prompts",
|
"heading": "Impostazioni di Sistema",
|
||||||
"addBtn": "Aggiungi nuovo Prompt",
|
"deleteChatHistory": {
|
||||||
"option1": "Normale",
|
"label": "Elimina cronologia Chat",
|
||||||
"option2": "RAG",
|
"button": "Elimina",
|
||||||
"questionPrompt": "Question Prompt",
|
"confirm": "Sei sicuro che vuoi eliminare la tua cronologia delle chat? Questa azione non può essere annullata."
|
||||||
"columns": {
|
},
|
||||||
"title": "Titolo",
|
"export": {
|
||||||
"prompt": "Prompt",
|
"label": "Esporta la cronologia Chat, Base di Conoscenza, e Prompts",
|
||||||
"type": "Tipo di Prompt",
|
"button": "Esporta Dati",
|
||||||
"actions": "Azioni"
|
"success": "Esportato con Successo"
|
||||||
},
|
},
|
||||||
"systemPrompt": "Prompt di Sistema",
|
"import": {
|
||||||
"quickPrompt": "Prompt Veloce",
|
"label": "Imposta la cronologia Chat, Base di Conoscenza, e Prompts",
|
||||||
"tooltip": {
|
"button": "Importa Dati",
|
||||||
"delete": "Elimina Prompt",
|
"success": "Importato con Successo",
|
||||||
"edit": "Modifica Prompt"
|
"error": "Errore Importazione"
|
||||||
},
|
}
|
||||||
"confirm": {
|
|
||||||
"delete": "Sei sicuro di voler eliminare questo prompt? L'azione non può essere annullata."
|
|
||||||
},
|
|
||||||
"modal": {
|
|
||||||
"addTitle": "Aggiungi Nuovo Prompt",
|
|
||||||
"editTitle": "Modifica Prompt"
|
|
||||||
},
|
|
||||||
"form": {
|
|
||||||
"title": {
|
|
||||||
"label": "Titolo",
|
|
||||||
"placeholder": "I Miei Prompt",
|
|
||||||
"required": "Inserisci il Titolo"
|
|
||||||
},
|
|
||||||
"prompt": {
|
|
||||||
"label": "Prompt",
|
|
||||||
"placeholder": "Inserisci Prompt",
|
|
||||||
"required": "Scrivi il prompt",
|
|
||||||
"help": "Puoi usare {key} come variabile nel tuo prompt."
|
|
||||||
},
|
|
||||||
"isSystem": {
|
|
||||||
"label": "Prompt di Sistema"
|
|
||||||
},
|
|
||||||
"btnSave": {
|
|
||||||
"saving": "Aggiungendo Prompt...",
|
|
||||||
"save": "Aggiungi Prompt"
|
|
||||||
},
|
|
||||||
"btnEdit": {
|
|
||||||
"saving": "Aggiornando Prompt...",
|
|
||||||
"save": "Aggiorna Prompt"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification": {
|
|
||||||
"addSuccess": "Prompt Aggiunto",
|
|
||||||
"addSuccessDesc": "Il Prompt è stato aggiunto correttamente",
|
|
||||||
"error": "Errore",
|
|
||||||
"someError": "Qualcosa è andato storto. Riprova più tardi",
|
|
||||||
"updatedSuccess": "Prompt Aggiornato",
|
|
||||||
"updatedSuccessDesc": "Il Prompt è stato aggiornato correttmante",
|
|
||||||
"deletedSuccess": "Prompt Eliminato",
|
|
||||||
"deletedSuccessDesc": "Il Prompt è stato eliminato correttamente"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"manageShare": {
|
"tts": {
|
||||||
"title": "Gestione Condivisioni",
|
"heading": "Impostazioni Text-to-Speech",
|
||||||
"heading": "Configura l'URL della Pagina di Condivisione",
|
"ttsEnabled": {
|
||||||
"form": {
|
"label": "Abilita Text-to-Speech"
|
||||||
"url": {
|
},
|
||||||
"label": "URL Pagina di Condivisione",
|
"ttsProvider": {
|
||||||
"placeholder": "Inserisci URL Pagina di Condivisione",
|
"label": "Text-to-Speech Provider",
|
||||||
"required": "Inserisci l'url della pagina di condivisione!",
|
"placeholder": "Seleziona un provider"
|
||||||
"help": "Per ragioni di privacy, tu puoi ospitare in self-host la paginacon il seguente URL. <anchor>Leggi altro</anchor>."
|
},
|
||||||
}
|
"ttsVoice": {
|
||||||
},
|
"label": "Text-to-Speech Voce",
|
||||||
"webshare": {
|
"placeholder": "Seleziona una voce"
|
||||||
"heading": "Condivisioni Web",
|
},
|
||||||
"columns": {
|
"ssmlEnabled": {
|
||||||
"title": "Titolo",
|
"label": "Abilita SSML (Speech Synthesis Markup Language)"
|
||||||
"url": "URL",
|
}
|
||||||
"actions": "Azioni"
|
|
||||||
},
|
|
||||||
"tooltip": {
|
|
||||||
"delete": "Elimina Condivisione"
|
|
||||||
},
|
|
||||||
"confirm": {
|
|
||||||
"delete": "Sei sicuro che vuoi eliminare questa condivisione? L'azione non può essere annullata."
|
|
||||||
},
|
|
||||||
"label": "Gestione Condivisioni",
|
|
||||||
"description": "Abilita o Disattiva la funzionalità di condivisione"
|
|
||||||
},
|
|
||||||
"notification": {
|
|
||||||
"pageShareSuccess": " URL di condivisione aggiornato correttamente",
|
|
||||||
"someError": "Qualcosa è andato storto. Riprova più tardi",
|
|
||||||
"webShareDeleteSuccess": "Condivisione eliminata correttamente"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ollamaSettings": {
|
|
||||||
"title": "Impostazioni Ollama",
|
|
||||||
"heading": "Configura Ollama",
|
|
||||||
"settings": {
|
|
||||||
"ollamaUrl": {
|
|
||||||
"label": "Ollama URL",
|
|
||||||
"placeholder": "Inserici l'URL di Ollama"
|
|
||||||
},
|
|
||||||
"advanced": {
|
|
||||||
"label": "Configurazione Avanzata Ollama URL",
|
|
||||||
"urlRewriteEnabled": {
|
|
||||||
"label": "Abilita o Disabilita l'URL di Origine Personalizzato"
|
|
||||||
},
|
|
||||||
"rewriteUrl": {
|
|
||||||
"label": "URL di Origine Personalizzato",
|
|
||||||
"placeholder": "Inserisci URL di Origine Personalizzato"
|
|
||||||
},
|
|
||||||
"help": "Se hai problemi di connessione con Ollama su Page Assist, puoi configurare un URL di origine personalizzato. Per saperne di più sulla configurazione, <anchor>clicca qui</anchor>."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"manageSearch": {
|
|
||||||
"title": "Gestisci Ricerca Web",
|
|
||||||
"heading": "Configura Ricerca Web"
|
|
||||||
},
|
|
||||||
"about": {
|
|
||||||
"title": "Informazioni",
|
|
||||||
"heading": "Informazioni",
|
|
||||||
"chromeVersion": "Versione di Page Assist",
|
|
||||||
"ollamaVersion": "Versione di Ollama",
|
|
||||||
"support": "Puoi supportare il progetto Page Assist donando o sponsorizzando attraverso le seguenti piattaforme:",
|
|
||||||
"koFi": "Supporta su Ko-fi",
|
|
||||||
"githubSponsor": "Sponsorizza su GitHub",
|
|
||||||
"githubRepo": "Repository GitHub"
|
|
||||||
},
|
|
||||||
"manageKnowledge": {
|
|
||||||
"title": "Gestisci Conoscenza",
|
|
||||||
"heading": "Configura Base di Conoscenza"
|
|
||||||
},
|
|
||||||
"rag": {
|
|
||||||
"title": "Impostazioni RAG",
|
|
||||||
"ragSettings": {
|
|
||||||
"label": "Impostazioni RAG",
|
|
||||||
"model": {
|
|
||||||
"label": "Modello di Embedding",
|
|
||||||
"required": "Scegliere il modello",
|
|
||||||
"help": "E' raccomandato l'uso di modelli come `nomic-embed-text`.",
|
|
||||||
"placeholder": "Seleziona un modello"
|
|
||||||
},
|
|
||||||
"chunkSize": {
|
|
||||||
"label": "Dimensione del Blocco (Chunk Size)",
|
|
||||||
"placeholder": "Inserisci la Dimensione del Blocco (Chunk Size)",
|
|
||||||
"required": "Inserisci la Dimensione del Blocco (chunk size)"
|
|
||||||
},
|
|
||||||
"chunkOverlap": {
|
|
||||||
"label": "Sovrapposizione del Blocco (Chunk Overlap)",
|
|
||||||
"placeholder": "Inserisci la Sovrapposizione del Blocco (Chunk Overlap)",
|
|
||||||
"required": "Inserisci la Sovrapposizione del Blocco"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"prompt": {
|
|
||||||
"label": "Configura il Prompt RAG",
|
|
||||||
"option1": "Normale",
|
|
||||||
"option2": "Web",
|
|
||||||
"alert": "La configurazione del prompt di sistema qui è deprecato. Usa la sezione Gestione Prompt per aggiungere o modificare i prompts.Questa sezione sarà eliminata nelle prossime release",
|
|
||||||
"systemPrompt": "Prompt di Sistema",
|
|
||||||
"systemPromptPlaceholder": "Inserisci il Prompt di Sistema",
|
|
||||||
"webSearchPrompt": "Prompt per la Ricerca Web",
|
|
||||||
"webSearchPromptHelp": "Non rimuovere `{search_results}` dal prompt.",
|
|
||||||
"webSearchPromptError": "Inserisci il prompt per la ricerca web",
|
|
||||||
"webSearchPromptPlaceholder": "Imserosco il Prompt per la Ricerca Web",
|
|
||||||
"webSearchFollowUpPrompt": "Prompt di Follow Up sulla Ricerca Web",
|
|
||||||
"webSearchFollowUpPromptHelp": "Non rimuovere `{chat_history}` e `{question}` dal prompt.",
|
|
||||||
"webSearchFollowUpPromptError": "Inserisci il Prompt di Follow Up della Ricerca Web!",
|
|
||||||
"webSearchFollowUpPromptPlaceholder": "I tuoi Prompt di Follow Up delle Ricerche Web"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"manageModels": {
|
||||||
|
"title": "Gestione Modelli",
|
||||||
|
"addBtn": "Aggiungi un nuovo Modello",
|
||||||
|
"columns": {
|
||||||
|
"name": "Nome",
|
||||||
|
"digest": "Digest",
|
||||||
|
"modifiedAt": "Modificato il",
|
||||||
|
"size": "Dimensioni",
|
||||||
|
"actions": "Azioni"
|
||||||
|
},
|
||||||
|
"expandedColumns": {
|
||||||
|
"parentModel": "Modello Padre",
|
||||||
|
"format": "Formato",
|
||||||
|
"family": "Famiglia",
|
||||||
|
"parameterSize": "Numero di Parametri",
|
||||||
|
"quantizationLevel": "Livello di Quantizzazione"
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"delete": "Elimina Modello",
|
||||||
|
"repull": "Ri-Scarica Modello"
|
||||||
|
},
|
||||||
|
"confirm": {
|
||||||
|
"delete": "Sei sicuro di voler eliminare questo modello?",
|
||||||
|
"repull": "Se sicuro che vuoi ri-scaricare questo modello?"
|
||||||
|
},
|
||||||
|
"modal": {
|
||||||
|
"title": "Aggiungi Nuovo Modello",
|
||||||
|
"placeholder": "Inserisci il Nome Modello",
|
||||||
|
"pull": "Scarico del Modello"
|
||||||
|
},
|
||||||
|
"notification": {
|
||||||
|
"pullModel": "Scarico del Modello",
|
||||||
|
"pullModelDescription": "Scaricando il modello {{modelName}}. Per ulteriori dettagli visualizza l'icona dell'estensione.",
|
||||||
|
"success": "Completato",
|
||||||
|
"error": "Errore",
|
||||||
|
"successDescription": "Scarico del modello completato",
|
||||||
|
"successDeleteDescription": "Eliminazione del modello completato",
|
||||||
|
"someError": "Qualcosa è andato storto. Riprova più tardi"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"managePrompts": {
|
||||||
|
"title": "Gestisci Prompts",
|
||||||
|
"addBtn": "Aggiungi nuovo Prompt",
|
||||||
|
"option1": "Normale",
|
||||||
|
"option2": "RAG",
|
||||||
|
"questionPrompt": "Question Prompt",
|
||||||
|
"columns": {
|
||||||
|
"title": "Titolo",
|
||||||
|
"prompt": "Prompt",
|
||||||
|
"type": "Tipo di Prompt",
|
||||||
|
"actions": "Azioni"
|
||||||
|
},
|
||||||
|
"systemPrompt": "Prompt di Sistema",
|
||||||
|
"quickPrompt": "Prompt Veloce",
|
||||||
|
"tooltip": {
|
||||||
|
"delete": "Elimina Prompt",
|
||||||
|
"edit": "Modifica Prompt"
|
||||||
|
},
|
||||||
|
"confirm": {
|
||||||
|
"delete": "Sei sicuro di voler eliminare questo prompt? L'azione non può essere annullata."
|
||||||
|
},
|
||||||
|
"modal": {
|
||||||
|
"addTitle": "Aggiungi Nuovo Prompt",
|
||||||
|
"editTitle": "Modifica Prompt"
|
||||||
|
},
|
||||||
|
"form": {
|
||||||
|
"title": {
|
||||||
|
"label": "Titolo",
|
||||||
|
"placeholder": "I Miei Prompt",
|
||||||
|
"required": "Inserisci il Titolo"
|
||||||
|
},
|
||||||
|
"prompt": {
|
||||||
|
"label": "Prompt",
|
||||||
|
"placeholder": "Inserisci Prompt",
|
||||||
|
"required": "Scrivi il prompt",
|
||||||
|
"help": "Puoi usare {key} come variabile nel tuo prompt."
|
||||||
|
},
|
||||||
|
"isSystem": {
|
||||||
|
"label": "Prompt di Sistema"
|
||||||
|
},
|
||||||
|
"btnSave": {
|
||||||
|
"saving": "Aggiungendo Prompt...",
|
||||||
|
"save": "Aggiungi Prompt"
|
||||||
|
},
|
||||||
|
"btnEdit": {
|
||||||
|
"saving": "Aggiornando Prompt...",
|
||||||
|
"save": "Aggiorna Prompt"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification": {
|
||||||
|
"addSuccess": "Prompt Aggiunto",
|
||||||
|
"addSuccessDesc": "Il Prompt è stato aggiunto correttamente",
|
||||||
|
"error": "Errore",
|
||||||
|
"someError": "Qualcosa è andato storto. Riprova più tardi",
|
||||||
|
"updatedSuccess": "Prompt Aggiornato",
|
||||||
|
"updatedSuccessDesc": "Il Prompt è stato aggiornato correttmante",
|
||||||
|
"deletedSuccess": "Prompt Eliminato",
|
||||||
|
"deletedSuccessDesc": "Il Prompt è stato eliminato correttamente"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"manageShare": {
|
||||||
|
"title": "Gestione Condivisioni",
|
||||||
|
"heading": "Configura l'URL della Pagina di Condivisione",
|
||||||
|
"form": {
|
||||||
|
"url": {
|
||||||
|
"label": "URL Pagina di Condivisione",
|
||||||
|
"placeholder": "Inserisci URL Pagina di Condivisione",
|
||||||
|
"required": "Inserisci l'url della pagina di condivisione!",
|
||||||
|
"help": "Per ragioni di privacy, tu puoi ospitare in self-host la paginacon il seguente URL. <anchor>Leggi altro</anchor>."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"webshare": {
|
||||||
|
"heading": "Condivisioni Web",
|
||||||
|
"columns": {
|
||||||
|
"title": "Titolo",
|
||||||
|
"url": "URL",
|
||||||
|
"actions": "Azioni"
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"delete": "Elimina Condivisione"
|
||||||
|
},
|
||||||
|
"confirm": {
|
||||||
|
"delete": "Sei sicuro che vuoi eliminare questa condivisione? L'azione non può essere annullata."
|
||||||
|
},
|
||||||
|
"label": "Gestione Condivisioni",
|
||||||
|
"description": "Abilita o Disattiva la funzionalità di condivisione"
|
||||||
|
},
|
||||||
|
"notification": {
|
||||||
|
"pageShareSuccess": " URL di condivisione aggiornato correttamente",
|
||||||
|
"someError": "Qualcosa è andato storto. Riprova più tardi",
|
||||||
|
"webShareDeleteSuccess": "Condivisione eliminata correttamente"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ollamaSettings": {
|
||||||
|
"title": "Impostazioni Ollama",
|
||||||
|
"heading": "Configura Ollama",
|
||||||
|
"settings": {
|
||||||
|
"ollamaUrl": {
|
||||||
|
"label": "Ollama URL",
|
||||||
|
"placeholder": "Inserici l'URL di Ollama"
|
||||||
|
},
|
||||||
|
"advanced": {
|
||||||
|
"label": "Configurazione Avanzata Ollama URL",
|
||||||
|
"urlRewriteEnabled": {
|
||||||
|
"label": "Abilita o Disabilita l'URL di Origine Personalizzato"
|
||||||
|
},
|
||||||
|
"rewriteUrl": {
|
||||||
|
"label": "URL di Origine Personalizzato",
|
||||||
|
"placeholder": "Inserisci URL di Origine Personalizzato"
|
||||||
|
},
|
||||||
|
"headers": {
|
||||||
|
"label": "Intestazioni Personalizzate",
|
||||||
|
"add": "Aggiungi Intestazione",
|
||||||
|
"key": {
|
||||||
|
"label": "Chiave dell'Intestazione",
|
||||||
|
"placeholder": "Autorizzazione"
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"label": "Valore dell'Intestazione",
|
||||||
|
"placeholder": "Token Bearer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"help": "Se hai problemi di connessione con Ollama su Page Assist, puoi configurare un URL di origine personalizzato. Per saperne di più sulla configurazione, <anchor>clicca qui</anchor>."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"manageSearch": {
|
||||||
|
"title": "Gestisci Ricerca Web",
|
||||||
|
"heading": "Configura Ricerca Web"
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"title": "Informazioni",
|
||||||
|
"heading": "Informazioni",
|
||||||
|
"chromeVersion": "Versione di Page Assist",
|
||||||
|
"ollamaVersion": "Versione di Ollama",
|
||||||
|
"support": "Puoi supportare il progetto Page Assist donando o sponsorizzando attraverso le seguenti piattaforme:",
|
||||||
|
"koFi": "Supporta su Ko-fi",
|
||||||
|
"githubSponsor": "Sponsorizza su GitHub",
|
||||||
|
"githubRepo": "Repository GitHub"
|
||||||
|
},
|
||||||
|
"manageKnowledge": {
|
||||||
|
"title": "Gestisci Conoscenza",
|
||||||
|
"heading": "Configura Base di Conoscenza"
|
||||||
|
},
|
||||||
|
"rag": {
|
||||||
|
"title": "Impostazioni RAG",
|
||||||
|
"ragSettings": {
|
||||||
|
"label": "Impostazioni RAG",
|
||||||
|
"model": {
|
||||||
|
"label": "Modello di Embedding",
|
||||||
|
"required": "Scegliere il modello",
|
||||||
|
"help": "E' raccomandato l'uso di modelli come `nomic-embed-text`.",
|
||||||
|
"placeholder": "Seleziona un modello"
|
||||||
|
},
|
||||||
|
"chunkSize": {
|
||||||
|
"label": "Dimensione del Blocco (Chunk Size)",
|
||||||
|
"placeholder": "Inserisci la Dimensione del Blocco (Chunk Size)",
|
||||||
|
"required": "Inserisci la Dimensione del Blocco (chunk size)"
|
||||||
|
},
|
||||||
|
"chunkOverlap": {
|
||||||
|
"label": "Sovrapposizione del Blocco (Chunk Overlap)",
|
||||||
|
"placeholder": "Inserisci la Sovrapposizione del Blocco (Chunk Overlap)",
|
||||||
|
"required": "Inserisci la Sovrapposizione del Blocco"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"prompt": {
|
||||||
|
"label": "Configura il Prompt RAG",
|
||||||
|
"option1": "Normale",
|
||||||
|
"option2": "Web",
|
||||||
|
"alert": "La configurazione del prompt di sistema qui è deprecato. Usa la sezione Gestione Prompt per aggiungere o modificare i prompts.Questa sezione sarà eliminata nelle prossime release",
|
||||||
|
"systemPrompt": "Prompt di Sistema",
|
||||||
|
"systemPromptPlaceholder": "Inserisci il Prompt di Sistema",
|
||||||
|
"webSearchPrompt": "Prompt per la Ricerca Web",
|
||||||
|
"webSearchPromptHelp": "Non rimuovere `{search_results}` dal prompt.",
|
||||||
|
"webSearchPromptError": "Inserisci il prompt per la ricerca web",
|
||||||
|
"webSearchPromptPlaceholder": "Imserosco il Prompt per la Ricerca Web",
|
||||||
|
"webSearchFollowUpPrompt": "Prompt di Follow Up sulla Ricerca Web",
|
||||||
|
"webSearchFollowUpPromptHelp": "Non rimuovere `{chat_history}` e `{question}` dal prompt.",
|
||||||
|
"webSearchFollowUpPromptError": "Inserisci il Prompt di Follow Up della Ricerca Web!",
|
||||||
|
"webSearchFollowUpPromptPlaceholder": "I tuoi Prompt di Follow Up delle Ricerche Web"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chromeAiSettings": {
|
||||||
|
"title": "Impostazioni IA di Chrome"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
13
src/assets/locale/ja-JP/chrome.json
Normal file
13
src/assets/locale/ja-JP/chrome.json
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"heading": "Chrome AIの設定",
|
||||||
|
"status": {
|
||||||
|
"label": "Page AssistでChrome AIサポートを有効または無効にする"
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"browser_not_supported": "このバージョンのChromeはGemini Nanoモデルに対応していません。バージョン127以降に更新してください。",
|
||||||
|
"ai_not_supported": "設定chrome://flags/#prompt-api-for-gemini-nanoが有効になっていません。有効にしてください。",
|
||||||
|
"ai_not_ready": "Gemini Nanoはまだ準備ができていません。Chromeの設定を再確認する必要があります。",
|
||||||
|
"internal_error": "内部エラーが発生しました。後でもう一度お試しください。"
|
||||||
|
},
|
||||||
|
"errorDescription": "Chrome AIを使用するには、現在DevおよびCanaryチャンネルにあるバージョン127以上のブラウザが必要です。サポートされているバージョンをダウンロードした後、次の手順に従ってください:\n\n1. `chrome://flags/#prompt-api-for-gemini-nano`にアクセスし、「有効」を選択します。\n2. `chrome://flags/#optimization-guide-on-device-model`にアクセスし、「EnabledBypassPrefRequirement」を選択します。\n3. `chrome://components`にアクセスし、「Optimization Guide On Device Model」を検索して、「アップデートを確認」をクリックします。これにより、モデルがダウンロードされます。設定が表示されない場合は、手順1および2を繰り返し、ブラウザを再起動してください。"
|
||||||
|
}
|
@ -1,295 +1,310 @@
|
|||||||
{
|
{
|
||||||
"generalSettings": {
|
"generalSettings": {
|
||||||
"title": "一般設定",
|
"title": "一般設定",
|
||||||
"settings": {
|
"settings": {
|
||||||
"heading": "Web UIの設定",
|
"heading": "Web UIの設定",
|
||||||
"speechRecognitionLang": {
|
"speechRecognitionLang": {
|
||||||
"label": "音声認識の言語",
|
"label": "音声認識の言語",
|
||||||
"placeholder": "言語を選択"
|
"placeholder": "言語を選択"
|
||||||
},
|
},
|
||||||
"language": {
|
"language": {
|
||||||
"label": "言語",
|
"label": "言語",
|
||||||
"placeholder": "言語を選択"
|
"placeholder": "言語を選択"
|
||||||
},
|
},
|
||||||
"darkMode": {
|
"darkMode": {
|
||||||
"label": "テーマを変更",
|
"label": "テーマを変更",
|
||||||
"options": {
|
"options": {
|
||||||
"light": "ライト",
|
"light": "ライト",
|
||||||
"dark": "ダーク"
|
"dark": "ダーク"
|
||||||
}
|
|
||||||
},
|
|
||||||
"searchMode": {
|
|
||||||
"label": "簡易インターネット検索を実行"
|
|
||||||
},
|
|
||||||
"copilotResumeLastChat": {
|
|
||||||
"label": "サイドパネルを開いたときに最後のチャットを再開 (Copilot)"
|
|
||||||
},
|
|
||||||
"hideCurrentChatModelSettings": {
|
|
||||||
"label": "現在のチャットモデル設定を非表示"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"webSearch": {
|
|
||||||
"heading": "ウェブ検索を管理する",
|
|
||||||
"searchMode": {
|
|
||||||
"label": "簡単なインターネット検索を実行する"
|
|
||||||
},
|
|
||||||
"provider": {
|
|
||||||
"label": "検索エンジン",
|
|
||||||
"placeholder": "検索エンジンを選択する"
|
|
||||||
},
|
|
||||||
"totalSearchResults": {
|
|
||||||
"label": "合計検索結果",
|
|
||||||
"placeholder": "合計検索結果を入力する"
|
|
||||||
},
|
|
||||||
"visitSpecificWebsite": {
|
|
||||||
"label": "メッセージに記載されたウェブサイトを訪問してください"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"system": {
|
|
||||||
"heading": "システム設定",
|
|
||||||
"deleteChatHistory": {
|
|
||||||
"label": "チャット履歴を削除する",
|
|
||||||
"button": "削除",
|
|
||||||
"confirm": "チャット履歴を削除してもよろしいですか?この操作は元に戻せません。"
|
|
||||||
},
|
|
||||||
"export": {
|
|
||||||
"label": "チャット履歴、知識ベース、プロンプトをエクスポート",
|
|
||||||
"button": "データをエクスポート",
|
|
||||||
"success": "エクスポート成功"
|
|
||||||
},
|
|
||||||
"import": {
|
|
||||||
"label": "チャット履歴、知識ベース、プロンプトをインポート",
|
|
||||||
"button": "データをインポート",
|
|
||||||
"success": "インポート成功",
|
|
||||||
"error": "インポートエラー"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tts": {
|
|
||||||
"heading": "テキスト読み上げ設定",
|
|
||||||
"ttsEnabled": {
|
|
||||||
"label": "テキスト読み上げを有効にする"
|
|
||||||
},
|
|
||||||
"ttsProvider": {
|
|
||||||
"label": "テキスト読み上げプロバイダー",
|
|
||||||
"placeholder": "プロバイダーを選択"
|
|
||||||
},
|
|
||||||
"ttsVoice": {
|
|
||||||
"label": "テキスト読み上げの音声",
|
|
||||||
"placeholder": "音声を選択"
|
|
||||||
},
|
|
||||||
"ssmlEnabled": {
|
|
||||||
"label": "SSML (Speech Synthesis Markup Language) を有効にする"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"searchMode": {
|
||||||
|
"label": "簡易インターネット検索を実行"
|
||||||
|
},
|
||||||
|
"copilotResumeLastChat": {
|
||||||
|
"label": "サイドパネルを開いたときに最後のチャットを再開 (Copilot)"
|
||||||
|
},
|
||||||
|
"hideCurrentChatModelSettings": {
|
||||||
|
"label": "現在のチャットモデル設定を非表示"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"manageModels": {
|
"webSearch": {
|
||||||
"title": "モデルを管理",
|
"heading": "ウェブ検索を管理する",
|
||||||
"addBtn": "新しいモデルを追加",
|
"searchMode": {
|
||||||
"columns": {
|
"label": "簡単なインターネット検索を実行する"
|
||||||
"name": "名前",
|
},
|
||||||
"digest": "ダイジェスト",
|
"provider": {
|
||||||
"modifiedAt": "修正日時",
|
"label": "検索エンジン",
|
||||||
"size": "サイズ",
|
"placeholder": "検索エンジンを選択する"
|
||||||
"actions": "アクション"
|
},
|
||||||
},
|
"totalSearchResults": {
|
||||||
"expandedColumns": {
|
"label": "合計検索結果",
|
||||||
"parentModel": "親モデル",
|
"placeholder": "合計検索結果を入力する"
|
||||||
"format": "フォーマット",
|
},
|
||||||
"family": "ファミリー",
|
"visitSpecificWebsite": {
|
||||||
"parameterSize": "パラメータサイズ",
|
"label": "メッセージに記載されたウェブサイトを訪問してください"
|
||||||
"quantizationLevel": "量子化レベル"
|
}
|
||||||
},
|
|
||||||
"tooltip": {
|
|
||||||
"delete": "モデルを削除",
|
|
||||||
"repull": "モデルを再取得"
|
|
||||||
},
|
|
||||||
"confirm": {
|
|
||||||
"delete": "本当にこのモデルを削除しますか?",
|
|
||||||
"repull": "本当にこのモデルを再取得しますか?"
|
|
||||||
},
|
|
||||||
"modal": {
|
|
||||||
"title": "新しいモデルを追加",
|
|
||||||
"placeholder": "モデル名を入力",
|
|
||||||
"pull": "モデルを取得"
|
|
||||||
},
|
|
||||||
"notification": {
|
|
||||||
"pullModel": "モデルを取得中",
|
|
||||||
"pullModelDescription": "{{modelName}}モデルを取得中。詳細は拡張機能のアイコンをご確認ください。",
|
|
||||||
"success": "成功",
|
|
||||||
"error": "エラー",
|
|
||||||
"successDescription": "モデルの取得が完了しました",
|
|
||||||
"successDeleteDescription": "モデルの削除が完了しました",
|
|
||||||
"someError": "問題が発生しました。後ほど再度お試しください。"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"managePrompts": {
|
"system": {
|
||||||
"title": "プロンプトを管理",
|
"heading": "システム設定",
|
||||||
"addBtn": "新しいプロンプトを追加",
|
"deleteChatHistory": {
|
||||||
"option1": "通常",
|
"label": "チャット履歴を削除する",
|
||||||
"option2": "RAG",
|
"button": "削除",
|
||||||
"questionPrompt": "質問プロンプト",
|
"confirm": "チャット履歴を削除してもよろしいですか?この操作は元に戻せません。"
|
||||||
"columns": {
|
},
|
||||||
"title": "タイトル",
|
"export": {
|
||||||
"prompt": "プロンプト",
|
"label": "チャット履歴、知識ベース、プロンプトをエクスポート",
|
||||||
"type": "プロンプトタイプ",
|
"button": "データをエクスポート",
|
||||||
"actions": "アクション"
|
"success": "エクスポート成功"
|
||||||
},
|
},
|
||||||
"systemPrompt": "システムプロンプト",
|
"import": {
|
||||||
"quickPrompt": "クイックプロンプト",
|
"label": "チャット履歴、知識ベース、プロンプトをインポート",
|
||||||
"tooltip": {
|
"button": "データをインポート",
|
||||||
"delete": "プロンプトを削除",
|
"success": "インポート成功",
|
||||||
"edit": "プロンプトを編集"
|
"error": "インポートエラー"
|
||||||
},
|
}
|
||||||
"confirm": {
|
|
||||||
"delete": "本当にこのプロンプトを削除しますか?この操作は元に戻せません。"
|
|
||||||
},
|
|
||||||
"modal": {
|
|
||||||
"addTitle": "新しいプロンプトを追加",
|
|
||||||
"editTitle": "プロンプトを編集"
|
|
||||||
},
|
|
||||||
"form": {
|
|
||||||
"title": {
|
|
||||||
"label": "タイトル",
|
|
||||||
"placeholder": "素晴らしいプロンプト",
|
|
||||||
"required": "タイトルを入力してください"
|
|
||||||
},
|
|
||||||
"prompt": {
|
|
||||||
"label": "プロンプト",
|
|
||||||
"placeholder": "プロンプトを入力",
|
|
||||||
"required": "プロンプトを入力してください",
|
|
||||||
"help": "プロンプト内で{key}を変数として使用できます。"
|
|
||||||
},
|
|
||||||
"isSystem": {
|
|
||||||
"label": "システムプロンプト"
|
|
||||||
},
|
|
||||||
"btnSave": {
|
|
||||||
"saving": "プロンプトを追加中...",
|
|
||||||
"save": "プロンプトを追加"
|
|
||||||
},
|
|
||||||
"btnEdit": {
|
|
||||||
"saving": "プロンプトを更新中...",
|
|
||||||
"save": "プロンプトを更新"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification": {
|
|
||||||
"addSuccess": "プロンプトが追加されました",
|
|
||||||
"addSuccessDesc": "プロンプトが正常に追加されました",
|
|
||||||
"error": "エラー",
|
|
||||||
"someError": "問題が発生しました。後ほど再度お試しください。",
|
|
||||||
"updatedSuccess": "プロンプトが更新されました",
|
|
||||||
"updatedSuccessDesc": "プロンプトが正常に更新されました",
|
|
||||||
"deletedSuccess": "プロンプトが削除されました",
|
|
||||||
"deletedSuccessDesc": "プロンプトが正常に削除されました"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"manageShare": {
|
"tts": {
|
||||||
"title": "共有を管理",
|
"heading": "テキスト読み上げ設定",
|
||||||
"heading": "ページ共有URLを設定",
|
"ttsEnabled": {
|
||||||
"form": {
|
"label": "テキスト読み上げを有効にする"
|
||||||
"url": {
|
},
|
||||||
"label": "ページ共有URL",
|
"ttsProvider": {
|
||||||
"placeholder": "ページ共有URLを入力",
|
"label": "テキスト読み上げプロバイダー",
|
||||||
"required": "ページ共有URLを入力してください!",
|
"placeholder": "プロバイダーを選択"
|
||||||
"help": "プライバシー保護のため、ページ共有を自身でホストし、そのURLをここに入力することができます。<anchor>詳細</anchor>"
|
},
|
||||||
}
|
"ttsVoice": {
|
||||||
},
|
"label": "テキスト読み上げの音声",
|
||||||
"webshare": {
|
"placeholder": "音声を選択"
|
||||||
"heading": "ウェブ共有",
|
},
|
||||||
"columns": {
|
"ssmlEnabled": {
|
||||||
"title": "タイトル",
|
"label": "SSML (Speech Synthesis Markup Language) を有効にする"
|
||||||
"url": "URL",
|
}
|
||||||
"actions": "アクション"
|
|
||||||
},
|
|
||||||
"tooltip": {
|
|
||||||
"delete": "共有を削除"
|
|
||||||
},
|
|
||||||
"confirm": {
|
|
||||||
"delete": "本当にこの共有を削除しますか?この操作は元に戻せません。"
|
|
||||||
},
|
|
||||||
"label": "ページ共有を管理する",
|
|
||||||
"description": "ページ共有機能を有効または無効にする"
|
|
||||||
},
|
|
||||||
"notification": {
|
|
||||||
"pageShareSuccess": "ページ共有URLが正常に更新されました",
|
|
||||||
"someError": "問題が発生しました。後ほど再度お試しください。",
|
|
||||||
"webShareDeleteSuccess": "ウェブ共有が正常に削除されました"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ollamaSettings": {
|
|
||||||
"title": "Ollamaの設定",
|
|
||||||
"heading": "Ollamaを設定",
|
|
||||||
"settings": {
|
|
||||||
"ollamaUrl": {
|
|
||||||
"label": "OllamaのURL",
|
|
||||||
"placeholder": "OllamaのURLを入力"
|
|
||||||
},
|
|
||||||
"advanced": {
|
|
||||||
"label": "Ollama URL の高度な設定",
|
|
||||||
"urlRewriteEnabled": {
|
|
||||||
"label": "カスタムOriginのURLを有効化または無効化する"
|
|
||||||
},
|
|
||||||
"rewriteUrl": {
|
|
||||||
"label": "カスタムOriginのURL",
|
|
||||||
"placeholder": "カスタムOriginのURLを入力"
|
|
||||||
},
|
|
||||||
"help": "PageAssistでOllamaに接続の問題がある場合は、カスタムOriginのURLを設定できます。設定の詳細については、<anchor>ここをクリック</anchor>してください。"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"manageSearch": {
|
|
||||||
"title": "Web検索の管理",
|
|
||||||
"heading": "Web検索を設定する"
|
|
||||||
},
|
|
||||||
"about": {
|
|
||||||
"title": "About",
|
|
||||||
"heading": "About",
|
|
||||||
"chromeVersion": "Page Assistのバージョン",
|
|
||||||
"ollamaVersion": "Ollamaのバージョン",
|
|
||||||
"support": "Page Assistプロジェクトは、以下のプラットフォームで寄付やスポンサーシップをすることで支援できます:",
|
|
||||||
"koFi": "Ko-fiで支援する",
|
|
||||||
"githubSponsor": "GitHubでスポンサーする",
|
|
||||||
"githubRepo": "GitHubリポジトリ"
|
|
||||||
},
|
|
||||||
"manageKnowledge": {
|
|
||||||
"title": "知識を管理する",
|
|
||||||
"heading": "知識ベースを構成する"
|
|
||||||
},
|
|
||||||
"rag": {
|
|
||||||
"title": "RAGの設定",
|
|
||||||
"ragSettings": {
|
|
||||||
"label": "RAGの設定",
|
|
||||||
"model": {
|
|
||||||
"label": "エンベディングモデル",
|
|
||||||
"required": "モデルを選択してください",
|
|
||||||
"help": "`nomic-embed-text`などのエンベディングモデルの使用を強くおすすめします。",
|
|
||||||
"placeholder": "モデルを選択"
|
|
||||||
},
|
|
||||||
"chunkSize": {
|
|
||||||
"label": "チャンクサイズ",
|
|
||||||
"placeholder": "チャンクサイズを入力",
|
|
||||||
"required": "チャンクサイズを入力してください"
|
|
||||||
},
|
|
||||||
"chunkOverlap": {
|
|
||||||
"label": "チャンクオーバーラップ",
|
|
||||||
"placeholder": "チャンクオーバーラップを入力",
|
|
||||||
"required": "チャンクオーバーラップを入力してください"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"prompt": {
|
|
||||||
"label": "RAGプロンプトを設定",
|
|
||||||
"option1": "通常",
|
|
||||||
"option2": "Web",
|
|
||||||
"alert": "ここでシステムプロンプトを設定することは非推奨となりました。プロンプトの追加や編集には「プロンプトを管理」セクションをご利用ください。このセクションは今後のリリースで削除される予定です。",
|
|
||||||
"systemPrompt": "システムプロンプト",
|
|
||||||
"systemPromptPlaceholder": "システムプロンプトを入力",
|
|
||||||
"webSearchPrompt": "Web検索プロンプト",
|
|
||||||
"webSearchPromptHelp": "プロンプトから`{search_results}`を削除しないでください。",
|
|
||||||
"webSearchPromptError": "Web検索プロンプトを入力してください",
|
|
||||||
"webSearchPromptPlaceholder": "Web検索プロンプトを入力",
|
|
||||||
"webSearchFollowUpPrompt": "Web検索フォローアッププロンプト",
|
|
||||||
"webSearchFollowUpPromptHelp": "プロンプトから`{chat_history}`と`{question}`を削除しないでください。",
|
|
||||||
"webSearchFollowUpPromptError": "Web検索フォローアッププロンプトを入力してください!",
|
|
||||||
"webSearchFollowUpPromptPlaceholder": "Web検索フォローアッププロンプト"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"manageModels": {
|
||||||
|
"title": "モデルを管理",
|
||||||
|
"addBtn": "新しいモデルを追加",
|
||||||
|
"columns": {
|
||||||
|
"name": "名前",
|
||||||
|
"digest": "ダイジェスト",
|
||||||
|
"modifiedAt": "修正日時",
|
||||||
|
"size": "サイズ",
|
||||||
|
"actions": "アクション"
|
||||||
|
},
|
||||||
|
"expandedColumns": {
|
||||||
|
"parentModel": "親モデル",
|
||||||
|
"format": "フォーマット",
|
||||||
|
"family": "ファミリー",
|
||||||
|
"parameterSize": "パラメータサイズ",
|
||||||
|
"quantizationLevel": "量子化レベル"
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"delete": "モデルを削除",
|
||||||
|
"repull": "モデルを再取得"
|
||||||
|
},
|
||||||
|
"confirm": {
|
||||||
|
"delete": "本当にこのモデルを削除しますか?",
|
||||||
|
"repull": "本当にこのモデルを再取得しますか?"
|
||||||
|
},
|
||||||
|
"modal": {
|
||||||
|
"title": "新しいモデルを追加",
|
||||||
|
"placeholder": "モデル名を入力",
|
||||||
|
"pull": "モデルを取得"
|
||||||
|
},
|
||||||
|
"notification": {
|
||||||
|
"pullModel": "モデルを取得中",
|
||||||
|
"pullModelDescription": "{{modelName}}モデルを取得中。詳細は拡張機能のアイコンをご確認ください。",
|
||||||
|
"success": "成功",
|
||||||
|
"error": "エラー",
|
||||||
|
"successDescription": "モデルの取得が完了しました",
|
||||||
|
"successDeleteDescription": "モデルの削除が完了しました",
|
||||||
|
"someError": "問題が発生しました。後ほど再度お試しください。"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"managePrompts": {
|
||||||
|
"title": "プロンプトを管理",
|
||||||
|
"addBtn": "新しいプロンプトを追加",
|
||||||
|
"option1": "通常",
|
||||||
|
"option2": "RAG",
|
||||||
|
"questionPrompt": "質問プロンプト",
|
||||||
|
"columns": {
|
||||||
|
"title": "タイトル",
|
||||||
|
"prompt": "プロンプト",
|
||||||
|
"type": "プロンプトタイプ",
|
||||||
|
"actions": "アクション"
|
||||||
|
},
|
||||||
|
"systemPrompt": "システムプロンプト",
|
||||||
|
"quickPrompt": "クイックプロンプト",
|
||||||
|
"tooltip": {
|
||||||
|
"delete": "プロンプトを削除",
|
||||||
|
"edit": "プロンプトを編集"
|
||||||
|
},
|
||||||
|
"confirm": {
|
||||||
|
"delete": "本当にこのプロンプトを削除しますか?この操作は元に戻せません。"
|
||||||
|
},
|
||||||
|
"modal": {
|
||||||
|
"addTitle": "新しいプロンプトを追加",
|
||||||
|
"editTitle": "プロンプトを編集"
|
||||||
|
},
|
||||||
|
"form": {
|
||||||
|
"title": {
|
||||||
|
"label": "タイトル",
|
||||||
|
"placeholder": "素晴らしいプロンプト",
|
||||||
|
"required": "タイトルを入力してください"
|
||||||
|
},
|
||||||
|
"prompt": {
|
||||||
|
"label": "プロンプト",
|
||||||
|
"placeholder": "プロンプトを入力",
|
||||||
|
"required": "プロンプトを入力してください",
|
||||||
|
"help": "プロンプト内で{key}を変数として使用できます。"
|
||||||
|
},
|
||||||
|
"isSystem": {
|
||||||
|
"label": "システムプロンプト"
|
||||||
|
},
|
||||||
|
"btnSave": {
|
||||||
|
"saving": "プロンプトを追加中...",
|
||||||
|
"save": "プロンプトを追加"
|
||||||
|
},
|
||||||
|
"btnEdit": {
|
||||||
|
"saving": "プロンプトを更新中...",
|
||||||
|
"save": "プロンプトを更新"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification": {
|
||||||
|
"addSuccess": "プロンプトが追加されました",
|
||||||
|
"addSuccessDesc": "プロンプトが正常に追加されました",
|
||||||
|
"error": "エラー",
|
||||||
|
"someError": "問題が発生しました。後ほど再度お試しください。",
|
||||||
|
"updatedSuccess": "プロンプトが更新されました",
|
||||||
|
"updatedSuccessDesc": "プロンプトが正常に更新されました",
|
||||||
|
"deletedSuccess": "プロンプトが削除されました",
|
||||||
|
"deletedSuccessDesc": "プロンプトが正常に削除されました"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"manageShare": {
|
||||||
|
"title": "共有を管理",
|
||||||
|
"heading": "ページ共有URLを設定",
|
||||||
|
"form": {
|
||||||
|
"url": {
|
||||||
|
"label": "ページ共有URL",
|
||||||
|
"placeholder": "ページ共有URLを入力",
|
||||||
|
"required": "ページ共有URLを入力してください!",
|
||||||
|
"help": "プライバシー保護のため、ページ共有を自身でホストし、そのURLをここに入力することができます。<anchor>詳細</anchor>"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"webshare": {
|
||||||
|
"heading": "ウェブ共有",
|
||||||
|
"columns": {
|
||||||
|
"title": "タイトル",
|
||||||
|
"url": "URL",
|
||||||
|
"actions": "アクション"
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"delete": "共有を削除"
|
||||||
|
},
|
||||||
|
"confirm": {
|
||||||
|
"delete": "本当にこの共有を削除しますか?この操作は元に戻せません。"
|
||||||
|
},
|
||||||
|
"label": "ページ共有を管理する",
|
||||||
|
"description": "ページ共有機能を有効または無効にする"
|
||||||
|
},
|
||||||
|
"notification": {
|
||||||
|
"pageShareSuccess": "ページ共有URLが正常に更新されました",
|
||||||
|
"someError": "問題が発生しました。後ほど再度お試しください。",
|
||||||
|
"webShareDeleteSuccess": "ウェブ共有が正常に削除されました"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ollamaSettings": {
|
||||||
|
"title": "Ollamaの設定",
|
||||||
|
"heading": "Ollamaを設定",
|
||||||
|
"settings": {
|
||||||
|
"ollamaUrl": {
|
||||||
|
"label": "OllamaのURL",
|
||||||
|
"placeholder": "OllamaのURLを入力"
|
||||||
|
},
|
||||||
|
"advanced": {
|
||||||
|
"label": "Ollama URL の高度な設定",
|
||||||
|
"urlRewriteEnabled": {
|
||||||
|
"label": "カスタムOriginのURLを有効化または無効化する"
|
||||||
|
},
|
||||||
|
"rewriteUrl": {
|
||||||
|
"label": "カスタムOriginのURL",
|
||||||
|
"placeholder": "カスタムOriginのURLを入力"
|
||||||
|
},
|
||||||
|
"headers": {
|
||||||
|
"label": "カスタムヘッダー",
|
||||||
|
"add": "ヘッダーを追加",
|
||||||
|
"key": {
|
||||||
|
"label": "ヘッダーキー",
|
||||||
|
"placeholder": "認証"
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"label": "ヘッダー値",
|
||||||
|
"placeholder": "ベアラートークン"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"help": "PageAssistでOllamaに接続の問題がある場合は、カスタムOriginのURLを設定できます。設定の詳細については、<anchor>ここをクリック</anchor>してください。"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"manageSearch": {
|
||||||
|
"title": "Web検索の管理",
|
||||||
|
"heading": "Web検索を設定する"
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"title": "About",
|
||||||
|
"heading": "About",
|
||||||
|
"chromeVersion": "Page Assistのバージョン",
|
||||||
|
"ollamaVersion": "Ollamaのバージョン",
|
||||||
|
"support": "Page Assistプロジェクトは、以下のプラットフォームで寄付やスポンサーシップをすることで支援できます:",
|
||||||
|
"koFi": "Ko-fiで支援する",
|
||||||
|
"githubSponsor": "GitHubでスポンサーする",
|
||||||
|
"githubRepo": "GitHubリポジトリ"
|
||||||
|
},
|
||||||
|
"manageKnowledge": {
|
||||||
|
"title": "知識を管理する",
|
||||||
|
"heading": "知識ベースを構成する"
|
||||||
|
},
|
||||||
|
"rag": {
|
||||||
|
"title": "RAGの設定",
|
||||||
|
"ragSettings": {
|
||||||
|
"label": "RAGの設定",
|
||||||
|
"model": {
|
||||||
|
"label": "エンベディングモデル",
|
||||||
|
"required": "モデルを選択してください",
|
||||||
|
"help": "`nomic-embed-text`などのエンベディングモデルの使用を強くおすすめします。",
|
||||||
|
"placeholder": "モデルを選択"
|
||||||
|
},
|
||||||
|
"chunkSize": {
|
||||||
|
"label": "チャンクサイズ",
|
||||||
|
"placeholder": "チャンクサイズを入力",
|
||||||
|
"required": "チャンクサイズを入力してください"
|
||||||
|
},
|
||||||
|
"chunkOverlap": {
|
||||||
|
"label": "チャンクオーバーラップ",
|
||||||
|
"placeholder": "チャンクオーバーラップを入力",
|
||||||
|
"required": "チャンクオーバーラップを入力してください"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"prompt": {
|
||||||
|
"label": "RAGプロンプトを設定",
|
||||||
|
"option1": "通常",
|
||||||
|
"option2": "Web",
|
||||||
|
"alert": "ここでシステムプロンプトを設定することは非推奨となりました。プロンプトの追加や編集には「プロンプトを管理」セクションをご利用ください。このセクションは今後のリリースで削除される予定です。",
|
||||||
|
"systemPrompt": "システムプロンプト",
|
||||||
|
"systemPromptPlaceholder": "システムプロンプトを入力",
|
||||||
|
"webSearchPrompt": "Web検索プロンプト",
|
||||||
|
"webSearchPromptHelp": "プロンプトから`{search_results}`を削除しないでください。",
|
||||||
|
"webSearchPromptError": "Web検索プロンプトを入力してください",
|
||||||
|
"webSearchPromptPlaceholder": "Web検索プロンプトを入力",
|
||||||
|
"webSearchFollowUpPrompt": "Web検索フォローアッププロンプト",
|
||||||
|
"webSearchFollowUpPromptHelp": "プロンプトから`{chat_history}`と`{question}`を削除しないでください。",
|
||||||
|
"webSearchFollowUpPromptError": "Web検索フォローアッププロンプトを入力してください!",
|
||||||
|
"webSearchFollowUpPromptPlaceholder": "Web検索フォローアッププロンプト"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chromeAiSettings": {
|
||||||
|
"title": "Chrome AI設定"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
13
src/assets/locale/ml/chrome.json
Normal file
13
src/assets/locale/ml/chrome.json
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"heading": "ക്രോം എഐ കോൺഫിഗർ ചെയ്യുക",
|
||||||
|
"status": {
|
||||||
|
"label": "പേജ് അസിസ്റ്റിൽ ക്രോം എഐ പിന്തുണ സജ്ജമാക്കുക അല്ലെങ്കിൽ ഡിസബിൾ ചെയ്യുക"
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"browser_not_supported": "ക്രോത്തിന്റെ ഈ പതിപ്പ് ജെമിനി നാനോ മോഡലിനെ പിന്തുണയ്ക്കുന്നില്ല. പതിപ്പ് 127 അല്ലെങ്കിൽ അതിനുശേഷം അപ്ഡേറ്റ് ചെയ്യുക.",
|
||||||
|
"ai_not_supported": "ക്രമീകരണം chrome://flags/#prompt-api-for-gemini-nano സജ്ജമാക്കപ്പെട്ടിട്ടില്ല. ദയവായി അതിനെ സജ്ജമാക്കുക.",
|
||||||
|
"ai_not_ready": "ജെമിനി നാനോ ഇപ്പോഴും സജ്ജമല്ല; നിങ്ങൾ ക്രോം ക്രമീകരണങ്ങൾ രണ്ടുതവണ പരിശോധിക്കണം.",
|
||||||
|
"internal_error": "ഒരു ആന്തരിക പിശക് സംഭവിച്ചു. ദയവായി കുറച്ചുദിവസം ശേഷം വീണ്ടും ശ്രമിക്കുക."
|
||||||
|
},
|
||||||
|
"errorDescription": "ക്രോം എഐ ഉപയോഗിക്കുന്നതിന്, നിലവിൽ ഡെവ്, കാനറി ചാനലുകളിൽ ലഭ്യമായ 127-നെക്കാൾ ഉയർന്ന ബ്രൗസർ പതിപ്പ് ആവശ്യമാണ്. പിന്തുണയ്ക്കുന്ന പതിപ്പ് ഡൗൺലോഡ് ചെയ്ത ശേഷം, ഈ ചുവടുപടികൾ പിന്തുടരുക:\n\n1. `chrome://flags/#prompt-api-for-gemini-nano`-ലേക്ക് പോയി \"എനേബിൾ\" തിരഞ്ഞെടുക്കുക.\n2. `chrome://flags/#optimization-guide-on-device-model`-ലേക്ക് പോയി \"EnabledBypassPrefRequirement\" തിരഞ്ഞെടുക്കുക.\n3. `chrome://components`-ലേക്ക് പോയി, \"Optimization Guide On Device Model\" തിരയുക, \"അപ്ഡേറ്റ് പരിശോധിക്കുക\" ക്ലിക്ക് ചെയ്യുക. ഇത് മോഡൽ ഡൗൺലോഡ് ചെയ്യും. ക്രമീകരണങ്ങൾ കാണുന്നില്ലെങ്കിൽ, ചുവടുപടികൾ 1, 2 ആവർത്തിച്ച് ബ്രൗസർ വീണ്ടും തുറക്കുക."
|
||||||
|
}
|
@ -1,295 +1,310 @@
|
|||||||
{
|
{
|
||||||
"generalSettings": {
|
"generalSettings": {
|
||||||
"title": "പൊതുവായ സെറ്റിംഗുകൾ",
|
"title": "പൊതുവായ സെറ്റിംഗുകൾ",
|
||||||
"settings": {
|
"settings": {
|
||||||
"heading": "വെബ് UI സെറ്റിംഗുകൾ",
|
"heading": "വെബ് UI സെറ്റിംഗുകൾ",
|
||||||
"speechRecognitionLang": {
|
"speechRecognitionLang": {
|
||||||
"label": "സംഭാഷണ തിരിച്ചറിയല് ഭാഷ",
|
"label": "സംഭാഷണ തിരിച്ചറിയല് ഭാഷ",
|
||||||
"placeholder": "ഒരു ഭാഷ തിരഞ്ഞെടുക്കുക"
|
"placeholder": "ഒരു ഭാഷ തിരഞ്ഞെടുക്കുക"
|
||||||
},
|
},
|
||||||
"language": {
|
"language": {
|
||||||
"label": "ഭാഷ",
|
"label": "ഭാഷ",
|
||||||
"placeholder": "ഒരു ഭാഷ തിരഞ്ഞെടുക്കുക"
|
"placeholder": "ഒരു ഭാഷ തിരഞ്ഞെടുക്കുക"
|
||||||
},
|
},
|
||||||
"darkMode": {
|
"darkMode": {
|
||||||
"label": "തീം മാറ്റുക",
|
"label": "തീം മാറ്റുക",
|
||||||
"options": {
|
"options": {
|
||||||
"light": "ലൈറ്റ്",
|
"light": "ലൈറ്റ്",
|
||||||
"dark": "ഡാര്ക്ക്"
|
"dark": "ഡാര്ക്ക്"
|
||||||
}
|
|
||||||
},
|
|
||||||
"searchMode": {
|
|
||||||
"label": "സാധാരണ ഇന്റർനെറ്റ് അന്വേഷണം നടത്തുക"
|
|
||||||
},
|
|
||||||
"copilotResumeLastChat": {
|
|
||||||
"label": "സൈഡ്പാനൽ തുറക്കുമ്പോൾ അവസാനത്തെ ചാറ്റ് പുനരാരംഭിക്കുക (Copilot)"
|
|
||||||
},
|
|
||||||
"hideCurrentChatModelSettings": {
|
|
||||||
"label": "നിലവിലുള്ള ചാറ്റ് മോഡൽ ക്രമീകരണങ്ങൾ മറയ്ക്കുക"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"webSearch": {
|
|
||||||
"heading": "വെബ്ബ് തിരച്ചിൽ നിയന്ത്രിക്കുക",
|
|
||||||
"searchMode": {
|
|
||||||
"label": "സരളമായ ഇന്റർനെറ്റ് തിരച്ചിൽ നടത്തുക"
|
|
||||||
},
|
|
||||||
"provider": {
|
|
||||||
"label": "തിരച്ചിൽ എഞ്ചിൻ",
|
|
||||||
"placeholder": "തിരച്ചിൽ എഞ്ചിൻ തിരഞ്ഞെടുക്കുക"
|
|
||||||
},
|
|
||||||
"totalSearchResults": {
|
|
||||||
"label": "ആകെ തിരച്ചിൽ ഫലങ്ങൾ",
|
|
||||||
"placeholder": "ആകെ തിരച്ചിൽ ഫലങ്ങളുടെ എണ്ണം നൽകുക"
|
|
||||||
},
|
|
||||||
"visitSpecificWebsite": {
|
|
||||||
"label": "സന്ദേശത്തിൽ പറയുന്ന വെബ്സൈറ്റ് സന്ദർശിക്കുക."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"system": {
|
|
||||||
"heading": "സിസ്റ്റം ക്രമീകരണങ്ങൾ",
|
|
||||||
"deleteChatHistory": {
|
|
||||||
"label": "ചാറ്റ് ചരിത്രം ഇല്ലാതാക്കുക",
|
|
||||||
"button": "ഇല്ലാതാക്കുക",
|
|
||||||
"confirm": "നിങ്ങളുടെ ചാറ്റ് ചരിത്രം ഇല്ലാതാക്കണമെന്ന് ഉറപ്പാണോ? ഈ പ്രവർത്തനം പിന്നീട് പിന്വലിക്കാനാവില്ല."
|
|
||||||
},
|
|
||||||
"export": {
|
|
||||||
"label": "ചാറ്റ് ചരിത്രം, അറിവ് അടിസ്ഥാനം, പ്രോംപ്റ്റുകൾ എക്സ്പോർട്ട് ചെയ്യുക",
|
|
||||||
"button": "ഡാറ്റ എക്സ്പോർട്ട് ചെയ്യുക",
|
|
||||||
"success": "എക്സ്പോർട്ട് വിജയകരമായി"
|
|
||||||
},
|
|
||||||
"import": {
|
|
||||||
"label": "ചാറ്റ് ചരിത്രം, അറിവ് അടിസ്ഥാനം, പ്രോംപ്റ്റുകൾ ഇമ്പോർട്ട് ചെയ്യുക",
|
|
||||||
"button": "ഡാറ്റ ഇമ്പോർട്ട് ചെയ്യുക",
|
|
||||||
"success": "ഇമ്പോർട്ട് വിജയകരമായി",
|
|
||||||
"error": "ഇമ്പോർട്ട് പിശക്"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tts": {
|
|
||||||
"heading": "ടെക്സ്റ്റ്-ടു-സ്പീച്ച് ക്രമീകരണങ്ങൾ",
|
|
||||||
"ttsEnabled": {
|
|
||||||
"label": "ടെക്സ്റ്റ്-ടു-സ്പീച്ച് പ്രവർത്തനക്ഷമമാക്കുക"
|
|
||||||
},
|
|
||||||
"ttsProvider": {
|
|
||||||
"label": "ടെക്സ്റ്റ്-ടു-സ്പീച്ച് പ്രോവൈഡർ",
|
|
||||||
"placeholder": "ഒരു പ്രോവൈഡർ തിരഞ്ഞെടുക്കുക"
|
|
||||||
},
|
|
||||||
"ttsVoice": {
|
|
||||||
"label": "ടെക്സ്റ്റ്-ടു-സ്പീച്ച് വോയ്സ്",
|
|
||||||
"placeholder": "ഒരു വോയ്സ് തിരഞ്ഞെടുക്കുക"
|
|
||||||
},
|
|
||||||
"ssmlEnabled": {
|
|
||||||
"label": "SSML (സ്പീച്ച് സിന്തസിസ് മാർക്കപ്പ് ലാംഗ്വേജ്) പ്രവർത്തനക്ഷമമാക്കുക"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"searchMode": {
|
||||||
|
"label": "സാധാരണ ഇന്റർനെറ്റ് അന്വേഷണം നടത്തുക"
|
||||||
|
},
|
||||||
|
"copilotResumeLastChat": {
|
||||||
|
"label": "സൈഡ്പാനൽ തുറക്കുമ്പോൾ അവസാനത്തെ ചാറ്റ് പുനരാരംഭിക്കുക (Copilot)"
|
||||||
|
},
|
||||||
|
"hideCurrentChatModelSettings": {
|
||||||
|
"label": "നിലവിലുള്ള ചാറ്റ് മോഡൽ ക്രമീകരണങ്ങൾ മറയ്ക്കുക"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"manageModels": {
|
"webSearch": {
|
||||||
"title": "മോഡലുകള് കൈകാര്യം ചെയ്യുക",
|
"heading": "വെബ്ബ് തിരച്ചിൽ നിയന്ത്രിക്കുക",
|
||||||
"addBtn": "പുതിയ മോഡല് ചേര്ക്കുക",
|
"searchMode": {
|
||||||
"columns": {
|
"label": "സരളമായ ഇന്റർനെറ്റ് തിരച്ചിൽ നടത്തുക"
|
||||||
"name": "പേര്",
|
},
|
||||||
"digest": "ഡൈജസ്റ്റ്",
|
"provider": {
|
||||||
"modifiedAt": "അവസാനമായി പരിഷ്കരിച്ചത്",
|
"label": "തിരച്ചിൽ എഞ്ചിൻ",
|
||||||
"size": "വലുപ്പം",
|
"placeholder": "തിരച്ചിൽ എഞ്ചിൻ തിരഞ്ഞെടുക്കുക"
|
||||||
"actions": "പ്രവർത്തനങ്ങൾ"
|
},
|
||||||
},
|
"totalSearchResults": {
|
||||||
"expandedColumns": {
|
"label": "ആകെ തിരച്ചിൽ ഫലങ്ങൾ",
|
||||||
"parentModel": "പാരന്റ് മോഡല്",
|
"placeholder": "ആകെ തിരച്ചിൽ ഫലങ്ങളുടെ എണ്ണം നൽകുക"
|
||||||
"format": "ഫോര്മാറ്റ്",
|
},
|
||||||
"family": "കുടുംബം",
|
"visitSpecificWebsite": {
|
||||||
"parameterSize": "പാരാമീറ്റര് വലുപ്പം",
|
"label": "സന്ദേശത്തിൽ പറയുന്ന വെബ്സൈറ്റ് സന്ദർശിക്കുക."
|
||||||
"quantizationLevel": "ക്വാണ്ടൈസേഷന് ലെവല്"
|
}
|
||||||
},
|
|
||||||
"tooltip": {
|
|
||||||
"delete": "മോഡല് ഇല്ലാതാക്കുക",
|
|
||||||
"repull": "മോഡല് വീണ്ടും ലഭ്യമാക്കുക"
|
|
||||||
},
|
|
||||||
"confirm": {
|
|
||||||
"delete": "ഈ മോഡല് ഇല്ലാതാക്കണമെന്ന് തീർച്ചയാണോ?",
|
|
||||||
"repull": "ഈ മോഡല് വീണ്ടും ലഭ്യമാക്കണമെന്ന് തീർച്ചയാണോ?"
|
|
||||||
},
|
|
||||||
"modal": {
|
|
||||||
"title": "പുതിയ മോഡല് ചേര്ക്കുക",
|
|
||||||
"placeholder": "മോഡല് പേര് നല്കുക",
|
|
||||||
"pull": "മോഡല് ലഭ്യമാക്കുക"
|
|
||||||
},
|
|
||||||
"notification": {
|
|
||||||
"pullModel": "മോഡല് ലഭ്യമാക്കുന്നു",
|
|
||||||
"pullModelDescription": "{{modelName}} മോഡല് ലഭ്യമാക്കുന്നു. കൂടുതല് വിവരങ്ങള്ക്കായി എക്സ്റ്റെന്ഷന് ഐക്കണ് പരിശോധിക്കുക.",
|
|
||||||
"success": "വിജയം",
|
|
||||||
"error": "പിശക്",
|
|
||||||
"successDescription": "മോഡല് വിജയകരമായി ലഭ്യമാക്കി",
|
|
||||||
"successDeleteDescription": "മോഡല് വിജയകരമായി ഇല്ലാതാക്കി",
|
|
||||||
"someError": "എന്തോ തെറ്റായി. ദയവായി പിന്നീട് വീണ്ടും ശ്രമിക്കുക"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"managePrompts": {
|
"system": {
|
||||||
"title": "പ്രോംപ്റ്റുകള് കൈകാര്യം ചെയ്യുക",
|
"heading": "സിസ്റ്റം ക്രമീകരണങ്ങൾ",
|
||||||
"addBtn": "പുതിയ പ്രോംപ്റ്റ് ചേര്ക്കുക",
|
"deleteChatHistory": {
|
||||||
"columns": {
|
"label": "ചാറ്റ് ചരിത്രം ഇല്ലാതാക്കുക",
|
||||||
"title": "തലക്കെട്ട്",
|
"button": "ഇല്ലാതാക്കുക",
|
||||||
"prompt": "പ്രോംപ്റ്റ്",
|
"confirm": "നിങ്ങളുടെ ചാറ്റ് ചരിത്രം ഇല്ലാതാക്കണമെന്ന് ഉറപ്പാണോ? ഈ പ്രവർത്തനം പിന്നീട് പിന്വലിക്കാനാവില്ല."
|
||||||
"type": "പ്രോംപ്റ്റ് തരം",
|
},
|
||||||
"actions": "പ്രവർത്തനങ്ങൾ"
|
"export": {
|
||||||
},
|
"label": "ചാറ്റ് ചരിത്രം, അറിവ് അടിസ്ഥാനം, പ്രോംപ്റ്റുകൾ എക്സ്പോർട്ട് ചെയ്യുക",
|
||||||
"option1": "സാധാരണ",
|
"button": "ഡാറ്റ എക്സ്പോർട്ട് ചെയ്യുക",
|
||||||
"option2": "RAG",
|
"success": "എക്സ്പോർട്ട് വിജയകരമായി"
|
||||||
"questionPrompt": "ചോദ്യ പ്രോംപ്റ്റ്",
|
},
|
||||||
"systemPrompt": "സിസ്റ്റം പ്രോംപ്റ്റ്",
|
"import": {
|
||||||
"quickPrompt": "വേഗത്തിലുള്ള പ്രോംപ്റ്റ്",
|
"label": "ചാറ്റ് ചരിത്രം, അറിവ് അടിസ്ഥാനം, പ്രോംപ്റ്റുകൾ ഇമ്പോർട്ട് ചെയ്യുക",
|
||||||
"tooltip": {
|
"button": "ഡാറ്റ ഇമ്പോർട്ട് ചെയ്യുക",
|
||||||
"delete": "പ്രോംപ്റ്റ് ഇല്ലാതാക്കുക",
|
"success": "ഇമ്പോർട്ട് വിജയകരമായി",
|
||||||
"edit": "പ്രോംപ്റ്റ് എഡിറ്റുചെയ്യുക"
|
"error": "ഇമ്പോർട്ട് പിശക്"
|
||||||
},
|
}
|
||||||
"confirm": {
|
|
||||||
"delete": "ഈ പ്രോംപ്റ്റ് ഇല്ലാതാക്കണമെന്ന് തീർച്ചയാണോ? ഈ പ്രവർത്തനം പിന്നീട് പിൻവലിക്കാനാകില്ല."
|
|
||||||
},
|
|
||||||
"modal": {
|
|
||||||
"addTitle": "പുതിയ പ്രോംപ്റ്റ് ചേര്ക്കുക",
|
|
||||||
"editTitle": "പ്രോംപ്റ്റ് എഡിറ്റുചെയ്യുക"
|
|
||||||
},
|
|
||||||
"form": {
|
|
||||||
"title": {
|
|
||||||
"label": "തലക്കെട്ട്",
|
|
||||||
"placeholder": "എന്റെ അതുല്യമായ പ്രോംപ്റ്റ്",
|
|
||||||
"required": "ദയവായി ഒരു തലക്കെട്ട് നല്കുക"
|
|
||||||
},
|
|
||||||
"prompt": {
|
|
||||||
"label": "പ്രോംപ്റ്റ്",
|
|
||||||
"placeholder": "പ്രോംപ്റ്റ് നല്കുക",
|
|
||||||
"required": "ദയവായി ഒരു പ്രോംപ്റ്റ് നല്കുക",
|
|
||||||
"help": "നിങ്ങള്ക്ക് {key} എന്ന രീതിയില് പ്രോംപ്റ്റില് വേരിയബിളുകള് ഉപയോഗിക്കാവുന്നതാണ്."
|
|
||||||
},
|
|
||||||
"isSystem": {
|
|
||||||
"label": "സിസ്റ്റം പ്രോംപ്റ്റ് ആണോ"
|
|
||||||
},
|
|
||||||
"btnSave": {
|
|
||||||
"saving": "പ്രോംപ്റ്റ് ചേര്ക്കുന്നു...",
|
|
||||||
"save": "പ്രോംപ്റ്റ് ചേര്ക്കുക"
|
|
||||||
},
|
|
||||||
"btnEdit": {
|
|
||||||
"saving": "പ്രോംപ്റ്റ് അപ്ഡേറ്റ് ചെയ്യുന്നു...",
|
|
||||||
"save": "പ്രോംപ്റ്റ് അപ്ഡേറ്റ് ചെയ്യുക"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification": {
|
|
||||||
"addSuccess": "പ്രോംപ്റ്റ് ചേർത്തു",
|
|
||||||
"addSuccessDesc": "പ്രോംപ്റ്റ് വിജയകരമായി ചേർത്തു",
|
|
||||||
"error": "പിശക്",
|
|
||||||
"someError": "എന്തോ തെറ്റായി. ദയവായി പിന്നീട് വീണ്ടും ശ്രമിക്കുക",
|
|
||||||
"updatedSuccess": "പ്രോംപ്റ്റ് അപ്ഡേറ്റ് ചെയ്തു",
|
|
||||||
"updatedSuccessDesc": "പ്രോംപ്റ്റ് വിജയകരമായി അപ്ഡേറ്റ് ചെയ്തു",
|
|
||||||
"deletedSuccess": "പ്രോംപ്റ്റ് ഇല്ലാതാക്കി",
|
|
||||||
"deletedSuccessDesc": "പ്രോംപ്റ്റ് വിജയകരമായി ഇല്ലാതാക്കി"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"manageShare": {
|
"tts": {
|
||||||
"title": "പങ്കിടുന്നത് കൈകാര്യം ചെയ്യുക",
|
"heading": "ടെക്സ്റ്റ്-ടു-സ്പീച്ച് ക്രമീകരണങ്ങൾ",
|
||||||
"heading": "പേജ് പങ്കിടാനുള്ള URL കോൺഫിഗർ ചെയ്യുക",
|
"ttsEnabled": {
|
||||||
"form": {
|
"label": "ടെക്സ്റ്റ്-ടു-സ്പീച്ച് പ്രവർത്തനക്ഷമമാക്കുക"
|
||||||
"url": {
|
},
|
||||||
"label": "പേജ് പങ്കിടാനുള്ള URL",
|
"ttsProvider": {
|
||||||
"placeholder": "പേജ് പങ്കിടാനുള്ള URL നല്കുക",
|
"label": "ടെക്സ്റ്റ്-ടു-സ്പീച്ച് പ്രോവൈഡർ",
|
||||||
"required": "ദയവായി നിങ്ങളുടെ പേജ് പങ്കിടാനുള്ള URL നല്കുക!",
|
"placeholder": "ഒരു പ്രോവൈഡർ തിരഞ്ഞെടുക്കുക"
|
||||||
"help": "സ്വകാര്യതക്കായി, നിങ്ങള്ക്ക് സ്വന്തമായി പേജ് പങ്കിടുന്ന സൗകര്യം ഹോസ്റ്റ് ചെയ്യാനും അവിടെയുള്ള URL ഇവിടെ നല്കാനും കഴിയും. <anchor>കൂടുതല് അറിയുക</anchor>."
|
},
|
||||||
}
|
"ttsVoice": {
|
||||||
},
|
"label": "ടെക്സ്റ്റ്-ടു-സ്പീച്ച് വോയ്സ്",
|
||||||
"webshare": {
|
"placeholder": "ഒരു വോയ്സ് തിരഞ്ഞെടുക്കുക"
|
||||||
"heading": "വെബ് പങ്കിടല്",
|
},
|
||||||
"columns": {
|
"ssmlEnabled": {
|
||||||
"title": "തലക്കെട്ട്",
|
"label": "SSML (സ്പീച്ച് സിന്തസിസ് മാർക്കപ്പ് ലാംഗ്വേജ്) പ്രവർത്തനക്ഷമമാക്കുക"
|
||||||
"url": "URL",
|
}
|
||||||
"actions": "പ്രവർത്തനങ്ങൾ"
|
|
||||||
},
|
|
||||||
"tooltip": {
|
|
||||||
"delete": "പങ്കിടല് ഇല്ലാതാക്കുക"
|
|
||||||
},
|
|
||||||
"confirm": {
|
|
||||||
"delete": "ഈ പങ്കിടല് ഇല്ലാതാക്കണമെന്ന് തീർച്ചയാണോ? ഈ പ്രവർത്തനം പിന്നീട് പിൻവലിക്കാനാകില്ല."
|
|
||||||
},
|
|
||||||
"label": "പേജ് ഷെയർ നിയന്ത്രിക്കുക",
|
|
||||||
"description": "പേജ് ഷെയർ സാങ്കേതികത സജ്ജീകരിക്കുക അല്ലെങ്കിൽ നിലവിളിക്കുക ."
|
|
||||||
},
|
|
||||||
"notification": {
|
|
||||||
"pageShareSuccess": "പേജ് പങ്കിടാനുള്ള URL വിജയകരമായി അപ്ഡേറ്റ് ചെയ്തു",
|
|
||||||
"someError": "എന്തോ തെറ്റായി. ദയവായി പിന്നീട് വീണ്ടും ശ്രമിക്കുക",
|
|
||||||
"webShareDeleteSuccess": "വെബ് പങ്കിടല് വിജയകരമായി ഇല്ലാതാക്കി"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ollamaSettings": {
|
|
||||||
"title": "Ollama സെറ്റിംഗുകൾ",
|
|
||||||
"heading": "Ollama കോൺഫിഗർ ചെയ്യുക",
|
|
||||||
"settings": {
|
|
||||||
"ollamaUrl": {
|
|
||||||
"label": "Ollama URL",
|
|
||||||
"placeholder": "Ollama URL നല്കുക"
|
|
||||||
},
|
|
||||||
"advanced": {
|
|
||||||
"label": "Advance Ollama URL Configuration",
|
|
||||||
"urlRewriteEnabled": {
|
|
||||||
"label": "Enable or Disable Custom Origin URL"
|
|
||||||
},
|
|
||||||
"rewriteUrl": {
|
|
||||||
"label": "Custom Origin URL",
|
|
||||||
"placeholder": "Enter Custom Origin URL"
|
|
||||||
},
|
|
||||||
"help": "ഏജ് അസിസ്റ്റന്റിൽ Ollama-യുമായി ബന്ധപ്പെടുമ്പോൾ ബന്ധതടസ്സം ഉണ്ടെങ്കിൽ, നിങ്ങൾക്ക് ഒരു വ്യക്തിഗത അസ്ഥിരത്വം URL കോൺഫിഗർ ചെയ്യാം. കോൺഫിഗറേഷനെക്കുറിച്ച് കൂടുതലറിയാൻ, <anchor>ഇവിടെ ക്ലിക്കുചെയ്യുക</anchor>."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"manageSearch": {
|
|
||||||
"heading": "Web തിരയൽ സജ്ജമാക്കുക",
|
|
||||||
"title": "Web തിരയൽ നിയന്ത്രിക്കുക"
|
|
||||||
},
|
|
||||||
"about": {
|
|
||||||
"title": "വിവരങ്ങൾ",
|
|
||||||
"heading": "വിവരങ്ങൾ",
|
|
||||||
"chromeVersion": "പേജ് അസിസ്റ്റ് വേർഷൻ",
|
|
||||||
"ollamaVersion": "ഓളാമ വേർഷൻ",
|
|
||||||
"support": "താഴെ പറയുന്ന പ്ലാറ്റ്ഫോമുകളിലൂടെ ദാനം ചെയ്യുകയോ സ്പോൺസർ ചെയ്യുകയോ ചെയ്ത് പേജ് അസിസ്റ്റ് പ്രോജക്റ്റിനെ പിന്തുണയ്ക്കാവുന്നതാണ്:",
|
|
||||||
"koFi": "കോഫിയിൽ പിന്തുണയ്ക്കുക",
|
|
||||||
"githubSponsor": "ഗിറ്റ്ഹബ്ബിൽ സ്പോൺസർ ചെയ്യുക",
|
|
||||||
"githubRepo": "ഗിറ്റ്ഹബ്ബ് റെപ്പോസിറ്ററി"
|
|
||||||
},
|
|
||||||
"manageKnowledge": {
|
|
||||||
"title": "വിജ്ഞാനം നിര്വ്വഹിക്കുക",
|
|
||||||
"heading": "വിജ്ഞാനാധാരം കോണ്ഫിഗര് ചെയ്യുക"
|
|
||||||
},
|
|
||||||
"rag": {
|
|
||||||
"title": "RAG സെറ്റിംഗുകൾ",
|
|
||||||
"ragSettings": {
|
|
||||||
"label": "RAG സെറ്റിംഗുകൾ",
|
|
||||||
"model": {
|
|
||||||
"label": "എംബെഡിംഗ് മോഡല്",
|
|
||||||
"required": "ദയവായി ഒരു മോഡല് തിരഞ്ഞെടുക്കുക",
|
|
||||||
"help": "`nomic-embed-text` പോലുള്ള എംബെഡിംഗ് മോഡലുകള് ഉപയോഗിക്കുന്നത് വളരെ നന്നായിരിക്കും.",
|
|
||||||
"placeholder": "ഒരു മോഡല് തിരഞ്ഞെടുക്കുക"
|
|
||||||
},
|
|
||||||
"chunkSize": {
|
|
||||||
"label": "ചങ്ക് വലുപ്പം",
|
|
||||||
"placeholder": "ചങ്ക് വലുപ്പം നല്കുക",
|
|
||||||
"required": "ദയവായി ചങ്ക് വലുപ്പം നല്കുക"
|
|
||||||
},
|
|
||||||
"chunkOverlap": {
|
|
||||||
"label": "ചങ്ക് ഓവര്ലാപ്പ്",
|
|
||||||
"placeholder": "ചങ്ക് ഓവര്ലാപ്പ് നല്കുക",
|
|
||||||
"required": "ദയവായി ചങ്ക് ഓവര്ലാപ്പ് നല്കുക"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"prompt": {
|
|
||||||
"label": "RAG പ്രോംപ്റ്റ് കോൺഫിഗർ ചെയ്യുക",
|
|
||||||
"option1": "സാധാരണ",
|
|
||||||
"option2": "വെബ്",
|
|
||||||
"alert": "സിസ്റ്റം പ്രോംപ്റ്റ് ഇവിടെ കോൺഫിഗർ ചെയ്യുന്നത് പഴയൗഖികമായി. ദയവായി പ്രോംപ്റ്റുകള് ചേര്ക്കാനോ എഡിറ്റുചെയ്യാനോ മാനേജ് പ്രോംപ്റ്റ്സ് സെക്ഷന് ഉപയോഗിക്കുക. ഈ സെക്ഷന് ഭാവിയില് നീക്കം ചെയ്യപ്പെടും.",
|
|
||||||
"systemPrompt": "സിസ്റ്റം പ്രോംപ്റ്റ്",
|
|
||||||
"systemPromptPlaceholder": "സിസ്റ്റം പ്രോംപ്റ്റ് നല്കുക",
|
|
||||||
"webSearchPrompt": "വെബ് തിരയല് പ്രോംപ്റ്റ്",
|
|
||||||
"webSearchPromptHelp": "പ്രോംപ്റ്റില് നിന്ന് `{search_results}` നീക്കം ചെയ്യരുത്.",
|
|
||||||
"webSearchPromptError": "ദയവായി ഒരു വെബ് തിരയല് പ്രോംപ്റ്റ് നല്കുക",
|
|
||||||
"webSearchPromptPlaceholder": "വെബ് തിരയല് പ്രോംപ്റ്റ് നല്കുക",
|
|
||||||
"webSearchFollowUpPrompt": "വെബ് തിരയല് തുടര്പ്രോംപ്റ്റ്",
|
|
||||||
"webSearchFollowUpPromptHelp": "പ്രോംപ്റ്റില് നിന്ന് `{chat_history}` യും `{question}` യും നീക്കം ചെയ്യരുത്.",
|
|
||||||
"webSearchFollowUpPromptError": "ദയവായി നിങ്ങളുടെ വെബ് തിരയല് തുടര്പ്രോംപ്റ്റ് നല്കുക!",
|
|
||||||
"webSearchFollowUpPromptPlaceholder": "നിങ്ങളുടെ വെബ് തിരയല് തുടര്പ്രോംപ്റ്റ്"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"manageModels": {
|
||||||
|
"title": "മോഡലുകള് കൈകാര്യം ചെയ്യുക",
|
||||||
|
"addBtn": "പുതിയ മോഡല് ചേര്ക്കുക",
|
||||||
|
"columns": {
|
||||||
|
"name": "പേര്",
|
||||||
|
"digest": "ഡൈജസ്റ്റ്",
|
||||||
|
"modifiedAt": "അവസാനമായി പരിഷ്കരിച്ചത്",
|
||||||
|
"size": "വലുപ്പം",
|
||||||
|
"actions": "പ്രവർത്തനങ്ങൾ"
|
||||||
|
},
|
||||||
|
"expandedColumns": {
|
||||||
|
"parentModel": "പാരന്റ് മോഡല്",
|
||||||
|
"format": "ഫോര്മാറ്റ്",
|
||||||
|
"family": "കുടുംബം",
|
||||||
|
"parameterSize": "പാരാമീറ്റര് വലുപ്പം",
|
||||||
|
"quantizationLevel": "ക്വാണ്ടൈസേഷന് ലെവല്"
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"delete": "മോഡല് ഇല്ലാതാക്കുക",
|
||||||
|
"repull": "മോഡല് വീണ്ടും ലഭ്യമാക്കുക"
|
||||||
|
},
|
||||||
|
"confirm": {
|
||||||
|
"delete": "ഈ മോഡല് ഇല്ലാതാക്കണമെന്ന് തീർച്ചയാണോ?",
|
||||||
|
"repull": "ഈ മോഡല് വീണ്ടും ലഭ്യമാക്കണമെന്ന് തീർച്ചയാണോ?"
|
||||||
|
},
|
||||||
|
"modal": {
|
||||||
|
"title": "പുതിയ മോഡല് ചേര്ക്കുക",
|
||||||
|
"placeholder": "മോഡല് പേര് നല്കുക",
|
||||||
|
"pull": "മോഡല് ലഭ്യമാക്കുക"
|
||||||
|
},
|
||||||
|
"notification": {
|
||||||
|
"pullModel": "മോഡല് ലഭ്യമാക്കുന്നു",
|
||||||
|
"pullModelDescription": "{{modelName}} മോഡല് ലഭ്യമാക്കുന്നു. കൂടുതല് വിവരങ്ങള്ക്കായി എക്സ്റ്റെന്ഷന് ഐക്കണ് പരിശോധിക്കുക.",
|
||||||
|
"success": "വിജയം",
|
||||||
|
"error": "പിശക്",
|
||||||
|
"successDescription": "മോഡല് വിജയകരമായി ലഭ്യമാക്കി",
|
||||||
|
"successDeleteDescription": "മോഡല് വിജയകരമായി ഇല്ലാതാക്കി",
|
||||||
|
"someError": "എന്തോ തെറ്റായി. ദയവായി പിന്നീട് വീണ്ടും ശ്രമിക്കുക"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"managePrompts": {
|
||||||
|
"title": "പ്രോംപ്റ്റുകള് കൈകാര്യം ചെയ്യുക",
|
||||||
|
"addBtn": "പുതിയ പ്രോംപ്റ്റ് ചേര്ക്കുക",
|
||||||
|
"columns": {
|
||||||
|
"title": "തലക്കെട്ട്",
|
||||||
|
"prompt": "പ്രോംപ്റ്റ്",
|
||||||
|
"type": "പ്രോംപ്റ്റ് തരം",
|
||||||
|
"actions": "പ്രവർത്തനങ്ങൾ"
|
||||||
|
},
|
||||||
|
"option1": "സാധാരണ",
|
||||||
|
"option2": "RAG",
|
||||||
|
"questionPrompt": "ചോദ്യ പ്രോംപ്റ്റ്",
|
||||||
|
"systemPrompt": "സിസ്റ്റം പ്രോംപ്റ്റ്",
|
||||||
|
"quickPrompt": "വേഗത്തിലുള്ള പ്രോംപ്റ്റ്",
|
||||||
|
"tooltip": {
|
||||||
|
"delete": "പ്രോംപ്റ്റ് ഇല്ലാതാക്കുക",
|
||||||
|
"edit": "പ്രോംപ്റ്റ് എഡിറ്റുചെയ്യുക"
|
||||||
|
},
|
||||||
|
"confirm": {
|
||||||
|
"delete": "ഈ പ്രോംപ്റ്റ് ഇല്ലാതാക്കണമെന്ന് തീർച്ചയാണോ? ഈ പ്രവർത്തനം പിന്നീട് പിൻവലിക്കാനാകില്ല."
|
||||||
|
},
|
||||||
|
"modal": {
|
||||||
|
"addTitle": "പുതിയ പ്രോംപ്റ്റ് ചേര്ക്കുക",
|
||||||
|
"editTitle": "പ്രോംപ്റ്റ് എഡിറ്റുചെയ്യുക"
|
||||||
|
},
|
||||||
|
"form": {
|
||||||
|
"title": {
|
||||||
|
"label": "തലക്കെട്ട്",
|
||||||
|
"placeholder": "എന്റെ അതുല്യമായ പ്രോംപ്റ്റ്",
|
||||||
|
"required": "ദയവായി ഒരു തലക്കെട്ട് നല്കുക"
|
||||||
|
},
|
||||||
|
"prompt": {
|
||||||
|
"label": "പ്രോംപ്റ്റ്",
|
||||||
|
"placeholder": "പ്രോംപ്റ്റ് നല്കുക",
|
||||||
|
"required": "ദയവായി ഒരു പ്രോംപ്റ്റ് നല്കുക",
|
||||||
|
"help": "നിങ്ങള്ക്ക് {key} എന്ന രീതിയില് പ്രോംപ്റ്റില് വേരിയബിളുകള് ഉപയോഗിക്കാവുന്നതാണ്."
|
||||||
|
},
|
||||||
|
"isSystem": {
|
||||||
|
"label": "സിസ്റ്റം പ്രോംപ്റ്റ് ആണോ"
|
||||||
|
},
|
||||||
|
"btnSave": {
|
||||||
|
"saving": "പ്രോംപ്റ്റ് ചേര്ക്കുന്നു...",
|
||||||
|
"save": "പ്രോംപ്റ്റ് ചേര്ക്കുക"
|
||||||
|
},
|
||||||
|
"btnEdit": {
|
||||||
|
"saving": "പ്രോംപ്റ്റ് അപ്ഡേറ്റ് ചെയ്യുന്നു...",
|
||||||
|
"save": "പ്രോംപ്റ്റ് അപ്ഡേറ്റ് ചെയ്യുക"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification": {
|
||||||
|
"addSuccess": "പ്രോംപ്റ്റ് ചേർത്തു",
|
||||||
|
"addSuccessDesc": "പ്രോംപ്റ്റ് വിജയകരമായി ചേർത്തു",
|
||||||
|
"error": "പിശക്",
|
||||||
|
"someError": "എന്തോ തെറ്റായി. ദയവായി പിന്നീട് വീണ്ടും ശ്രമിക്കുക",
|
||||||
|
"updatedSuccess": "പ്രോംപ്റ്റ് അപ്ഡേറ്റ് ചെയ്തു",
|
||||||
|
"updatedSuccessDesc": "പ്രോംപ്റ്റ് വിജയകരമായി അപ്ഡേറ്റ് ചെയ്തു",
|
||||||
|
"deletedSuccess": "പ്രോംപ്റ്റ് ഇല്ലാതാക്കി",
|
||||||
|
"deletedSuccessDesc": "പ്രോംപ്റ്റ് വിജയകരമായി ഇല്ലാതാക്കി"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"manageShare": {
|
||||||
|
"title": "പങ്കിടുന്നത് കൈകാര്യം ചെയ്യുക",
|
||||||
|
"heading": "പേജ് പങ്കിടാനുള്ള URL കോൺഫിഗർ ചെയ്യുക",
|
||||||
|
"form": {
|
||||||
|
"url": {
|
||||||
|
"label": "പേജ് പങ്കിടാനുള്ള URL",
|
||||||
|
"placeholder": "പേജ് പങ്കിടാനുള്ള URL നല്കുക",
|
||||||
|
"required": "ദയവായി നിങ്ങളുടെ പേജ് പങ്കിടാനുള്ള URL നല്കുക!",
|
||||||
|
"help": "സ്വകാര്യതക്കായി, നിങ്ങള്ക്ക് സ്വന്തമായി പേജ് പങ്കിടുന്ന സൗകര്യം ഹോസ്റ്റ് ചെയ്യാനും അവിടെയുള്ള URL ഇവിടെ നല്കാനും കഴിയും. <anchor>കൂടുതല് അറിയുക</anchor>."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"webshare": {
|
||||||
|
"heading": "വെബ് പങ്കിടല്",
|
||||||
|
"columns": {
|
||||||
|
"title": "തലക്കെട്ട്",
|
||||||
|
"url": "URL",
|
||||||
|
"actions": "പ്രവർത്തനങ്ങൾ"
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"delete": "പങ്കിടല് ഇല്ലാതാക്കുക"
|
||||||
|
},
|
||||||
|
"confirm": {
|
||||||
|
"delete": "ഈ പങ്കിടല് ഇല്ലാതാക്കണമെന്ന് തീർച്ചയാണോ? ഈ പ്രവർത്തനം പിന്നീട് പിൻവലിക്കാനാകില്ല."
|
||||||
|
},
|
||||||
|
"label": "പേജ് ഷെയർ നിയന്ത്രിക്കുക",
|
||||||
|
"description": "പേജ് ഷെയർ സാങ്കേതികത സജ്ജീകരിക്കുക അല്ലെങ്കിൽ നിലവിളിക്കുക ."
|
||||||
|
},
|
||||||
|
"notification": {
|
||||||
|
"pageShareSuccess": "പേജ് പങ്കിടാനുള്ള URL വിജയകരമായി അപ്ഡേറ്റ് ചെയ്തു",
|
||||||
|
"someError": "എന്തോ തെറ്റായി. ദയവായി പിന്നീട് വീണ്ടും ശ്രമിക്കുക",
|
||||||
|
"webShareDeleteSuccess": "വെബ് പങ്കിടല് വിജയകരമായി ഇല്ലാതാക്കി"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ollamaSettings": {
|
||||||
|
"title": "Ollama സെറ്റിംഗുകൾ",
|
||||||
|
"heading": "Ollama കോൺഫിഗർ ചെയ്യുക",
|
||||||
|
"settings": {
|
||||||
|
"ollamaUrl": {
|
||||||
|
"label": "Ollama URL",
|
||||||
|
"placeholder": "Ollama URL നല്കുക"
|
||||||
|
},
|
||||||
|
"advanced": {
|
||||||
|
"label": "Advance Ollama URL Configuration",
|
||||||
|
"urlRewriteEnabled": {
|
||||||
|
"label": "Enable or Disable Custom Origin URL"
|
||||||
|
},
|
||||||
|
"rewriteUrl": {
|
||||||
|
"label": "Custom Origin URL",
|
||||||
|
"placeholder": "Enter Custom Origin URL"
|
||||||
|
},
|
||||||
|
"headers": {
|
||||||
|
"label": "കസ്റ്റം തലക്കെട്ടുകൾ",
|
||||||
|
"add": "തലക്കെട്ട് ചേർക്കുക",
|
||||||
|
"key": {
|
||||||
|
"label": "തലക്കെട്ട് കീ",
|
||||||
|
"placeholder": "അധികൃതപെടുത്തൽ"
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"label": "തലക്കെട്ട് മൂല്യം",
|
||||||
|
"placeholder": "ബെയറർ ടോക്കൺ"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"help": "ഏജ് അസിസ്റ്റന്റിൽ Ollama-യുമായി ബന്ധപ്പെടുമ്പോൾ ബന്ധതടസ്സം ഉണ്ടെങ്കിൽ, നിങ്ങൾക്ക് ഒരു വ്യക്തിഗത അസ്ഥിരത്വം URL കോൺഫിഗർ ചെയ്യാം. കോൺഫിഗറേഷനെക്കുറിച്ച് കൂടുതലറിയാൻ, <anchor>ഇവിടെ ക്ലിക്കുചെയ്യുക</anchor>."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"manageSearch": {
|
||||||
|
"heading": "Web തിരയൽ സജ്ജമാക്കുക",
|
||||||
|
"title": "Web തിരയൽ നിയന്ത്രിക്കുക"
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"title": "വിവരങ്ങൾ",
|
||||||
|
"heading": "വിവരങ്ങൾ",
|
||||||
|
"chromeVersion": "പേജ് അസിസ്റ്റ് വേർഷൻ",
|
||||||
|
"ollamaVersion": "ഓളാമ വേർഷൻ",
|
||||||
|
"support": "താഴെ പറയുന്ന പ്ലാറ്റ്ഫോമുകളിലൂടെ ദാനം ചെയ്യുകയോ സ്പോൺസർ ചെയ്യുകയോ ചെയ്ത് പേജ് അസിസ്റ്റ് പ്രോജക്റ്റിനെ പിന്തുണയ്ക്കാവുന്നതാണ്:",
|
||||||
|
"koFi": "കോഫിയിൽ പിന്തുണയ്ക്കുക",
|
||||||
|
"githubSponsor": "ഗിറ്റ്ഹബ്ബിൽ സ്പോൺസർ ചെയ്യുക",
|
||||||
|
"githubRepo": "ഗിറ്റ്ഹബ്ബ് റെപ്പോസിറ്ററി"
|
||||||
|
},
|
||||||
|
"manageKnowledge": {
|
||||||
|
"title": "വിജ്ഞാനം നിര്വ്വഹിക്കുക",
|
||||||
|
"heading": "വിജ്ഞാനാധാരം കോണ്ഫിഗര് ചെയ്യുക"
|
||||||
|
},
|
||||||
|
"rag": {
|
||||||
|
"title": "RAG സെറ്റിംഗുകൾ",
|
||||||
|
"ragSettings": {
|
||||||
|
"label": "RAG സെറ്റിംഗുകൾ",
|
||||||
|
"model": {
|
||||||
|
"label": "എംബെഡിംഗ് മോഡല്",
|
||||||
|
"required": "ദയവായി ഒരു മോഡല് തിരഞ്ഞെടുക്കുക",
|
||||||
|
"help": "`nomic-embed-text` പോലുള്ള എംബെഡിംഗ് മോഡലുകള് ഉപയോഗിക്കുന്നത് വളരെ നന്നായിരിക്കും.",
|
||||||
|
"placeholder": "ഒരു മോഡല് തിരഞ്ഞെടുക്കുക"
|
||||||
|
},
|
||||||
|
"chunkSize": {
|
||||||
|
"label": "ചങ്ക് വലുപ്പം",
|
||||||
|
"placeholder": "ചങ്ക് വലുപ്പം നല്കുക",
|
||||||
|
"required": "ദയവായി ചങ്ക് വലുപ്പം നല്കുക"
|
||||||
|
},
|
||||||
|
"chunkOverlap": {
|
||||||
|
"label": "ചങ്ക് ഓവര്ലാപ്പ്",
|
||||||
|
"placeholder": "ചങ്ക് ഓവര്ലാപ്പ് നല്കുക",
|
||||||
|
"required": "ദയവായി ചങ്ക് ഓവര്ലാപ്പ് നല്കുക"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"prompt": {
|
||||||
|
"label": "RAG പ്രോംപ്റ്റ് കോൺഫിഗർ ചെയ്യുക",
|
||||||
|
"option1": "സാധാരണ",
|
||||||
|
"option2": "വെബ്",
|
||||||
|
"alert": "സിസ്റ്റം പ്രോംപ്റ്റ് ഇവിടെ കോൺഫിഗർ ചെയ്യുന്നത് പഴയൗഖികമായി. ദയവായി പ്രോംപ്റ്റുകള് ചേര്ക്കാനോ എഡിറ്റുചെയ്യാനോ മാനേജ് പ്രോംപ്റ്റ്സ് സെക്ഷന് ഉപയോഗിക്കുക. ഈ സെക്ഷന് ഭാവിയില് നീക്കം ചെയ്യപ്പെടും.",
|
||||||
|
"systemPrompt": "സിസ്റ്റം പ്രോംപ്റ്റ്",
|
||||||
|
"systemPromptPlaceholder": "സിസ്റ്റം പ്രോംപ്റ്റ് നല്കുക",
|
||||||
|
"webSearchPrompt": "വെബ് തിരയല് പ്രോംപ്റ്റ്",
|
||||||
|
"webSearchPromptHelp": "പ്രോംപ്റ്റില് നിന്ന് `{search_results}` നീക്കം ചെയ്യരുത്.",
|
||||||
|
"webSearchPromptError": "ദയവായി ഒരു വെബ് തിരയല് പ്രോംപ്റ്റ് നല്കുക",
|
||||||
|
"webSearchPromptPlaceholder": "വെബ് തിരയല് പ്രോംപ്റ്റ് നല്കുക",
|
||||||
|
"webSearchFollowUpPrompt": "വെബ് തിരയല് തുടര്പ്രോംപ്റ്റ്",
|
||||||
|
"webSearchFollowUpPromptHelp": "പ്രോംപ്റ്റില് നിന്ന് `{chat_history}` യും `{question}` യും നീക്കം ചെയ്യരുത്.",
|
||||||
|
"webSearchFollowUpPromptError": "ദയവായി നിങ്ങളുടെ വെബ് തിരയല് തുടര്പ്രോംപ്റ്റ് നല്കുക!",
|
||||||
|
"webSearchFollowUpPromptPlaceholder": "നിങ്ങളുടെ വെബ് തിരയല് തുടര്പ്രോംപ്റ്റ്"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chromeAiSettings": {
|
||||||
|
"title": "ക്രോം AI ക്രമീകരണങ്ങൾ"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
13
src/assets/locale/pt-BR/chrome.json
Normal file
13
src/assets/locale/pt-BR/chrome.json
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"heading": "Configurar IA do Chrome",
|
||||||
|
"status": {
|
||||||
|
"label": "Ativar ou Desativar o Suporte de IA do Chrome no Assistente de Página"
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"browser_not_supported": "Esta versão do Chrome não é suportada pelo modelo Gemini Nano. Por favor, atualize para a versão 127 ou posterior",
|
||||||
|
"ai_not_supported": "A configuração chrome://flags/#prompt-api-for-gemini-nano não está ativada. Por favor, ative-a.",
|
||||||
|
"ai_not_ready": "O Gemini Nano ainda não está pronto; você precisa verificar novamente as configurações do Chrome.",
|
||||||
|
"internal_error": "Ocorreu um erro interno. Por favor, tente novamente mais tarde."
|
||||||
|
},
|
||||||
|
"errorDescription": "Para usar a IA do Chrome, você precisa de uma versão do navegador superior a 127, que atualmente está nos canais Dev e Canary. Após baixar a versão suportada, siga estes passos:\n\n1. Vá para `chrome://flags/#prompt-api-for-gemini-nano` e selecione \"Ativar\".\n2. Vá para `chrome://flags/#optimization-guide-on-device-model` e selecione \"EnabledBypassPrefRequirement\".\n3. Vá para `chrome://components`, procure por \"Optimization Guide On Device Model\" e clique em \"Verificar atualizações\". Isso baixará o modelo. Se você não vir as configurações, repita os passos 1 e 2 e reinicie seu navegador."
|
||||||
|
}
|
@ -1,292 +1,308 @@
|
|||||||
{
|
{
|
||||||
"generalSettings": {
|
"generalSettings": {
|
||||||
"title": "Configurações Gerais",
|
"title": "Configurações Gerais",
|
||||||
"settings": {
|
"settings": {
|
||||||
"heading": "Configurações da Interface Web",
|
"heading": "Configurações da Interface Web",
|
||||||
"speechRecognitionLang": {
|
"speechRecognitionLang": {
|
||||||
"label": "Linguagem de Reconhecimento de Fala",
|
"label": "Linguagem de Reconhecimento de Fala",
|
||||||
"placeholder": "Selecione uma linguagem"
|
"placeholder": "Selecione uma linguagem"
|
||||||
},
|
},
|
||||||
"language": {
|
"language": {
|
||||||
"label": "Linguagem",
|
"label": "Linguagem",
|
||||||
"placeholder": "Selecione uma linguagem"
|
"placeholder": "Selecione uma linguagem"
|
||||||
},
|
},
|
||||||
"darkMode": {
|
"darkMode": {
|
||||||
"label": "Alterar Tema",
|
"label": "Alterar Tema",
|
||||||
"options": {
|
"options": {
|
||||||
"light": "Claro",
|
"light": "Claro",
|
||||||
"dark": "Escuro"
|
"dark": "Escuro"
|
||||||
}
|
|
||||||
},
|
|
||||||
"copilotResumeLastChat": {
|
|
||||||
"label": "Retomar o último chat ao abrir o Painel Lateral (Copilot)"
|
|
||||||
},
|
|
||||||
"hideCurrentChatModelSettings": {
|
|
||||||
"label": "Ocultar Configurações do Modelo de Chat Atual"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"webSearch": {
|
|
||||||
"heading": "Gerenciar Pesquisa na Web",
|
|
||||||
"searchMode": {
|
|
||||||
"label": "Realizar Pesquisa Simples na Internet"
|
|
||||||
},
|
|
||||||
"provider": {
|
|
||||||
"label": "Motor de Busca",
|
|
||||||
"placeholder": "Selecione um motor de busca"
|
|
||||||
},
|
|
||||||
"totalSearchResults": {
|
|
||||||
"label": "Resultados de Pesquisa Totais",
|
|
||||||
"placeholder": "Insira Resultados de Pesquisa Totais"
|
|
||||||
},
|
|
||||||
"visitSpecificWebsite": {
|
|
||||||
"label": "Visite o site mencionado na mensagem."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"system": {
|
|
||||||
"heading": "Configurações do Sistema",
|
|
||||||
"deleteChatHistory": {
|
|
||||||
"label": "Excluir Histórico de Chat",
|
|
||||||
"button": "Excluir",
|
|
||||||
"confirm": "Você tem certeza de que deseja excluir seu histórico de chat? Esta ação não pode ser desfeita."
|
|
||||||
},
|
|
||||||
"export": {
|
|
||||||
"label": "Exportar Histórico de Chat, Base de Conhecimento e Prompts",
|
|
||||||
"button": "Exportar Dados",
|
|
||||||
"success": "Exportação Bem-Sucedida"
|
|
||||||
},
|
|
||||||
"import": {
|
|
||||||
"label": "Importar Histórico de Chat, Base de Conhecimento e Prompts",
|
|
||||||
"button": "Importar Dados",
|
|
||||||
"success": "Importação Bem-Sucedida",
|
|
||||||
"error": "Erro de Importação"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tts": {
|
|
||||||
"heading": "Configurações de Fala",
|
|
||||||
"ttsEnabled": {
|
|
||||||
"label": "Habilitar Fala"
|
|
||||||
},
|
|
||||||
"ttsProvider": {
|
|
||||||
"label": "Fornecedor de Fala",
|
|
||||||
"placeholder": "Selecione um fornecedor"
|
|
||||||
},
|
|
||||||
"ttsVoice": {
|
|
||||||
"label": "Voz de Fala",
|
|
||||||
"placeholder": "Selecione uma voz"
|
|
||||||
},
|
|
||||||
"ssmlEnabled": {
|
|
||||||
"label": "Habilitar SSML (Linguagem de Marcação de Sintese de Fala)"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"copilotResumeLastChat": {
|
||||||
|
"label": "Retomar o último chat ao abrir o Painel Lateral (Copilot)"
|
||||||
|
},
|
||||||
|
"hideCurrentChatModelSettings": {
|
||||||
|
"label": "Ocultar Configurações do Modelo de Chat Atual"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"manageModels": {
|
"webSearch": {
|
||||||
"title": "Gerenciar Modelos",
|
"heading": "Gerenciar Pesquisa na Web",
|
||||||
"addBtn": "Adicionar Novo Modelo",
|
"searchMode": {
|
||||||
"columns": {
|
"label": "Realizar Pesquisa Simples na Internet"
|
||||||
"name": "Nome",
|
},
|
||||||
"digest": "Resumo",
|
"provider": {
|
||||||
"modifiedAt": "Modificado Em",
|
"label": "Motor de Busca",
|
||||||
"size": "Tamanho",
|
"placeholder": "Selecione um motor de busca"
|
||||||
"actions": "Ações"
|
},
|
||||||
},
|
"totalSearchResults": {
|
||||||
"expandedColumns": {
|
"label": "Resultados de Pesquisa Totais",
|
||||||
"parentModel": "Modelo Pai",
|
"placeholder": "Insira Resultados de Pesquisa Totais"
|
||||||
"format": "Formato",
|
},
|
||||||
"family": "Família",
|
"visitSpecificWebsite": {
|
||||||
"parameterSize": "Tamanho de Parâmetro",
|
"label": "Visite o site mencionado na mensagem."
|
||||||
"quantizationLevel": "Nível de Quantização"
|
}
|
||||||
},
|
|
||||||
"tooltip": {
|
|
||||||
"delete": "Excluir Modelo",
|
|
||||||
"repull": "Re-Puxar Modelo"
|
|
||||||
},
|
|
||||||
"confirm": {
|
|
||||||
"delete": "Você tem certeza de que deseja excluir este modelo?",
|
|
||||||
"repull": "Você tem certeza de que deseja re-puxar este modelo?"
|
|
||||||
},
|
|
||||||
"modal": {
|
|
||||||
"title": "Adicionar Novo Modelo",
|
|
||||||
"placeholder": "Insira o nome do modelo",
|
|
||||||
"pull": "Puxar Modelo"
|
|
||||||
},
|
|
||||||
"notification": {
|
|
||||||
"pullModel": "Puxando Modelo",
|
|
||||||
"pullModelDescription": "Puxando modelo {{modelName}}. Para mais detalhes, verifique o ícone da extensão.",
|
|
||||||
"success": "Sucesso",
|
|
||||||
"error": "Erro",
|
|
||||||
"successDescription": "Modelo puxado com sucesso",
|
|
||||||
"successDeleteDescription": "Modelo excluído com sucesso",
|
|
||||||
"someError": "Algo deu errado. Tente novamente mais tarde"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"managePrompts": {
|
"system": {
|
||||||
"title": "Gerenciar Prompts",
|
"heading": "Configurações do Sistema",
|
||||||
"addBtn": "Adicionar Novo Prompt",
|
"deleteChatHistory": {
|
||||||
"option1": "Normal",
|
"label": "Excluir Histórico de Chat",
|
||||||
"option2": "RAG",
|
"button": "Excluir",
|
||||||
"questionPrompt": "Prompt de Pergunta",
|
"confirm": "Você tem certeza de que deseja excluir seu histórico de chat? Esta ação não pode ser desfeita."
|
||||||
"columns": {
|
},
|
||||||
"title": "Título",
|
"export": {
|
||||||
"prompt": "Prompt",
|
"label": "Exportar Histórico de Chat, Base de Conhecimento e Prompts",
|
||||||
"type": "Tipo de Prompt",
|
"button": "Exportar Dados",
|
||||||
"actions": "Ações"
|
"success": "Exportação Bem-Sucedida"
|
||||||
},
|
},
|
||||||
"systemPrompt": "Prompt do Sistema",
|
"import": {
|
||||||
"quickPrompt": "Prompt Rápido",
|
"label": "Importar Histórico de Chat, Base de Conhecimento e Prompts",
|
||||||
"tooltip": {
|
"button": "Importar Dados",
|
||||||
"delete": "Excluir Prompt",
|
"success": "Importação Bem-Sucedida",
|
||||||
"edit": "Editar Prompt"
|
"error": "Erro de Importação"
|
||||||
},
|
}
|
||||||
"confirm": {
|
|
||||||
"delete": "Você tem certeza de que deseja excluir este prompt? Esta ação não pode ser desfeita."
|
|
||||||
},
|
|
||||||
"modal": {
|
|
||||||
"addTitle": "Adicionar Novo Prompt",
|
|
||||||
"editTitle": "Editar Prompt"
|
|
||||||
},
|
|
||||||
"form": {
|
|
||||||
"title": {
|
|
||||||
"label": "Título",
|
|
||||||
"placeholder": "Meu Prompt Incrível",
|
|
||||||
"required": "Por favor, insira um título"
|
|
||||||
},
|
|
||||||
"prompt": {
|
|
||||||
"label": "Prompt",
|
|
||||||
"placeholder": "Insira o prompt",
|
|
||||||
"required": "Por favor, insira um prompt",
|
|
||||||
"help": "Você pode usar {key} como variável em seu prompt."
|
|
||||||
},
|
|
||||||
"isSystem": {
|
|
||||||
"label": "É um Prompt do Sistema"
|
|
||||||
},
|
|
||||||
"btnSave": {
|
|
||||||
"saving": "Adicionando Prompt...",
|
|
||||||
"save": "Adicionar Prompt"
|
|
||||||
},
|
|
||||||
"btnEdit": {
|
|
||||||
"saving": "Atualizando Prompt...",
|
|
||||||
"save": "Atualizar Prompt"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification": {
|
|
||||||
"addSuccess": "Prompt Adicionado",
|
|
||||||
"addSuccessDesc": "Prompt adicionado com sucesso",
|
|
||||||
"error": "Erro",
|
|
||||||
"someError": "Algo deu errado. Tente novamente mais tarde",
|
|
||||||
"updatedSuccess": "Prompt Atualizado",
|
|
||||||
"updatedSuccessDesc": "Prompt atualizado com sucesso",
|
|
||||||
"deletedSuccess": "Prompt Excluído",
|
|
||||||
"deletedSuccessDesc": "Prompt excluído com sucesso"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"manageShare": {
|
"tts": {
|
||||||
"title": "Gerenciar Compartilhamento",
|
"heading": "Configurações de Fala",
|
||||||
"heading": "Configurar URL de Compartilhamento de Página",
|
"ttsEnabled": {
|
||||||
"form": {
|
"label": "Habilitar Fala"
|
||||||
"url": {
|
},
|
||||||
"label": "URL de Compartilhamento de Página",
|
"ttsProvider": {
|
||||||
"placeholder": "Insira a URL de Compartilhamento de Página",
|
"label": "Fornecedor de Fala",
|
||||||
"required": "Por favor, insira a URL de Compartilhamento de Página!",
|
"placeholder": "Selecione um fornecedor"
|
||||||
"help": "Por motivos de privacidade, você pode hospedar a página de compartilhamento e fornecer a URL aqui. <anchor>Saiba mais</anchor>."
|
},
|
||||||
}
|
"ttsVoice": {
|
||||||
},
|
"label": "Voz de Fala",
|
||||||
"webshare": {
|
"placeholder": "Selecione uma voz"
|
||||||
"heading": "Compartilhamento na Web",
|
},
|
||||||
"columns": {
|
"ssmlEnabled": {
|
||||||
"title": "Título",
|
"label": "Habilitar SSML (Linguagem de Marcação de Sintese de Fala)"
|
||||||
"url": "URL",
|
}
|
||||||
"actions": "Ações"
|
|
||||||
},
|
|
||||||
"tooltip": {
|
|
||||||
"delete": "Excluir Compartilhamento"
|
|
||||||
},
|
|
||||||
"confirm": {
|
|
||||||
"delete": "Você tem certeza de que deseja excluir este compartilhamento? Esta ação não pode ser desfeita."
|
|
||||||
},
|
|
||||||
"label": "Gerenciar Compartilhamento de Página",
|
|
||||||
"description": "Habilitar ou desabilitar o recurso de compartilhamento de página"
|
|
||||||
},
|
|
||||||
"notification": {
|
|
||||||
"pageShareSuccess": "URL de Compartilhamento de Página atualizada com sucesso",
|
|
||||||
"someError": "Algo deu errado. Tente novamente mais tarde",
|
|
||||||
"webShareDeleteSuccess": "Compartilhamento na Web excluído com sucesso"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ollamaSettings": {
|
|
||||||
"title": "Configurações do Ollama",
|
|
||||||
"heading": "Configurar Ollama",
|
|
||||||
"settings": {
|
|
||||||
"ollamaUrl": {
|
|
||||||
"label": "URL do Ollama",
|
|
||||||
"placeholder": "Insira a URL do Ollama"
|
|
||||||
},
|
|
||||||
"advanced": {
|
|
||||||
"label": "Configuração Avançada da URL do Ollama",
|
|
||||||
"urlRewriteEnabled": {
|
|
||||||
"label": "Habilitar ou Desabilitar URL de Origem Personalizada"
|
|
||||||
},
|
|
||||||
"rewriteUrl": {
|
|
||||||
"label": "URL de Origem Personalizada",
|
|
||||||
"placeholder": "Insira a URL de Origem Personalizada"
|
|
||||||
},
|
|
||||||
"help": "Se você tiver problemas de conexão com o Ollama no Page Assist, você pode configurar uma URL de origem personalizada. Para saber mais sobre a configuração, <anchor>clique aqui</anchor>."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"manageSearch": {
|
|
||||||
"title": "Gerenciar Pesquisa na Web",
|
|
||||||
"heading": "Configurar Pesquisa na Web"
|
|
||||||
},
|
|
||||||
"about": {
|
|
||||||
"title": "Sobre",
|
|
||||||
"heading": "Sobre",
|
|
||||||
"chromeVersion": "Versão do Page Assist",
|
|
||||||
"ollamaVersion": "Versão do Ollama",
|
|
||||||
"support": "Você pode apoiar o projeto Page Assist fazendo doações ou patrocínios através das seguintes plataformas:",
|
|
||||||
"koFi": "Apoiador no Ko-fi",
|
|
||||||
"githubSponsor": "Patrocinador no GitHub",
|
|
||||||
"githubRepo": "Repositório do GitHub"
|
|
||||||
},
|
|
||||||
"manageKnowledge": {
|
|
||||||
"title": "Gerenciar Conhecimento",
|
|
||||||
"heading": "Configurar Base de Conhecimento"
|
|
||||||
},
|
|
||||||
"rag": {
|
|
||||||
"title": "Configurações do RAG",
|
|
||||||
"ragSettings": {
|
|
||||||
"label": "Configurações do RAG",
|
|
||||||
"model": {
|
|
||||||
"label": "Modelo de Incorporação",
|
|
||||||
"required": "Por favor, selecione um modelo",
|
|
||||||
"help": "É altamente recomendável usar modelos de incorporação como `nomic-embed-text`.",
|
|
||||||
"placeholder": "Selecione um modelo"
|
|
||||||
},
|
|
||||||
"chunkSize": {
|
|
||||||
"label": "Tamanho do Chunk",
|
|
||||||
"placeholder": "Insira o tamanho do chunk",
|
|
||||||
"required": "Por favor, insira o tamanho do chunk"
|
|
||||||
},
|
|
||||||
"chunkOverlap": {
|
|
||||||
"label": "Sobreposição do Chunk",
|
|
||||||
"placeholder": "Insira a sobreposição do chunk",
|
|
||||||
"required": "Por favor, insira a sobreposição do chunk"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"prompt": {
|
|
||||||
"label": "Configurar Prompt do RAG",
|
|
||||||
"option1": "Normal",
|
|
||||||
"option2": "Web",
|
|
||||||
"alert": "Configurar o prompt do sistema aqui está depreciado. Por favor, use a seção Gerenciar Prompts para adicionar ou editar prompts. Esta seção será removida em uma versão futura",
|
|
||||||
"systemPrompt": "Prompt do Sistema",
|
|
||||||
"systemPromptPlaceholder": "Insira o prompt do sistema",
|
|
||||||
"webSearchPrompt": "Prompt de Pesquisa na Web",
|
|
||||||
"webSearchPromptHelp": "Não remova `{search_results}` do prompt.",
|
|
||||||
"webSearchPromptError": "Por favor, insira um prompt de pesquisa na web",
|
|
||||||
"webSearchPromptPlaceholder": "Insira o prompt de pesquisa na web",
|
|
||||||
"webSearchFollowUpPrompt": "Prompt de Seguimento de Pesquisa na Web",
|
|
||||||
"webSearchFollowUpPromptHelp": "Não remova `{chat_history}` e `{question}` do prompt.",
|
|
||||||
"webSearchFollowUpPromptError": "Por favor, insira o prompt de seguimento de pesquisa na web",
|
|
||||||
"webSearchFollowUpPromptPlaceholder": "Seu prompt de seguimento de pesquisa na web"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"manageModels": {
|
||||||
|
"title": "Gerenciar Modelos",
|
||||||
|
"addBtn": "Adicionar Novo Modelo",
|
||||||
|
"columns": {
|
||||||
|
"name": "Nome",
|
||||||
|
"digest": "Resumo",
|
||||||
|
"modifiedAt": "Modificado Em",
|
||||||
|
"size": "Tamanho",
|
||||||
|
"actions": "Ações"
|
||||||
|
},
|
||||||
|
"expandedColumns": {
|
||||||
|
"parentModel": "Modelo Pai",
|
||||||
|
"format": "Formato",
|
||||||
|
"family": "Família",
|
||||||
|
"parameterSize": "Tamanho de Parâmetro",
|
||||||
|
"quantizationLevel": "Nível de Quantização"
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"delete": "Excluir Modelo",
|
||||||
|
"repull": "Re-Puxar Modelo"
|
||||||
|
},
|
||||||
|
"confirm": {
|
||||||
|
"delete": "Você tem certeza de que deseja excluir este modelo?",
|
||||||
|
"repull": "Você tem certeza de que deseja re-puxar este modelo?"
|
||||||
|
},
|
||||||
|
"modal": {
|
||||||
|
"title": "Adicionar Novo Modelo",
|
||||||
|
"placeholder": "Insira o nome do modelo",
|
||||||
|
"pull": "Puxar Modelo"
|
||||||
|
},
|
||||||
|
"notification": {
|
||||||
|
"pullModel": "Puxando Modelo",
|
||||||
|
"pullModelDescription": "Puxando modelo {{modelName}}. Para mais detalhes, verifique o ícone da extensão.",
|
||||||
|
"success": "Sucesso",
|
||||||
|
"error": "Erro",
|
||||||
|
"successDescription": "Modelo puxado com sucesso",
|
||||||
|
"successDeleteDescription": "Modelo excluído com sucesso",
|
||||||
|
"someError": "Algo deu errado. Tente novamente mais tarde"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"managePrompts": {
|
||||||
|
"title": "Gerenciar Prompts",
|
||||||
|
"addBtn": "Adicionar Novo Prompt",
|
||||||
|
"option1": "Normal",
|
||||||
|
"option2": "RAG",
|
||||||
|
"questionPrompt": "Prompt de Pergunta",
|
||||||
|
"columns": {
|
||||||
|
"title": "Título",
|
||||||
|
"prompt": "Prompt",
|
||||||
|
"type": "Tipo de Prompt",
|
||||||
|
"actions": "Ações"
|
||||||
|
},
|
||||||
|
"systemPrompt": "Prompt do Sistema",
|
||||||
|
"quickPrompt": "Prompt Rápido",
|
||||||
|
"tooltip": {
|
||||||
|
"delete": "Excluir Prompt",
|
||||||
|
"edit": "Editar Prompt"
|
||||||
|
},
|
||||||
|
"confirm": {
|
||||||
|
"delete": "Você tem certeza de que deseja excluir este prompt? Esta ação não pode ser desfeita."
|
||||||
|
},
|
||||||
|
"modal": {
|
||||||
|
"addTitle": "Adicionar Novo Prompt",
|
||||||
|
"editTitle": "Editar Prompt"
|
||||||
|
},
|
||||||
|
"form": {
|
||||||
|
"title": {
|
||||||
|
"label": "Título",
|
||||||
|
"placeholder": "Meu Prompt Incrível",
|
||||||
|
"required": "Por favor, insira um título"
|
||||||
|
},
|
||||||
|
"prompt": {
|
||||||
|
"label": "Prompt",
|
||||||
|
"placeholder": "Insira o prompt",
|
||||||
|
"required": "Por favor, insira um prompt",
|
||||||
|
"help": "Você pode usar {key} como variável em seu prompt."
|
||||||
|
},
|
||||||
|
"isSystem": {
|
||||||
|
"label": "É um Prompt do Sistema"
|
||||||
|
},
|
||||||
|
"btnSave": {
|
||||||
|
"saving": "Adicionando Prompt...",
|
||||||
|
"save": "Adicionar Prompt"
|
||||||
|
},
|
||||||
|
"btnEdit": {
|
||||||
|
"saving": "Atualizando Prompt...",
|
||||||
|
"save": "Atualizar Prompt"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification": {
|
||||||
|
"addSuccess": "Prompt Adicionado",
|
||||||
|
"addSuccessDesc": "Prompt adicionado com sucesso",
|
||||||
|
"error": "Erro",
|
||||||
|
"someError": "Algo deu errado. Tente novamente mais tarde",
|
||||||
|
"updatedSuccess": "Prompt Atualizado",
|
||||||
|
"updatedSuccessDesc": "Prompt atualizado com sucesso",
|
||||||
|
"deletedSuccess": "Prompt Excluído",
|
||||||
|
"deletedSuccessDesc": "Prompt excluído com sucesso"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"manageShare": {
|
||||||
|
"title": "Gerenciar Compartilhamento",
|
||||||
|
"heading": "Configurar URL de Compartilhamento de Página",
|
||||||
|
"form": {
|
||||||
|
"url": {
|
||||||
|
"label": "URL de Compartilhamento de Página",
|
||||||
|
"placeholder": "Insira a URL de Compartilhamento de Página",
|
||||||
|
"required": "Por favor, insira a URL de Compartilhamento de Página!",
|
||||||
|
"help": "Por motivos de privacidade, você pode hospedar a página de compartilhamento e fornecer a URL aqui. <anchor>Saiba mais</anchor>."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"webshare": {
|
||||||
|
"heading": "Compartilhamento na Web",
|
||||||
|
"columns": {
|
||||||
|
"title": "Título",
|
||||||
|
"url": "URL",
|
||||||
|
"actions": "Ações"
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"delete": "Excluir Compartilhamento"
|
||||||
|
},
|
||||||
|
"confirm": {
|
||||||
|
"delete": "Você tem certeza de que deseja excluir este compartilhamento? Esta ação não pode ser desfeita."
|
||||||
|
},
|
||||||
|
"label": "Gerenciar Compartilhamento de Página",
|
||||||
|
"description": "Habilitar ou desabilitar o recurso de compartilhamento de página"
|
||||||
|
},
|
||||||
|
"notification": {
|
||||||
|
"pageShareSuccess": "URL de Compartilhamento de Página atualizada com sucesso",
|
||||||
|
"someError": "Algo deu errado. Tente novamente mais tarde",
|
||||||
|
"webShareDeleteSuccess": "Compartilhamento na Web excluído com sucesso"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ollamaSettings": {
|
||||||
|
"title": "Configurações do Ollama",
|
||||||
|
"heading": "Configurar Ollama",
|
||||||
|
"settings": {
|
||||||
|
"ollamaUrl": {
|
||||||
|
"label": "URL do Ollama",
|
||||||
|
"placeholder": "Insira a URL do Ollama"
|
||||||
|
},
|
||||||
|
"advanced": {
|
||||||
|
"label": "Configuração Avançada da URL do Ollama",
|
||||||
|
"urlRewriteEnabled": {
|
||||||
|
"label": "Habilitar ou Desabilitar URL de Origem Personalizada"
|
||||||
|
},
|
||||||
|
"rewriteUrl": {
|
||||||
|
"label": "URL de Origem Personalizada",
|
||||||
|
"placeholder": "Insira a URL de Origem Personalizada"
|
||||||
|
},
|
||||||
|
"headers": {
|
||||||
|
"label": "Cabeçalhos Personalizados",
|
||||||
|
"add": "Adicionar Cabeçalho",
|
||||||
|
"key": {
|
||||||
|
"label": "Chave do Cabeçalho",
|
||||||
|
"placeholder": "Autorização"
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"label": "Valor do Cabeçalho",
|
||||||
|
"placeholder": "Token Bearer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"help": "Se você tiver problemas de conexão com o Ollama no Page Assist, você pode configurar uma URL de origem personalizada. Para saber mais sobre a configuração, <anchor>clique aqui</anchor>."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"manageSearch": {
|
||||||
|
"title": "Gerenciar Pesquisa na Web",
|
||||||
|
"heading": "Configurar Pesquisa na Web"
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"title": "Sobre",
|
||||||
|
"heading": "Sobre",
|
||||||
|
"chromeVersion": "Versão do Page Assist",
|
||||||
|
"ollamaVersion": "Versão do Ollama",
|
||||||
|
"support": "Você pode apoiar o projeto Page Assist fazendo doações ou patrocínios através das seguintes plataformas:",
|
||||||
|
"koFi": "Apoiador no Ko-fi",
|
||||||
|
"githubSponsor": "Patrocinador no GitHub",
|
||||||
|
"githubRepo": "Repositório do GitHub"
|
||||||
|
},
|
||||||
|
"manageKnowledge": {
|
||||||
|
"title": "Gerenciar Conhecimento",
|
||||||
|
"heading": "Configurar Base de Conhecimento"
|
||||||
|
},
|
||||||
|
"rag": {
|
||||||
|
"title": "Configurações do RAG",
|
||||||
|
"ragSettings": {
|
||||||
|
"label": "Configurações do RAG",
|
||||||
|
"model": {
|
||||||
|
"label": "Modelo de Incorporação",
|
||||||
|
"required": "Por favor, selecione um modelo",
|
||||||
|
"help": "É altamente recomendável usar modelos de incorporação como `nomic-embed-text`.",
|
||||||
|
"placeholder": "Selecione um modelo"
|
||||||
|
},
|
||||||
|
"chunkSize": {
|
||||||
|
"label": "Tamanho do Chunk",
|
||||||
|
"placeholder": "Insira o tamanho do chunk",
|
||||||
|
"required": "Por favor, insira o tamanho do chunk"
|
||||||
|
},
|
||||||
|
"chunkOverlap": {
|
||||||
|
"label": "Sobreposição do Chunk",
|
||||||
|
"placeholder": "Insira a sobreposição do chunk",
|
||||||
|
"required": "Por favor, insira a sobreposição do chunk"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"prompt": {
|
||||||
|
"label": "Configurar Prompt do RAG",
|
||||||
|
"option1": "Normal",
|
||||||
|
"option2": "Web",
|
||||||
|
"alert": "Configurar o prompt do sistema aqui está depreciado. Por favor, use a seção Gerenciar Prompts para adicionar ou editar prompts. Esta seção será removida em uma versão futura",
|
||||||
|
"systemPrompt": "Prompt do Sistema",
|
||||||
|
"systemPromptPlaceholder": "Insira o prompt do sistema",
|
||||||
|
"webSearchPrompt": "Prompt de Pesquisa na Web",
|
||||||
|
"webSearchPromptHelp": "Não remova `{search_results}` do prompt.",
|
||||||
|
"webSearchPromptError": "Por favor, insira um prompt de pesquisa na web",
|
||||||
|
"webSearchPromptPlaceholder": "Insira o prompt de pesquisa na web",
|
||||||
|
"webSearchFollowUpPrompt": "Prompt de Seguimento de Pesquisa na Web",
|
||||||
|
"webSearchFollowUpPromptHelp": "Não remova `{chat_history}` e `{question}` do prompt.",
|
||||||
|
"webSearchFollowUpPromptError": "Por favor, insira o prompt de seguimento de pesquisa na web",
|
||||||
|
"webSearchFollowUpPromptPlaceholder": "Seu prompt de seguimento de pesquisa na web"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
"chromeAiSettings": {
|
||||||
|
"title": "Configurações de IA do Chrome"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
13
src/assets/locale/ru/chrome.json
Normal file
13
src/assets/locale/ru/chrome.json
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"heading": "Настройка Chrome AI",
|
||||||
|
"status": {
|
||||||
|
"label": "Включить или отключить поддержку Chrome AI в помощнике страницы"
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"browser_not_supported": "Эта версия Chrome не поддерживается моделью Gemini Nano. Пожалуйста, обновите до версии 127 или выше",
|
||||||
|
"ai_not_supported": "Настройка chrome://flags/#prompt-api-for-gemini-nano не включена. Пожалуйста, включите её.",
|
||||||
|
"ai_not_ready": "Gemini Nano ещё не готов; вам нужно перепроверить настройки Chrome.",
|
||||||
|
"internal_error": "Произошла внутренняя ошибка. Пожалуйста, повторите попытку позже."
|
||||||
|
},
|
||||||
|
"errorDescription": "Чтобы использовать Chrome AI, вам нужна версия браузера выше 127, которая в настоящее время доступна в каналах Dev и Canary. После загрузки поддерживаемой версии выполните следующие шаги:\n\n1. Перейдите на `chrome://flags/#prompt-api-for-gemini-nano` и выберите \"Включить\".\n2. Перейдите на `chrome://flags/#optimization-guide-on-device-model` и выберите \"EnabledBypassPrefRequirement\".\n3. Перейдите на `chrome://components`, найдите \"Optimization Guide On Device Model\" и нажмите \"Проверить наличие обновлений\". Это загрузит модель. Если вы не видите настройки, повторите шаги 1 и 2 и перезапустите браузер."
|
||||||
|
}
|
@ -1,293 +1,308 @@
|
|||||||
{
|
{
|
||||||
"generalSettings": {
|
"generalSettings": {
|
||||||
"title": "Общие настройки",
|
"title": "Общие настройки",
|
||||||
"settings": {
|
"settings": {
|
||||||
"heading": "Настройки веб-интерфейса",
|
"heading": "Настройки веб-интерфейса",
|
||||||
"speechRecognitionLang": {
|
"speechRecognitionLang": {
|
||||||
"label": "Язык распознавания речи",
|
"label": "Язык распознавания речи",
|
||||||
"placeholder": "Выберите язык"
|
"placeholder": "Выберите язык"
|
||||||
},
|
},
|
||||||
"language": {
|
"language": {
|
||||||
"label": "Язык",
|
"label": "Язык",
|
||||||
"placeholder": "Выберите язык"
|
"placeholder": "Выберите язык"
|
||||||
},
|
},
|
||||||
"darkMode": {
|
"darkMode": {
|
||||||
"label": "Сменить тему",
|
"label": "Сменить тему",
|
||||||
"options": {
|
"options": {
|
||||||
"light": "Светлая",
|
"light": "Светлая",
|
||||||
"dark": "Темная"
|
"dark": "Темная"
|
||||||
}
|
|
||||||
},
|
|
||||||
"copilotResumeLastChat": {
|
|
||||||
"label": "Возобновить последний чат при открытии боковой панели (Copilot)"
|
|
||||||
},
|
|
||||||
"hideCurrentChatModelSettings": {
|
|
||||||
"label": "Скрыть текущие настройки модели чата"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"webSearch": {
|
|
||||||
"heading": "Управление веб-поиском",
|
|
||||||
"searchMode": {
|
|
||||||
"label": "Выполнить простой интернет-поиск"
|
|
||||||
},
|
|
||||||
"provider": {
|
|
||||||
"label": "Поисковый движок",
|
|
||||||
"placeholder": "Выберите поисковый движок"
|
|
||||||
},
|
|
||||||
"totalSearchResults": {
|
|
||||||
"label": "Общее количество результатов поиска",
|
|
||||||
"placeholder": "Введите общее количество результатов поиска"
|
|
||||||
},
|
|
||||||
"visitSpecificWebsite": {
|
|
||||||
"label": "Посетите веб-сайт, указанный в сообщении."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"system": {
|
|
||||||
"heading": "Настройки системы",
|
|
||||||
"deleteChatHistory": {
|
|
||||||
"label": "Удалить историю чата",
|
|
||||||
"button": "Удалить",
|
|
||||||
"confirm": "Вы уверены, что хотите удалить историю чата? Это действие нельзя отменить."
|
|
||||||
},
|
|
||||||
"export": {
|
|
||||||
"label": "Экспорт истории чата, базы знаний и подсказок",
|
|
||||||
"button": "Экспортировать данные",
|
|
||||||
"success": "Экспорт успешен"
|
|
||||||
},
|
|
||||||
"import": {
|
|
||||||
"label": "Импорт истории чата, базы знаний и подсказок",
|
|
||||||
"button": "Импортировать данные",
|
|
||||||
"success": "Импорт успешен",
|
|
||||||
"error": "Ошибка импорта"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tts": {
|
|
||||||
"heading": "Настройки текст в речь",
|
|
||||||
"ttsEnabled": {
|
|
||||||
"label": "Включить текст в речь"
|
|
||||||
},
|
|
||||||
"ttsProvider": {
|
|
||||||
"label": "Поставщик текста в речь",
|
|
||||||
"placeholder": "Выберите поставщика"
|
|
||||||
},
|
|
||||||
"ttsVoice": {
|
|
||||||
"label": "Голос текста в речь",
|
|
||||||
"placeholder": "Выберите голос"
|
|
||||||
},
|
|
||||||
"ssmlEnabled": {
|
|
||||||
"label": "Включить SSML (язык разметки синтеза речи)"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"copilotResumeLastChat": {
|
||||||
|
"label": "Возобновить последний чат при открытии боковой панели (Copilot)"
|
||||||
|
},
|
||||||
|
"hideCurrentChatModelSettings": {
|
||||||
|
"label": "Скрыть текущие настройки модели чата"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"manageModels": {
|
"webSearch": {
|
||||||
"title": "Управление моделями",
|
"heading": "Управление веб-поиском",
|
||||||
"addBtn": "Добавить новую модель",
|
"searchMode": {
|
||||||
"columns": {
|
"label": "Выполнить простой интернет-поиск"
|
||||||
"name": "Название",
|
},
|
||||||
"digest": "Дайджест",
|
"provider": {
|
||||||
"modifiedAt": "Изменено",
|
"label": "Поисковый движок",
|
||||||
"size": "Размер",
|
"placeholder": "Выберите поисковый движок"
|
||||||
"actions": "Действия"
|
},
|
||||||
},
|
"totalSearchResults": {
|
||||||
"expandedColumns": {
|
"label": "Общее количество результатов поиска",
|
||||||
"parentModel": "Родительская модель",
|
"placeholder": "Введите общее количество результатов поиска"
|
||||||
"format": "Формат",
|
},
|
||||||
"family": "Семейство",
|
"visitSpecificWebsite": {
|
||||||
"parameterSize": "Размер параметров",
|
"label": "Посетите веб-сайт, указанный в сообщении."
|
||||||
"quantizationLevel": "Уровень квантования"
|
}
|
||||||
},
|
|
||||||
"tooltip": {
|
|
||||||
"delete": "Удалить модель",
|
|
||||||
"repull": "Переполучить модель"
|
|
||||||
},
|
|
||||||
"confirm": {
|
|
||||||
"delete": "Вы уверены, что хотите удалить эту модель?",
|
|
||||||
"repull": "Вы уверены, что хотите переполучить эту модель?"
|
|
||||||
},
|
|
||||||
"modal": {
|
|
||||||
"title": "Добавить новую модель",
|
|
||||||
"placeholder": "Введите название модели",
|
|
||||||
"pull": "Получить модель"
|
|
||||||
},
|
|
||||||
"notification": {
|
|
||||||
"pullModel": "Получение модели",
|
|
||||||
"pullModelDescription": "Получение модели {{modelName}}. Для получения дополнительной информации проверьте значок расширения.",
|
|
||||||
"success": "Успех",
|
|
||||||
"error": "Ошибка",
|
|
||||||
"successDescription": "Модель успешно получена",
|
|
||||||
"successDeleteDescription": "Модель успешно удалена",
|
|
||||||
"someError": "Что-то пошло не так. Пожалуйста, попробуйте позже"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"managePrompts": {
|
"system": {
|
||||||
"title": "Управление подсказками",
|
"heading": "Настройки системы",
|
||||||
"addBtn": "Добавить новую подсказку",
|
"deleteChatHistory": {
|
||||||
"option1": "Обычная",
|
"label": "Удалить историю чата",
|
||||||
"option2": "RAG",
|
"button": "Удалить",
|
||||||
"questionPrompt": "Вопросная подсказка",
|
"confirm": "Вы уверены, что хотите удалить историю чата? Это действие нельзя отменить."
|
||||||
"columns": {
|
},
|
||||||
"title": "Название",
|
"export": {
|
||||||
"prompt": "Подсказка",
|
"label": "Экспорт истории чата, базы знаний и подсказок",
|
||||||
"type": "Тип подсказки",
|
"button": "Экспортировать данные",
|
||||||
"actions": "Действия"
|
"success": "Экспорт успешен"
|
||||||
},
|
},
|
||||||
"systemPrompt": "Системная подсказка",
|
"import": {
|
||||||
"quickPrompt": "Быстрая подсказка",
|
"label": "Импорт истории чата, базы знаний и подсказок",
|
||||||
"tooltip": {
|
"button": "Импортировать данные",
|
||||||
"delete": "Удалить подсказку",
|
"success": "Импорт успешен",
|
||||||
"edit": "Редактировать подсказку"
|
"error": "Ошибка импорта"
|
||||||
},
|
}
|
||||||
"confirm": {
|
|
||||||
"delete": "Вы уверены, что хотите удалить эту подсказку? Это действие нельзя отменить."
|
|
||||||
},
|
|
||||||
"modal": {
|
|
||||||
"addTitle": "Добавить новую подсказку",
|
|
||||||
"editTitle": "Редактировать подсказку"
|
|
||||||
},
|
|
||||||
"form": {
|
|
||||||
"title": {
|
|
||||||
"label": "Название",
|
|
||||||
"placeholder": "Моя замечательная подсказка",
|
|
||||||
"required": "Пожалуйста, введите название"
|
|
||||||
},
|
|
||||||
"prompt": {
|
|
||||||
"label": "Подсказка",
|
|
||||||
"placeholder": "Введите подсказку",
|
|
||||||
"required": "Пожалуйста, введите подсказку",
|
|
||||||
"help": "Вы можете использовать {key} в качестве переменной в своей подсказке."
|
|
||||||
},
|
|
||||||
"isSystem": {
|
|
||||||
"label": "Это системная подсказка"
|
|
||||||
},
|
|
||||||
"btnSave": {
|
|
||||||
"saving": "Добавление подсказки...",
|
|
||||||
"save": "Добавить подсказку"
|
|
||||||
},
|
|
||||||
"btnEdit": {
|
|
||||||
"saving": "Обновление подсказки...",
|
|
||||||
"save": "Обновить подсказку"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification": {
|
|
||||||
"addSuccess": "Подсказка добавлена",
|
|
||||||
"addSuccessDesc": "Подсказка успешно добавлена",
|
|
||||||
"error": "Ошибка",
|
|
||||||
"someError": "Что-то пошло не так. Пожалуйста, попробуйте позже",
|
|
||||||
"updatedSuccess": "Подсказка обновлена",
|
|
||||||
"updatedSuccessDesc": "Подсказка успешно обновлена",
|
|
||||||
"deletedSuccess": "Подсказка удалена",
|
|
||||||
"deletedSuccessDesc": "Подсказка успешно удалена"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"manageShare": {
|
"tts": {
|
||||||
"title": "Управление обменом",
|
"heading": "Настройки текст в речь",
|
||||||
"heading": "Настройка URL обмена страницей",
|
"ttsEnabled": {
|
||||||
"form": {
|
"label": "Включить текст в речь"
|
||||||
"url": {
|
},
|
||||||
"label": "URL обмена страницей",
|
"ttsProvider": {
|
||||||
"placeholder": "Введите URL обмена страницей",
|
"label": "Поставщик текста в речь",
|
||||||
"required": "Пожалуйста, введите ваш URL обмена страницей!",
|
"placeholder": "Выберите поставщика"
|
||||||
"help": "По соображениям конфиденциальности вы можете самостоятельно разместить страницу обмена и указать здесь URL. <anchor>Узнать больше</anchor>."
|
},
|
||||||
}
|
"ttsVoice": {
|
||||||
},
|
"label": "Голос текста в речь",
|
||||||
"webshare": {
|
"placeholder": "Выберите голос"
|
||||||
"heading": "Веб-обмен",
|
},
|
||||||
"columns": {
|
"ssmlEnabled": {
|
||||||
"title": "Название",
|
"label": "Включить SSML (язык разметки синтеза речи)"
|
||||||
"url": "URL",
|
}
|
||||||
"actions": "Действия"
|
|
||||||
},
|
|
||||||
"tooltip": {
|
|
||||||
"delete": "Удалить обмен"
|
|
||||||
},
|
|
||||||
"confirm": {
|
|
||||||
"delete": "Вы уверены, что хотите удалить этот обмен? Это действие нельзя отменить."
|
|
||||||
},
|
|
||||||
"label": "Управление общим доступом к странице",
|
|
||||||
"description": "Включить или отключить функцию обмена страницей"
|
|
||||||
},
|
|
||||||
"notification": {
|
|
||||||
"pageShareSuccess": "URL обмена страницей успешно обновлен",
|
|
||||||
"someError": "Что-то пошло не так. Пожалуйста, попробуйте позже",
|
|
||||||
"webShareDeleteSuccess": "Веб-обмен успешно удален"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ollamaSettings": {
|
|
||||||
"title": "Настройки Ollama",
|
|
||||||
"heading": "Настройка Ollama",
|
|
||||||
"settings": {
|
|
||||||
"ollamaUrl": {
|
|
||||||
"label": "URL Ollama",
|
|
||||||
"placeholder": "Введите URL Ollama"
|
|
||||||
},
|
|
||||||
|
|
||||||
"advanced": {
|
|
||||||
"label": "Расширенная конфигурация URL Ollama",
|
|
||||||
"urlRewriteEnabled": {
|
|
||||||
"label": "Включить или отключить пользовательский исходный URL"
|
|
||||||
},
|
|
||||||
"rewriteUrl": {
|
|
||||||
"label": "Пользовательский исходный URL",
|
|
||||||
"placeholder": "Введите пользовательский исходный URL"
|
|
||||||
},
|
|
||||||
"help": "Если у вас возникают проблемы с подключением к Ollama на странице помощника, вы можете настроить пользовательский исходный URL. Чтобы узнать больше о конфигурации, <anchor>нажмите здесь</anchor>."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"manageSearch": {
|
|
||||||
"title": "Управление веб-поиском",
|
|
||||||
"heading": "Настройка веб-поиска"
|
|
||||||
},
|
|
||||||
"about": {
|
|
||||||
"title": "О программе",
|
|
||||||
"heading": "О программе",
|
|
||||||
"chromeVersion": "Версия Page Assist",
|
|
||||||
"ollamaVersion": "Версия Ollama",
|
|
||||||
"support": "Вы можете поддержать проект Page Assist, сделав пожертвование или спонсорирование через следующие платформы:",
|
|
||||||
"koFi": "Поддержать на Ko-fi",
|
|
||||||
"githubSponsor": "Стать спонсором на GitHub",
|
|
||||||
"githubRepo": "Репозиторий GitHub"
|
|
||||||
},
|
|
||||||
"manageKnowledge": {
|
|
||||||
"title": "Управление знаниями",
|
|
||||||
"heading": "Настройка базы знаний"
|
|
||||||
},
|
|
||||||
"rag": {
|
|
||||||
"title": "Настройки RAG",
|
|
||||||
"ragSettings": {
|
|
||||||
"label": "Настройки RAG",
|
|
||||||
"model": {
|
|
||||||
"label": "Модель вложения",
|
|
||||||
"required": "Пожалуйста, выберите модель",
|
|
||||||
"help": "Настоятельно рекомендуется использовать модели вложения, например, `nomic-embed-text`.",
|
|
||||||
"placeholder": "Выберите модель"
|
|
||||||
},
|
|
||||||
"chunkSize": {
|
|
||||||
"label": "Размер фрагмента",
|
|
||||||
"placeholder": "Введите размер фрагмента",
|
|
||||||
"required": "Пожалуйста, введите размер фрагмента"
|
|
||||||
},
|
|
||||||
"chunkOverlap": {
|
|
||||||
"label": "Перекрытие фрагментов",
|
|
||||||
"placeholder": "Введите перекрытие фрагментов",
|
|
||||||
"required": "Пожалуйста, введите перекрытие фрагментов"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"prompt": {
|
|
||||||
"label": "Настройка системной подсказки RAG",
|
|
||||||
"option1": "Обычная",
|
|
||||||
"option2": "Веб",
|
|
||||||
"alert": "Настройка системной подсказки здесь устарела. Используйте раздел Управление подсказками для добавления или редактирования подсказок. Этот раздел будет удален в будущем выпуске",
|
|
||||||
"systemPrompt": "Системная подсказка",
|
|
||||||
"systemPromptPlaceholder": "Введите системную подсказку",
|
|
||||||
"webSearchPrompt": "Подсказка для веб-поиска",
|
|
||||||
"webSearchPromptHelp": "Не удаляйте `{search_results}` из подсказки.",
|
|
||||||
"webSearchPromptError": "Пожалуйста, введите подсказку для веб-поиска",
|
|
||||||
"webSearchPromptPlaceholder": "Введите подсказку для веб-поиска",
|
|
||||||
"webSearchFollowUpPrompt": "Последующая подсказка для веб-поиска",
|
|
||||||
"webSearchFollowUpPromptHelp": "Не удаляйте `{chat_history}` и `{question}` из подсказки.",
|
|
||||||
"webSearchFollowUpPromptError": "Введите подсказку для последующего веб-поиска!",
|
|
||||||
"webSearchFollowUpPromptPlaceholder": "Ваша подсказка для последующего веб-поиска"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"manageModels": {
|
||||||
|
"title": "Управление моделями",
|
||||||
|
"addBtn": "Добавить новую модель",
|
||||||
|
"columns": {
|
||||||
|
"name": "Название",
|
||||||
|
"digest": "Дайджест",
|
||||||
|
"modifiedAt": "Изменено",
|
||||||
|
"size": "Размер",
|
||||||
|
"actions": "Действия"
|
||||||
|
},
|
||||||
|
"expandedColumns": {
|
||||||
|
"parentModel": "Родительская модель",
|
||||||
|
"format": "Формат",
|
||||||
|
"family": "Семейство",
|
||||||
|
"parameterSize": "Размер параметров",
|
||||||
|
"quantizationLevel": "Уровень квантования"
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"delete": "Удалить модель",
|
||||||
|
"repull": "Переполучить модель"
|
||||||
|
},
|
||||||
|
"confirm": {
|
||||||
|
"delete": "Вы уверены, что хотите удалить эту модель?",
|
||||||
|
"repull": "Вы уверены, что хотите переполучить эту модель?"
|
||||||
|
},
|
||||||
|
"modal": {
|
||||||
|
"title": "Добавить новую модель",
|
||||||
|
"placeholder": "Введите название модели",
|
||||||
|
"pull": "Получить модель"
|
||||||
|
},
|
||||||
|
"notification": {
|
||||||
|
"pullModel": "Получение модели",
|
||||||
|
"pullModelDescription": "Получение модели {{modelName}}. Для получения дополнительной информации проверьте значок расширения.",
|
||||||
|
"success": "Успех",
|
||||||
|
"error": "Ошибка",
|
||||||
|
"successDescription": "Модель успешно получена",
|
||||||
|
"successDeleteDescription": "Модель успешно удалена",
|
||||||
|
"someError": "Что-то пошло не так. Пожалуйста, попробуйте позже"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"managePrompts": {
|
||||||
|
"title": "Управление подсказками",
|
||||||
|
"addBtn": "Добавить новую подсказку",
|
||||||
|
"option1": "Обычная",
|
||||||
|
"option2": "RAG",
|
||||||
|
"questionPrompt": "Вопросная подсказка",
|
||||||
|
"columns": {
|
||||||
|
"title": "Название",
|
||||||
|
"prompt": "Подсказка",
|
||||||
|
"type": "Тип подсказки",
|
||||||
|
"actions": "Действия"
|
||||||
|
},
|
||||||
|
"systemPrompt": "Системная подсказка",
|
||||||
|
"quickPrompt": "Быстрая подсказка",
|
||||||
|
"tooltip": {
|
||||||
|
"delete": "Удалить подсказку",
|
||||||
|
"edit": "Редактировать подсказку"
|
||||||
|
},
|
||||||
|
"confirm": {
|
||||||
|
"delete": "Вы уверены, что хотите удалить эту подсказку? Это действие нельзя отменить."
|
||||||
|
},
|
||||||
|
"modal": {
|
||||||
|
"addTitle": "Добавить новую подсказку",
|
||||||
|
"editTitle": "Редактировать подсказку"
|
||||||
|
},
|
||||||
|
"form": {
|
||||||
|
"title": {
|
||||||
|
"label": "Название",
|
||||||
|
"placeholder": "Моя замечательная подсказка",
|
||||||
|
"required": "Пожалуйста, введите название"
|
||||||
|
},
|
||||||
|
"prompt": {
|
||||||
|
"label": "Подсказка",
|
||||||
|
"placeholder": "Введите подсказку",
|
||||||
|
"required": "Пожалуйста, введите подсказку",
|
||||||
|
"help": "Вы можете использовать {key} в качестве переменной в своей подсказке."
|
||||||
|
},
|
||||||
|
"isSystem": {
|
||||||
|
"label": "Это системная подсказка"
|
||||||
|
},
|
||||||
|
"btnSave": {
|
||||||
|
"saving": "Добавление подсказки...",
|
||||||
|
"save": "Добавить подсказку"
|
||||||
|
},
|
||||||
|
"btnEdit": {
|
||||||
|
"saving": "Обновление подсказки...",
|
||||||
|
"save": "Обновить подсказку"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification": {
|
||||||
|
"addSuccess": "Подсказка добавлена",
|
||||||
|
"addSuccessDesc": "Подсказка успешно добавлена",
|
||||||
|
"error": "Ошибка",
|
||||||
|
"someError": "Что-то пошло не так. Пожалуйста, попробуйте позже",
|
||||||
|
"updatedSuccess": "Подсказка обновлена",
|
||||||
|
"updatedSuccessDesc": "Подсказка успешно обновлена",
|
||||||
|
"deletedSuccess": "Подсказка удалена",
|
||||||
|
"deletedSuccessDesc": "Подсказка успешно удалена"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"manageShare": {
|
||||||
|
"title": "Управление обменом",
|
||||||
|
"heading": "Настройка URL обмена страницей",
|
||||||
|
"form": {
|
||||||
|
"url": {
|
||||||
|
"label": "URL обмена страницей",
|
||||||
|
"placeholder": "Введите URL обмена страницей",
|
||||||
|
"required": "Пожалуйста, введите ваш URL обмена страницей!",
|
||||||
|
"help": "По соображениям конфиденциальности вы можете самостоятельно разместить страницу обмена и указать здесь URL. <anchor>Узнать больше</anchor>."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"webshare": {
|
||||||
|
"heading": "Веб-обмен",
|
||||||
|
"columns": {
|
||||||
|
"title": "Название",
|
||||||
|
"url": "URL",
|
||||||
|
"actions": "Действия"
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"delete": "Удалить обмен"
|
||||||
|
},
|
||||||
|
"confirm": {
|
||||||
|
"delete": "Вы уверены, что хотите удалить этот обмен? Это действие нельзя отменить."
|
||||||
|
},
|
||||||
|
"label": "Управление общим доступом к странице",
|
||||||
|
"description": "Включить или отключить функцию обмена страницей"
|
||||||
|
},
|
||||||
|
"notification": {
|
||||||
|
"pageShareSuccess": "URL обмена страницей успешно обновлен",
|
||||||
|
"someError": "Что-то пошло не так. Пожалуйста, попробуйте позже",
|
||||||
|
"webShareDeleteSuccess": "Веб-обмен успешно удален"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ollamaSettings": {
|
||||||
|
"title": "Настройки Ollama",
|
||||||
|
"heading": "Настройка Ollama",
|
||||||
|
"settings": {
|
||||||
|
"ollamaUrl": {
|
||||||
|
"label": "URL Ollama",
|
||||||
|
"placeholder": "Введите URL Ollama"
|
||||||
|
},
|
||||||
|
|
||||||
|
"advanced": {
|
||||||
|
"label": "Расширенная конфигурация URL Ollama",
|
||||||
|
"urlRewriteEnabled": {
|
||||||
|
"label": "Включить или отключить пользовательский исходный URL"
|
||||||
|
},
|
||||||
|
"rewriteUrl": {
|
||||||
|
"label": "Пользовательский исходный URL",
|
||||||
|
"placeholder": "Введите пользовательский исходный URL"
|
||||||
|
},
|
||||||
|
"headers": {
|
||||||
|
"label": "Пользовательские Заголовки",
|
||||||
|
"add": "Добавить Заголовок",
|
||||||
|
"key": {
|
||||||
|
"label": "Ключ Заголовка",
|
||||||
|
"placeholder": "Авторизация"
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"label": "Значение Заголовка",
|
||||||
|
"placeholder": "Токен Bearer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"help": "Если у вас возникают проблемы с подключением к Ollama на странице помощника, вы можете настроить пользовательский исходный URL. Чтобы узнать больше о конфигурации, <anchor>нажмите здесь</anchor>."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"manageSearch": {
|
||||||
|
"title": "Управление веб-поиском",
|
||||||
|
"heading": "Настройка веб-поиска"
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"title": "О программе",
|
||||||
|
"heading": "О программе",
|
||||||
|
"chromeVersion": "Версия Page Assist",
|
||||||
|
"ollamaVersion": "Версия Ollama",
|
||||||
|
"support": "Вы можете поддержать проект Page Assist, сделав пожертвование или спонсорирование через следующие платформы:",
|
||||||
|
"koFi": "Поддержать на Ko-fi",
|
||||||
|
"githubSponsor": "Стать спонсором на GitHub",
|
||||||
|
"githubRepo": "Репозиторий GitHub"
|
||||||
|
},
|
||||||
|
"manageKnowledge": {
|
||||||
|
"title": "Управление знаниями",
|
||||||
|
"heading": "Настройка базы знаний"
|
||||||
|
},
|
||||||
|
"rag": {
|
||||||
|
"title": "Настройки RAG",
|
||||||
|
"ragSettings": {
|
||||||
|
"label": "Настройки RAG",
|
||||||
|
"model": {
|
||||||
|
"label": "Модель вложения",
|
||||||
|
"required": "Пожалуйста, выберите модель",
|
||||||
|
"help": "Настоятельно рекомендуется использовать модели вложения, например, `nomic-embed-text`.",
|
||||||
|
"placeholder": "Выберите модель"
|
||||||
|
},
|
||||||
|
"chunkSize": {
|
||||||
|
"label": "Размер фрагмента",
|
||||||
|
"placeholder": "Введите размер фрагмента",
|
||||||
|
"required": "Пожалуйста, введите размер фрагмента"
|
||||||
|
},
|
||||||
|
"chunkOverlap": {
|
||||||
|
"label": "Перекрытие фрагментов",
|
||||||
|
"placeholder": "Введите перекрытие фрагментов",
|
||||||
|
"required": "Пожалуйста, введите перекрытие фрагментов"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"prompt": {
|
||||||
|
"label": "Настройка системной подсказки RAG",
|
||||||
|
"option1": "Обычная",
|
||||||
|
"option2": "Веб",
|
||||||
|
"alert": "Настройка системной подсказки здесь устарела. Используйте раздел Управление подсказками для добавления или редактирования подсказок. Этот раздел будет удален в будущем выпуске",
|
||||||
|
"systemPrompt": "Системная подсказка",
|
||||||
|
"systemPromptPlaceholder": "Введите системную подсказку",
|
||||||
|
"webSearchPrompt": "Подсказка для веб-поиска",
|
||||||
|
"webSearchPromptHelp": "Не удаляйте `{search_results}` из подсказки.",
|
||||||
|
"webSearchPromptError": "Пожалуйста, введите подсказку для веб-поиска",
|
||||||
|
"webSearchPromptPlaceholder": "Введите подсказку для веб-поиска",
|
||||||
|
"webSearchFollowUpPrompt": "Последующая подсказка для веб-поиска",
|
||||||
|
"webSearchFollowUpPromptHelp": "Не удаляйте `{chat_history}` и `{question}` из подсказки.",
|
||||||
|
"webSearchFollowUpPromptError": "Введите подсказку для последующего веб-поиска!",
|
||||||
|
"webSearchFollowUpPromptPlaceholder": "Ваша подсказка для последующего веб-поиска"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chromeAiSettings": {
|
||||||
|
"title": "Настройки ИИ Chrome"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
13
src/assets/locale/zh/chrome.json
Normal file
13
src/assets/locale/zh/chrome.json
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"heading": "配置Chrome人工智能",
|
||||||
|
"status": {
|
||||||
|
"label": "在页面辅助功能中启用或禁用Chrome人工智能支持"
|
||||||
|
},
|
||||||
|
"error": {
|
||||||
|
"browser_not_supported": "此版本的Chrome不受Gemini Nano模型支持。请更新到127版本或更高版本",
|
||||||
|
"ai_not_supported": "设置chrome://flags/#prompt-api-for-gemini-nano未启用。请启用它。",
|
||||||
|
"ai_not_ready": "Gemini Nano尚未准备就绪;您需要再次检查Chrome设置。",
|
||||||
|
"internal_error": "发生内部错误。请稍后重试。"
|
||||||
|
},
|
||||||
|
"errorDescription": "为了使用Chrome人工智能,您需要127版本以上的浏览器,目前该版本在Dev和Canary渠道中。下载支持的版本后,请按照以下步骤操作:\n\n1. 前往`chrome://flags/#prompt-api-for-gemini-nano`并选择\"启用\",\n2. 前往`chrome://flags/#optimization-guide-on-device-model`并选择\"EnabledBypassPrefRequirement\",\n3. 前往`chrome://components`,搜索\"Optimization Guide On Device Model\",然后点击\"检查更新\"。这将下载模型。如果您没有看到这些设置,请重复步骤1和2,然后重新启动浏览器。"
|
||||||
|
}
|
@ -1,297 +1,312 @@
|
|||||||
{
|
{
|
||||||
"generalSettings": {
|
"generalSettings": {
|
||||||
"title": "一般设置",
|
"title": "一般设置",
|
||||||
"settings": {
|
"settings": {
|
||||||
"heading": "Web UI 设置",
|
"heading": "Web UI 设置",
|
||||||
"speechRecognitionLang": {
|
"speechRecognitionLang": {
|
||||||
"label": "语音识别语言",
|
"label": "语音识别语言",
|
||||||
"placeholder": "选择一种语言"
|
"placeholder": "选择一种语言"
|
||||||
},
|
},
|
||||||
"language": {
|
"language": {
|
||||||
"label": "语言",
|
"label": "语言",
|
||||||
"placeholder": "选择一种语言"
|
"placeholder": "选择一种语言"
|
||||||
},
|
},
|
||||||
"darkMode": {
|
"darkMode": {
|
||||||
"label": "更改主题",
|
"label": "更改主题",
|
||||||
"options": {
|
"options": {
|
||||||
"light": "亮色",
|
"light": "亮色",
|
||||||
"dark": "暗色"
|
"dark": "暗色"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"searchMode": {
|
"searchMode": {
|
||||||
"label": "使用简化的互联网搜索"
|
"label": "使用简化的互联网搜索"
|
||||||
},
|
},
|
||||||
"copilotResumeLastChat": {
|
"copilotResumeLastChat": {
|
||||||
"label": "打开侧边栏时恢复上次聊天(Copilot)"
|
"label": "打开侧边栏时恢复上次聊天(Copilot)"
|
||||||
},
|
},
|
||||||
"hideCurrentChatModelSettings": {
|
"hideCurrentChatModelSettings": {
|
||||||
"label": "隐藏当前聊天模型设置"
|
"label": "隐藏当前聊天模型设置"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"webSearch": {
|
"webSearch": {
|
||||||
"heading": "管理网络搜索",
|
"heading": "管理网络搜索",
|
||||||
"searchMode": {
|
"searchMode": {
|
||||||
"label": "执行简单的网际网路搜索"
|
"label": "执行简单的网际网路搜索"
|
||||||
},
|
},
|
||||||
"provider": {
|
"provider": {
|
||||||
"label": "搜索引擎",
|
"label": "搜索引擎",
|
||||||
"placeholder": "选择一个搜索引擎"
|
"placeholder": "选择一个搜索引擎"
|
||||||
},
|
},
|
||||||
"totalSearchResults": {
|
"totalSearchResults": {
|
||||||
"label": "总搜索结果",
|
"label": "总搜索结果",
|
||||||
"placeholder": "输入总搜索结果"
|
"placeholder": "输入总搜索结果"
|
||||||
},
|
},
|
||||||
"visitSpecificWebsite": {
|
"visitSpecificWebsite": {
|
||||||
"label": "访问消息中提到的网站。"
|
"label": "访问消息中提到的网站。"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"system": {
|
||||||
|
"heading": "系统设置",
|
||||||
|
"deleteChatHistory": {
|
||||||
|
"label": "删除聊天记录",
|
||||||
|
"button": "删除",
|
||||||
|
"confirm": "您确定要删除聊天记录吗?此操作无法撤销。"
|
||||||
|
},
|
||||||
|
"export": {
|
||||||
|
"label": "导出聊天记录、知识库和提示",
|
||||||
|
"button": "导出数据",
|
||||||
|
"success": "导出成功"
|
||||||
|
},
|
||||||
|
"import": {
|
||||||
|
"label": "导入聊天记录、知识库和提示",
|
||||||
|
"button": "导入数据",
|
||||||
|
"success": "导入成功",
|
||||||
|
"error": "导入错误"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"tts": {
|
||||||
|
"heading": "文本转语音设置",
|
||||||
|
"ttsEnabled": {
|
||||||
|
"label": "启用文本转语音"
|
||||||
|
},
|
||||||
|
"ttsProvider": {
|
||||||
|
"label": "文本转语音提供商",
|
||||||
|
"placeholder": "选择一个提供商"
|
||||||
|
},
|
||||||
|
"ttsVoice": {
|
||||||
|
"label": "文本转语音语音",
|
||||||
|
"placeholder": "选择一种语音"
|
||||||
|
},
|
||||||
|
"ssmlEnabled": {
|
||||||
|
"label": "启用SSML(语音合成标记语言)"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"system": {
|
"manageModels": {
|
||||||
"heading": "系统设置",
|
"title": "管理模型",
|
||||||
"deleteChatHistory": {
|
"addBtn": "添加新模型",
|
||||||
"label": "删除聊天记录",
|
"columns": {
|
||||||
"button": "删除",
|
"name": "名称",
|
||||||
"confirm": "您确定要删除聊天记录吗?此操作无法撤销。"
|
"digest": "摘要",
|
||||||
},
|
"modifiedAt": "修改时间",
|
||||||
"export": {
|
"size": "大小",
|
||||||
"label": "导出聊天记录、知识库和提示",
|
"actions": "操作"
|
||||||
"button": "导出数据",
|
|
||||||
"success": "导出成功"
|
|
||||||
},
|
|
||||||
"import": {
|
|
||||||
"label": "导入聊天记录、知识库和提示",
|
|
||||||
"button": "导入数据",
|
|
||||||
"success": "导入成功",
|
|
||||||
"error": "导入错误"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tts": {
|
|
||||||
"heading": "文本转语音设置",
|
|
||||||
"ttsEnabled": {
|
|
||||||
"label": "启用文本转语音"
|
|
||||||
},
|
|
||||||
"ttsProvider": {
|
|
||||||
"label": "文本转语音提供商",
|
|
||||||
"placeholder": "选择一个提供商"
|
|
||||||
},
|
|
||||||
"ttsVoice": {
|
|
||||||
"label": "文本转语音语音",
|
|
||||||
"placeholder": "选择一种语音"
|
|
||||||
},
|
|
||||||
"ssmlEnabled": {
|
|
||||||
"label": "启用SSML(语音合成标记语言)"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"manageModels": {
|
"expandedColumns": {
|
||||||
"title": "管理模型",
|
"parentModel": "父模型",
|
||||||
"addBtn": "添加新模型",
|
"format": "格式",
|
||||||
"columns": {
|
"family": "家族",
|
||||||
"name": "名称",
|
"parameterSize": "参数大小",
|
||||||
"digest": "摘要",
|
"quantizationLevel": "量化级别"
|
||||||
"modifiedAt": "修改时间",
|
|
||||||
"size": "大小",
|
|
||||||
"actions": "操作"
|
|
||||||
},
|
|
||||||
"expandedColumns": {
|
|
||||||
"parentModel": "父模型",
|
|
||||||
"format": "格式",
|
|
||||||
"family": "家族",
|
|
||||||
"parameterSize": "参数大小",
|
|
||||||
"quantizationLevel": "量化级别"
|
|
||||||
},
|
|
||||||
"tooltip": {
|
|
||||||
"delete": "删除模型",
|
|
||||||
"repull": "重新拉取模型"
|
|
||||||
},
|
|
||||||
"confirm": {
|
|
||||||
"delete": "您确定要删除此模型吗?",
|
|
||||||
"repull": "您确定要重新拉取此模型吗?"
|
|
||||||
},
|
|
||||||
"modal": {
|
|
||||||
"title": "添加新模型",
|
|
||||||
"placeholder": "输入模型名称",
|
|
||||||
"pull": "拉取模型"
|
|
||||||
},
|
|
||||||
"notification": {
|
|
||||||
"pullModel": "正在拉取模型",
|
|
||||||
"pullModelDescription": "正在拉取 {{modelName}} ,请查看扩展图标。",
|
|
||||||
"success": "成功",
|
|
||||||
"error": "错误",
|
|
||||||
"successDescription": "成功拉取了模型",
|
|
||||||
"successDeleteDescription": "成功删除了模型",
|
|
||||||
"someError": "出现了问题。请稍后再试。"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"managePrompts": {
|
"tooltip": {
|
||||||
"title": "管理提示词",
|
"delete": "删除模型",
|
||||||
"addBtn": "添加新提示词",
|
"repull": "重新拉取模型"
|
||||||
"option1": "普通",
|
|
||||||
"option2": "RAG",
|
|
||||||
"questionPrompt": "问题提示词",
|
|
||||||
"columns": {
|
|
||||||
"title": "标题",
|
|
||||||
"prompt": "提示词",
|
|
||||||
"type": "提示词类型",
|
|
||||||
"actions": "操作"
|
|
||||||
},
|
|
||||||
"systemPrompt": "系统提示词",
|
|
||||||
"quickPrompt": "快速提示词",
|
|
||||||
"tooltip": {
|
|
||||||
"delete": "删除提示词",
|
|
||||||
"edit": "编辑提示词"
|
|
||||||
},
|
|
||||||
"confirm": {
|
|
||||||
"delete": "您确定要删除此提示词吗?这个操作不能撤销。"
|
|
||||||
},
|
|
||||||
"modal": {
|
|
||||||
"addTitle": "添加新提示词",
|
|
||||||
"editTitle": "编辑提示词"
|
|
||||||
},
|
|
||||||
"form": {
|
|
||||||
"title": {
|
|
||||||
"label": "标题",
|
|
||||||
"placeholder": "我厉害的提示词",
|
|
||||||
"required": "请输入标题",
|
|
||||||
"help": "您可以在提示词中使用 {key} 作为变量。"
|
|
||||||
},
|
|
||||||
"prompt": {
|
|
||||||
"label": "提示词",
|
|
||||||
"placeholder": "输入提示词",
|
|
||||||
"required": "请输入提示词",
|
|
||||||
"help": "您可以在提示词中使用 {key} 作为变量。"
|
|
||||||
},
|
|
||||||
"isSystem": {
|
|
||||||
"label": "是否为系统提示词"
|
|
||||||
},
|
|
||||||
"btnSave": {
|
|
||||||
"saving": "添加提示词中...",
|
|
||||||
"save": "添加提示词"
|
|
||||||
},
|
|
||||||
"btnEdit": {
|
|
||||||
"saving": "更新提示词中...",
|
|
||||||
"save": "更新提示词"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"notification": {
|
|
||||||
"addSuccess": "提示词已添加",
|
|
||||||
"addSuccessDesc": "提示词已成功添加",
|
|
||||||
"error": "错误",
|
|
||||||
"someError": "出现了问题。请稍后再试。",
|
|
||||||
"updatedSuccess": "提示词已更新",
|
|
||||||
"updatedSuccessDesc": "提示词已成功更新",
|
|
||||||
"deletedSuccess": "提示词已删除",
|
|
||||||
"deletedSuccessDesc": "提示词已成功删除"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"manageShare": {
|
"confirm": {
|
||||||
"title": "管理共享",
|
"delete": "您确定要删除此模型吗?",
|
||||||
"heading": "配置对话共享服务 URL",
|
"repull": "您确定要重新拉取此模型吗?"
|
||||||
"form": {
|
|
||||||
"url": {
|
|
||||||
"label": "对话共享服务 URL",
|
|
||||||
"placeholder": "输入对话共享服务 URL",
|
|
||||||
"required": "请输入您的对话共享服务 URL!",
|
|
||||||
"help": "出于隐私原因,您可以自行托管对话共享服务并在此处提供 URL,<anchor>了解更多</anchor>。"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"webshare": {
|
|
||||||
"heading": "对话共享",
|
|
||||||
"columns": {
|
|
||||||
"title": "标题",
|
|
||||||
"url": "URL",
|
|
||||||
"actions": "操作"
|
|
||||||
},
|
|
||||||
"tooltip": {
|
|
||||||
"delete": "删除对话共享"
|
|
||||||
},
|
|
||||||
"confirm": {
|
|
||||||
"delete": "您确定要删除此对话共享吗?这个操作不能撤销。"
|
|
||||||
},
|
|
||||||
"label": "管理页面分享",
|
|
||||||
"description": "启用或禁用页面分享功能 "
|
|
||||||
},
|
|
||||||
"notification": {
|
|
||||||
"pageShareSuccess": "对话共享服务 URL 已成功更新",
|
|
||||||
"someError": "出现了问题。请稍后再试。",
|
|
||||||
"webShareDeleteSuccess": "对话共享已成功删除"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"ollamaSettings": {
|
"modal": {
|
||||||
"title": "Ollama 设置",
|
"title": "添加新模型",
|
||||||
"heading": "配置 Ollama",
|
"placeholder": "输入模型名称",
|
||||||
"settings": {
|
"pull": "拉取模型"
|
||||||
"ollamaUrl": {
|
|
||||||
"label": "Ollama URL",
|
|
||||||
"placeholder": "输入 Ollama URL"
|
|
||||||
},
|
|
||||||
|
|
||||||
"advanced": {
|
|
||||||
"label": "Ollama URL 高级配置",
|
|
||||||
"urlRewriteEnabled": {
|
|
||||||
"label": "启用或禁用自定义来源 URL"
|
|
||||||
},
|
|
||||||
"rewriteUrl": {
|
|
||||||
"label": "自定义来源 URL",
|
|
||||||
"placeholder": "输入自定义来源 URL"
|
|
||||||
},
|
|
||||||
"help": "如果您在 Page Assist 上与 Ollama 有连接问题,您可以配置自定义来源 URL。要了解更多关于配置的信息,<anchor>点击此处</anchor>。"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"manageSearch": {
|
"notification": {
|
||||||
"heading": "配置网络搜索",
|
"pullModel": "正在拉取模型",
|
||||||
"title": "管理网络搜索"
|
"pullModelDescription": "正在拉取 {{modelName}} ,请查看扩展图标。",
|
||||||
},
|
"success": "成功",
|
||||||
"about": {
|
"error": "错误",
|
||||||
"title": "关于",
|
"successDescription": "成功拉取了模型",
|
||||||
"heading": "关于",
|
"successDeleteDescription": "成功删除了模型",
|
||||||
"chromeVersion": "Page Assist版本",
|
"someError": "出现了问题。请稍后再试。"
|
||||||
"ollamaVersion": "Ollama版本",
|
|
||||||
"support": "您可以通过以下平台捐赠或赞助Page Assist项目:",
|
|
||||||
"koFi": "在Ko-fi上支持",
|
|
||||||
"githubSponsor": "在GitHub上赞助",
|
|
||||||
"githubRepo": "GitHub仓库"
|
|
||||||
},
|
|
||||||
"manageKnowledge": {
|
|
||||||
"title": "管理知识",
|
|
||||||
"heading": "配置知识库"
|
|
||||||
},
|
|
||||||
"rag": {
|
|
||||||
"title": "RAG 设置",
|
|
||||||
"ragSettings": {
|
|
||||||
"label": "RAG 设置",
|
|
||||||
"model": {
|
|
||||||
"label": "文本嵌入模型",
|
|
||||||
"required": "请选择一个模型",
|
|
||||||
"help": "建议使用文本嵌入模型,如 `nomic-embed-text`。",
|
|
||||||
"placeholder": "选择一个模型"
|
|
||||||
},
|
|
||||||
"chunkSize": {
|
|
||||||
"label": "嵌入大小",
|
|
||||||
"placeholder": "1024-∞",
|
|
||||||
"required": "请输入块大小"
|
|
||||||
},
|
|
||||||
"chunkOverlap": {
|
|
||||||
"label": "嵌入重叠",
|
|
||||||
"placeholder": "256-∞",
|
|
||||||
"required": "请输入嵌入重叠"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"prompt": {
|
|
||||||
"label": "配置 RAG 提示词",
|
|
||||||
"option1": "普通",
|
|
||||||
"option2": "搜索",
|
|
||||||
"alert": "在此配置系统提示词已过时。请使用管理提示词部分添加或编辑提示词。此部分将在未来版本中删除",
|
|
||||||
"systemPrompt": "系统提示词",
|
|
||||||
"systemPromptPlaceholder": "输入系统提示词",
|
|
||||||
"webSearchPrompt": "网页搜索提示词",
|
|
||||||
"webSearchPromptHelp": "请勿从提示词中删除 `{search_results}`。",
|
|
||||||
"webSearchPromptError": "请输入一个网页搜索提示词",
|
|
||||||
"webSearchPromptPlaceholder": "输入网页搜索提示词",
|
|
||||||
"webSearchFollowUpPrompt": "网页搜索追问提示词",
|
|
||||||
"webSearchFollowUpPromptHelp": "请勿从提示词中删除 `{chat_history}` 和 `{question}`。",
|
|
||||||
"webSearchFollowUpPromptError": "请输入您的网页搜索追问提示词!",
|
|
||||||
"webSearchFollowUpPromptPlaceholder": "您的网页搜索追问提示词"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
"managePrompts": {
|
||||||
|
"title": "管理提示词",
|
||||||
|
"addBtn": "添加新提示词",
|
||||||
|
"option1": "普通",
|
||||||
|
"option2": "RAG",
|
||||||
|
"questionPrompt": "问题提示词",
|
||||||
|
"columns": {
|
||||||
|
"title": "标题",
|
||||||
|
"prompt": "提示词",
|
||||||
|
"type": "提示词类型",
|
||||||
|
"actions": "操作"
|
||||||
|
},
|
||||||
|
"systemPrompt": "系统提示词",
|
||||||
|
"quickPrompt": "快速提示词",
|
||||||
|
"tooltip": {
|
||||||
|
"delete": "删除提示词",
|
||||||
|
"edit": "编辑提示词"
|
||||||
|
},
|
||||||
|
"confirm": {
|
||||||
|
"delete": "您确定要删除此提示词吗?这个操作不能撤销。"
|
||||||
|
},
|
||||||
|
"modal": {
|
||||||
|
"addTitle": "添加新提示词",
|
||||||
|
"editTitle": "编辑提示词"
|
||||||
|
},
|
||||||
|
"form": {
|
||||||
|
"title": {
|
||||||
|
"label": "标题",
|
||||||
|
"placeholder": "我厉害的提示词",
|
||||||
|
"required": "请输入标题",
|
||||||
|
"help": "您可以在提示词中使用 {key} 作为变量。"
|
||||||
|
},
|
||||||
|
"prompt": {
|
||||||
|
"label": "提示词",
|
||||||
|
"placeholder": "输入提示词",
|
||||||
|
"required": "请输入提示词",
|
||||||
|
"help": "您可以在提示词中使用 {key} 作为变量。"
|
||||||
|
},
|
||||||
|
"isSystem": {
|
||||||
|
"label": "是否为系统提示词"
|
||||||
|
},
|
||||||
|
"btnSave": {
|
||||||
|
"saving": "添加提示词中...",
|
||||||
|
"save": "添加提示词"
|
||||||
|
},
|
||||||
|
"btnEdit": {
|
||||||
|
"saving": "更新提示词中...",
|
||||||
|
"save": "更新提示词"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification": {
|
||||||
|
"addSuccess": "提示词已添加",
|
||||||
|
"addSuccessDesc": "提示词已成功添加",
|
||||||
|
"error": "错误",
|
||||||
|
"someError": "出现了问题。请稍后再试。",
|
||||||
|
"updatedSuccess": "提示词已更新",
|
||||||
|
"updatedSuccessDesc": "提示词已成功更新",
|
||||||
|
"deletedSuccess": "提示词已删除",
|
||||||
|
"deletedSuccessDesc": "提示词已成功删除"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"manageShare": {
|
||||||
|
"title": "管理共享",
|
||||||
|
"heading": "配置对话共享服务 URL",
|
||||||
|
"form": {
|
||||||
|
"url": {
|
||||||
|
"label": "对话共享服务 URL",
|
||||||
|
"placeholder": "输入对话共享服务 URL",
|
||||||
|
"required": "请输入您的对话共享服务 URL!",
|
||||||
|
"help": "出于隐私原因,您可以自行托管对话共享服务并在此处提供 URL,<anchor>了解更多</anchor>。"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"webshare": {
|
||||||
|
"heading": "对话共享",
|
||||||
|
"columns": {
|
||||||
|
"title": "标题",
|
||||||
|
"url": "URL",
|
||||||
|
"actions": "操作"
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"delete": "删除对话共享"
|
||||||
|
},
|
||||||
|
"confirm": {
|
||||||
|
"delete": "您确定要删除此对话共享吗?这个操作不能撤销。"
|
||||||
|
},
|
||||||
|
"label": "管理页面分享",
|
||||||
|
"description": "启用或禁用页面分享功能 "
|
||||||
|
},
|
||||||
|
"notification": {
|
||||||
|
"pageShareSuccess": "对话共享服务 URL 已成功更新",
|
||||||
|
"someError": "出现了问题。请稍后再试。",
|
||||||
|
"webShareDeleteSuccess": "对话共享已成功删除"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ollamaSettings": {
|
||||||
|
"title": "Ollama 设置",
|
||||||
|
"heading": "配置 Ollama",
|
||||||
|
"settings": {
|
||||||
|
"ollamaUrl": {
|
||||||
|
"label": "Ollama URL",
|
||||||
|
"placeholder": "输入 Ollama URL"
|
||||||
|
},
|
||||||
|
|
||||||
|
"advanced": {
|
||||||
|
"label": "Ollama URL 高级配置",
|
||||||
|
"urlRewriteEnabled": {
|
||||||
|
"label": "启用或禁用自定义来源 URL"
|
||||||
|
},
|
||||||
|
"rewriteUrl": {
|
||||||
|
"label": "自定义来源 URL",
|
||||||
|
"placeholder": "输入自定义来源 URL"
|
||||||
|
},
|
||||||
|
"headers": {
|
||||||
|
"label": "自定义头部",
|
||||||
|
"add": "添加头部",
|
||||||
|
"key": {
|
||||||
|
"label": "头部键",
|
||||||
|
"placeholder": "授权"
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"label": "头部值",
|
||||||
|
"placeholder": "承载令牌"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"help": "如果您在 Page Assist 上与 Ollama 有连接问题,您可以配置自定义来源 URL。要了解更多关于配置的信息,<anchor>点击此处</anchor>。"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"manageSearch": {
|
||||||
|
"heading": "配置网络搜索",
|
||||||
|
"title": "管理网络搜索"
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"title": "关于",
|
||||||
|
"heading": "关于",
|
||||||
|
"chromeVersion": "Page Assist版本",
|
||||||
|
"ollamaVersion": "Ollama版本",
|
||||||
|
"support": "您可以通过以下平台捐赠或赞助Page Assist项目:",
|
||||||
|
"koFi": "在Ko-fi上支持",
|
||||||
|
"githubSponsor": "在GitHub上赞助",
|
||||||
|
"githubRepo": "GitHub仓库"
|
||||||
|
},
|
||||||
|
"manageKnowledge": {
|
||||||
|
"title": "管理知识",
|
||||||
|
"heading": "配置知识库"
|
||||||
|
},
|
||||||
|
"rag": {
|
||||||
|
"title": "RAG 设置",
|
||||||
|
"ragSettings": {
|
||||||
|
"label": "RAG 设置",
|
||||||
|
"model": {
|
||||||
|
"label": "文本嵌入模型",
|
||||||
|
"required": "请选择一个模型",
|
||||||
|
"help": "建议使用文本嵌入模型,如 `nomic-embed-text`。",
|
||||||
|
"placeholder": "选择一个模型"
|
||||||
|
},
|
||||||
|
"chunkSize": {
|
||||||
|
"label": "嵌入大小",
|
||||||
|
"placeholder": "1024-∞",
|
||||||
|
"required": "请输入块大小"
|
||||||
|
},
|
||||||
|
"chunkOverlap": {
|
||||||
|
"label": "嵌入重叠",
|
||||||
|
"placeholder": "256-∞",
|
||||||
|
"required": "请输入嵌入重叠"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"prompt": {
|
||||||
|
"label": "配置 RAG 提示词",
|
||||||
|
"option1": "普通",
|
||||||
|
"option2": "搜索",
|
||||||
|
"alert": "在此配置系统提示词已过时。请使用管理提示词部分添加或编辑提示词。此部分将在未来版本中删除",
|
||||||
|
"systemPrompt": "系统提示词",
|
||||||
|
"systemPromptPlaceholder": "输入系统提示词",
|
||||||
|
"webSearchPrompt": "网页搜索提示词",
|
||||||
|
"webSearchPromptHelp": "请勿从提示词中删除 `{search_results}`。",
|
||||||
|
"webSearchPromptError": "请输入一个网页搜索提示词",
|
||||||
|
"webSearchPromptPlaceholder": "输入网页搜索提示词",
|
||||||
|
"webSearchFollowUpPrompt": "网页搜索追问提示词",
|
||||||
|
"webSearchFollowUpPromptHelp": "请勿从提示词中删除 `{chat_history}` 和 `{question}`。",
|
||||||
|
"webSearchFollowUpPromptError": "请输入您的网页搜索追问提示词!",
|
||||||
|
"webSearchFollowUpPromptPlaceholder": "您的网页搜索追问提示词"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chromeAiSettings": {
|
||||||
|
"title": "Chrome AI 设置"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -6,11 +6,17 @@ import "property-information"
|
|||||||
import React from "react"
|
import React from "react"
|
||||||
import { CodeBlock } from "./CodeBlock"
|
import { CodeBlock } from "./CodeBlock"
|
||||||
|
|
||||||
export default function Markdown({ message }: { message: string }) {
|
export default function Markdown({
|
||||||
|
message,
|
||||||
|
className = "prose break-words dark:prose-invert prose-p:leading-relaxed prose-pre:p-0 dark:prose-dark"
|
||||||
|
}: {
|
||||||
|
message: string
|
||||||
|
className?: string
|
||||||
|
}) {
|
||||||
return (
|
return (
|
||||||
<React.Fragment>
|
<React.Fragment>
|
||||||
<ReactMarkdown
|
<ReactMarkdown
|
||||||
className="prose break-words dark:prose-invert prose-p:leading-relaxed prose-pre:p-0 dark:prose-dark"
|
className={className}
|
||||||
remarkPlugins={[remarkGfm, remarkMath]}
|
remarkPlugins={[remarkGfm, remarkMath]}
|
||||||
components={{
|
components={{
|
||||||
code({ node, inline, className, children, ...props }) {
|
code({ node, inline, className, children, ...props }) {
|
||||||
|
@ -3,9 +3,9 @@ import { Dropdown, Tooltip } from "antd"
|
|||||||
import { LucideBrain } from "lucide-react"
|
import { LucideBrain } from "lucide-react"
|
||||||
import React from "react"
|
import React from "react"
|
||||||
import { useTranslation } from "react-i18next"
|
import { useTranslation } from "react-i18next"
|
||||||
import { OllamaIcon } from "../Icons/Ollama"
|
|
||||||
import { fetchChatModels } from "@/services/ollama"
|
import { fetchChatModels } from "@/services/ollama"
|
||||||
import { useMessage } from "@/hooks/useMessage"
|
import { useMessage } from "@/hooks/useMessage"
|
||||||
|
import { ProviderIcons } from "./ProviderIcon"
|
||||||
|
|
||||||
export const ModelSelect: React.FC = () => {
|
export const ModelSelect: React.FC = () => {
|
||||||
const { t } = useTranslation("common")
|
const { t } = useTranslation("common")
|
||||||
@ -29,7 +29,10 @@ export const ModelSelect: React.FC = () => {
|
|||||||
label: (
|
label: (
|
||||||
<div className="w-52 gap-2 text-lg truncate inline-flex line-clamp-3 items-center dark:border-gray-700">
|
<div className="w-52 gap-2 text-lg truncate inline-flex line-clamp-3 items-center dark:border-gray-700">
|
||||||
<div>
|
<div>
|
||||||
<OllamaIcon className="h-6 w-6 text-gray-400" />
|
<ProviderIcons
|
||||||
|
provider={d?.provider}
|
||||||
|
className="h-6 w-6 text-gray-400"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
{d.name}
|
{d.name}
|
||||||
</div>
|
</div>
|
||||||
@ -53,7 +56,7 @@ export const ModelSelect: React.FC = () => {
|
|||||||
trigger={["click"]}>
|
trigger={["click"]}>
|
||||||
<Tooltip title={t("selectAModel")}>
|
<Tooltip title={t("selectAModel")}>
|
||||||
<button type="button" className="dark:text-gray-300">
|
<button type="button" className="dark:text-gray-300">
|
||||||
<LucideBrain className="h-5 w-5"/>
|
<LucideBrain className="h-5 w-5" />
|
||||||
</button>
|
</button>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
</Dropdown>
|
</Dropdown>
|
||||||
|
@ -64,7 +64,11 @@ export const PlaygroundMessage = (props: Props) => {
|
|||||||
</div>
|
</div>
|
||||||
<div className="flex w-[calc(100%-50px)] flex-col gap-3 lg:w-[calc(100%-115px)]">
|
<div className="flex w-[calc(100%-50px)] flex-col gap-3 lg:w-[calc(100%-115px)]">
|
||||||
<span className="text-xs font-bold text-gray-800 dark:text-white">
|
<span className="text-xs font-bold text-gray-800 dark:text-white">
|
||||||
{props.isBot ? props.name : "You"}
|
{props.isBot
|
||||||
|
? props.name === "chrome::gemini-nano::page-assist"
|
||||||
|
? "Gemini Nano"
|
||||||
|
: props.name
|
||||||
|
: "You"}
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
{props.isBot &&
|
{props.isBot &&
|
||||||
|
17
src/components/Common/ProviderIcon.tsx
Normal file
17
src/components/Common/ProviderIcon.tsx
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
import { ChromeIcon } from "lucide-react"
|
||||||
|
import { OllamaIcon } from "../Icons/Ollama"
|
||||||
|
|
||||||
|
export const ProviderIcons = ({
|
||||||
|
provider,
|
||||||
|
className
|
||||||
|
}: {
|
||||||
|
provider: string
|
||||||
|
className?: string
|
||||||
|
}) => {
|
||||||
|
switch (provider) {
|
||||||
|
case "chrome":
|
||||||
|
return <ChromeIcon className={className} />
|
||||||
|
default:
|
||||||
|
return <OllamaIcon className={className} />
|
||||||
|
}
|
||||||
|
}
|
@ -1,49 +1,132 @@
|
|||||||
import { useStorage } from "@plasmohq/storage/hook"
|
import { Divider, Input, Switch } from "antd"
|
||||||
import { Input, Switch } from "antd"
|
|
||||||
import { useTranslation } from "react-i18next"
|
import { useTranslation } from "react-i18next"
|
||||||
|
import { Form } from "antd"
|
||||||
|
import React from "react"
|
||||||
|
import {
|
||||||
|
customOllamaHeaders,
|
||||||
|
getRewriteUrl,
|
||||||
|
isUrlRewriteEnabled,
|
||||||
|
setCustomOllamaHeaders,
|
||||||
|
setRewriteUrl,
|
||||||
|
setUrlRewriteEnabled
|
||||||
|
} from "@/services/app"
|
||||||
|
import { Trash2Icon } from "lucide-react"
|
||||||
|
import { SaveButton } from "../SaveButton"
|
||||||
|
|
||||||
export const AdvanceOllamaSettings = () => {
|
export const AdvanceOllamaSettings = () => {
|
||||||
const [urlRewriteEnabled, setUrlRewriteEnabled] = useStorage(
|
const [form] = Form.useForm()
|
||||||
"urlRewriteEnabled",
|
const watchUrlRewriteEnabled = Form.useWatch("urlRewriteEnabled", form)
|
||||||
false
|
|
||||||
)
|
const fetchAdvancedData = async () => {
|
||||||
|
const [urlRewriteEnabled, rewriteUrl, headers] = await Promise.all([
|
||||||
|
isUrlRewriteEnabled(),
|
||||||
|
getRewriteUrl(),
|
||||||
|
customOllamaHeaders()
|
||||||
|
])
|
||||||
|
form.setFieldsValue({ urlRewriteEnabled, rewriteUrl, headers })
|
||||||
|
}
|
||||||
|
|
||||||
|
React.useEffect(() => {
|
||||||
|
fetchAdvancedData()
|
||||||
|
}, [])
|
||||||
|
|
||||||
const [rewriteUrl, setRewriteUrl] = useStorage(
|
|
||||||
"rewriteUrl",
|
|
||||||
"http://127.0.0.1:11434"
|
|
||||||
)
|
|
||||||
const { t } = useTranslation("settings")
|
const { t } = useTranslation("settings")
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-4">
|
<Form
|
||||||
<div className="flex sm:flex-row flex-col space-y-4 sm:space-y-0 sm:justify-between">
|
onFinish={(e) => {
|
||||||
<span className="text-gray-700 dark:text-neutral-50 ">
|
const headers = e?.headers?.filter(
|
||||||
{t("ollamaSettings.settings.advanced.urlRewriteEnabled.label")}
|
(header: { key: string; value: string }) => header.key && header.value
|
||||||
</span>
|
)
|
||||||
<div>
|
setUrlRewriteEnabled(e.urlRewriteEnabled)
|
||||||
<Switch
|
setRewriteUrl(e.rewriteUrl)
|
||||||
className="mt-4 sm:mt-0"
|
setCustomOllamaHeaders(headers)
|
||||||
checked={urlRewriteEnabled}
|
}}
|
||||||
onChange={(checked) => setUrlRewriteEnabled(checked)}
|
form={form}
|
||||||
/>
|
layout="vertical"
|
||||||
</div>
|
className="space-y-4">
|
||||||
</div>
|
<Form.Item
|
||||||
<div className="flex flex-col space-y-4 sm:space-y-0 sm:justify-between">
|
name="urlRewriteEnabled"
|
||||||
<span className="text-gray-700 dark:text-neutral-50 mb-3">
|
label={t("ollamaSettings.settings.advanced.urlRewriteEnabled.label")}>
|
||||||
{t("ollamaSettings.settings.advanced.rewriteUrl.label")}
|
<Switch />
|
||||||
</span>
|
</Form.Item>
|
||||||
<div>
|
<Form.Item
|
||||||
<Input
|
required={watchUrlRewriteEnabled}
|
||||||
className="w-full"
|
name="rewriteUrl"
|
||||||
value={rewriteUrl}
|
label={t("ollamaSettings.settings.advanced.rewriteUrl.label")}>
|
||||||
disabled={!urlRewriteEnabled}
|
<Input
|
||||||
placeholder={t(
|
disabled={!watchUrlRewriteEnabled}
|
||||||
"ollamaSettings.settings.advanced.rewriteUrl.placeholder"
|
className="w-full"
|
||||||
)}
|
placeholder={t(
|
||||||
onChange={(e) => setRewriteUrl(e.target.value)}
|
"ollamaSettings.settings.advanced.rewriteUrl.placeholder"
|
||||||
/>
|
)}
|
||||||
</div>
|
/>
|
||||||
</div>
|
</Form.Item>
|
||||||
</div>
|
|
||||||
|
<Form.List name="headers">
|
||||||
|
{(fields, { add, remove }) => (
|
||||||
|
<div className="flex flex-col ">
|
||||||
|
<div className="flex justify-between items-center">
|
||||||
|
<h3 className="text-md font-semibold">
|
||||||
|
{t("ollamaSettings.settings.advanced.headers.label")}
|
||||||
|
</h3>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
className="dark:bg-white dark:text-black text-white bg-black p-1.5 text-xs rounded-md"
|
||||||
|
onClick={() => {
|
||||||
|
add()
|
||||||
|
}}>
|
||||||
|
{t("ollamaSettings.settings.advanced.headers.add")}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
{fields.map((field, index) => (
|
||||||
|
<div key={field.key} className="flex items-center w-full">
|
||||||
|
<div className="flex-grow flex space-x-4">
|
||||||
|
<Form.Item
|
||||||
|
label={t(
|
||||||
|
"ollamaSettings.settings.advanced.headers.key.label"
|
||||||
|
)}
|
||||||
|
name={[field.name, "key"]}
|
||||||
|
className="flex-1 mb-0">
|
||||||
|
<Input
|
||||||
|
className="w-full"
|
||||||
|
placeholder={t(
|
||||||
|
"ollamaSettings.settings.advanced.headers.key.placeholder"
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</Form.Item>
|
||||||
|
<Form.Item
|
||||||
|
label={t(
|
||||||
|
"ollamaSettings.settings.advanced.headers.value.label"
|
||||||
|
)}
|
||||||
|
name={[field.name, "value"]}
|
||||||
|
className="flex-1 mb-0">
|
||||||
|
<Input
|
||||||
|
className="w-full"
|
||||||
|
placeholder={t(
|
||||||
|
"ollamaSettings.settings.advanced.headers.value.placeholder"
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</Form.Item>
|
||||||
|
</div>
|
||||||
|
<button
|
||||||
|
type="button"
|
||||||
|
onClick={() => {
|
||||||
|
remove(field.name)
|
||||||
|
}}
|
||||||
|
className="shrink-0 ml-2 text-red-500 dark:text-red-400">
|
||||||
|
<Trash2Icon className="w-5 h-5" />
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</Form.List>
|
||||||
|
<Divider />
|
||||||
|
|
||||||
|
<Form.Item className="flex justify-end">
|
||||||
|
<SaveButton btnType="submit" />
|
||||||
|
</Form.Item>
|
||||||
|
</Form>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ import { useMessageOption } from "~/hooks/useMessageOption"
|
|||||||
import { Select, Tooltip } from "antd"
|
import { Select, Tooltip } from "antd"
|
||||||
import { getAllPrompts } from "@/db"
|
import { getAllPrompts } from "@/db"
|
||||||
import { ShareBtn } from "~/components/Common/ShareBtn"
|
import { ShareBtn } from "~/components/Common/ShareBtn"
|
||||||
|
import { ProviderIcons } from "../Common/ProviderIcon"
|
||||||
type Props = {
|
type Props = {
|
||||||
setSidebarOpen: (open: boolean) => void
|
setSidebarOpen: (open: boolean) => void
|
||||||
setOpenModelSettings: (open: boolean) => void
|
setOpenModelSettings: (open: boolean) => void
|
||||||
@ -132,7 +133,10 @@ export const Header: React.FC<Props> = ({
|
|||||||
<span
|
<span
|
||||||
key={model.model}
|
key={model.model}
|
||||||
className="flex flex-row gap-3 items-center truncate">
|
className="flex flex-row gap-3 items-center truncate">
|
||||||
<OllamaIcon className="w-5 h-5" />
|
<ProviderIcons
|
||||||
|
provider={model?.provider}
|
||||||
|
className="w-5 h-5"
|
||||||
|
/>
|
||||||
<span className="truncate">{model.name}</span>
|
<span className="truncate">{model.name}</span>
|
||||||
</span>
|
</span>
|
||||||
),
|
),
|
||||||
|
@ -6,11 +6,13 @@ import {
|
|||||||
BlocksIcon,
|
BlocksIcon,
|
||||||
InfoIcon,
|
InfoIcon,
|
||||||
CombineIcon,
|
CombineIcon,
|
||||||
|
ChromeIcon
|
||||||
} from "lucide-react"
|
} from "lucide-react"
|
||||||
import { useTranslation } from "react-i18next"
|
import { useTranslation } from "react-i18next"
|
||||||
import { Link, useLocation } from "react-router-dom"
|
import { Link, useLocation } from "react-router-dom"
|
||||||
import { OllamaIcon } from "../Icons/Ollama"
|
import { OllamaIcon } from "../Icons/Ollama"
|
||||||
import { Tag } from "antd"
|
import { Tag } from "antd"
|
||||||
|
import { BetaTag } from "../Common/Beta"
|
||||||
|
|
||||||
function classNames(...classes: string[]) {
|
function classNames(...classes: string[]) {
|
||||||
return classes.filter(Boolean).join(" ")
|
return classes.filter(Boolean).join(" ")
|
||||||
@ -20,10 +22,12 @@ const LinkComponent = (item: {
|
|||||||
href: string
|
href: string
|
||||||
name: string | JSX.Element
|
name: string | JSX.Element
|
||||||
icon: any
|
icon: any
|
||||||
current: string
|
current: string,
|
||||||
|
beta?: boolean
|
||||||
}) => {
|
}) => {
|
||||||
return (
|
return (
|
||||||
<li>
|
<li className="inline-flex items-center">
|
||||||
|
|
||||||
<Link
|
<Link
|
||||||
to={item.href}
|
to={item.href}
|
||||||
className={classNames(
|
className={classNames(
|
||||||
@ -43,6 +47,9 @@ const LinkComponent = (item: {
|
|||||||
/>
|
/>
|
||||||
{item.name}
|
{item.name}
|
||||||
</Link>
|
</Link>
|
||||||
|
{
|
||||||
|
item.beta && <BetaTag />
|
||||||
|
}
|
||||||
</li>
|
</li>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -65,7 +72,7 @@ export const SettingsLayout = ({ children }: { children: React.ReactNode }) => {
|
|||||||
icon={OrbitIcon}
|
icon={OrbitIcon}
|
||||||
current={location.pathname}
|
current={location.pathname}
|
||||||
/>
|
/>
|
||||||
<LinkComponent
|
<LinkComponent
|
||||||
href="/settings/rag"
|
href="/settings/rag"
|
||||||
name={t("rag.title")}
|
name={t("rag.title")}
|
||||||
icon={CombineIcon}
|
icon={CombineIcon}
|
||||||
@ -77,6 +84,15 @@ export const SettingsLayout = ({ children }: { children: React.ReactNode }) => {
|
|||||||
icon={OllamaIcon}
|
icon={OllamaIcon}
|
||||||
current={location.pathname}
|
current={location.pathname}
|
||||||
/>
|
/>
|
||||||
|
{import.meta.env.BROWSER === "chrome" && (
|
||||||
|
<LinkComponent
|
||||||
|
href="/settings/chrome"
|
||||||
|
name={t("chromeAiSettings.title")}
|
||||||
|
icon={ChromeIcon}
|
||||||
|
current={location.pathname}
|
||||||
|
beta
|
||||||
|
/>
|
||||||
|
)}
|
||||||
<LinkComponent
|
<LinkComponent
|
||||||
href="/settings/model"
|
href="/settings/model"
|
||||||
name={t("manageModels.title")}
|
name={t("manageModels.title")}
|
||||||
|
73
src/components/Option/Settings/chrome.tsx
Normal file
73
src/components/Option/Settings/chrome.tsx
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
import { useStorage } from "@plasmohq/storage/hook"
|
||||||
|
import { useQuery } from "@tanstack/react-query"
|
||||||
|
import { Alert, Skeleton, Switch } from "antd"
|
||||||
|
import { useTranslation } from "react-i18next"
|
||||||
|
import { getChromeAISupported } from "@/utils/chrome"
|
||||||
|
import Markdown from "@/components/Common/Markdown"
|
||||||
|
|
||||||
|
export const ChromeApp = () => {
|
||||||
|
const { t } = useTranslation("chrome")
|
||||||
|
const [chromeAIStatus, setChromeAIStatus] = useStorage(
|
||||||
|
"chromeAIStatus",
|
||||||
|
false
|
||||||
|
)
|
||||||
|
const [selectedModel, setSelectedModel] = useStorage("selectedModel")
|
||||||
|
|
||||||
|
const { status, data } = useQuery({
|
||||||
|
queryKey: ["fetchChromeAIInfo"],
|
||||||
|
queryFn: async () => {
|
||||||
|
const data = await getChromeAISupported()
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return (
|
||||||
|
<div className="flex flex-col space-y-3">
|
||||||
|
{status === "pending" && <Skeleton paragraph={{ rows: 4 }} active />}
|
||||||
|
{status === "success" && (
|
||||||
|
<div className="flex flex-col space-y-6">
|
||||||
|
<div>
|
||||||
|
<div>
|
||||||
|
<h2 className="text-base font-semibold leading-7 text-gray-900 dark:text-white">
|
||||||
|
{t("heading")}
|
||||||
|
</h2>
|
||||||
|
<div className="border border-b border-gray-200 dark:border-gray-600 mt-3 mb-6"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex mb-3 flex-row justify-between">
|
||||||
|
<div className="inline-flex items-center gap-2">
|
||||||
|
<span className="text-gray-700 text-sm dark:text-neutral-50">
|
||||||
|
{t("status.label")}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Switch
|
||||||
|
disabled={data !== "success"}
|
||||||
|
checked={chromeAIStatus}
|
||||||
|
onChange={(value) => {
|
||||||
|
setChromeAIStatus(value)
|
||||||
|
if (
|
||||||
|
!value &&
|
||||||
|
selectedModel === "chrome::gemini-nano::page-assist"
|
||||||
|
) {
|
||||||
|
setSelectedModel(null)
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
{data !== "success" && (
|
||||||
|
<div className="space-y-3">
|
||||||
|
<Alert message={t(`error.${data}`)} type="error" showIcon />
|
||||||
|
<div className=" w-full">
|
||||||
|
<Markdown
|
||||||
|
className="text-sm text-gray-700 dark:text-neutral-50 leading-7 text-justify"
|
||||||
|
message={t("errorDescription")}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
@ -13,7 +13,6 @@ import {
|
|||||||
exportPageAssistData,
|
exportPageAssistData,
|
||||||
importPageAssistData
|
importPageAssistData
|
||||||
} from "@/libs/export-import"
|
} from "@/libs/export-import"
|
||||||
import { BetaTag } from "@/components/Common/Beta"
|
|
||||||
import { useStorage } from "@plasmohq/storage/hook"
|
import { useStorage } from "@plasmohq/storage/hook"
|
||||||
|
|
||||||
export const GeneralSettings = () => {
|
export const GeneralSettings = () => {
|
||||||
@ -87,7 +86,6 @@ export const GeneralSettings = () => {
|
|||||||
</div>
|
</div>
|
||||||
<div className="flex flex-row justify-between">
|
<div className="flex flex-row justify-between">
|
||||||
<div className="inline-flex items-center gap-2">
|
<div className="inline-flex items-center gap-2">
|
||||||
<BetaTag />
|
|
||||||
<span className="text-gray-700 dark:text-neutral-50">
|
<span className="text-gray-700 dark:text-neutral-50">
|
||||||
{t("generalSettings.settings.copilotResumeLastChat.label")}
|
{t("generalSettings.settings.copilotResumeLastChat.label")}
|
||||||
</span>
|
</span>
|
||||||
@ -99,7 +97,6 @@ export const GeneralSettings = () => {
|
|||||||
</div>
|
</div>
|
||||||
<div className="flex flex-row justify-between">
|
<div className="flex flex-row justify-between">
|
||||||
<div className="inline-flex items-center gap-2">
|
<div className="inline-flex items-center gap-2">
|
||||||
<BetaTag />
|
|
||||||
<span className="text-gray-700 dark:text-neutral-50">
|
<span className="text-gray-700 dark:text-neutral-50">
|
||||||
{t("generalSettings.settings.hideCurrentChatModelSettings.label")}
|
{t("generalSettings.settings.hideCurrentChatModelSettings.label")}
|
||||||
</span>
|
</span>
|
||||||
|
@ -50,6 +50,14 @@ export const SettingsOllama = () => {
|
|||||||
className="w-full p-2 border border-gray-300 rounded-md dark:bg-[#262626] dark:text-gray-100"
|
className="w-full p-2 border border-gray-300 rounded-md dark:bg-[#262626] dark:text-gray-100"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="flex justify-end mb-3">
|
||||||
|
<SaveButton
|
||||||
|
onClick={() => {
|
||||||
|
saveOllamaURL(ollamaURL)
|
||||||
|
}}
|
||||||
|
className="mt-2"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
<Collapse
|
<Collapse
|
||||||
size="small"
|
size="small"
|
||||||
items={[
|
items={[
|
||||||
@ -79,15 +87,6 @@ export const SettingsOllama = () => {
|
|||||||
}
|
}
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div className="flex justify-end">
|
|
||||||
<SaveButton
|
|
||||||
onClick={() => {
|
|
||||||
saveOllamaURL(ollamaURL)
|
|
||||||
}}
|
|
||||||
className="mt-2"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ModelSettings />
|
<ModelSettings />
|
||||||
|
@ -28,9 +28,9 @@ import { formatDocs } from "@/chain/chat-with-x"
|
|||||||
import { OllamaEmbeddingsPageAssist } from "@/models/OllamaEmbedding"
|
import { OllamaEmbeddingsPageAssist } from "@/models/OllamaEmbedding"
|
||||||
import { useStorage } from "@plasmohq/storage/hook"
|
import { useStorage } from "@plasmohq/storage/hook"
|
||||||
import { useStoreChatModelSettings } from "@/store/model"
|
import { useStoreChatModelSettings } from "@/store/model"
|
||||||
import { ChatOllama } from "@/models/ChatOllama"
|
|
||||||
import { getAllDefaultModelSettings } from "@/services/model-settings"
|
import { getAllDefaultModelSettings } from "@/services/model-settings"
|
||||||
import { getSystemPromptForWeb } from "@/web/web"
|
import { getSystemPromptForWeb } from "@/web/web"
|
||||||
|
import { pageAssistModel } from "@/models"
|
||||||
|
|
||||||
export const useMessage = () => {
|
export const useMessage = () => {
|
||||||
const {
|
const {
|
||||||
@ -98,7 +98,7 @@ export const useMessage = () => {
|
|||||||
const url = await getOllamaURL()
|
const url = await getOllamaURL()
|
||||||
const userDefaultModelSettings = await getAllDefaultModelSettings()
|
const userDefaultModelSettings = await getAllDefaultModelSettings()
|
||||||
|
|
||||||
const ollama = new ChatOllama({
|
const ollama = await pageAssistModel({
|
||||||
model: selectedModel!,
|
model: selectedModel!,
|
||||||
baseUrl: cleanUrl(url),
|
baseUrl: cleanUrl(url),
|
||||||
keepAlive:
|
keepAlive:
|
||||||
@ -225,7 +225,7 @@ export const useMessage = () => {
|
|||||||
const promptForQuestion = questionPrompt
|
const promptForQuestion = questionPrompt
|
||||||
.replaceAll("{chat_history}", chat_history)
|
.replaceAll("{chat_history}", chat_history)
|
||||||
.replaceAll("{question}", message)
|
.replaceAll("{question}", message)
|
||||||
const questionOllama = new ChatOllama({
|
const questionOllama = await pageAssistModel({
|
||||||
model: selectedModel!,
|
model: selectedModel!,
|
||||||
baseUrl: cleanUrl(url),
|
baseUrl: cleanUrl(url),
|
||||||
keepAlive:
|
keepAlive:
|
||||||
@ -388,7 +388,7 @@ export const useMessage = () => {
|
|||||||
image = `data:image/jpeg;base64,${image.split(",")[1]}`
|
image = `data:image/jpeg;base64,${image.split(",")[1]}`
|
||||||
}
|
}
|
||||||
|
|
||||||
const ollama = new ChatOllama({
|
const ollama = await pageAssistModel({
|
||||||
model: selectedModel!,
|
model: selectedModel!,
|
||||||
baseUrl: cleanUrl(url),
|
baseUrl: cleanUrl(url),
|
||||||
keepAlive:
|
keepAlive:
|
||||||
@ -591,7 +591,7 @@ export const useMessage = () => {
|
|||||||
image = `data:image/jpeg;base64,${image.split(",")[1]}`
|
image = `data:image/jpeg;base64,${image.split(",")[1]}`
|
||||||
}
|
}
|
||||||
|
|
||||||
const ollama = new ChatOllama({
|
const ollama = await pageAssistModel({
|
||||||
model: selectedModel!,
|
model: selectedModel!,
|
||||||
baseUrl: cleanUrl(url),
|
baseUrl: cleanUrl(url),
|
||||||
keepAlive:
|
keepAlive:
|
||||||
@ -661,7 +661,7 @@ export const useMessage = () => {
|
|||||||
const promptForQuestion = questionPrompt
|
const promptForQuestion = questionPrompt
|
||||||
.replaceAll("{chat_history}", chat_history)
|
.replaceAll("{chat_history}", chat_history)
|
||||||
.replaceAll("{question}", message)
|
.replaceAll("{question}", message)
|
||||||
const questionOllama = new ChatOllama({
|
const questionOllama = await pageAssistModel({
|
||||||
model: selectedModel!,
|
model: selectedModel!,
|
||||||
baseUrl: cleanUrl(url),
|
baseUrl: cleanUrl(url),
|
||||||
keepAlive:
|
keepAlive:
|
||||||
|
@ -31,7 +31,7 @@ import { useWebUI } from "@/store/webui"
|
|||||||
import { useStorage } from "@plasmohq/storage/hook"
|
import { useStorage } from "@plasmohq/storage/hook"
|
||||||
import { useStoreChatModelSettings } from "@/store/model"
|
import { useStoreChatModelSettings } from "@/store/model"
|
||||||
import { getAllDefaultModelSettings } from "@/services/model-settings"
|
import { getAllDefaultModelSettings } from "@/services/model-settings"
|
||||||
import { ChatOllama } from "@/models/ChatOllama"
|
import { pageAssistModel } from "@/models"
|
||||||
|
|
||||||
export const useMessageOption = () => {
|
export const useMessageOption = () => {
|
||||||
const {
|
const {
|
||||||
@ -104,7 +104,7 @@ export const useMessageOption = () => {
|
|||||||
image = `data:image/jpeg;base64,${image.split(",")[1]}`
|
image = `data:image/jpeg;base64,${image.split(",")[1]}`
|
||||||
}
|
}
|
||||||
|
|
||||||
const ollama = new ChatOllama({
|
const ollama = await pageAssistModel({
|
||||||
model: selectedModel!,
|
model: selectedModel!,
|
||||||
baseUrl: cleanUrl(url),
|
baseUrl: cleanUrl(url),
|
||||||
keepAlive:
|
keepAlive:
|
||||||
@ -174,7 +174,7 @@ export const useMessageOption = () => {
|
|||||||
const promptForQuestion = questionPrompt
|
const promptForQuestion = questionPrompt
|
||||||
.replaceAll("{chat_history}", chat_history)
|
.replaceAll("{chat_history}", chat_history)
|
||||||
.replaceAll("{question}", message)
|
.replaceAll("{question}", message)
|
||||||
const questionOllama = new ChatOllama({
|
const questionOllama = await pageAssistModel({
|
||||||
model: selectedModel!,
|
model: selectedModel!,
|
||||||
baseUrl: cleanUrl(url),
|
baseUrl: cleanUrl(url),
|
||||||
keepAlive:
|
keepAlive:
|
||||||
@ -347,7 +347,7 @@ export const useMessageOption = () => {
|
|||||||
image = `data:image/jpeg;base64,${image.split(",")[1]}`
|
image = `data:image/jpeg;base64,${image.split(",")[1]}`
|
||||||
}
|
}
|
||||||
|
|
||||||
const ollama = new ChatOllama({
|
const ollama = await pageAssistModel({
|
||||||
model: selectedModel!,
|
model: selectedModel!,
|
||||||
baseUrl: cleanUrl(url),
|
baseUrl: cleanUrl(url),
|
||||||
keepAlive:
|
keepAlive:
|
||||||
@ -463,6 +463,7 @@ export const useMessageOption = () => {
|
|||||||
signal: signal
|
signal: signal
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
let count = 0
|
let count = 0
|
||||||
for await (const chunk of chunks) {
|
for await (const chunk of chunks) {
|
||||||
contentToSave += chunk.content
|
contentToSave += chunk.content
|
||||||
@ -562,7 +563,7 @@ export const useMessageOption = () => {
|
|||||||
const url = await getOllamaURL()
|
const url = await getOllamaURL()
|
||||||
const userDefaultModelSettings = await getAllDefaultModelSettings()
|
const userDefaultModelSettings = await getAllDefaultModelSettings()
|
||||||
|
|
||||||
const ollama = new ChatOllama({
|
const ollama = await pageAssistModel({
|
||||||
model: selectedModel!,
|
model: selectedModel!,
|
||||||
baseUrl: cleanUrl(url),
|
baseUrl: cleanUrl(url),
|
||||||
keepAlive:
|
keepAlive:
|
||||||
@ -648,7 +649,7 @@ export const useMessageOption = () => {
|
|||||||
const promptForQuestion = questionPrompt
|
const promptForQuestion = questionPrompt
|
||||||
.replaceAll("{chat_history}", chat_history)
|
.replaceAll("{chat_history}", chat_history)
|
||||||
.replaceAll("{question}", message)
|
.replaceAll("{question}", message)
|
||||||
const questionOllama = new ChatOllama({
|
const questionOllama = await pageAssistModel({
|
||||||
model: selectedModel!,
|
model: selectedModel!,
|
||||||
baseUrl: cleanUrl(url),
|
baseUrl: cleanUrl(url),
|
||||||
keepAlive:
|
keepAlive:
|
||||||
|
@ -4,6 +4,7 @@ import common from "@/assets/locale/en/common.json";
|
|||||||
import sidepanel from "@/assets/locale/en/sidepanel.json";
|
import sidepanel from "@/assets/locale/en/sidepanel.json";
|
||||||
import settings from "@/assets/locale/en/settings.json";
|
import settings from "@/assets/locale/en/settings.json";
|
||||||
import knowledge from "@/assets/locale/en/knowledge.json";
|
import knowledge from "@/assets/locale/en/knowledge.json";
|
||||||
|
import chrome from "@/assets/locale/en/chrome.json";
|
||||||
|
|
||||||
export const en = {
|
export const en = {
|
||||||
option,
|
option,
|
||||||
@ -11,5 +12,6 @@ export const en = {
|
|||||||
common,
|
common,
|
||||||
sidepanel,
|
sidepanel,
|
||||||
settings,
|
settings,
|
||||||
knowledge
|
knowledge,
|
||||||
|
chrome
|
||||||
}
|
}
|
@ -4,6 +4,7 @@ import common from "@/assets/locale/es/common.json";
|
|||||||
import sidepanel from "@/assets/locale/es/sidepanel.json";
|
import sidepanel from "@/assets/locale/es/sidepanel.json";
|
||||||
import settings from "@/assets/locale/es/settings.json";
|
import settings from "@/assets/locale/es/settings.json";
|
||||||
import knowledge from "@/assets/locale/es/knowledge.json";
|
import knowledge from "@/assets/locale/es/knowledge.json";
|
||||||
|
import chrome from "@/assets/locale/es/chrome.json";
|
||||||
|
|
||||||
export const es = {
|
export const es = {
|
||||||
option,
|
option,
|
||||||
@ -11,5 +12,6 @@ export const es = {
|
|||||||
common,
|
common,
|
||||||
sidepanel,
|
sidepanel,
|
||||||
settings,
|
settings,
|
||||||
knowledge
|
knowledge,
|
||||||
|
chrome
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import common from "@/assets/locale/fr/common.json";
|
|||||||
import sidepanel from "@/assets/locale/fr/sidepanel.json";
|
import sidepanel from "@/assets/locale/fr/sidepanel.json";
|
||||||
import settings from "@/assets/locale/fr/settings.json";
|
import settings from "@/assets/locale/fr/settings.json";
|
||||||
import knowledge from "@/assets/locale/fr/knowledge.json";
|
import knowledge from "@/assets/locale/fr/knowledge.json";
|
||||||
|
import chrome from "@/assets/locale/fr/chrome.json";
|
||||||
|
|
||||||
export const fr = {
|
export const fr = {
|
||||||
option,
|
option,
|
||||||
@ -11,5 +12,6 @@ export const fr = {
|
|||||||
common,
|
common,
|
||||||
sidepanel,
|
sidepanel,
|
||||||
settings,
|
settings,
|
||||||
knowledge
|
knowledge,
|
||||||
|
chrome
|
||||||
}
|
}
|
@ -4,6 +4,7 @@ import common from "@/assets/locale/it/common.json";
|
|||||||
import sidepanel from "@/assets/locale/it/sidepanel.json";
|
import sidepanel from "@/assets/locale/it/sidepanel.json";
|
||||||
import settings from "@/assets/locale/it/settings.json";
|
import settings from "@/assets/locale/it/settings.json";
|
||||||
import knowledge from "@/assets/locale/it/knowledge.json";
|
import knowledge from "@/assets/locale/it/knowledge.json";
|
||||||
|
import chrome from "@/assets/locale/it/chrome.json";
|
||||||
|
|
||||||
export const it = {
|
export const it = {
|
||||||
option,
|
option,
|
||||||
@ -11,5 +12,6 @@ export const it = {
|
|||||||
common,
|
common,
|
||||||
sidepanel,
|
sidepanel,
|
||||||
settings,
|
settings,
|
||||||
knowledge
|
knowledge,
|
||||||
|
chrome
|
||||||
}
|
}
|
@ -4,6 +4,7 @@ import common from "@/assets/locale/ja-JP/common.json";
|
|||||||
import sidepanel from "@/assets/locale/ja-JP/sidepanel.json";
|
import sidepanel from "@/assets/locale/ja-JP/sidepanel.json";
|
||||||
import settings from "@/assets/locale/ja-JP/settings.json";
|
import settings from "@/assets/locale/ja-JP/settings.json";
|
||||||
import knowledge from "@/assets/locale/ja-JP/knowledge.json";
|
import knowledge from "@/assets/locale/ja-JP/knowledge.json";
|
||||||
|
import chrome from "@/assets/locale/ja-JP/chrome.json";
|
||||||
|
|
||||||
|
|
||||||
export const ja = {
|
export const ja = {
|
||||||
@ -12,5 +13,6 @@ export const ja = {
|
|||||||
common,
|
common,
|
||||||
sidepanel,
|
sidepanel,
|
||||||
settings,
|
settings,
|
||||||
knowledge
|
knowledge,
|
||||||
|
chrome
|
||||||
}
|
}
|
@ -4,6 +4,7 @@ import common from "@/assets/locale/ml/common.json";
|
|||||||
import sidepanel from "@/assets/locale/ml/sidepanel.json";
|
import sidepanel from "@/assets/locale/ml/sidepanel.json";
|
||||||
import settings from "@/assets/locale/ml/settings.json";
|
import settings from "@/assets/locale/ml/settings.json";
|
||||||
import knowledge from "@/assets/locale/ml/knowledge.json";
|
import knowledge from "@/assets/locale/ml/knowledge.json";
|
||||||
|
import chrome from "@/assets/locale/ml/chrome.json";
|
||||||
|
|
||||||
export const ml = {
|
export const ml = {
|
||||||
option,
|
option,
|
||||||
@ -11,5 +12,6 @@ export const ml = {
|
|||||||
common,
|
common,
|
||||||
sidepanel,
|
sidepanel,
|
||||||
settings,
|
settings,
|
||||||
knowledge
|
knowledge,
|
||||||
|
chrome
|
||||||
}
|
}
|
@ -4,6 +4,7 @@ import common from "@/assets/locale/pt-BR/common.json";
|
|||||||
import sidepanel from "@/assets/locale/pt-BR/sidepanel.json";
|
import sidepanel from "@/assets/locale/pt-BR/sidepanel.json";
|
||||||
import settings from "@/assets/locale/pt-BR/settings.json";
|
import settings from "@/assets/locale/pt-BR/settings.json";
|
||||||
import knowledge from "@/assets/locale/pt-BR/knowledge.json";
|
import knowledge from "@/assets/locale/pt-BR/knowledge.json";
|
||||||
|
import chrome from "@/assets/locale/pt-BR/chrome.json";
|
||||||
|
|
||||||
export const pt = {
|
export const pt = {
|
||||||
option,
|
option,
|
||||||
@ -11,5 +12,6 @@ export const pt = {
|
|||||||
common,
|
common,
|
||||||
sidepanel,
|
sidepanel,
|
||||||
settings,
|
settings,
|
||||||
knowledge
|
knowledge,
|
||||||
|
chrome
|
||||||
}
|
}
|
@ -4,6 +4,7 @@ import common from "@/assets/locale/ru/common.json";
|
|||||||
import sidepanel from "@/assets/locale/ru/sidepanel.json";
|
import sidepanel from "@/assets/locale/ru/sidepanel.json";
|
||||||
import settings from "@/assets/locale/ru/settings.json";
|
import settings from "@/assets/locale/ru/settings.json";
|
||||||
import knowledge from "@/assets/locale/ru/knowledge.json";
|
import knowledge from "@/assets/locale/ru/knowledge.json";
|
||||||
|
import chrome from "@/assets/locale/ru/chrome.json";
|
||||||
|
|
||||||
export const ru = {
|
export const ru = {
|
||||||
option,
|
option,
|
||||||
@ -11,5 +12,6 @@ export const ru = {
|
|||||||
common,
|
common,
|
||||||
sidepanel,
|
sidepanel,
|
||||||
settings,
|
settings,
|
||||||
knowledge
|
knowledge,
|
||||||
|
chrome
|
||||||
}
|
}
|
@ -4,6 +4,7 @@ import common from "@/assets/locale/zh/common.json";
|
|||||||
import sidepanel from "@/assets/locale/zh/sidepanel.json";
|
import sidepanel from "@/assets/locale/zh/sidepanel.json";
|
||||||
import settings from "@/assets/locale/zh/settings.json";
|
import settings from "@/assets/locale/zh/settings.json";
|
||||||
import knowledge from "@/assets/locale/zh/knowledge.json";
|
import knowledge from "@/assets/locale/zh/knowledge.json";
|
||||||
|
import chrome from "@/assets/locale/zh/chrome.json";
|
||||||
|
|
||||||
|
|
||||||
export const zh = {
|
export const zh = {
|
||||||
@ -12,5 +13,6 @@ export const zh = {
|
|||||||
common,
|
common,
|
||||||
sidepanel,
|
sidepanel,
|
||||||
settings,
|
settings,
|
||||||
knowledge
|
knowledge,
|
||||||
|
chrome
|
||||||
}
|
}
|
193
src/models/ChatChromeAi.ts
Normal file
193
src/models/ChatChromeAi.ts
Normal file
@ -0,0 +1,193 @@
|
|||||||
|
import {
|
||||||
|
SimpleChatModel,
|
||||||
|
type BaseChatModelParams
|
||||||
|
} from "@langchain/core/language_models/chat_models"
|
||||||
|
import type { BaseLanguageModelCallOptions } from "@langchain/core/language_models/base"
|
||||||
|
import {
|
||||||
|
CallbackManagerForLLMRun,
|
||||||
|
Callbacks
|
||||||
|
} from "@langchain/core/callbacks/manager"
|
||||||
|
import { BaseMessage, AIMessageChunk } from "@langchain/core/messages"
|
||||||
|
import { ChatGenerationChunk } from "@langchain/core/outputs"
|
||||||
|
import { IterableReadableStream } from "@langchain/core/utils/stream"
|
||||||
|
|
||||||
|
export interface AI {
|
||||||
|
canCreateTextSession(): Promise<AIModelAvailability>
|
||||||
|
createTextSession(options?: AITextSessionOptions): Promise<AITextSession>
|
||||||
|
defaultTextSessionOptions(): Promise<AITextSessionOptions>
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface AITextSession {
|
||||||
|
prompt(input: string): Promise<string>
|
||||||
|
promptStreaming(input: string): ReadableStream
|
||||||
|
destroy(): void
|
||||||
|
clone(): AITextSession
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface AITextSessionOptions {
|
||||||
|
topK: number
|
||||||
|
temperature: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export const enum AIModelAvailability {
|
||||||
|
Readily = "readily",
|
||||||
|
AfterDownload = "after-download",
|
||||||
|
No = "no"
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ChromeAIInputs extends BaseChatModelParams {
|
||||||
|
topK?: number
|
||||||
|
temperature?: number
|
||||||
|
/**
|
||||||
|
* An optional function to format the prompt before sending it to the model.
|
||||||
|
*/
|
||||||
|
promptFormatter?: (messages: BaseMessage[]) => string
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ChromeAICallOptions extends BaseLanguageModelCallOptions {}
|
||||||
|
|
||||||
|
function formatPrompt(messages: BaseMessage[]): string {
|
||||||
|
return messages
|
||||||
|
.map((message) => {
|
||||||
|
if (typeof message.content !== "string") {
|
||||||
|
// console.log(message.content)
|
||||||
|
// throw new Error(
|
||||||
|
// "ChatChromeAI does not support non-string message content."
|
||||||
|
// )
|
||||||
|
if (message.content.length > 0) {
|
||||||
|
//@ts-ignore
|
||||||
|
return message.content[0]?.text || ""
|
||||||
|
}
|
||||||
|
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return `${message._getType()}: ${message.content}`
|
||||||
|
})
|
||||||
|
.join("\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* To use this model you need to have the `Built-in AI Early Preview Program`
|
||||||
|
* for Chrome. You can find more information about the program here:
|
||||||
|
* @link https://developer.chrome.com/docs/ai/built-in
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* ```typescript
|
||||||
|
* // Initialize the ChatChromeAI model.
|
||||||
|
* const model = new ChatChromeAI({
|
||||||
|
* temperature: 0.5, // Optional. Default is 0.5.
|
||||||
|
* topK: 40, // Optional. Default is 40.
|
||||||
|
* });
|
||||||
|
*
|
||||||
|
* // Call the model with a message and await the response.
|
||||||
|
* const response = await model.invoke([
|
||||||
|
* new HumanMessage({ content: "My name is John." }),
|
||||||
|
* ]);
|
||||||
|
* ```
|
||||||
|
*/
|
||||||
|
export class ChatChromeAI extends SimpleChatModel<ChromeAICallOptions> {
|
||||||
|
session?: AITextSession
|
||||||
|
|
||||||
|
temperature = 0.5
|
||||||
|
|
||||||
|
topK = 40
|
||||||
|
|
||||||
|
promptFormatter: (messages: BaseMessage[]) => string
|
||||||
|
|
||||||
|
static lc_name() {
|
||||||
|
return "ChatChromeAI"
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor(inputs?: ChromeAIInputs) {
|
||||||
|
super({
|
||||||
|
callbacks: {} as Callbacks,
|
||||||
|
...inputs
|
||||||
|
})
|
||||||
|
this.temperature = inputs?.temperature ?? this.temperature
|
||||||
|
this.topK = inputs?.topK ?? this.topK
|
||||||
|
this.promptFormatter = inputs?.promptFormatter ?? formatPrompt
|
||||||
|
}
|
||||||
|
|
||||||
|
_llmType() {
|
||||||
|
return "chrome-ai"
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the model. This method must be called before calling `.invoke()`.
|
||||||
|
*/
|
||||||
|
async initialize() {
|
||||||
|
if (typeof window === "undefined") {
|
||||||
|
throw new Error("ChatChromeAI can only be used in the browser.")
|
||||||
|
}
|
||||||
|
|
||||||
|
const { ai } = window as any
|
||||||
|
const canCreateTextSession = await ai.canCreateTextSession()
|
||||||
|
if (canCreateTextSession === AIModelAvailability.No) {
|
||||||
|
throw new Error("The AI model is not available.")
|
||||||
|
} else if (canCreateTextSession === AIModelAvailability.AfterDownload) {
|
||||||
|
throw new Error("The AI model is not yet downloaded.")
|
||||||
|
}
|
||||||
|
|
||||||
|
this.session = await ai.createTextSession({
|
||||||
|
topK: this.topK,
|
||||||
|
temperature: this.temperature
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Call `.destroy()` to free resources if you no longer need a session.
|
||||||
|
* When a session is destroyed, it can no longer be used, and any ongoing
|
||||||
|
* execution will be aborted. You may want to keep the session around if
|
||||||
|
* you intend to prompt the model often since creating a session can take
|
||||||
|
* some time.
|
||||||
|
*/
|
||||||
|
destroy() {
|
||||||
|
if (!this.session) {
|
||||||
|
return console.log("No session found. Returning.")
|
||||||
|
}
|
||||||
|
this.session.destroy()
|
||||||
|
}
|
||||||
|
|
||||||
|
async *_streamResponseChunks(
|
||||||
|
messages: BaseMessage[],
|
||||||
|
_options: this["ParsedCallOptions"],
|
||||||
|
runManager?: CallbackManagerForLLMRun
|
||||||
|
): AsyncGenerator<ChatGenerationChunk> {
|
||||||
|
if (!this.session) {
|
||||||
|
await this.initialize()
|
||||||
|
}
|
||||||
|
const textPrompt = this.promptFormatter(messages)
|
||||||
|
const stream = this.session.promptStreaming(textPrompt)
|
||||||
|
const iterableStream = IterableReadableStream.fromReadableStream(stream)
|
||||||
|
|
||||||
|
let previousContent = ""
|
||||||
|
for await (const chunk of iterableStream) {
|
||||||
|
const newContent = chunk.slice(previousContent.length)
|
||||||
|
previousContent += newContent
|
||||||
|
yield new ChatGenerationChunk({
|
||||||
|
text: newContent,
|
||||||
|
message: new AIMessageChunk({
|
||||||
|
content: newContent,
|
||||||
|
additional_kwargs: {}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
await runManager?.handleLLMNewToken(newContent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async _call(
|
||||||
|
messages: BaseMessage[],
|
||||||
|
options: this["ParsedCallOptions"],
|
||||||
|
runManager?: CallbackManagerForLLMRun
|
||||||
|
): Promise<string> {
|
||||||
|
const chunks = []
|
||||||
|
for await (const chunk of this._streamResponseChunks(
|
||||||
|
messages,
|
||||||
|
options,
|
||||||
|
runManager
|
||||||
|
)) {
|
||||||
|
chunks.push(chunk.text)
|
||||||
|
}
|
||||||
|
return chunks.join("")
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
import { Embeddings, EmbeddingsParams } from "@langchain/core/embeddings"
|
import { Embeddings, EmbeddingsParams } from "@langchain/core/embeddings"
|
||||||
import type { StringWithAutocomplete } from "@langchain/core/utils/types"
|
import type { StringWithAutocomplete } from "@langchain/core/utils/types"
|
||||||
import { parseKeepAlive } from "./utils/ollama"
|
import { parseKeepAlive } from "./utils/ollama"
|
||||||
|
import { getCustomOllamaHeaders } from "@/services/app"
|
||||||
|
|
||||||
export interface OllamaInput {
|
export interface OllamaInput {
|
||||||
embeddingOnly?: boolean
|
embeddingOnly?: boolean
|
||||||
@ -213,12 +214,14 @@ export class OllamaEmbeddingsPageAssist extends Embeddings {
|
|||||||
"http://127.0.0.1:"
|
"http://127.0.0.1:"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
const customHeaders = await getCustomOllamaHeaders()
|
||||||
|
|
||||||
const response = await fetch(`${formattedBaseUrl}/api/embeddings`, {
|
const response = await fetch(`${formattedBaseUrl}/api/embeddings`, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
headers: {
|
headers: {
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
...this.headers
|
...this.headers,
|
||||||
|
...customHeaders
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
prompt,
|
prompt,
|
||||||
|
41
src/models/index.ts
Normal file
41
src/models/index.ts
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
import { ChatChromeAI } from "./ChatChromeAi"
|
||||||
|
import { ChatOllama } from "./ChatOllama"
|
||||||
|
|
||||||
|
export const pageAssistModel = async ({
|
||||||
|
model,
|
||||||
|
baseUrl,
|
||||||
|
keepAlive,
|
||||||
|
temperature,
|
||||||
|
topK,
|
||||||
|
topP,
|
||||||
|
numCtx,
|
||||||
|
seed
|
||||||
|
}: {
|
||||||
|
model: string
|
||||||
|
baseUrl: string
|
||||||
|
keepAlive: string
|
||||||
|
temperature: number
|
||||||
|
topK: number
|
||||||
|
topP: number
|
||||||
|
numCtx: number
|
||||||
|
seed: number
|
||||||
|
}) => {
|
||||||
|
switch (model) {
|
||||||
|
case "chrome::gemini-nano::page-assist":
|
||||||
|
return new ChatChromeAI({
|
||||||
|
temperature,
|
||||||
|
topK
|
||||||
|
})
|
||||||
|
default:
|
||||||
|
return new ChatOllama({
|
||||||
|
baseUrl,
|
||||||
|
keepAlive,
|
||||||
|
temperature,
|
||||||
|
topK,
|
||||||
|
topP,
|
||||||
|
numCtx,
|
||||||
|
seed,
|
||||||
|
model
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
@ -1,184 +1,189 @@
|
|||||||
import { IterableReadableStream } from "@langchain/core/utils/stream";
|
import { IterableReadableStream } from "@langchain/core/utils/stream"
|
||||||
import type { StringWithAutocomplete } from "@langchain/core/utils/types";
|
import type { StringWithAutocomplete } from "@langchain/core/utils/types"
|
||||||
import { BaseLanguageModelCallOptions } from "@langchain/core/language_models/base";
|
import { BaseLanguageModelCallOptions } from "@langchain/core/language_models/base"
|
||||||
|
import { getCustomOllamaHeaders } from "@/services/app"
|
||||||
|
|
||||||
export interface OllamaInput {
|
export interface OllamaInput {
|
||||||
embeddingOnly?: boolean;
|
embeddingOnly?: boolean
|
||||||
f16KV?: boolean;
|
f16KV?: boolean
|
||||||
frequencyPenalty?: number;
|
frequencyPenalty?: number
|
||||||
headers?: Record<string, string>;
|
headers?: Record<string, string>
|
||||||
keepAlive?: any;
|
keepAlive?: any
|
||||||
logitsAll?: boolean;
|
logitsAll?: boolean
|
||||||
lowVram?: boolean;
|
lowVram?: boolean
|
||||||
mainGpu?: number;
|
mainGpu?: number
|
||||||
model?: string;
|
model?: string
|
||||||
baseUrl?: string;
|
baseUrl?: string
|
||||||
mirostat?: number;
|
mirostat?: number
|
||||||
mirostatEta?: number;
|
mirostatEta?: number
|
||||||
mirostatTau?: number;
|
mirostatTau?: number
|
||||||
numBatch?: number;
|
numBatch?: number
|
||||||
numCtx?: number;
|
numCtx?: number
|
||||||
numGpu?: number;
|
numGpu?: number
|
||||||
numGqa?: number;
|
numGqa?: number
|
||||||
numKeep?: number;
|
numKeep?: number
|
||||||
numPredict?: number;
|
numPredict?: number
|
||||||
numThread?: number;
|
numThread?: number
|
||||||
penalizeNewline?: boolean;
|
penalizeNewline?: boolean
|
||||||
presencePenalty?: number;
|
presencePenalty?: number
|
||||||
repeatLastN?: number;
|
repeatLastN?: number
|
||||||
repeatPenalty?: number;
|
repeatPenalty?: number
|
||||||
ropeFrequencyBase?: number;
|
ropeFrequencyBase?: number
|
||||||
ropeFrequencyScale?: number;
|
ropeFrequencyScale?: number
|
||||||
temperature?: number;
|
temperature?: number
|
||||||
stop?: string[];
|
stop?: string[]
|
||||||
tfsZ?: number;
|
tfsZ?: number
|
||||||
topK?: number;
|
topK?: number
|
||||||
topP?: number;
|
topP?: number
|
||||||
typicalP?: number;
|
typicalP?: number
|
||||||
useMLock?: boolean;
|
useMLock?: boolean
|
||||||
useMMap?: boolean;
|
useMMap?: boolean
|
||||||
vocabOnly?: boolean;
|
vocabOnly?: boolean
|
||||||
seed?: number;
|
seed?: number
|
||||||
format?: StringWithAutocomplete<"json">;
|
format?: StringWithAutocomplete<"json">
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface OllamaRequestParams {
|
export interface OllamaRequestParams {
|
||||||
model: string;
|
model: string
|
||||||
format?: StringWithAutocomplete<"json">;
|
format?: StringWithAutocomplete<"json">
|
||||||
images?: string[];
|
images?: string[]
|
||||||
options: {
|
options: {
|
||||||
embedding_only?: boolean;
|
embedding_only?: boolean
|
||||||
f16_kv?: boolean;
|
f16_kv?: boolean
|
||||||
frequency_penalty?: number;
|
frequency_penalty?: number
|
||||||
logits_all?: boolean;
|
logits_all?: boolean
|
||||||
low_vram?: boolean;
|
low_vram?: boolean
|
||||||
main_gpu?: number;
|
main_gpu?: number
|
||||||
mirostat?: number;
|
mirostat?: number
|
||||||
mirostat_eta?: number;
|
mirostat_eta?: number
|
||||||
mirostat_tau?: number;
|
mirostat_tau?: number
|
||||||
num_batch?: number;
|
num_batch?: number
|
||||||
num_ctx?: number;
|
num_ctx?: number
|
||||||
num_gpu?: number;
|
num_gpu?: number
|
||||||
num_gqa?: number;
|
num_gqa?: number
|
||||||
num_keep?: number;
|
num_keep?: number
|
||||||
num_thread?: number;
|
num_thread?: number
|
||||||
num_predict?: number;
|
num_predict?: number
|
||||||
penalize_newline?: boolean;
|
penalize_newline?: boolean
|
||||||
presence_penalty?: number;
|
presence_penalty?: number
|
||||||
repeat_last_n?: number;
|
repeat_last_n?: number
|
||||||
repeat_penalty?: number;
|
repeat_penalty?: number
|
||||||
rope_frequency_base?: number;
|
rope_frequency_base?: number
|
||||||
rope_frequency_scale?: number;
|
rope_frequency_scale?: number
|
||||||
temperature?: number;
|
temperature?: number
|
||||||
stop?: string[];
|
stop?: string[]
|
||||||
tfs_z?: number;
|
tfs_z?: number
|
||||||
top_k?: number;
|
top_k?: number
|
||||||
top_p?: number;
|
top_p?: number
|
||||||
typical_p?: number;
|
typical_p?: number
|
||||||
use_mlock?: boolean;
|
use_mlock?: boolean
|
||||||
use_mmap?: boolean;
|
use_mmap?: boolean
|
||||||
vocab_only?: boolean;
|
vocab_only?: boolean
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export type OllamaMessage = {
|
export type OllamaMessage = {
|
||||||
role: StringWithAutocomplete<"user" | "assistant" | "system">;
|
role: StringWithAutocomplete<"user" | "assistant" | "system">
|
||||||
content: string;
|
content: string
|
||||||
images?: string[];
|
images?: string[]
|
||||||
};
|
}
|
||||||
|
|
||||||
export interface OllamaGenerateRequestParams extends OllamaRequestParams {
|
export interface OllamaGenerateRequestParams extends OllamaRequestParams {
|
||||||
prompt: string;
|
prompt: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface OllamaChatRequestParams extends OllamaRequestParams {
|
export interface OllamaChatRequestParams extends OllamaRequestParams {
|
||||||
messages: OllamaMessage[];
|
messages: OllamaMessage[]
|
||||||
}
|
}
|
||||||
|
|
||||||
export type BaseOllamaGenerationChunk = {
|
export type BaseOllamaGenerationChunk = {
|
||||||
model: string;
|
model: string
|
||||||
created_at: string;
|
created_at: string
|
||||||
done: boolean;
|
done: boolean
|
||||||
total_duration?: number;
|
total_duration?: number
|
||||||
load_duration?: number;
|
load_duration?: number
|
||||||
prompt_eval_count?: number;
|
prompt_eval_count?: number
|
||||||
prompt_eval_duration?: number;
|
prompt_eval_duration?: number
|
||||||
eval_count?: number;
|
eval_count?: number
|
||||||
eval_duration?: number;
|
eval_duration?: number
|
||||||
};
|
}
|
||||||
|
|
||||||
export type OllamaGenerationChunk = BaseOllamaGenerationChunk & {
|
export type OllamaGenerationChunk = BaseOllamaGenerationChunk & {
|
||||||
response: string;
|
response: string
|
||||||
};
|
}
|
||||||
|
|
||||||
export type OllamaChatGenerationChunk = BaseOllamaGenerationChunk & {
|
export type OllamaChatGenerationChunk = BaseOllamaGenerationChunk & {
|
||||||
message: OllamaMessage;
|
message: OllamaMessage
|
||||||
};
|
}
|
||||||
|
|
||||||
export type OllamaCallOptions = BaseLanguageModelCallOptions & {
|
export type OllamaCallOptions = BaseLanguageModelCallOptions & {
|
||||||
headers?: Record<string, string>;
|
headers?: Record<string, string>
|
||||||
};
|
}
|
||||||
|
|
||||||
async function* createOllamaStream(
|
async function* createOllamaStream(
|
||||||
url: string,
|
url: string,
|
||||||
params: OllamaRequestParams,
|
params: OllamaRequestParams,
|
||||||
options: OllamaCallOptions
|
options: OllamaCallOptions
|
||||||
) {
|
) {
|
||||||
let formattedUrl = url;
|
let formattedUrl = url
|
||||||
if (formattedUrl.startsWith("http://localhost:")) {
|
if (formattedUrl.startsWith("http://localhost:")) {
|
||||||
// Node 18 has issues with resolving "localhost"
|
// Node 18 has issues with resolving "localhost"
|
||||||
// See https://github.com/node-fetch/node-fetch/issues/1624
|
// See https://github.com/node-fetch/node-fetch/issues/1624
|
||||||
formattedUrl = formattedUrl.replace(
|
formattedUrl = formattedUrl.replace(
|
||||||
"http://localhost:",
|
"http://localhost:",
|
||||||
"http://127.0.0.1:"
|
"http://127.0.0.1:"
|
||||||
);
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const customHeaders = await getCustomOllamaHeaders()
|
||||||
|
|
||||||
const response = await fetch(formattedUrl, {
|
const response = await fetch(formattedUrl, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
body: JSON.stringify(params),
|
body: JSON.stringify(params),
|
||||||
headers: {
|
headers: {
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
...options.headers,
|
...options.headers,
|
||||||
|
...customHeaders
|
||||||
},
|
},
|
||||||
signal: options.signal,
|
signal: options.signal
|
||||||
});
|
})
|
||||||
if (!response.ok) {
|
if (!response.ok) {
|
||||||
let error;
|
let error
|
||||||
const responseText = await response.text();
|
const responseText = await response.text()
|
||||||
try {
|
try {
|
||||||
const json = JSON.parse(responseText);
|
const json = JSON.parse(responseText)
|
||||||
error = new Error(
|
error = new Error(
|
||||||
`Ollama call failed with status code ${response.status}: ${json.error}`
|
`Ollama call failed with status code ${response.status}: ${json.error}`
|
||||||
);
|
)
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
error = new Error(
|
error = new Error(
|
||||||
`Ollama call failed with status code ${response.status}: ${responseText}`
|
`Ollama call failed with status code ${response.status}: ${responseText}`
|
||||||
);
|
)
|
||||||
}
|
}
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
(error as any).response = response;
|
;(error as any).response = response
|
||||||
throw error;
|
throw error
|
||||||
}
|
}
|
||||||
if (!response.body) {
|
if (!response.body) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
"Could not begin Ollama stream. Please check the given URL and try again."
|
"Could not begin Ollama stream. Please check the given URL and try again."
|
||||||
);
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const stream = IterableReadableStream.fromReadableStream(response.body);
|
const stream = IterableReadableStream.fromReadableStream(response.body)
|
||||||
|
|
||||||
const decoder = new TextDecoder();
|
const decoder = new TextDecoder()
|
||||||
let extra = "";
|
let extra = ""
|
||||||
for await (const chunk of stream) {
|
for await (const chunk of stream) {
|
||||||
const decoded = extra + decoder.decode(chunk);
|
const decoded = extra + decoder.decode(chunk)
|
||||||
const lines = decoded.split("\n");
|
const lines = decoded.split("\n")
|
||||||
extra = lines.pop() || "";
|
extra = lines.pop() || ""
|
||||||
for (const line of lines) {
|
for (const line of lines) {
|
||||||
try {
|
try {
|
||||||
yield JSON.parse(line);
|
yield JSON.parse(line)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.warn(`Received a non-JSON parseable chunk: ${line}`);
|
console.warn(`Received a non-JSON parseable chunk: ${line}`)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -189,7 +194,7 @@ export async function* createOllamaGenerateStream(
|
|||||||
params: OllamaGenerateRequestParams,
|
params: OllamaGenerateRequestParams,
|
||||||
options: OllamaCallOptions
|
options: OllamaCallOptions
|
||||||
): AsyncGenerator<OllamaGenerationChunk> {
|
): AsyncGenerator<OllamaGenerationChunk> {
|
||||||
yield* createOllamaStream(`${baseUrl}/api/generate`, params, options);
|
yield* createOllamaStream(`${baseUrl}/api/generate`, params, options)
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function* createOllamaChatStream(
|
export async function* createOllamaChatStream(
|
||||||
@ -197,13 +202,12 @@ export async function* createOllamaChatStream(
|
|||||||
params: OllamaChatRequestParams,
|
params: OllamaChatRequestParams,
|
||||||
options: OllamaCallOptions
|
options: OllamaCallOptions
|
||||||
): AsyncGenerator<OllamaChatGenerationChunk> {
|
): AsyncGenerator<OllamaChatGenerationChunk> {
|
||||||
yield* createOllamaStream(`${baseUrl}/api/chat`, params, options);
|
yield* createOllamaStream(`${baseUrl}/api/chat`, params, options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export const parseKeepAlive = (keepAlive: any) => {
|
export const parseKeepAlive = (keepAlive: any) => {
|
||||||
if (keepAlive === "-1") {
|
if (keepAlive === "-1") {
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
return keepAlive
|
return keepAlive
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import OptionAbout from "./option-settings-about"
|
|||||||
import SidepanelChat from "./sidepanel-chat"
|
import SidepanelChat from "./sidepanel-chat"
|
||||||
import SidepanelSettings from "./sidepanel-settings"
|
import SidepanelSettings from "./sidepanel-settings"
|
||||||
import OptionRagSettings from "./option-rag"
|
import OptionRagSettings from "./option-rag"
|
||||||
|
import OptionChrome from "./option-settings-chrome"
|
||||||
|
|
||||||
export const OptionRoutingChrome = () => {
|
export const OptionRoutingChrome = () => {
|
||||||
return (
|
return (
|
||||||
@ -19,6 +20,7 @@ export const OptionRoutingChrome = () => {
|
|||||||
<Route path="/settings/model" element={<OptionModal />} />
|
<Route path="/settings/model" element={<OptionModal />} />
|
||||||
<Route path="/settings/prompt" element={<OptionPrompt />} />
|
<Route path="/settings/prompt" element={<OptionPrompt />} />
|
||||||
<Route path="/settings/ollama" element={<OptionOllamaSettings />} />
|
<Route path="/settings/ollama" element={<OptionOllamaSettings />} />
|
||||||
|
<Route path="/settings/chrome" element={<OptionChrome />} />
|
||||||
<Route path="/settings/share" element={<OptionShare />} />
|
<Route path="/settings/share" element={<OptionShare />} />
|
||||||
<Route path="/settings/knowledge" element={<OptionKnowledgeBase />} />
|
<Route path="/settings/knowledge" element={<OptionKnowledgeBase />} />
|
||||||
<Route path="/settings/rag" element={<OptionRagSettings />} />
|
<Route path="/settings/rag" element={<OptionRagSettings />} />
|
||||||
|
15
src/routes/option-settings-chrome.tsx
Normal file
15
src/routes/option-settings-chrome.tsx
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
import { SettingsLayout } from "~/components/Layouts/SettingsOptionLayout"
|
||||||
|
import OptionLayout from "~/components/Layouts/Layout"
|
||||||
|
import { ChromeApp } from "@/components/Option/Settings/chrome"
|
||||||
|
|
||||||
|
const OptionChrome = () => {
|
||||||
|
return (
|
||||||
|
<OptionLayout>
|
||||||
|
<SettingsLayout>
|
||||||
|
<ChromeApp />
|
||||||
|
</SettingsLayout>
|
||||||
|
</OptionLayout>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default OptionChrome
|
@ -5,10 +5,10 @@ const DEFAULT_URL_REWRITE_URL = "http://127.0.0.1:11434"
|
|||||||
|
|
||||||
export const isUrlRewriteEnabled = async () => {
|
export const isUrlRewriteEnabled = async () => {
|
||||||
const enabled = await storage.get<boolean | undefined>("urlRewriteEnabled")
|
const enabled = await storage.get<boolean | undefined>("urlRewriteEnabled")
|
||||||
return enabled
|
return enabled ?? false
|
||||||
}
|
}
|
||||||
export const setUrlRewriteEnabled = async (enabled: boolean) => {
|
export const setUrlRewriteEnabled = async (enabled: boolean) => {
|
||||||
await storage.set("urlRewriteEnabled", enabled ? "true" : "false")
|
await storage.set("urlRewriteEnabled", enabled)
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getRewriteUrl = async () => {
|
export const getRewriteUrl = async () => {
|
||||||
@ -35,12 +35,10 @@ export const getAdvancedOllamaSettings = async () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export const copilotResumeLastChat = async () => {
|
export const copilotResumeLastChat = async () => {
|
||||||
return await storage.get<boolean>("copilotResumeLastChat")
|
return await storage.get<boolean>("copilotResumeLastChat")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export const defaultSidebarOpen = async () => {
|
export const defaultSidebarOpen = async () => {
|
||||||
const sidebarOpen = await storage.get("sidebarOpen")
|
const sidebarOpen = await storage.get("sidebarOpen")
|
||||||
if (!sidebarOpen || sidebarOpen === "") {
|
if (!sidebarOpen || sidebarOpen === "") {
|
||||||
@ -49,7 +47,36 @@ export const defaultSidebarOpen = async () => {
|
|||||||
return sidebarOpen
|
return sidebarOpen
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export const setSidebarOpen = async (sidebarOpen: string) => {
|
export const setSidebarOpen = async (sidebarOpen: string) => {
|
||||||
await storage.set("sidebarOpen", sidebarOpen)
|
await storage.set("sidebarOpen", sidebarOpen)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const customOllamaHeaders = async (): Promise<
|
||||||
|
{ key: string; value: string }[]
|
||||||
|
> => {
|
||||||
|
const headers = await storage.get<
|
||||||
|
{ key: string; value: string }[] | undefined
|
||||||
|
>("customOllamaHeaders")
|
||||||
|
if (!headers) {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
return headers
|
||||||
|
}
|
||||||
|
|
||||||
|
export const setCustomOllamaHeaders = async (headers: string[]) => {
|
||||||
|
await storage.set("customOllamaHeaders", headers)
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getCustomOllamaHeaders = async (): Promise<
|
||||||
|
Record<string, string>
|
||||||
|
> => {
|
||||||
|
const headers = await customOllamaHeaders()
|
||||||
|
|
||||||
|
const headerMap: Record<string, string> = {}
|
||||||
|
|
||||||
|
for (const header of headers) {
|
||||||
|
headerMap[header.key] = header.value
|
||||||
|
}
|
||||||
|
|
||||||
|
return headerMap
|
||||||
|
}
|
||||||
|
38
src/services/chrome.ts
Normal file
38
src/services/chrome.ts
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
import { Storage } from "@plasmohq/storage"
|
||||||
|
|
||||||
|
const storage = new Storage()
|
||||||
|
|
||||||
|
const DEFAULT_CHROME_AI_MODEL = {
|
||||||
|
name: "Gemini Nano",
|
||||||
|
model: "chrome::gemini-nano::page-assist",
|
||||||
|
modified_at: "",
|
||||||
|
provider: "chrome",
|
||||||
|
size: 0,
|
||||||
|
digest: "",
|
||||||
|
details: {
|
||||||
|
parent_model: "",
|
||||||
|
format: "",
|
||||||
|
family: "",
|
||||||
|
families: [],
|
||||||
|
parameter_size: "",
|
||||||
|
quantization_level: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getChromeAIStatus = async (): Promise<boolean> => {
|
||||||
|
const aiStatus = await storage.get<boolean | undefined>("chromeAIStatus")
|
||||||
|
return aiStatus ?? false
|
||||||
|
}
|
||||||
|
|
||||||
|
export const setChromeAIStatus = async (status: boolean): Promise<void> => {
|
||||||
|
await storage.set("chromeAIStatus", status)
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getChromeAIModel = async () => {
|
||||||
|
const isEnable = await getChromeAIStatus()
|
||||||
|
if (isEnable) {
|
||||||
|
return [DEFAULT_CHROME_AI_MODEL]
|
||||||
|
} else {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
import { Storage } from "@plasmohq/storage"
|
import { Storage } from "@plasmohq/storage"
|
||||||
import { cleanUrl } from "../libs/clean-url"
|
import { cleanUrl } from "../libs/clean-url"
|
||||||
import { urlRewriteRuntime } from "../libs/runtime"
|
import { urlRewriteRuntime } from "../libs/runtime"
|
||||||
|
import { getChromeAIModel } from "./chrome"
|
||||||
|
|
||||||
const storage = new Storage()
|
const storage = new Storage()
|
||||||
|
|
||||||
@ -144,6 +145,7 @@ export const deleteModel = async (model: string) => {
|
|||||||
return response.json()
|
return response.json()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export const fetchChatModels = async ({
|
export const fetchChatModels = async ({
|
||||||
returnEmpty = false
|
returnEmpty = false
|
||||||
}: {
|
}: {
|
||||||
@ -174,15 +176,39 @@ export const fetchChatModels = async ({
|
|||||||
quantization_level: string
|
quantization_level: string
|
||||||
}
|
}
|
||||||
}[]
|
}[]
|
||||||
return models?.filter((model) => {
|
const chatModels = models
|
||||||
return (
|
?.filter((model) => {
|
||||||
!model?.details?.families?.includes("bert") &&
|
return (
|
||||||
!model?.details?.families?.includes("nomic-bert")
|
!model?.details?.families?.includes("bert") &&
|
||||||
)
|
!model?.details?.families?.includes("nomic-bert")
|
||||||
})
|
)
|
||||||
|
})
|
||||||
|
.map((model) => {
|
||||||
|
return {
|
||||||
|
...model,
|
||||||
|
provider: "ollama"
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const chromeModel = await getChromeAIModel()
|
||||||
|
return [
|
||||||
|
...chatModels,
|
||||||
|
...chromeModel
|
||||||
|
]
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e)
|
console.error(e)
|
||||||
return await getAllModels({ returnEmpty })
|
const allModels = await getAllModels({ returnEmpty })
|
||||||
|
const models = allModels.map((model) => {
|
||||||
|
return {
|
||||||
|
...model,
|
||||||
|
provider: "ollama"
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const chromeModel = await getChromeAIModel()
|
||||||
|
|
||||||
|
return [
|
||||||
|
...models,
|
||||||
|
...chromeModel
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -345,4 +371,3 @@ export const getPageShareUrl = async () => {
|
|||||||
export const setPageShareUrl = async (pageShareUrl: string) => {
|
export const setPageShareUrl = async (pageShareUrl: string) => {
|
||||||
await storage.set("pageShareUrl", pageShareUrl)
|
await storage.set("pageShareUrl", pageShareUrl)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
30
src/utils/chrome.ts
Normal file
30
src/utils/chrome.ts
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
export const getChromeAISupported = async () => {
|
||||||
|
try {
|
||||||
|
let browserInfo = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./)
|
||||||
|
let version = browserInfo ? parseInt(browserInfo[2], 10) : 0
|
||||||
|
|
||||||
|
if (version < 127) {
|
||||||
|
return "browser_not_supported"
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!("ai" in globalThis)) {
|
||||||
|
return "ai_not_supported"
|
||||||
|
}
|
||||||
|
|
||||||
|
//@ts-ignore
|
||||||
|
const createSession = await ai?.canCreateGenericSession()
|
||||||
|
if (createSession !== "readily") {
|
||||||
|
return "ai_not_ready"
|
||||||
|
}
|
||||||
|
|
||||||
|
return "success"
|
||||||
|
} catch (e) {
|
||||||
|
console.error(e)
|
||||||
|
return "internal_error"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const isChromeAISupported = async () => {
|
||||||
|
const result = await getChromeAISupported()
|
||||||
|
return result === "success"
|
||||||
|
}
|
@ -48,7 +48,7 @@ export default defineConfig({
|
|||||||
outDir: "build",
|
outDir: "build",
|
||||||
|
|
||||||
manifest: {
|
manifest: {
|
||||||
version: "1.1.13",
|
version: "1.1.14",
|
||||||
name:
|
name:
|
||||||
process.env.TARGET === "firefox"
|
process.env.TARGET === "firefox"
|
||||||
? "Page Assist - A Web UI for Local AI Models"
|
? "Page Assist - A Web UI for Local AI Models"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user