From 5051bfe7ab9a484b91193375f856cd794d056e50 Mon Sep 17 00:00:00 2001 From: Selene Blok Date: Fri, 22 Aug 2025 16:00:44 +0200 Subject: [PATCH 01/74] feat(document retrieval): Authenticate Azure Document Intelligence using AzureDefaultCredential if API key is not provided --- backend/open_webui/retrieval/loaders/main.py | 19 +++++++++++++------ .../admin/Settings/Documents.svelte | 6 +++--- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/backend/open_webui/retrieval/loaders/main.py b/backend/open_webui/retrieval/loaders/main.py index 241cd7dbe8..c301d0b7c8 100644 --- a/backend/open_webui/retrieval/loaders/main.py +++ b/backend/open_webui/retrieval/loaders/main.py @@ -4,6 +4,7 @@ import ftfy import sys import json +from azure.identity import DefaultAzureCredential from langchain_community.document_loaders import ( AzureAIDocumentIntelligenceLoader, BSHTMLLoader, @@ -327,7 +328,6 @@ class Loader: elif ( self.engine == "document_intelligence" and self.kwargs.get("DOCUMENT_INTELLIGENCE_ENDPOINT") != "" - and self.kwargs.get("DOCUMENT_INTELLIGENCE_KEY") != "" and ( file_ext in ["pdf", "xls", "xlsx", "docx", "ppt", "pptx"] or file_content_type @@ -340,11 +340,18 @@ class Loader: ] ) ): - loader = AzureAIDocumentIntelligenceLoader( - file_path=file_path, - api_endpoint=self.kwargs.get("DOCUMENT_INTELLIGENCE_ENDPOINT"), - api_key=self.kwargs.get("DOCUMENT_INTELLIGENCE_KEY"), - ) + if self.kwargs.get("DOCUMENT_INTELLIGENCE_KEY") != "": + loader = AzureAIDocumentIntelligenceLoader( + file_path=file_path, + api_endpoint=self.kwargs.get("DOCUMENT_INTELLIGENCE_ENDPOINT"), + api_key=self.kwargs.get("DOCUMENT_INTELLIGENCE_KEY"), + ) + else: + loader = AzureAIDocumentIntelligenceLoader( + file_path=file_path, + api_endpoint=self.kwargs.get("DOCUMENT_INTELLIGENCE_ENDPOINT"), + azure_credential=DefaultAzureCredential(), + ) elif ( self.engine == "mistral_ocr" and self.kwargs.get("MISTRAL_OCR_API_KEY") != "" diff --git a/src/lib/components/admin/Settings/Documents.svelte b/src/lib/components/admin/Settings/Documents.svelte index f6e0fa9659..d3a244fa45 100644 --- a/src/lib/components/admin/Settings/Documents.svelte +++ b/src/lib/components/admin/Settings/Documents.svelte @@ -185,10 +185,9 @@ if ( RAGConfig.CONTENT_EXTRACTION_ENGINE === 'document_intelligence' && - (RAGConfig.DOCUMENT_INTELLIGENCE_ENDPOINT === '' || - RAGConfig.DOCUMENT_INTELLIGENCE_KEY === '') + RAGConfig.DOCUMENT_INTELLIGENCE_ENDPOINT === '' ) { - toast.error($i18n.t('Document Intelligence endpoint and key required.')); + toast.error($i18n.t('Document Intelligence endpoint required.')); return; } if ( @@ -644,6 +643,7 @@ {:else if RAGConfig.CONTENT_EXTRACTION_ENGINE === 'mistral_ocr'} From 9e7ec0eb1ea22442e4fb10df9fa1cdb98c975979 Mon Sep 17 00:00:00 2001 From: silentoplayz Date: Fri, 22 Aug 2025 16:09:21 -0400 Subject: [PATCH 02/74] feat: add shift-to-delete to prompts workspace This commit adds the Shift key shortcut to the Prompts workspace page to reveal a trash can icon for quick deletion of prompts. This feature is already present for the Models, Tools, and Functions pages. --- src/lib/components/workspace/Prompts.svelte | 138 ++++++++++++++------ 1 file changed, 95 insertions(+), 43 deletions(-) diff --git a/src/lib/components/workspace/Prompts.svelte b/src/lib/components/workspace/Prompts.svelte index 9a0c4733a6..ea8b942c72 100644 --- a/src/lib/components/workspace/Prompts.svelte +++ b/src/lib/components/workspace/Prompts.svelte @@ -24,6 +24,9 @@ import Tooltip from '../common/Tooltip.svelte'; import { capitalizeFirstLetter, slugify } from '$lib/utils'; import XMark from '../icons/XMark.svelte'; + import GarbageBin from '../icons/GarbageBin.svelte'; + + let shiftKey = false; const i18n = getContext('i18n'); let promptsImportInputElement: HTMLInputElement; @@ -89,7 +92,16 @@ const deleteHandler = async (prompt) => { const command = prompt.command; - await deletePromptByCommand(localStorage.token, command); + + const res = await deletePromptByCommand(localStorage.token, command).catch((err) => { + toast.error(err); + return null; + }); + + if (res) { + toast.success($i18n.t(`Deleted {{name}}`, { name: command })); + } + await init(); }; @@ -101,6 +113,32 @@ onMount(async () => { await init(); loaded = true; + + const onKeyDown = (event) => { + if (event.key === 'Shift') { + shiftKey = true; + } + }; + + const onKeyUp = (event) => { + if (event.key === 'Shift') { + shiftKey = false; + } + }; + + const onBlur = () => { + shiftKey = false; + }; + + window.addEventListener('keydown', onKeyDown); + window.addEventListener('keyup', onKeyUp); + window.addEventListener('blur', onBlur); + + return () => { + window.removeEventListener('keydown', onKeyDown); + window.removeEventListener('keyup', onKeyUp); + window.removeEventListener('blur', onBlur); + }; }); @@ -202,50 +240,64 @@
- - - - - - - { - shareHandler(prompt); - }} - cloneHandler={() => { - cloneHandler(prompt); - }} - exportHandler={() => { - exportHandler(prompt); - }} - deleteHandler={async () => { - deletePrompt = prompt; - showDeleteConfirm = true; - }} - onClose={() => {}} - > - + + {:else} + - - - + + + + + + { + shareHandler(prompt); + }} + cloneHandler={() => { + cloneHandler(prompt); + }} + exportHandler={() => { + exportHandler(prompt); + }} + deleteHandler={async () => { + deletePrompt = prompt; + showDeleteConfirm = true; + }} + onClose={() => {}} + > + + + {/if}
{/each} From fa1590df57362febab5b9ef977f72237d66f4859 Mon Sep 17 00:00:00 2001 From: Kylapaallikko Date: Sat, 23 Aug 2025 09:16:49 +0300 Subject: [PATCH 03/74] Update fi-FI translation.json Added missing translations and fixed typos. --- src/lib/i18n/locales/fi-FI/translation.json | 180 ++++++++++---------- 1 file changed, 90 insertions(+), 90 deletions(-) diff --git a/src/lib/i18n/locales/fi-FI/translation.json b/src/lib/i18n/locales/fi-FI/translation.json index 9de82a6938..ff53dec732 100644 --- a/src/lib/i18n/locales/fi-FI/translation.json +++ b/src/lib/i18n/locales/fi-FI/translation.json @@ -7,7 +7,7 @@ "(leave blank for to use commercial endpoint)": "(Jätä tyhjäksi, jos haluat käyttää kaupallista päätepistettä)", "[Last] dddd [at] h:mm A": "[Viimeisin] dddd h:mm A", "[Today at] h:mm A": "[Tänään] h:mm A", - "[Yesterday at] h:mm A": "[Huommenna] h:mm A", + "[Yesterday at] h:mm A": "[Eilen] h:mm A", "{{ models }}": "{{ mallit }}", "{{COUNT}} Available Tools": "{{COUNT}} työkalua saatavilla", "{{COUNT}} characters": "{{COUNT}} kirjainta", @@ -30,7 +30,7 @@ "Account Activation Pending": "Tilin aktivointi odottaa", "Accurate information": "Tarkkaa tietoa", "Action": "Toiminto", - "Action not found": "", + "Action not found": "Toimintoa ei löytynyt", "Action Required for Chat Log Storage": "Toiminto vaaditaan keskustelulokin tallentamiseksi", "Actions": "Toiminnot", "Activate": "Aktivoi", @@ -101,7 +101,7 @@ "Always Play Notification Sound": "Toista aina ilmoitusääni", "Amazing": "Hämmästyttävä", "an assistant": "avustaja", - "An error occurred while fetching the explanation": "", + "An error occurred while fetching the explanation": "Tapahtui virhe hakiessa selitystä", "Analytics": "Analytiikka", "Analyzed": "Analysoitu", "Analyzing...": "Analysoidaan..", @@ -111,14 +111,14 @@ "Android": "Android", "API": "API", "API Base URL": "API:n verkko-osoite", - "API Base URL for Datalab Marker service. Defaults to: https://www.datalab.to/api/v1/marker": "", - "API details for using a vision-language model in the picture description. This parameter is mutually exclusive with picture_description_local.": "", + "API Base URL for Datalab Marker service. Defaults to: https://www.datalab.to/api/v1/marker": "API verkko-osoite Datalabb Marker palveluun. Oletuksena: https://www.datalab.to/api/v1/marker", + "API details for using a vision-language model in the picture description. This parameter is mutually exclusive with picture_description_local.": "Kuvan kuvaus API-asetukset näkömallin käyttöön. Tämä parametri on toisensa poissulkeva picture_description_local-parametrin kanssa.", "API Key": "API-avain", "API Key created.": "API-avain luotu.", "API Key Endpoint Restrictions": "API-avaimen päätepiste rajoitukset", "API keys": "API-avaimet", "API Version": "API-versio", - "API Version is required": "", + "API Version is required": "API-versio vaaditaan", "Application DN": "Sovelluksen DN", "Application DN Password": "Sovelluksen DN-salasana", "applies to all users with the \"user\" role": "koskee kaikkia käyttäjiä, joilla on \"käyttäjä\"-rooli", @@ -169,15 +169,15 @@ "Banners": "Bannerit", "Base Model (From)": "Perusmalli (alkaen)", "Base Model List Cache speeds up access by fetching base models only at startup or on settings save—faster, but may not show recent base model changes.": "", - "Bearer": "", + "Bearer": "Bearer", "before": "ennen", "Being lazy": "Oli laiska", "Beta": "Beta", "Bing Search V7 Endpoint": "Bing Search V7 -päätepisteen osoite", "Bing Search V7 Subscription Key": "Bing Search V7 -tilauskäyttäjäavain", - "Bio": "", - "Birth Date": "", - "BM25 Weight": "", + "Bio": "Elämänkerta", + "Birth Date": "Syntymäpäivä", + "BM25 Weight": "BM25 paino", "Bocha Search API Key": "Bocha Search API -avain", "Bold": "Lihavointi", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "", @@ -201,9 +201,9 @@ "Capture Audio": "Kaappaa ääntä", "Certificate Path": "Varmennepolku", "Change Password": "Vaihda salasana", - "Channel deleted successfully": "", + "Channel deleted successfully": "Kanavan poisto onnistui", "Channel Name": "Kanavan nimi", - "Channel updated successfully": "", + "Channel updated successfully": "Kanavan päivitys onnistui", "Channels": "Kanavat", "Character": "Kirjain", "Character limit for autocomplete generation input": "Automaattisen täydennyksen syötteen merkkiraja", @@ -212,10 +212,10 @@ "Chat Background Image": "Keskustelun taustakuva", "Chat Bubble UI": "Keskustelu-pallojen käyttöliittymä", "Chat Controls": "Keskustelun hallinta", - "Chat Conversation": "", + "Chat Conversation": "Chat-keskustelut", "Chat direction": "Keskustelun suunta", "Chat ID": "Keskustelu ID", - "Chat moved successfully": "", + "Chat moved successfully": "Keskustelu siirrettiin onnistuneesti", "Chat Overview": "Keskustelun yleiskatsaus", "Chat Permissions": "Keskustelun käyttöoikeudet", "Chat Tags Auto-Generation": "Keskustelutunnisteiden automaattinen luonti", @@ -254,7 +254,7 @@ "Close modal": "Sulje modaali", "Close settings modal": "Sulje asetus modaali", "Close Sidebar": "Sulje sivupalkki", - "CMU ARCTIC speaker embedding name": "", + "CMU ARCTIC speaker embedding name": "CMU ARCTIC puhujan upotus nimi", "Code Block": "Koodiblokki", "Code execution": "Koodin suoritus", "Code Execution": "Koodin Suoritus", @@ -273,13 +273,13 @@ "ComfyUI Base URL is required.": "ComfyUI verkko-osoite vaaditaan.", "ComfyUI Workflow": "ComfyUI-työnkulku", "ComfyUI Workflow Nodes": "ComfyUI-työnkulun solmut", - "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma separated Node Ids (e.g. 1 or 1,2)": "Pilkulla erotellut Node Id:t (esim. 1 tai 1,2)", "Command": "Komento", "Comment": "Kommentti", "Completions": "Täydennykset", "Compress Images in Channels": "Pakkaa kuvat kanavissa", "Concurrent Requests": "Samanaikaiset pyynnöt", - "Config imported successfully": "", + "Config imported successfully": "Määritysten tuonti onnistui", "Configure": "Määritä", "Confirm": "Vahvista", "Confirm Password": "Vahvista salasana", @@ -306,7 +306,7 @@ "Control the repetition of token sequences in the generated text. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 1.1) will be more lenient. At 1, it is disabled.": "", "Controls": "Ohjaimet", "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text.": "Kontrolloi yhtenäisyyden ja monimuotoisuuden tasapainoa tuloksessa. Pienempi arvo tuottaa kohdennetumman ja johdonmukaisemman tekstin.", - "Conversation saved successfully": "", + "Conversation saved successfully": "Keskustelun tallennus onnistui", "Copied": "Kopioitu", "Copied link to clipboard": "Linkki kopioitu leikepöydälle", "Copied shared chat URL to clipboard!": "Jaettu keskustelulinkki kopioitu leikepöydälle!", @@ -351,7 +351,7 @@ "Datalab Marker API Key required.": "Datalab Marker API-avain vaaditaan.", "DD/MM/YYYY": "DD/MM/YYYY", "December": "joulukuu", - "Deepgram": "", + "Deepgram": "Deepgram", "Default": "Oletus", "Default (Open AI)": "Oletus (Open AI)", "Default (SentenceTransformers)": "Oletus (SentenceTransformers)", @@ -398,7 +398,7 @@ "Direct Connections": "Suorat yhteydet", "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Suorat yhteydet mahdollistavat käyttäjien yhdistää omia OpenAI-yhteensopivia API-päätepisteitä.", "Direct Tool Servers": "Suorat työkalu palvelimet", - "Directory selection was cancelled": "", + "Directory selection was cancelled": "Hakemiston valinta keskeytettiin", "Disable Code Interpreter": "Poista Koodin suoritus käytöstä", "Disable Image Extraction": "Poista kuvien poiminta käytöstä", "Disable image extraction from the PDF. If Use LLM is enabled, images will be automatically captioned. Defaults to False.": "Poista kuvien poiminta käytöstä PDF tiedostoista. Jos LLM on käytössä, kuvat tekstitetään automaattisesti. Oletuksena ei käytössä.", @@ -535,8 +535,8 @@ "Enter Github Raw URL": "Kirjoita Github Raw -verkko-osoite", "Enter Google PSE API Key": "Kirjoita Google PSE API -avain", "Enter Google PSE Engine Id": "Kirjoita Google PSE -moottorin tunnus", - "Enter hex color (e.g. #FF0000)": "", - "Enter ID": "", + "Enter hex color (e.g. #FF0000)": "Kirjota hex väri (esim. #FF0000)", + "Enter ID": "Kirjoita ID", "Enter Image Size (e.g. 512x512)": "Kirjoita kuvan koko (esim. 512x512)", "Enter Jina API Key": "Kirjoita Jina API -avain", "Enter JSON config (e.g., {\"disable_links\": true})": "Kirjoita JSON asetus (esim. {\"disable_links\": true})", @@ -590,8 +590,8 @@ "Enter Top K Reranker": "Kirjoita Top K uudelleen sijoittaja", "Enter URL (e.g. http://127.0.0.1:7860/)": "Kirjoita verkko-osoite (esim. http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Kirjoita verkko-osoite (esim. http://localhost:11434)", - "Enter value": "", - "Enter value (true/false)": "", + "Enter value": "Kirjoita arvo", + "Enter value (true/false)": "Kirjoita arvo (true/false)", "Enter Yacy Password": "Kirjoita Yacy salasana", "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "Kirjoita Yacy verkko-osoite (esim. http://yacy.example.com:8090)", "Enter Yacy Username": "Kirjoita Yacy käyttäjänimi", @@ -599,7 +599,7 @@ "Enter your current password": "Kirjoita nykyinen salasanasi", "Enter Your Email": "Kirjoita sähköpostiosoitteesi", "Enter Your Full Name": "Kirjoita koko nimesi", - "Enter your gender": "", + "Enter your gender": "Kirjoita sukupuoli", "Enter your message": "Kirjoita viestisi", "Enter your name": "Kirjoita nimesi tähän", "Enter Your Name": "Kirjoita nimesi", @@ -610,14 +610,14 @@ "Enter your webhook URL": "Kirjoita webhook osoitteesi", "Error": "Virhe", "ERROR": "VIRHE", - "Error accessing directory": "", + "Error accessing directory": "Virhe hakemistoa avattaessa", "Error accessing Google Drive: {{error}}": "Virhe yhdistäessä Google Drive: {{error}}", "Error accessing media devices.": "Virhe medialaitteita käytettäessä.", "Error starting recording.": "Virhe nauhoitusta aloittaessa.", "Error unloading model: {{error}}": "Virhe mallia ladattaessa: {{error}}", "Error uploading file: {{error}}": "Virhe ladattaessa tiedostoa: {{error}}", - "Error: A model with the ID '{{modelId}}' already exists. Please select a different ID to proceed.": "", - "Error: Model ID cannot be empty. Please enter a valid ID to proceed.": "", + "Error: A model with the ID '{{modelId}}' already exists. Please select a different ID to proceed.": "Virhe: Malli '{{modelId}}' on jo käytössä. Valitse toinen ID jatkaaksesi.", + "Error: Model ID cannot be empty. Please enter a valid ID to proceed.": "Virhe: Mallin ID ei voi olla tyhjä. Kirjoita ID jatkaaksesi.", "Evaluations": "Arvioinnit", "Everyone": "Kaikki", "Exa API Key": "Exa API -avain", @@ -658,7 +658,7 @@ "Fade Effect for Streaming Text": "Häivytystehoste suoratoistetulle tekstille", "Failed to add file.": "Tiedoston lisääminen epäonnistui.", "Failed to connect to {{URL}} OpenAPI tool server": "Yhdistäminen {{URL}} OpenAPI työkalu palvelimeen epäonnistui", - "Failed to copy link": "Linkin kopioinmti epäonnistui", + "Failed to copy link": "Linkin kopiointi epäonnistui", "Failed to create API Key.": "API-avaimen luonti epäonnistui.", "Failed to delete note": "Muistiinpanon poistaminen epäonnistui", "Failed to extract content from the file: {{error}}": "Tiedoston sisällön pomiminen epäonnistui: {{error}}", @@ -667,7 +667,7 @@ "Failed to generate title": "Otsikon luonti epäonnistui", "Failed to load chat preview": "Keskustelun esikatselun lataaminen epäonnistui", "Failed to load file content.": "Tiedoston sisällön lataaminen epäonnistui.", - "Failed to move chat": "", + "Failed to move chat": "Keskustelun siirto epäonnistui", "Failed to read clipboard contents": "Leikepöydän sisällön lukeminen epäonnistui", "Failed to save connections": "Yhteyksien tallentaminen epäonnistui", "Failed to save conversation": "Keskustelun tallentaminen epäonnistui", @@ -681,7 +681,7 @@ "Feedback History": "Palautehistoria", "Feedbacks": "Palautteet", "Feel free to add specific details": "Voit lisätä tarkempia tietoja", - "Female": "", + "Female": "Nainen", "File": "Tiedosto", "File added successfully.": "Tiedosto lisätty onnistuneesti.", "File content updated successfully.": "Tiedoston sisältö päivitetty onnistuneesti.", @@ -737,7 +737,7 @@ "Gemini": "Gemini", "Gemini API Config": "Gemini API konfiguraatio", "Gemini API Key is required.": "Gemini API -avain on vaaditaan.", - "Gender": "", + "Gender": "Sukupuoli", "General": "Yleinen", "Generate": "Luo", "Generate an image": "Luo kuva", @@ -753,7 +753,7 @@ "Google Drive": "Google Drive", "Google PSE API Key": "Google PSE API -avain", "Google PSE Engine Id": "Google PSE -moottorin tunnus", - "Gravatar": "", + "Gravatar": "Gravatar", "Group": "Ryhmä", "Group created successfully": "Ryhmä luotu onnistuneesti", "Group deleted successfully": "Ryhmä poistettu onnistuneesti", @@ -765,7 +765,7 @@ "H2": "H2", "H3": "H3", "Haptic Feedback": "Haptinen palaute", - "Height": "", + "Height": "Korkeus", "Hello, {{name}}": "Hei, {{name}}", "Help": "Ohje", "Help us create the best community leaderboard by sharing your feedback history!": "Auta meitä luomaan paras yhteisön tulosluettelo jakamalla palautehistoriasi!", @@ -774,7 +774,7 @@ "Hide": "Piilota", "Hide from Sidebar": "Piilota sivupalkista", "Hide Model": "Piilota malli", - "High": "", + "High": "Korkea", "High Contrast Mode": "Korkean kontrastin tila", "Home": "Koti", "Host": "Palvelin", @@ -817,13 +817,13 @@ "Include `--api-auth` flag when running stable-diffusion-webui": "Sisällytä `--api-auth`-lippu ajettaessa stable-diffusion-webui", "Include `--api` flag when running stable-diffusion-webui": "Sisällytä `--api`-lippu ajettaessa stable-diffusion-webui", "Includes SharePoint": "Sisältää SharePointin", - "Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive.": "", + "Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive.": "Kuinka nopeasti algoritmi mukautuu generoidun tekstin palautteeseen. Alempi oppimisnopeus hidastaa mukautumista, kun taas nopeampi oppimisnopeus tekee algoritmistä reagoivamman.", "Info": "Tiedot", - "Initials": "", + "Initials": "Nimikirjaimet", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Upota koko sisältö kontekstiin kattavaa käsittelyä varten. Tätä suositellaan monimutkaisille kyselyille.", "Input": "Syöte", "Input commands": "Syötekäskyt", - "Input Key (e.g. text, unet_name, steps)": "", + "Input Key (e.g. text, unet_name, steps)": "Syötteen arvo (esim. text, unet_namme, steps)", "Input Variables": "Syötteen muuttujat", "Insert": "Lisää", "Insert Follow-Up Prompt to Input": "Lisää jatkokysymys syötteeseen", @@ -835,7 +835,7 @@ "Invalid file content": "Virheellinen tiedostosisältö", "Invalid file format.": "Virheellinen tiedostomuoto.", "Invalid JSON file": "Virheellinen JSON tiedosto", - "Invalid JSON format for ComfyUI Workflow.": "", + "Invalid JSON format for ComfyUI Workflow.": "Virhellinen JSON muotoilu ComfyUI työnkululle.", "Invalid JSON format in Additional Config": "Virheellinen JSON muotoilu lisäasetuksissa", "Invalid Tag": "Virheellinen tagi", "is typing...": "Kirjoittaa...", @@ -855,15 +855,15 @@ "Keep Follow-Up Prompts in Chat": "Säilytä jatkokysymys kehoitteet keskustelussa", "Keep in Sidebar": "Pidä sivupalkissa", "Key": "Avain", - "Key is required": "", + "Key is required": "Avain vaaditaan", "Keyboard shortcuts": "Pikanäppäimet", "Knowledge": "Tietämys", "Knowledge Access": "Tiedon käyttöoikeus", "Knowledge Base": "Tietokanta", "Knowledge created successfully.": "Tietokanta luotu onnistuneesti.", "Knowledge deleted successfully.": "Tietokanta poistettu onnistuneesti.", - "Knowledge Description": "", - "Knowledge Name": "", + "Knowledge Description": "Tietokannan kuvaus", + "Knowledge Name": "Tietokannan nimi", "Knowledge Public Sharing": "Tietokannan julkinen jakaminen", "Knowledge reset successfully.": "Tietokanta nollattu onnistuneesti.", "Knowledge updated successfully": "Tietokanta päivitetty onnistuneesti", @@ -903,13 +903,13 @@ "Local Task Model": "Paikallinen työmalli", "Location access not allowed": "Ei pääsyä sijaintitietoihin", "Lost": "Mennyt", - "Low": "", + "Low": "Matala", "LTR": "LTR", "Made by Open WebUI Community": "Tehnyt OpenWebUI-yhteisö", "Make password visible in the user interface": "Näytä salasana käyttöliittymässä", "Make sure to enclose them with": "Varmista, että suljet ne", "Make sure to export a workflow.json file as API format from ComfyUI.": "Muista viedä workflow.json-tiedosto API-muodossa ComfyUI:sta.", - "Male": "", + "Male": "Mies", "Manage": "Hallitse", "Manage Direct Connections": "Hallitse suoria yhteyksiä", "Manage Models": "Hallitse malleja", @@ -918,7 +918,7 @@ "Manage OpenAI API Connections": "Hallitse OpenAI API -yhteyksiä", "Manage Pipelines": "Hallitse putkia", "Manage Tool Servers": "Hallitse työkalu palvelimia", - "Manage your account information.": "", + "Manage your account information.": "Hallitse tilitietojasi", "March": "maaliskuu", "Markdown": "Markdown", "Markdown (Header)": "Markdown (otsikko)", @@ -927,7 +927,7 @@ "Max Upload Size": "Latausten enimmäiskoko", "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Enintään 3 mallia voidaan ladata samanaikaisesti. Yritä myöhemmin uudelleen.", "May": "toukokuu", - "Medium": "", + "Medium": "Keskitaso", "Memories accessible by LLMs will be shown here.": "Muistitiedostot, joita LLM-ohjelmat käyttävät, näkyvät tässä.", "Memory": "Muisti", "Memory added successfully": "Muisti lisätty onnistuneesti", @@ -963,7 +963,7 @@ "Model ID is required.": "Mallin tunnus on pakollinen", "Model IDs": "Mallitunnukset", "Model Name": "Mallin nimi", - "Model name already exists, please choose a different one": "", + "Model name already exists, please choose a different one": "Mallin nimi on jo olemassa, valitse toinen nimi.", "Model Name is required.": "Mallin nimi on pakollinen", "Model not selected": "Mallia ei ole valittu", "Model Params": "Mallin parametrit", @@ -981,9 +981,9 @@ "More": "Lisää", "More Concise": "Ytimekkäämpi", "More Options": "Lisää vaihtoehtoja", - "Move": "", + "Move": "Siirrä", "Name": "Nimi", - "Name and ID are required, please fill them out": "", + "Name and ID are required, please fill them out": "Nimi ja ID vaaditaan, täytä puuttuvat kentät", "Name your knowledge base": "Anna tietokannalle nimi", "Native": "Natiivi", "New Button": "Uusi painike", @@ -1002,7 +1002,7 @@ "No content found": "Sisältöä ei löytynyt", "No content found in file.": "Sisältöä ei löytynyt tiedostosta.", "No content to speak": "Ei puhuttavaa sisältöä", - "No conversation to save": "", + "No conversation to save": "Ei tallennettavaa keskustelua", "No distance available": "Etäisyyttä ei saatavilla", "No feedbacks found": "Palautteita ei löytynyt", "No file selected": "Tiedostoa ei ole valittu", @@ -1021,7 +1021,7 @@ "No source available": "Lähdettä ei saatavilla", "No suggestion prompts": "Ei ehdotettuja promptteja", "No users were found.": "Käyttäjiä ei löytynyt.", - "No valves": "", + "No valves": "Ei venttiileitä", "No valves to update": "Ei venttiileitä päivitettäväksi", "Node Ids": "", "None": "Ei mikään", @@ -1045,8 +1045,8 @@ "Ollama Version": "Ollama-versio", "On": "Päällä", "OneDrive": "OneDrive", - "Only active when \"Paste Large Text as File\" setting is toggled on.": "", - "Only active when the chat input is in focus and an LLM is generating a response.": "", + "Only active when \"Paste Large Text as File\" setting is toggled on.": "Vain käytössä jos \"Liitä suuri teksti tiedostona\" asetus on käytössä.", + "Only active when the chat input is in focus and an LLM is generating a response.": "Aktiivinen vain, kun keskustelusyöte on kohdistettu ja LLM generoi vastausta.", "Only alphanumeric characters and hyphens are allowed": "Vain kirjaimet, numerot ja väliviivat ovat sallittuja", "Only alphanumeric characters and hyphens are allowed in the command string.": "Vain kirjaimet, numerot ja väliviivat ovat sallittuja komentosarjassa.", "Only collections can be edited, create a new knowledge base to edit/add documents.": "Vain kokoelmia voi muokata, luo uusi tietokanta muokataksesi/lisätäksesi asiakirjoja.", @@ -1074,8 +1074,8 @@ "OpenAI API settings updated": "OpenAI API -asetukset päivitetty", "OpenAI URL/Key required.": "OpenAI URL/avain vaaditaan.", "openapi.json URL or Path": "openapi.json verkko-osoite tai polku", - "Optional": "", - "Options for running a local vision-language model in the picture description. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with picture_description_api.": "", + "Optional": "Valinnainen", + "Options for running a local vision-language model in the picture description. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with picture_description_api.": "Vaihtoehdot paikallisen näkömallin suorittamiseen kuvan kuvauksessa. Parametrit viittaavat Hugging Facessa ylläpidettyyn malliin. Tämä parametri on toisensa poissulkeva picture_description_api:n kanssa.", "or": "tai", "Ordered List": "Järjestetty lista", "Organize your users": "Järjestä käyttäjäsi", @@ -1124,7 +1124,7 @@ "Playwright WebSocket URL": "Playwright WebSocket verkko-osoite", "Please carefully review the following warnings:": "Tarkista huolellisesti seuraavat varoitukset:", "Please do not close the settings page while loading the model.": "Älä sulje asetussivua mallin latautuessa.", - "Please enter a message or attach a file.": "", + "Please enter a message or attach a file.": "Kirjoita viesti tai liittä tiedosto.", "Please enter a prompt": "Kirjoita kehote", "Please enter a valid path": "Kirjoita kelvollinen polku", "Please enter a valid URL": "Kirjoita kelvollinen verkko-osoite", @@ -1135,7 +1135,7 @@ "Please wait until all files are uploaded.": "Odota kunnes kaikki tiedostot ovat ladattu.", "Port": "Portti", "Positive attitude": "Positiivinen asenne", - "Prefer not to say": "", + "Prefer not to say": "En halua sanoa", "Prefix ID": "Etuliite-ID", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Etuliite-ID:tä käytetään välttämään ristiriidat muiden yhteyksien kanssa lisäämällä etuliite mallitunnuksiin - jätä tyhjäksi, jos haluat ottaa sen pois käytöstä", "Prevent file creation": "Estä tiedostojen luonti", @@ -1222,14 +1222,14 @@ "Save & Create": "Tallenna ja luo", "Save & Update": "Tallenna ja päivitä", "Save As Copy": "Tallenna kopiona", - "Save Chat": "", + "Save Chat": "Tallenna keskustelu", "Save Tag": "Tallenna tagi", "Saved": "Tallennettu", "Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Keskustelulokien tallentaminen suoraan selaimen tallennustilaan ei ole enää tuettu. Lataa ja poista keskustelulokit napsauttamalla alla olevaa painiketta. Älä huoli, voit helposti tuoda keskustelulokit takaisin backendiin", "Scroll On Branch Change": "Vieritä haaran vaihtoon", "Search": "Haku", "Search a model": "Hae mallia", - "Search all emojis": "", + "Search all emojis": "Hae emojeista", "Search Base": "Hakupohja", "Search Chats": "Hae keskusteluja", "Search Collection": "Hae kokoelmaa", @@ -1259,32 +1259,32 @@ "See readme.md for instructions": "Katso ohjeet readme.md-tiedostosta", "See what's new": "Katso, mitä uutta", "Seed": "Siemenluku", - "Select": "", + "Select": "Valitse", "Select a base model": "Valitse perusmalli", - "Select a base model (e.g. llama3, gpt-4o)": "", + "Select a base model (e.g. llama3, gpt-4o)": "Valitse perusmalli (esim. llama3, gtp-4o)", "Select a conversation to preview": "Valitse keskustelun esikatselu", "Select a engine": "Valitse moottori", "Select a function": "Valitse toiminto", "Select a group": "Valitse ryhmä", - "Select a language": "", - "Select a mode": "", + "Select a language": "Valitse kieli", + "Select a mode": "Valitse malli", "Select a model": "Valitse malli", - "Select a model (optional)": "", + "Select a model (optional)": "Valitse malli (valinnainen)", "Select a pipeline": "Valitse putki", "Select a pipeline url": "Valitse putken verkko-osoite", - "Select a reranking model engine": "", - "Select a role": "", - "Select a theme": "", + "Select a reranking model engine": "Valitse uudelleenpisteytymismallin moottori", + "Select a role": "Valitse rooli", + "Select a theme": "Valitse teema", "Select a tool": "Valitse työkalu", - "Select a voice": "", + "Select a voice": "Valitse ääni", "Select an auth method": "Valitse kirjautumistapa", - "Select an embedding model engine": "", - "Select an engine": "", + "Select an embedding model engine": "Valitse upotusmallin moottori", + "Select an engine": "Valitse moottori", "Select an Ollama instance": "Valitse Ollama instanssi", - "Select an output format": "", - "Select dtype": "", + "Select an output format": "Valitse tulostusmuoto", + "Select dtype": "Valitse dtype", "Select Engine": "Valitse moottori", - "Select how to split message text for TTS requests": "", + "Select how to split message text for TTS requests": "Valitse, miten viestit jaetaan TTS-pyyntöjä varten", "Select Knowledge": "Valitse tietämys", "Select only one model to call": "Valitse vain yksi malli kutsuttavaksi", "Selected model(s) do not support image inputs": "Valitut mallit eivät tue kuvasöytteitä", @@ -1301,7 +1301,7 @@ "Serply API Key": "Serply API -avain", "Serpstack API Key": "Serpstack API -avain", "Server connection verified": "Palvelinyhteys vahvistettu", - "Session": "", + "Session": "Istunto", "Set as default": "Aseta oletukseksi", "Set CFG Scale": "Aseta CFG-mitta", "Set Default Model": "Aseta oletusmalli", @@ -1327,7 +1327,7 @@ "Share": "Jaa", "Share Chat": "Jaa keskustelu", "Share to Open WebUI Community": "Jaa OpenWebUI-yhteisöön", - "Share your background and interests": "", + "Share your background and interests": "Jaa taustasi ja kiinnostuksen kohteesi", "Sharing Permissions": "Jako oikeudet", "Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "Tähdellä (*) merkityt pikavalinnat ovat tilannekohtaisia ja aktiivisia vain tietyissä olosuhteissa.", "Show": "Näytä", @@ -1347,18 +1347,18 @@ "Sign Out": "Kirjaudu ulos", "Sign up": "Rekisteröidy", "Sign up to {{WEBUI_NAME}}": "Rekisteröidy palveluun {{WEBUI_NAME}}", - "Significantly improves accuracy by using an LLM to enhance tables, forms, inline math, and layout detection. Will increase latency. Defaults to False.": "", + "Significantly improves accuracy by using an LLM to enhance tables, forms, inline math, and layout detection. Will increase latency. Defaults to False.": "Parantaa merkittävästi tarkkuutta käyttämällä LLM mallia taulukoiden, lomakkeiden, rivikohtaisen matematiikan ja asettelun tunnistuksen parantamiseen. Lisää viivettä. Oletusarvo on False.", "Signing in to {{WEBUI_NAME}}": "Kirjaudutaan sisään palveluun {{WEBUI_NAME}}", - "Sink List": "", + "Sink List": "Upotuslista", "sk-1234": "", "Skip Cache": "Ohita välimuisti", "Skip the cache and re-run the inference. Defaults to False.": "Ohita välimuisti ja suorita päätelmä uudelleen. Oletusarvo ei käytössä.", - "Something went wrong :/": "", - "Sonar": "", - "Sonar Deep Research": "", - "Sonar Pro": "", - "Sonar Reasoning": "", - "Sonar Reasoning Pro": "", + "Something went wrong :/": "Jokin meni pieleen :/", + "Sonar": "Sonar", + "Sonar Deep Research": "Sonar Deep Research", + "Sonar Pro": "Sonar Pro", + "Sonar Reasoning": "Sonar Reasoning", + "Sonar Reasoning Pro": "Sonar Reasoning Pro", "Sougou Search API sID": "Sougou Search API sID", "Sougou Search API SK": "Sougou Search API SK", "Source": "Lähde", @@ -1381,7 +1381,7 @@ "Stylized PDF Export": "Muotoiltun PDF-vienti", "Subtitle (e.g. about the Roman Empire)": "Alaotsikko (esim. Rooman valtakunta)", "Success": "Onnistui", - "Successfully imported {{userCount}} users.": "", + "Successfully imported {{userCount}} users.": "{{userCount}} käyttäjää tuottiin onnistuneesti.", "Successfully updated.": "Päivitetty onnistuneesti.", "Suggest a change": "Ehdota muutosta", "Suggested": "Ehdotukset", @@ -1406,7 +1406,7 @@ "Tell us more:": "Kerro lisää:", "Temperature": "Lämpötila", "Temporary Chat": "Väliaikainen keskustelu", - "Temporary Chat by Default": "", + "Temporary Chat by Default": "Väliaikainen keskustelu oletuksena", "Text Splitter": "Tekstin jakaja", "Text-to-Speech": "Puhesynteesi", "Text-to-Speech Engine": "Puhesynteesimoottori", @@ -1539,9 +1539,9 @@ "Upload Files": "Lataa tiedostoja", "Upload Pipeline": "Lataa putki", "Upload Progress": "Latauksen edistyminen", - "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", + "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Latauksen edistyminen: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "URL": "URL", - "URL is required": "", + "URL is required": "URL vaaditaan", "URL Mode": "URL-tila", "Usage": "Käyttö", "Use '#' in the prompt input to load and include your knowledge.": "Käytä '#' -merkkiä kehotekenttään ladataksesi ja sisällyttääksesi tietämystäsi.", @@ -1561,7 +1561,7 @@ "Using Focused Retrieval": "Kohdennetun haun käyttäminen", "Using the default arena model with all models. Click the plus button to add custom models.": "Käytetään oletusarena-mallia kaikkien mallien kanssa. Napsauta plus-painiketta lisätäksesi mukautettuja malleja.", "Valid time units:": "Kelvolliset aikayksiköt:", - "Validate certificate": "", + "Validate certificate": "Tarkista sertifikaatti", "Valves": "Venttiilit", "Valves updated": "Venttiilit päivitetty", "Valves updated successfully": "Venttiilit päivitetty onnistuneesti", @@ -1604,7 +1604,7 @@ "Whisper (Local)": "Whisper (paikallinen)", "Why?": "Miksi?", "Widescreen Mode": "Laajakuvatila", - "Width": "", + "Width": "Leveys", "Won": "Voitti", "Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "", "Workspace": "Työtila", @@ -1628,7 +1628,7 @@ "You have shared this chat": "Olet jakanut tämän keskustelun", "You're a helpful assistant.": "Olet avulias avustaja.", "You're now logged in.": "Olet nyt kirjautunut sisään.", - "Your Account": "", + "Your Account": "Tilisi", "Your account status is currently pending activation.": "Tilisi tila on tällä hetkellä odottaa aktivointia.", "Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.": "Koko panoksesi menee suoraan lisäosan kehittäjälle; Open WebUI ei pidätä prosenttiosuutta. Valittu rahoitusalusta voi kuitenkin periä omia maksujaan.", "Youtube": "YouTube", From 093af754e7dd6471b40f838dda8aa39ead5edc8b Mon Sep 17 00:00:00 2001 From: _00_ <131402327+rgaricano@users.noreply.github.com> Date: Sat, 23 Aug 2025 14:15:00 +0200 Subject: [PATCH 04/74] FIX: Playwright Timeout (ms) interpreted as seconds Fix for Playwright Timeout (ms) interpreted as seconds. To address https://github.com/open-webui/open-webui/issues/16801 In Frontend Playwright Timeout is setted as (ms), but in backend is interpreted as (s) doing a time conversion for playwright_timeout var (that have to be in ms). & as _Originally posted by @rawbby in [#16801](https://github.com/open-webui/open-webui/issues/16801#issuecomment-3216782565)_ > I personally think milliseconds are a reasonable choice for the timeout. Maybe the conversion should be fixed, not the label. > This would further not break existing configurations from users that rely on their current config. > --- backend/open_webui/retrieval/web/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/open_webui/retrieval/web/utils.py b/backend/open_webui/retrieval/web/utils.py index 5a90a86e0f..bf9b01a39f 100644 --- a/backend/open_webui/retrieval/web/utils.py +++ b/backend/open_webui/retrieval/web/utils.py @@ -614,7 +614,7 @@ def get_web_loader( WebLoaderClass = SafeWebBaseLoader if WEB_LOADER_ENGINE.value == "playwright": WebLoaderClass = SafePlaywrightURLLoader - web_loader_args["playwright_timeout"] = PLAYWRIGHT_TIMEOUT.value * 1000 + web_loader_args["playwright_timeout"] = PLAYWRIGHT_TIMEOUT.value if PLAYWRIGHT_WS_URL.value: web_loader_args["playwright_ws_url"] = PLAYWRIGHT_WS_URL.value From d98a60fbbb38d237dc40a28b4ec28279d2fc2f74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B4=AA=E5=AE=87=E4=BA=AE?= <110171362+yuliang615@users.noreply.github.com> Date: Sat, 23 Aug 2025 21:42:35 +0800 Subject: [PATCH 05/74] Add files via upload --- src/lib/components/chat/Messages/CodeBlock.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/chat/Messages/CodeBlock.svelte b/src/lib/components/chat/Messages/CodeBlock.svelte index a000528dd2..06c5dcbd62 100644 --- a/src/lib/components/chat/Messages/CodeBlock.svelte +++ b/src/lib/components/chat/Messages/CodeBlock.svelte @@ -84,7 +84,7 @@ const copyCode = async () => { copied = true; - await copyToClipboard(code); + await copyToClipboard(_code); setTimeout(() => { copied = false; From ff6946c230990468c8584d9302fc3b4167e87218 Mon Sep 17 00:00:00 2001 From: _00_ <131402327+rgaricano@users.noreply.github.com> Date: Sat, 23 Aug 2025 20:53:32 +0200 Subject: [PATCH 06/74] UPD: i18n es-ES Translation v.0.6.25 UPD: i18n es-ES Translation v.0.6.25 Added new strings in es-ES Translation --- src/lib/i18n/locales/es-ES/translation.json | 186 ++++++++++---------- 1 file changed, 93 insertions(+), 93 deletions(-) diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index c88a195e49..8185323ec2 100644 --- a/src/lib/i18n/locales/es-ES/translation.json +++ b/src/lib/i18n/locales/es-ES/translation.json @@ -14,7 +14,7 @@ "{{COUNT}} hidden lines": "{{COUNT}} líneas ocultas", "{{COUNT}} Replies": "{{COUNT}} Respuestas", "{{COUNT}} words": "{{COUNT}} palabras", - "{{model}} download has been canceled": "", + "{{model}} download has been canceled": "La descarga de {{model}} ha sido cancelada", "{{user}}'s Chats": "Chats de {{user}}", "{{webUIName}} Backend Required": "{{webUIName}} Servidor Requerido", "*Prompt node ID(s) are required for image generation": "Los ID de nodo son requeridos para la generación de imágenes", @@ -30,7 +30,7 @@ "Account Activation Pending": "Activación de cuenta Pendiente", "Accurate information": "Información precisa", "Action": "Acción", - "Action not found": "", + "Action not found": "Acción no encontrada", "Action Required for Chat Log Storage": "Se requiere acción para almacenar el registro del chat", "Actions": "Acciones", "Activate": "Activar", @@ -101,7 +101,7 @@ "Always Play Notification Sound": "Reproducir Siempre Sonido de Notificación", "Amazing": "Emocionante", "an assistant": "un asistente", - "An error occurred while fetching the explanation": "", + "An error occurred while fetching the explanation": "A ocurrido un error obtenendo la explicación", "Analytics": "Analíticas", "Analyzed": "Analizado", "Analyzing...": "Analizando..", @@ -117,8 +117,8 @@ "API Key created.": "Clave API creada.", "API Key Endpoint Restrictions": "Clave API para Endpoints Restringidos", "API keys": "Claves API", - "API Version": "Version API", - "API Version is required": "", + "API Version": "Versión API", + "API Version is required": "La Versión API es requerida", "Application DN": "Aplicacion DN", "Application DN Password": "Contraseña Aplicacion DN", "applies to all users with the \"user\" role": "se aplica a todos los usuarios con el rol \"user\" ", @@ -169,14 +169,14 @@ "Banners": "Banners", "Base Model (From)": "Modelo Base (desde)", "Base Model List Cache speeds up access by fetching base models only at startup or on settings save—faster, but may not show recent base model changes.": "Cachear Lista Modelos Base acelera el acceso recuperando los modelos base solo al inicio o en el auto guardado rápido de la configuración, si se activa hay que tener en cuenta que los cambios más recientes en las listas de modelos podrían no reflejarse de manera inmediata.", - "Bearer": "", + "Bearer": "Portador (Bearer)", "before": "antes", "Being lazy": "Ser perezoso", "Beta": "Beta", "Bing Search V7 Endpoint": "Endpoint de Bing Search V7", "Bing Search V7 Subscription Key": "Clave de Suscripción de Bing Search V7", - "Bio": "", - "Birth Date": "", + "Bio": "Bio", + "Birth Date": "Fecha de Nacimiento", "BM25 Weight": "Ponderación BM25", "Bocha Search API Key": "Clave API de Bocha Search", "Bold": "Negrita", @@ -201,21 +201,21 @@ "Capture Audio": "Capturar Audio", "Certificate Path": "Ruta a Certificado", "Change Password": "Cambiar Contraseña", - "Channel deleted successfully": "", + "Channel deleted successfully": "Canal borrado correctamente", "Channel Name": "Nombre del Canal", - "Channel updated successfully": "", + "Channel updated successfully": "Canal actualizado correctamente", "Channels": "Canal", "Character": "Carácter", "Character limit for autocomplete generation input": "Límite de caracteres de entrada de la generación de autocompletado", "Chart new frontiers": "Trazar nuevas fronteras", "Chat": "Chat", "Chat Background Image": "Imágen de Fondo del Chat", - "Chat Bubble UI": "Interfaz de Chat en Burbuja", - "Chat Controls": "Controles de chat", - "Chat Conversation": "", - "Chat direction": "Dirección de Chat", + "Chat Bubble UI": "Interfaz del Chat en Burbuja", + "Chat Controls": "Controles del Chat", + "Chat Conversation": Conversación del Chat", + "Chat direction": "Dirección del Chat", "Chat ID": "ID del Chat", - "Chat moved successfully": "", + "Chat moved successfully": "Chat movido correctamente", "Chat Overview": "Vista General del Chat", "Chat Permissions": "Permisos del Chat", "Chat Tags Auto-Generation": "AutoGeneración de Etiquetas de Chat", @@ -254,7 +254,7 @@ "Close modal": "Cerrar modal", "Close settings modal": "Cerrar modal configuraciones", "Close Sidebar": "Cerrar Barra Lateral", - "CMU ARCTIC speaker embedding name": "", + "CMU ARCTIC speaker embedding name": "Nombre de incrustación CMU ARCTIC del interlocutor", "Code Block": "Bloque de Código", "Code execution": "Ejecución de Código", "Code Execution": "Ejecución de Código", @@ -273,13 +273,13 @@ "ComfyUI Base URL is required.": "La URL Base de ComfyUI es necesaria.", "ComfyUI Workflow": "Flujo de Trabajo de ComfyUI", "ComfyUI Workflow Nodes": "Nodos del Flujo de Trabajo de ComfyUI", - "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma separated Node Ids (e.g. 1 or 1,2)": "IDs de Nodo separados por comas (ej. 1 o 1,2)", "Command": "Comando", "Comment": "Comentario", "Completions": "Cumplimientos", "Compress Images in Channels": "Comprimir Imágenes en Canales", "Concurrent Requests": "Número de Solicitudes Concurrentes", - "Config imported successfully": "", + "Config imported successfully": "Configuración importada correctamente", "Configure": "Configurar", "Confirm": "Confirmar", "Confirm Password": "Confirma Contraseña", @@ -306,7 +306,7 @@ "Control the repetition of token sequences in the generated text. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 1.1) will be more lenient. At 1, it is disabled.": "Controla la repetición de secuencias de tokens en el texto generado. Un valor más alto (p.ej., 1.5) penalizá más las repeticiones, mientras que un valor más bajo (p.ej., 1.1) sería más permisivo. En 1, el control está desactivado.", "Controls": "Controles", "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text.": "Controles del equilibrio entre coherencia y diversidad de la salida. Un valor más bajo produce un texto más centrado y coherente.", - "Conversation saved successfully": "", + "Conversation saved successfully": "Conversación guardada correctamente", "Copied": "Copiado", "Copied link to clipboard": "Enlace copiado a portapapeles", "Copied shared chat URL to clipboard!": "¡Copiada al portapapeles la URL del chat compartido!", @@ -351,7 +351,7 @@ "Datalab Marker API Key required.": "Clave API de Datalab Marker Requerida", "DD/MM/YYYY": "DD/MM/YYYY", "December": "Diciembre", - "Deepgram": "", + "Deepgram": "Deepgram", "Default": "Predeterminado", "Default (Open AI)": "Predeterminado (Open AI)", "Default (SentenceTransformers)": "Predeterminado (SentenceTransformers)", @@ -398,7 +398,7 @@ "Direct Connections": "Conexiones Directas", "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Las Conexiones Directas permiten a los usuarios conectar a sus propios endpoints compatibles API OpenAI.", "Direct Tool Servers": "Servidores de Herramientas Directos", - "Directory selection was cancelled": "", + "Directory selection was cancelled": "La selección de directorio ha sido cancelada", "Disable Code Interpreter": "Deshabilitar Interprete de Código", "Disable Image Extraction": "Deshabilitar Extracción de Imágenes", "Disable image extraction from the PDF. If Use LLM is enabled, images will be automatically captioned. Defaults to False.": "Desabilita la extracción de imágenes del pdf. Si está habilitado Usar LLM las imágenes se capturan automáticamente. Por defecto el valor es Falso (las imágenes se extraen).", @@ -512,7 +512,7 @@ "Enter comma-separated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "Ingresar pares \"token:valor_sesgo\" separados por comas (ejemplo: 5432:100, 413:-100)", "Enter Config in JSON format": "Ingresar Config en formato JSON", "Enter content for the pending user info overlay. Leave empty for default.": "Ingresar contenido para la sobrecapa informativa de usuario pendiente. Dejar vacío para usar el predeterminado.", - "Enter coordinates (e.g. 51.505, -0.09)": "", + "Enter coordinates (e.g. 51.505, -0.09)": "Ingresar coordenadas (ej. 51.505, -0.09)", "Enter Datalab Marker API Base URL": "Ingresar la URL Base para la API de Datalab Marker", "Enter Datalab Marker API Key": "Ingresar Clave API de Datalab Marker", "Enter description": "Ingresar Descripción", @@ -535,8 +535,8 @@ "Enter Github Raw URL": "Ingresar URL Github en Bruto(raw)", "Enter Google PSE API Key": "Ingresar Clave API de Google PSE", "Enter Google PSE Engine Id": "Ingresa ID del Motor PSE de Google", - "Enter hex color (e.g. #FF0000)": "", - "Enter ID": "", + "Enter hex color (e.g. #FF0000)": "Ingresa color hex (ej. #FF0000)", + "Enter ID": "Ingresar ID", "Enter Image Size (e.g. 512x512)": "Ingresar Tamaño de Imagen (p.ej. 512x512)", "Enter Jina API Key": "Ingresar Clave API de Jina", "Enter JSON config (e.g., {\"disable_links\": true})": "Ingresar config JSON (ej., {\"disable_links\": true})", @@ -590,8 +590,8 @@ "Enter Top K Reranker": "Ingresar Top K Reclasificador", "Enter URL (e.g. http://127.0.0.1:7860/)": "Ingresar URL (p.ej., http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "Ingresar URL (p.ej., http://localhost:11434)", - "Enter value": "", - "Enter value (true/false)": "", + "Enter value": "Ingresar valor", + "Enter value (true/false)": "Ingresar valor (true/false)", "Enter Yacy Password": "Ingresar Contraseña de Yacy", "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "Ingresar URL de Yacy (p.ej. http://yacy.ejemplo.com:8090)", "Enter Yacy Username": "Ingresar Nombre de Usuario de Yacy", @@ -599,7 +599,7 @@ "Enter your current password": "Ingresa tu contraseña actual", "Enter Your Email": "Ingresa tu correo electrónico", "Enter Your Full Name": "Ingresa su nombre completo", - "Enter your gender": "", + "Enter your gender": "Ingresa tu género", "Enter your message": "Ingresa tu mensaje", "Enter your name": "Ingresa tu nombre", "Enter Your Name": "Ingresa Tu Nombre", @@ -610,14 +610,14 @@ "Enter your webhook URL": "Ingresa tu URL de webhook", "Error": "Error", "ERROR": "ERROR", - "Error accessing directory": "", + "Error accessing directory": "Error accediendo al directorio", "Error accessing Google Drive: {{error}}": "Error accediendo a Google Drive: {{error}}", "Error accessing media devices.": "Error accediendo a dispositivos de medios.", "Error starting recording.": "Error al comenzar la grabación.", "Error unloading model: {{error}}": "Error subiendo el modelo: {{error}}", "Error uploading file: {{error}}": "Error subiendo el archivo: {{error}}", - "Error: A model with the ID '{{modelId}}' already exists. Please select a different ID to proceed.": "", - "Error: Model ID cannot be empty. Please enter a valid ID to proceed.": "", + "Error: A model with the ID '{{modelId}}' already exists. Please select a different ID to proceed.": "Error: Ya existe un modelo con el ID '{{modelId}}'. Seleccione otro ID para continuar.", + "Error: Model ID cannot be empty. Please enter a valid ID to proceed.": "Error: El ID del modelo no puede estar vacío. Ingrese un ID válido para continuar.", "Evaluations": "Evaluaciones", "Everyone": "Todos", "Exa API Key": "Clave API de Exa", @@ -667,7 +667,7 @@ "Failed to generate title": "Fallo al generar el título", "Failed to load chat preview": "Fallo al cargar la previsualización del chat", "Failed to load file content.": "Fallo al cargar el contenido del archivo", - "Failed to move chat": "", + "Failed to move chat": "Fallo al mover el chat", "Failed to read clipboard contents": "Fallo al leer el contenido del portapapeles", "Failed to save connections": "Fallo al grabar las conexiones", "Failed to save conversation": "Fallo al guardar la conversación", @@ -681,7 +681,7 @@ "Feedback History": "Historia de la Opiniones", "Feedbacks": "Opiniones", "Feel free to add specific details": "Añade libremente detalles específicos", - "Female": "", + "Female": "Mujer", "File": "Archivo", "File added successfully.": "Archivo añadido correctamente.", "File content updated successfully.": "Contenido del archivo actualizado correctamente.", @@ -737,7 +737,7 @@ "Gemini": "Gemini", "Gemini API Config": "Config API Gemini", "Gemini API Key is required.": "Se requiere Clave API de Gemini.", - "Gender": "", + "Gender": "Género", "General": "General", "Generate": "Generar", "Generate an image": "Generar una imagen", @@ -753,7 +753,7 @@ "Google Drive": "Google Drive", "Google PSE API Key": "Clave API de Google PSE", "Google PSE Engine Id": "ID del Motor PSE de Google", - "Gravatar": "", + "Gravatar": "Gravatar", "Group": "Grupo", "Group created successfully": "Grupo creado correctamente", "Group deleted successfully": "Grupo eliminado correctamente", @@ -765,7 +765,7 @@ "H2": "H2", "H3": "H3", "Haptic Feedback": "Realimentación Háptica", - "Height": "", + "Height": "Altura", "Hello, {{name}}": "Hola, {{name}}", "Help": "Ayuda", "Help us create the best community leaderboard by sharing your feedback history!": "¡Ayúdanos a crear la mejor tabla clasificatoria comunitaria compartiendo tus comentarios!", @@ -774,7 +774,7 @@ "Hide": "Esconder", "Hide from Sidebar": "Ocultar Panel Lateral", "Hide Model": "Ocultar Modelo", - "High": "", + "High": "Alto", "High Contrast Mode": "Modo Alto Contraste", "Home": "Inicio", "Host": "Host", @@ -819,11 +819,11 @@ "Includes SharePoint": "Incluye SharePoint", "Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive.": "Influye en la rápidez de respuesta a la realimentación desde el texto generado. Una tasa de aprendizaje más baja resulta en un ajustado más lento, mientras que una tasa de aprendizaje más alta hará que el algoritmo sea más reactivo.", "Info": "Información", - "Initials": "", + "Initials": "Iniciales", "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "Inyecta el contenido completo como contexto para un procesado comprensivo, recomendado para consultas complejas.", "Input": "Entrada", "Input commands": "Ingresar comandos", - "Input Key (e.g. text, unet_name, steps)": "", + "Input Key (e.g. text, unet_name, steps)": "Ingresa Clave (ej. text, unet_name. steps)", "Input Variables": "Ingresar variables", "Insert": "Insertar", "Insert Follow-Up Prompt to Input": "Insertar Sugerencia de Indicador a la Entrada", @@ -835,7 +835,7 @@ "Invalid file content": "Contenido de archivo inválido", "Invalid file format.": "Formato de archivo inválido.", "Invalid JSON file": "Archivo JSON inválido", - "Invalid JSON format for ComfyUI Workflow.": "", + "Invalid JSON format for ComfyUI Workflow.": "Formato JSON Inválido para el Flujo de Trabajo de ComfyUI", "Invalid JSON format in Additional Config": "Formato JSON Inválido en Configuración Adicional", "Invalid Tag": "Etiqueta Inválida", "is typing...": "está escribiendo...", @@ -855,15 +855,15 @@ "Keep Follow-Up Prompts in Chat": "Mantener Sugerencias de Indicador en el Chat", "Keep in Sidebar": "Mantener en Barra Lateral", "Key": "Clave", - "Key is required": "", + "Key is required": "La Clave es requerida", "Keyboard shortcuts": "Atajos de teclado", "Knowledge": "Conocimiento", "Knowledge Access": "Acceso a Conocimiento", "Knowledge Base": "Base de Conocimiento", "Knowledge created successfully.": "Conocimiento creado correctamente.", "Knowledge deleted successfully.": "Conocimiento eliminado correctamente.", - "Knowledge Description": "", - "Knowledge Name": "", + "Knowledge Description": "Descripción del Conocimiento", + "Knowledge Name": "Nombre del Conocimiento", "Knowledge Public Sharing": "Compartir Conocimiento Públicamente", "Knowledge reset successfully.": "Conocimiento restablecido correctamente.", "Knowledge updated successfully": "Conocimiento actualizado correctamente.", @@ -903,13 +903,13 @@ "Local Task Model": "Modelo Local para Tarea", "Location access not allowed": "Sin acceso a la Ubicación", "Lost": "Perdido", - "Low": "", + "Low": "Bajo", "LTR": "LTR", "Made by Open WebUI Community": "Creado por la Comunidad Open-WebUI", "Make password visible in the user interface": "Hacer visible la contraseña en la interfaz del usuario.", "Make sure to enclose them with": "Asegúrate de delimitarlos con", "Make sure to export a workflow.json file as API format from ComfyUI.": "Asegúrate de exportar un archivo workflow.json en formato API desde ComfyUI.", - "Male": "", + "Male": "Hombre", "Manage": "Gestionar", "Manage Direct Connections": "Gestionar Conexiones Directas", "Manage Models": "Gestionar Modelos", @@ -918,7 +918,7 @@ "Manage OpenAI API Connections": "Gestionar Conexiones API de OpenAI", "Manage Pipelines": "Gestionar Tuberías", "Manage Tool Servers": "Gestionar Servidores de Herramientas", - "Manage your account information.": "", + "Manage your account information.": "Gestionar la información de tu cuenta", "March": "Marzo", "Markdown": "Markdown", "Markdown (Header)": "Markdown (Encabezado)", @@ -927,7 +927,7 @@ "Max Upload Size": "Tamaño Max de Subidas", "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "Se puede descargar un máximo de 3 modelos simultáneamente. Por favor, reinténtelo más tarde.", "May": "Mayo", - "Medium": "", + "Medium": "Medio", "Memories accessible by LLMs will be shown here.": "Las memorias accesibles por los LLMs se mostrarán aquí.", "Memory": "Memoria", "Memory added successfully": "Memoria añadida correctamente", @@ -963,7 +963,7 @@ "Model ID is required.": "El ID de Modelo es requerido", "Model IDs": "IDs Modelo", "Model Name": "Nombre Modelo", - "Model name already exists, please choose a different one": "", + "Model name already exists, please choose a different one": "Ese nombre de modelo ya existe, por favor elige otro diferente", "Model Name is required.": "El Nombre de Modelo es requerido", "Model not selected": "Modelo no seleccionado", "Model Params": "Paráms Modelo", @@ -981,9 +981,9 @@ "More": "Más", "More Concise": "Más Conciso", "More Options": "Más Opciones", - "Move": "", + "Move": "Mover", "Name": "Nombre", - "Name and ID are required, please fill them out": "", + "Name and ID are required, please fill them out": "Nombre e ID requeridos, por favor introducelos", "Name your knowledge base": "Nombra tu base de conocimientos", "Native": "Nativo", "New Button": "Nuevo Botón", @@ -1002,7 +1002,7 @@ "No content found": "No se encontró contenido", "No content found in file.": "No se encontró contenido en el archivo", "No content to speak": "No hay contenido para hablar", - "No conversation to save": "", + "No conversation to save": "No hay conversación para guardar", "No distance available": "No hay distancia disponible", "No feedbacks found": "No se encontraron comentarios", "No file selected": "No se seleccionó archivo", @@ -1021,9 +1021,9 @@ "No source available": "No hay fuente disponible", "No suggestion prompts": "Sin prompts sugeridos", "No users were found.": "No se encontraron usuarios.", - "No valves": "", + "No valves": "No hay válvulas", "No valves to update": "No hay válvulas para actualizar", - "Node Ids": "", + "Node Ids": "IDs de Nodo", "None": "Ninguno", "Not factually correct": "No es correcto en todos los aspectos", "Not helpful": "No aprovechable", @@ -1074,7 +1074,7 @@ "OpenAI API settings updated": "Ajustes de API OpenAI actualizados", "OpenAI URL/Key required.": "URL/Clave de OpenAI requerida.", "openapi.json URL or Path": "URL o Ruta a openapi.json", - "Optional": "", + "Optional": "Opcional", "Options for running a local vision-language model in the picture description. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with picture_description_api.": "Opciones para usar modelos locales en la descripción de imágenes. Los parámetros se refieren a modelos alojados en HugginFace. Esta opción es mutuamente excluyente con \"picture_description_api\".", "or": "o", "Ordered List": "Lista Ordenada", @@ -1124,18 +1124,18 @@ "Playwright WebSocket URL": "URL de WebSocket de Playwright", "Please carefully review the following warnings:": "Por favor revisar cuidadosamente los siguientes avisos:", "Please do not close the settings page while loading the model.": "Por favor no cerrar la página de ajustes mientras se está descargando el modelo.", - "Please enter a message or attach a file.": "", - "Please enter a prompt": "Por favor ingresar un indicador", + "Please enter a message or attach a file.": "Por favor, ingresa un mensaje o adjunta un fichero.", + "Please enter a prompt": "Por favor, ingresa un indicador", "Please enter a valid path": "Por favor, ingresa una ruta válida", "Please enter a valid URL": "Por favor, ingresa una URL válida", "Please fill in all fields.": "Por favor rellenar todos los campos.", - "Please select a model first.": "Por favor primero seleccionar un modelo.", - "Please select a model.": "Por favor seleccionar un modelo.", - "Please select a reason": "Por favor seleccionar un motivo", + "Please select a model first.": "Por favor primero selecciona un modelo.", + "Please select a model.": "Por favor selecciona un modelo.", + "Please select a reason": "Por favor selecciona un motivo", "Please wait until all files are uploaded.": "Por favor, espera a que todos los ficheros se acaben de subir", "Port": "Puerto", "Positive attitude": "Actitud Positiva", - "Prefer not to say": "", + "Prefer not to say": "Prefiero no decirlo", "Prefix ID": "prefijo ID", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "El prefijo ID se utiliza para evitar conflictos con otras conexiones al añadir un prefijo a los IDs de modelo, dejar vacío para deshabilitarlo", "Prevent file creation": "Prevenir la creación de archivos", @@ -1175,7 +1175,7 @@ "References from": "Referencias desde", "Refused when it shouldn't have": "Rechazado cuando no debería haberlo hecho", "Regenerate": "Regenerar", - "Regenerate Menu": "", + "Regenerate Menu": "Regenerar Menú", "Reindex": "Reindexar", "Reindex Knowledge Base Vectors": "Reindexar Base Vectorial de Conocimiento", "Release Notes": "Notas de la Versión", @@ -1222,14 +1222,14 @@ "Save & Create": "Guardar y Crear", "Save & Update": "Guardar y Actualizar", "Save As Copy": "Guardar como Copia", - "Save Chat": "", + "Save Chat": "Guardar Chat", "Save Tag": "Guardar Etiqueta", "Saved": "Guardado", "Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "Ya no está soportado guardar registros de chat directamente en el almacenamiento del navegador. Por favor, dedica un momento a descargar y eliminar tus registros de chat pulsando en el botón de abajo. No te preocupes, puedes re-importar fácilmente tus registros desde las opciones de configuración", "Scroll On Branch Change": "Desplazamiento al Cambiar Rama", "Search": "Buscar", "Search a model": "Buscar un Modelo", - "Search all emojis": "", + "Search all emojis": "Buscar todos los emojis", "Search Base": "Busqueda Base", "Search Chats": "Buscar Chats", "Search Collection": "Buscar Colección", @@ -1259,32 +1259,32 @@ "See readme.md for instructions": "Ver readme.md para instrucciones", "See what's new": "Ver las novedades", "Seed": "Semilla", - "Select": "", + "Select": "Seleccionar", "Select a base model": "Seleccionar un modelo base", - "Select a base model (e.g. llama3, gpt-4o)": "", + "Select a base model (e.g. llama3, gpt-4o)": "Seleccionar un modelo base (ej. llama3, gpt-4o)", "Select a conversation to preview": "Seleccionar una conversación para previsualizar", "Select a engine": "Seleccionar un motor", "Select a function": "Seleccionar una función", "Select a group": "Seleccionar un grupo", - "Select a language": "", - "Select a mode": "", + "Select a language": "Seleccionar un idioma", + "Select a mode": "Seleccionar un modo", "Select a model": "Selecciona un modelo", - "Select a model (optional)": "", + "Select a model (optional)": "Selecionar un modelo (opcional)", "Select a pipeline": "Seleccionar una tubería", "Select a pipeline url": "Seleccionar una url de tubería", - "Select a reranking model engine": "", - "Select a role": "", - "Select a theme": "", + "Select a reranking model engine": "Seleccionar un motor de modelos de reclasificación", + "Select a role": "Seleccionar un rol", + "Select a theme": "Seleccionar un tema", "Select a tool": "Seleccioanr una herramienta", - "Select a voice": "", + "Select a voice": "Seleccioanr una voz", "Select an auth method": "Seleccionar un método de autentificación", - "Select an embedding model engine": "", - "Select an engine": "", + "Select an embedding model engine": "Seleccionar un motor de modelos de incrustación", + "Select an engine": "Seleccionar un motor", "Select an Ollama instance": "Seleccionar una instancia de Ollama", - "Select an output format": "", - "Select dtype": "", + "Select an output format": "Seleccionar un formato de salida", + "Select dtype": "Seleccionar dtype", "Select Engine": "Seleccionar Motor", - "Select how to split message text for TTS requests": "", + "Select how to split message text for TTS requests": "Seleccionar como dividir los mensajes de texto para las peticiones TTS", "Select Knowledge": "Seleccionar Conocimiento", "Select only one model to call": "Seleccionar sólo un modelo a llamar", "Selected model(s) do not support image inputs": "Modelo(s) seleccionado(s) no admiten entradas de imagen", @@ -1301,7 +1301,7 @@ "Serply API Key": "Clave API de Serply", "Serpstack API Key": "Clave API de Serpstack", "Server connection verified": "Conexión al servidor verificada", - "Session": "", + "Session": "Sesión", "Set as default": "Establecer como Predeterminado", "Set CFG Scale": "Establecer la Escala CFG", "Set Default Model": "Establecer Modelo Predeterminado", @@ -1327,7 +1327,7 @@ "Share": "Compartir", "Share Chat": "Compartir Chat", "Share to Open WebUI Community": "Compartir con la Comunidad Open-WebUI", - "Share your background and interests": "", + "Share your background and interests": "Compartir tus antecedentes e intereses", "Sharing Permissions": "Permisos al Compartir", "Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "Accesos cortos con un asterisco (*) depende de la situación y solo activos bajo determinadas condiciones.", "Show": "Mostrar", @@ -1353,12 +1353,12 @@ "sk-1234": "sk-1234", "Skip Cache": "Evitar Caché", "Skip the cache and re-run the inference. Defaults to False.": "Evitar caché y reiniciar la interfaz. Valor predeterminado Falso", - "Something went wrong :/": "", - "Sonar": "", - "Sonar Deep Research": "", - "Sonar Pro": "", - "Sonar Reasoning": "", - "Sonar Reasoning Pro": "", + "Something went wrong :/": "Algo ha ido mal :/", + "Sonar": "Sonar", + "Sonar Deep Research": "Sonar Investigación Profunda", + "Sonar Pro": "Sonar Pro", + "Sonar Reasoning": "Sonar Razonamiento", + "Sonar Reasoning Pro": "Sonar Razonamiento Pro", "Sougou Search API sID": "API sID de Sougou Search", "Sougou Search API SK": "SK API de Sougou Search", "Source": "Fuente", @@ -1381,7 +1381,7 @@ "Stylized PDF Export": "Exportar PDF Estilizado", "Subtitle (e.g. about the Roman Empire)": "Subtítulo (p.ej. sobre el Imperio Romano)", "Success": "Correcto", - "Successfully imported {{userCount}} users.": "", + "Successfully imported {{userCount}} users.": "{{userCount}} usuarios importados correctamente.", "Successfully updated.": "Actualizado correctamente.", "Suggest a change": "Sugerir un cambio", "Suggested": "Sugerido", @@ -1406,7 +1406,7 @@ "Tell us more:": "Dinos algo más:", "Temperature": "Temperatura", "Temporary Chat": "Chat Temporal", - "Temporary Chat by Default": "", + "Temporary Chat by Default": "Chat Temporal Predeterminado", "Text Splitter": "Divisor de Texto", "Text-to-Speech": "Texto a Voz", "Text-to-Speech Engine": "Motor Texto a Voz(TTS)", @@ -1425,7 +1425,7 @@ "The maximum file size in MB. If the file size exceeds this limit, the file will not be uploaded.": "El tamaño máximo del archivo en MB. Si el tamaño del archivo supera este límite, el archivo no se subirá.", "The maximum number of files that can be used at once in chat. If the number of files exceeds this limit, the files will not be uploaded.": "El número máximo de archivos que se pueden utilizar a la vez en el chat. Si se supera este límite, los archivos no se subirán.", "The output format for the text. Can be 'json', 'markdown', or 'html'. Defaults to 'markdown'.": "El formato de salida para el texto. Puede ser 'json', 'markdown' o 'html'. Valor predeterminado: 'markdown'", - "The passwords you entered don't quite match. Please double-check and try again.": "", + "The passwords you entered don't quite match. Please double-check and try again.": "Las contraseñas que ingresó no coinciden. Por favor, verifique y vuelva a intentarlo.", "The score should be a value between 0.0 (0%) and 1.0 (100%).": "La puntuación debe ser un valor entre 0.0 (0%) y 1.0 (100%).", "The stream delta chunk size for the model. Increasing the chunk size will make the model respond with larger pieces of text at once.": "El tamaño del fragmentado incremental para el modelo. Aumentar el tamaño del fragmentado hará que el modelo responda con fragmentos de texto más grandes cada vez.", "The temperature of the model. Increasing the temperature will make the model answer more creatively.": "La temperatura del modelo. Aumentar la temperatura hará que el modelo responda de forma más creativa.", @@ -1539,9 +1539,9 @@ "Upload Files": "Subir Archivos", "Upload Pipeline": "Subir Tubería", "Upload Progress": "Progreso de la Subida", - "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", + "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Progreso de la Subida: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "URL": "URL", - "URL is required": "", + "URL is required": "La URL es requerida", "URL Mode": "Modo URL", "Usage": "Uso", "Use '#' in the prompt input to load and include your knowledge.": "Utilizar '#' en el indicador para cargar e incluir tu conocimiento.", @@ -1551,7 +1551,7 @@ "Use proxy designated by http_proxy and https_proxy environment variables to fetch page contents.": "Usar el proxy asignado en las variables del entorno http_proxy y/o https_proxy para extraer contenido", "user": "usuario", "User": "Usuario", - "User Groups": "", + "User Groups": "Grupos de Usuarios", "User location successfully retrieved.": "Ubicación de usuario obtenida correctamente.", "User menu": "Menu de Usuario", "User Webhooks": "Usuario Webhooks", @@ -1561,7 +1561,7 @@ "Using Focused Retrieval": "Usando Recuperación Focalizada", "Using the default arena model with all models. Click the plus button to add custom models.": "Usando el modelo de arena predeterminado con todos los modelos. Pulsar en el botón + para agregar modelos personalizados.", "Valid time units:": "Unidades de tiempo válidas:", - "Validate certificate": "", + "Validate certificate": "Validar certificado", "Valves": "Válvulas", "Valves updated": "Válvulas actualizadas", "Valves updated successfully": "Válvulas actualizados correctamente", @@ -1604,7 +1604,7 @@ "Whisper (Local)": "Whisper (Local)", "Why?": "¿Por qué?", "Widescreen Mode": "Modo Pantalla Ancha", - "Width": "", + "Width": "Ancho", "Won": "Ganó", "Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "Trabaja conjuntamente con top-k. Un valor más alto (p.ej. 0.95) dará lugar a un texto más diverso, mientras que un valor más bajo (p.ej. 0.5) generará un texto más centrado y conservador.", "Workspace": "Espacio de Trabajo", @@ -1628,7 +1628,7 @@ "You have shared this chat": "Has compartido esta conversación", "You're a helpful assistant.": "Eres un asistente atento, amable y servicial.", "You're now logged in.": "Has iniciado sesión.", - "Your Account": "", + "Your Account": "Tu Cuenta", "Your account status is currently pending activation.": "Tu cuenta está pendiente de activación.", "Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.": "Tu entera contribución irá directamente al desarrollador del complemento; Open-WebUI no recibe ningún porcentaje. Sin embargo, la plataforma de financiación elegida podría tener sus propias tarifas.", "Youtube": "Youtube", From 7a59cc91864a994c85cd31e7e1435ccdfe435030 Mon Sep 17 00:00:00 2001 From: _00_ <131402327+rgaricano@users.noreply.github.com> Date: Sat, 23 Aug 2025 20:58:12 +0200 Subject: [PATCH 07/74] Update translation.json Gramatical correction --- src/lib/i18n/locales/es-ES/translation.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index 8185323ec2..5550d91c83 100644 --- a/src/lib/i18n/locales/es-ES/translation.json +++ b/src/lib/i18n/locales/es-ES/translation.json @@ -101,7 +101,7 @@ "Always Play Notification Sound": "Reproducir Siempre Sonido de Notificación", "Amazing": "Emocionante", "an assistant": "un asistente", - "An error occurred while fetching the explanation": "A ocurrido un error obtenendo la explicación", + "An error occurred while fetching the explanation": "Ha ocurrido un error obtenendo la explicación", "Analytics": "Analíticas", "Analyzed": "Analizado", "Analyzing...": "Analizando..", From a463e58de6e2aa6d331a22882d635cdf87617b39 Mon Sep 17 00:00:00 2001 From: _00_ <131402327+rgaricano@users.noreply.github.com> Date: Sat, 23 Aug 2025 20:59:49 +0200 Subject: [PATCH 08/74] Update translation.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit correctión lost " --- src/lib/i18n/locales/es-ES/translation.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index 5550d91c83..8e1b1d0bf6 100644 --- a/src/lib/i18n/locales/es-ES/translation.json +++ b/src/lib/i18n/locales/es-ES/translation.json @@ -212,7 +212,7 @@ "Chat Background Image": "Imágen de Fondo del Chat", "Chat Bubble UI": "Interfaz del Chat en Burbuja", "Chat Controls": "Controles del Chat", - "Chat Conversation": Conversación del Chat", + "Chat Conversation": "Conversación del Chat", "Chat direction": "Dirección del Chat", "Chat ID": "ID del Chat", "Chat moved successfully": "Chat movido correctamente", From 3a360e441ed4d2783f87069e316cbbedecc89725 Mon Sep 17 00:00:00 2001 From: _00_ <131402327+rgaricano@users.noreply.github.com> Date: Sun, 24 Aug 2025 23:03:24 +0200 Subject: [PATCH 09/74] FIX-RTL in UserMessage.svelte FIX-RTL in UserMessage.svelte --- src/lib/components/chat/Messages/UserMessage.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/chat/Messages/UserMessage.svelte b/src/lib/components/chat/Messages/UserMessage.svelte index 292ebf8bac..19a3d75416 100644 --- a/src/lib/components/chat/Messages/UserMessage.svelte +++ b/src/lib/components/chat/Messages/UserMessage.svelte @@ -329,7 +329,7 @@ ? `max-w-[90%] px-5 py-2 bg-gray-50 dark:bg-gray-850 ${ message.files ? 'rounded-tr-lg' : '' }` - : ' w-full'}" + : ' w-full'} {$settings.chatDirection === 'RTL' ? 'text-right' : ''}" > {#if message.content} From 2b0e90c03221907a9aebccc7f215e0414a341318 Mon Sep 17 00:00:00 2001 From: _00_ <131402327+rgaricano@users.noreply.github.com> Date: Sun, 24 Aug 2025 23:04:57 +0200 Subject: [PATCH 10/74] FIX RTL in Update ResponseMessage.svelte FIX RTL in Update ResponseMessage.svelte --- src/lib/components/chat/Messages/ResponseMessage.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/chat/Messages/ResponseMessage.svelte b/src/lib/components/chat/Messages/ResponseMessage.svelte index 07aef8c25c..93c85b09de 100644 --- a/src/lib/components/chat/Messages/ResponseMessage.svelte +++ b/src/lib/components/chat/Messages/ResponseMessage.svelte @@ -639,7 +639,7 @@
-
+
{#if (message?.statusHistory ?? [...(message?.status ? [message?.status] : [])]).length > 0} {@const status = ( From 3839f18bb16c29176d98cdd58c649b251e200569 Mon Sep 17 00:00:00 2001 From: _00_ <131402327+rgaricano@users.noreply.github.com> Date: Sun, 24 Aug 2025 23:07:32 +0200 Subject: [PATCH 11/74] FIX- LTR in Update CodeBlock.svelte FIX- LTR in Update CodeBlock.svelte For CodeBlock allways LTR --- src/lib/components/chat/Messages/CodeBlock.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/chat/Messages/CodeBlock.svelte b/src/lib/components/chat/Messages/CodeBlock.svelte index a000528dd2..508b9bfc52 100644 --- a/src/lib/components/chat/Messages/CodeBlock.svelte +++ b/src/lib/components/chat/Messages/CodeBlock.svelte @@ -37,7 +37,7 @@ export let code = ''; export let attributes = {}; - export let className = 'my-2'; + export let className = 'my-2 !text-left !direction-ltr'; export let editorClassName = ''; export let stickyButtonsClassName = 'top-0'; From 0ea421ea20be52a48a9e186b31a9abb7b7a2a8a6 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 25 Aug 2025 01:12:14 +0400 Subject: [PATCH 12/74] refac --- backend/open_webui/routers/ollama.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/backend/open_webui/routers/ollama.py b/backend/open_webui/routers/ollama.py index 11bf5b914f..1a6b75c555 100644 --- a/backend/open_webui/routers/ollama.py +++ b/backend/open_webui/routers/ollama.py @@ -329,12 +329,13 @@ def merge_ollama_models_lists(model_lists): for idx, model_list in enumerate(model_lists): if model_list is not None: for model in model_list: - id = model["model"] - if id not in merged_models: - model["urls"] = [idx] - merged_models[id] = model - else: - merged_models[id]["urls"].append(idx) + id = model.get("model") + if id is not None: + if id not in merged_models: + model["urls"] = [idx] + merged_models[id] = model + else: + merged_models[id]["urls"].append(idx) return list(merged_models.values()) From 24e696e341bc9320113f9e39b166666f22f2551a Mon Sep 17 00:00:00 2001 From: _00_ <131402327+rgaricano@users.noreply.github.com> Date: Mon, 25 Aug 2025 00:01:01 +0200 Subject: [PATCH 13/74] Format Update ResponseMessage.svelte --- src/lib/components/chat/Messages/ResponseMessage.svelte | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/lib/components/chat/Messages/ResponseMessage.svelte b/src/lib/components/chat/Messages/ResponseMessage.svelte index 93c85b09de..36699471d0 100644 --- a/src/lib/components/chat/Messages/ResponseMessage.svelte +++ b/src/lib/components/chat/Messages/ResponseMessage.svelte @@ -639,7 +639,12 @@
-
+
{#if (message?.statusHistory ?? [...(message?.status ? [message?.status] : [])]).length > 0} {@const status = ( From 7b9dc693623280dc3110bf2d61c05c3cad591cb2 Mon Sep 17 00:00:00 2001 From: Shirasawa <764798966@qq.com> Date: Mon, 25 Aug 2025 14:37:51 +0800 Subject: [PATCH 15/74] fix: fix Safari IME composition bug --- src/lib/components/chat/MessageInput.svelte | 58 ++++++++++++--------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/src/lib/components/chat/MessageInput.svelte b/src/lib/components/chat/MessageInput.svelte index 0a7662eb70..adea345ed0 100644 --- a/src/lib/components/chat/MessageInput.svelte +++ b/src/lib/components/chat/MessageInput.svelte @@ -417,6 +417,30 @@ let recording = false; let isComposing = false; + // Safari has a bug where compositionend is not triggered correctly #16615 + // when using the virtual keyboard on iOS. + let compositionEndedAt = -2e8; + const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); + function inOrNearComposition(event: Event) { + if (isComposing) { + return true; + } + // See https://www.stum.de/2016/06/24/handling-ime-events-in-javascript/. + // On Japanese input method editors (IMEs), the Enter key is used to confirm character + // selection. On Safari, when Enter is pressed, compositionend and keydown events are + // emitted. The keydown event triggers newline insertion, which we don't want. + // This method returns true if the keydown event should be ignored. + // We only ignore it once, as pressing Enter a second time *should* insert a newline. + // Furthermore, the keydown event timestamp must be close to the compositionEndedAt timestamp. + // This guards against the case where compositionend is triggered without the keyboard + // (e.g. character confirmation may be done with the mouse), and keydown is triggered + // afterwards- we wouldn't want to ignore the keydown event in this case. + if (isSafari && Math.abs(event.timeStamp - compositionEndedAt) < 500) { + compositionEndedAt = -2e8; + return true; + } + return false; + } let chatInputContainerElement; let chatInputElement; @@ -1169,19 +1193,9 @@ return res; }} oncompositionstart={() => (isComposing = true)} - oncompositionend={() => { - const isSafari = /^((?!chrome|android).)*safari/i.test( - navigator.userAgent - ); - - if (isSafari) { - // Safari has a bug where compositionend is not triggered correctly #16615 - // when using the virtual keyboard on iOS. - // We use a timeout to ensure that the composition is ended after a short delay. - setTimeout(() => (isComposing = false)); - } else { - isComposing = false; - } + oncompositionend={(e) => { + compositionEndedAt = e.timeStamp; + isComposing = false; }} on:keydown={async (e) => { e = e.detail.event; @@ -1290,7 +1304,7 @@ navigator.msMaxTouchPoints > 0 ) ) { - if (isComposing) { + if (inOrNearComposition(e)) { return; } @@ -1393,17 +1407,9 @@ command = getCommand(); }} on:compositionstart={() => (isComposing = true)} - on:compositionend={() => { - const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); - - if (isSafari) { - // Safari has a bug where compositionend is not triggered correctly #16615 - // when using the virtual keyboard on iOS. - // We use a timeout to ensure that the composition is ended after a short delay. - setTimeout(() => (isComposing = false)); - } else { - isComposing = false; - } + oncompositionend={(e) => { + compositionEndedAt = e.timeStamp; + isComposing = false; }} on:keydown={async (e) => { const isCtrlPressed = e.ctrlKey || e.metaKey; // metaKey is for Cmd key on Mac @@ -1523,7 +1529,7 @@ navigator.msMaxTouchPoints > 0 ) ) { - if (isComposing) { + if (inOrNearComposition(e)) { return; } From 0e46f8091f710b109abe7f6abb73c8c7f0ffdb55 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 25 Aug 2025 14:29:05 +0400 Subject: [PATCH 16/74] fix: __tools__ param issue --- backend/open_webui/functions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/open_webui/functions.py b/backend/open_webui/functions.py index d8f2a61257..db367ccbd0 100644 --- a/backend/open_webui/functions.py +++ b/backend/open_webui/functions.py @@ -232,7 +232,7 @@ async def generate_function_chat_completion( "__metadata__": metadata, "__request__": request, } - extra_params["__tools__"] = get_tools( + extra_params["__tools__"] = await get_tools( request, tool_ids, user, From eacec793e980e553bf6ed5b70f3be294e24aee97 Mon Sep 17 00:00:00 2001 From: ibuki2003 Date: Mon, 25 Aug 2025 22:14:12 +0900 Subject: [PATCH 17/74] i18n: improve ja-JP translation --- src/lib/i18n/locales/ja-JP/translation.json | 1144 +++++++++---------- 1 file changed, 572 insertions(+), 572 deletions(-) diff --git a/src/lib/i18n/locales/ja-JP/translation.json b/src/lib/i18n/locales/ja-JP/translation.json index aad406ae70..ed89e47966 100644 --- a/src/lib/i18n/locales/ja-JP/translation.json +++ b/src/lib/i18n/locales/ja-JP/translation.json @@ -1,40 +1,40 @@ { - "-1 for no limit, or a positive integer for a specific limit": "", + "-1 for no limit, or a positive integer for a specific limit": "-1で無制限、または正の整数で制限を指定", "'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' または '-1' で無期限。", "(e.g. `sh webui.sh --api --api-auth username_password`)": "(例: `sh webui.sh --api --api-auth username_password`)", "(e.g. `sh webui.sh --api`)": "(例: `sh webui.sh --api`)", "(latest)": "(最新)", - "(leave blank for to use commercial endpoint)": "", - "[Last] dddd [at] h:mm A": "", - "[Today at] h:mm A": "", - "[Yesterday at] h:mm A": "", + "(leave blank for to use commercial endpoint)": "(商用エンドポイントを使用する場合は空欄のままにしてください)", + "[Last] dddd [at] h:mm A": "dddd h:mm A", + "[Today at] h:mm A": "[今日の] h:mm A", + "[Yesterday at] h:mm A": "[昨日の] h:mm A", "{{ models }}": "{{ モデル }}", - "{{COUNT}} Available Tools": "{{COUNT}} 利用可能ツール", - "{{COUNT}} characters": "", - "{{COUNT}} hidden lines": "{{COUNT}} 非表示行", - "{{COUNT}} Replies": "{{COUNT}} 返信", - "{{COUNT}} words": "", - "{{model}} download has been canceled": "", + "{{COUNT}} Available Tools": "{{COUNT}} 個の有効なツール", + "{{COUNT}} characters": "{{COUNT}} 文字", + "{{COUNT}} hidden lines": "{{COUNT}} 行が非表示", + "{{COUNT}} Replies": "{{COUNT}} 件の返信", + "{{COUNT}} words": "{{COUNT}} 語", + "{{model}} download has been canceled": "{{model}} のダウンロードがキャンセルされました", "{{user}}'s Chats": "{{user}} のチャット", "{{webUIName}} Backend Required": "{{webUIName}} バックエンドが必要です", - "*Prompt node ID(s) are required for image generation": "", - "A new version (v{{LATEST_VERSION}}) is now available.": "新しいバージョンが利用可能です。", + "*Prompt node ID(s) are required for image generation": "*画像生成にはプロンプトノードIDが必要です", + "A new version (v{{LATEST_VERSION}}) is now available.": "新しいバージョン (v{{LATEST_VERSION}}) が利用可能です。", "A task model is used when performing tasks such as generating titles for chats and web search queries": "タスクモデルは、チャットやウェブ検索クエリのタイトルの生成などのタスクを実行するときに使用されます", "a user": "ユーザー", "About": "概要", - "Accept autocomplete generation / Jump to prompt variable": "", + "Accept autocomplete generation / Jump to prompt variable": "補完を使用する・プロンプト変数にジャンプ", "Access": "アクセス", "Access Control": "アクセス制御", "Accessible to all users": "すべてのユーザーにアクセス可能", "Account": "アカウント", "Account Activation Pending": "アカウント承認待ち", "Accurate information": "情報が正確", - "Action": "", - "Action not found": "", + "Action": "アクション", + "Action not found": "アクションが見つかりません", "Action Required for Chat Log Storage": "チャットログの保存には操作が必要です", "Actions": "アクション", "Activate": "アクティブ化", - "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "このコマンド \"/{{COMMAND}}\" をチャットに入力してアクティブ化します", + "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "\"/{{COMMAND}}\" をチャットに入力してコマンドをアクティブ化します", "Active": "アクティブ", "Active Users": "アクティブユーザー", "Add": "追加", @@ -45,9 +45,9 @@ "Add Connection": "接続を追加", "Add Content": "コンテンツを追加", "Add content here": "ここへコンテンツを追加", - "Add Custom Parameter": "", + "Add Custom Parameter": "カスタムパラメータを追加", "Add custom prompt": "カスタムプロンプトを追加", - "Add Details": "", + "Add Details": "より詳しく", "Add Files": "ファイルを追加", "Add Group": "グループを追加", "Add Memory": "メモリを追加", @@ -58,17 +58,17 @@ "Add text content": "コンテンツを追加", "Add User": "ユーザーを追加", "Add User Group": "ユーザーグループを追加", - "Additional Config": "", - "Additional configuration options for marker. This should be a JSON string with key-value pairs. For example, '{\"key\": \"value\"}'. Supported keys include: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level": "", - "Adjusting these settings will apply changes universally to all users.": "これらの設定を調整すると、すべてのユーザーに変更が適用されます。", + "Additional Config": "追加設定", + "Additional configuration options for marker. This should be a JSON string with key-value pairs. For example, '{\"key\": \"value\"}'. Supported keys include: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level": "markerの追加設定オプション。これはキーと値のペアを含むJSON文字列である必要があります(例: '{\"key\": \"value\"}')。次のキーに対応しています: disable_links、keep_pageheader_in_output、keep_pagefooter_in_output、filter_blank_pages、drop_repeated_text、layout_coverage_threshold、merge_threshold、height_tolerance、gap_threshold、image_threshold、min_line_length、level_count、default_level", + "Adjusting these settings will apply changes universally to all users.": "これらの設定を変更すると、すべてのユーザーに変更が適用されます。", "admin": "管理者", "Admin": "管理者", "Admin Panel": "管理者パネル", "Admin Settings": "管理者設定", - "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "管理者は全てのツールにアクセス出来ます。ユーザーはワークスペースのモデル毎に割り当てて下さい。", - "Advanced Parameters": "詳細パラメーター", + "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "管理者は全てのツールにアクセスできます。ユーザーからはワークスペースのモデルごとに割り当てられたツールのみ使用可能です。", + "Advanced Parameters": "高度なパラメーター", "Advanced Params": "高度なパラメータ", - "AI": "", + "AI": "AI", "All": "全て", "All Documents": "全てのドキュメント", "All models deleted successfully": "全てのモデルが正常に削除されました", @@ -78,10 +78,10 @@ "Allow Chat Deletion": "チャットの削除を許可", "Allow Chat Edit": "チャットの編集を許可", "Allow Chat Export": "チャットのエクスポートを許可", - "Allow Chat Params": "", + "Allow Chat Params": "チャットパラメータを許可", "Allow Chat Share": "チャットの共有を許可", - "Allow Chat System Prompt": "", - "Allow Chat Valves": "", + "Allow Chat System Prompt": "チャットシステムプロンプトを許可", + "Allow Chat Valves": "チャットバルブを許可", "Allow File Upload": "ファイルのアップロードを許可", "Allow Multiple Models in Chat": "チャットで複数のモデルを許可", "Allow non-local voices": "ローカル以外のボイスを許可", @@ -90,38 +90,38 @@ "Allow Text to Speech": "テキストを音声に変換を許可", "Allow User Location": "ユーザーロケーションの許可", "Allow Voice Interruption in Call": "通話中に音声の割り込みを許可", - "Allowed Endpoints": "", - "Allowed File Extensions": "", - "Allowed file extensions for upload. Separate multiple extensions with commas. Leave empty for all file types.": "", + "Allowed Endpoints": "許可されたエンドポイント", + "Allowed File Extensions": "許可された拡張子", + "Allowed file extensions for upload. Separate multiple extensions with commas. Leave empty for all file types.": "アップロード可能なファイル拡張子。複数の拡張子はカンマで区切ってください。空欄ですべてのファイルタイプを許可します。", "Already have an account?": "すでにアカウントをお持ちですか?", - "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out.": "", + "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out.": "top_p の代替手法で、品質と多様性のバランスを確保することを目的としています。パラメータ p は、最も確率の高いトークンの確率に対する、トークンが考慮されるための最小確率を表します。たとえば、p=0.05 で最も可能性の高いトークンの確率が 0.9 の場合、0.045 未満の値を持つロジットはフィルタリングされます。", "Always": "常に", "Always Collapse Code Blocks": "常にコードブロックを折りたたむ", "Always Expand Details": "常に詳細を展開", "Always Play Notification Sound": "常に通知音を再生", - "Amazing": "", + "Amazing": "素晴らしい", "an assistant": "アシスタント", - "An error occurred while fetching the explanation": "", - "Analytics": "", - "Analyzed": "分析された", + "An error occurred while fetching the explanation": "説明の取得中にエラーが発生しました", + "Analytics": "分析", + "Analyzed": "分析済み", "Analyzing...": "分析中...", "and": "および", - "and {{COUNT}} more": "および{{COUNT}}件以上", - "and create a new shared link.": "し、新しい共有リンクを作成します。", + "and {{COUNT}} more": "および{{COUNT}}件", + "and create a new shared link.": "そして、新しい共有リンクを作成します。", "Android": "", "API": "", "API Base URL": "API ベース URL", - "API Base URL for Datalab Marker service. Defaults to: https://www.datalab.to/api/v1/marker": "", - "API details for using a vision-language model in the picture description. This parameter is mutually exclusive with picture_description_local.": "", + "API Base URL for Datalab Marker service. Defaults to: https://www.datalab.to/api/v1/marker": "Datalab MarkerサービスのAPIベースURL。デフォルトは https://www.datalab.to/api/v1/marker です", + "API details for using a vision-language model in the picture description. This parameter is mutually exclusive with picture_description_local.": "画像の説明でビジョン言語モデルを使用するためのAPIの詳細。このパラメータは picture_description_local と同時に使用できません。", "API Key": "API キー", "API Key created.": "API キーが作成されました。", "API Key Endpoint Restrictions": "API キーのエンドポイント制限", "API keys": "API キー", - "API Version": "", - "API Version is required": "", + "API Version": "API バージョン", + "API Version is required": "API バージョンが必要です", "Application DN": "", "Application DN Password": "", - "applies to all users with the \"user\" role": "", + "applies to all users with the \"user\" role": "「ユーザー」ロールを持つすべてのユーザーに適用されます", "April": "4月", "Archive": "アーカイブ", "Archive All Chats": "すべてのチャットをアーカイブする", @@ -134,23 +134,23 @@ "Are you sure?": "よろしいですか?", "Arena Models": "Arenaモデル", "Artifacts": "アーティファクト", - "Ask": "質問", - "Ask a question": "質問して下さい。", + "Ask": "質問する", + "Ask a question": "質問する", "Assistant": "アシスタント", "Attach file from knowledge": "ナレッジからファイルを添付", - "Attention to detail": "詳細に注意する", + "Attention to detail": "細部への注意", "Attribute for Mail": "メールの属性", "Attribute for Username": "ユーザー名の属性", "Audio": "オーディオ", "August": "8月", - "Auth": "", - "Authenticate": "", + "Auth": "認証", + "Authenticate": "認証", "Authentication": "認証", "Auto": "自動", "Auto-Copy Response to Clipboard": "クリップボードへの応答の自動コピー", "Auto-playback response": "応答の自動再生", - "Autocomplete Generation": "オートコンプリート生成", - "Autocomplete Generation Input Max Length": "オートコンプリート生成入力の最大長", + "Autocomplete Generation": "自動補完の生成", + "Autocomplete Generation Input Max Length": "自動補完生成の入力の最大長", "Automatic1111": "AUTOMATIC1111", "AUTOMATIC1111 Api Auth String": "AUTOMATIC1111のAuthを入力", "AUTOMATIC1111 Base URL": "AUTOMATIC1111 ベース URL", @@ -158,9 +158,9 @@ "Available list": "利用可能リスト", "Available Tools": "利用可能ツール", "available users": "利用可能なユーザー", - "available!": "利用可能!", + "available!": "が利用可能です!", "Away": "離席中", - "Awful": "", + "Awful": "ひどい", "Azure AI Speech": "AzureAIスピーチ", "Azure OpenAI": "Azure OpenAI", "Azure Region": "Azureリージョン", @@ -168,54 +168,54 @@ "Bad Response": "応答が悪い", "Banners": "バナー", "Base Model (From)": "ベースモデル (From)", - "Base Model List Cache speeds up access by fetching base models only at startup or on settings save—faster, but may not show recent base model changes.": "", - "Bearer": "", - "before": "より前", + "Base Model List Cache speeds up access by fetching base models only at startup or on settings save—faster, but may not show recent base model changes.": "ベースモデルリストキャッシュは、起動時または設定保存時にのみベースモデルを取得することでアクセスを高速化します。これにより高速になりますが、最近のベースモデルの変更が表示されない場合があります。", + "Bearer": "Bearer", + "before": "以前", "Being lazy": "怠惰な", "Beta": "ベータ", "Bing Search V7 Endpoint": "Bing Search V7 エンドポイント", "Bing Search V7 Subscription Key": "Bing Search V7 サブスクリプションキー", - "Bio": "", - "Birth Date": "", - "BM25 Weight": "", + "Bio": "自己紹介", + "Birth Date": "生年月日", + "BM25 Weight": "BM25の重み", "Bocha Search API Key": "Bocha Search APIキー", - "Bold": "", + "Bold": "太字", "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "特定のトークンの強調またはペナルティを適用します。バイアス値は-100から100(包括的)にクランプされます。(デフォルト:なし)", "Both Docling OCR Engine and Language(s) must be provided or both left empty.": "Docling OCRエンジンと言語(s)の両方が提供されているか、両方が空のままになっている必要があります。", "Brave Search API Key": "Brave Search APIキー", - "Bullet List": "", - "Button ID": "", - "Button Label": "", - "Button Prompt": "", + "Bullet List": "箇条書きリスト", + "Button ID": "ボタンID", + "Button Label": "ボタンラベル", + "Button Prompt": "ボタンプロンプト", "By {{name}}": "{{name}}による", "Bypass Embedding and Retrieval": "埋め込みと検索をバイパス", - "Bypass Web Loader": "", - "Cache Base Model List": "", + "Bypass Web Loader": "Webローダーをバイパス", + "Cache Base Model List": "ベースモデルリストをキャッシュ", "Calendar": "カレンダー", "Call": "コール", - "Call feature is not supported when using Web STT engine": "Web STTエンジンを使用している場合、コール機能はサポートされていません。", + "Call feature is not supported when using Web STT engine": "Web STTエンジンを使用している場合、コール機能は使用できません", "Camera": "カメラ", "Cancel": "キャンセル", - "Capabilities": "資格", + "Capabilities": "機能", "Capture": "キャプチャ", "Capture Audio": "音声のキャプチャ", "Certificate Path": "証明書パス", "Change Password": "パスワードを変更", - "Channel deleted successfully": "", + "Channel deleted successfully": "チャンネルが正常に削除されました", "Channel Name": "チャンネル名", - "Channel updated successfully": "", + "Channel updated successfully": "チャンネルが正常に更新されました", "Channels": "チャンネル", "Character": "文字", "Character limit for autocomplete generation input": "オートコンプリート生成入力の文字数の制限", - "Chart new frontiers": "", + "Chart new frontiers": "新しいフロンティアを切り開く", "Chat": "チャット", "Chat Background Image": "チャットの背景画像", "Chat Bubble UI": "チャットバブルUI", "Chat Controls": "チャットコントロール", - "Chat Conversation": "", + "Chat Conversation": "チャットの会話", "Chat direction": "チャットの方向", - "Chat ID": "", - "Chat moved successfully": "", + "Chat ID": "チャットID", + "Chat moved successfully": "チャットの移動に成功しました", "Chat Overview": "チャット概要", "Chat Permissions": "チャットの許可", "Chat Tags Auto-Generation": "チャットタグの自動生成", @@ -224,38 +224,38 @@ "Check for updates": "アップデートを確認", "Checking for updates...": "アップデートを確認しています...", "Choose a model before saving...": "保存する前にモデルを選択してください...", - "Chunk Overlap": "チャンクオーバーラップ", + "Chunk Overlap": "チャンクのオーバーラップ", "Chunk Size": "チャンクサイズ", - "Ciphers": "", - "Citation": "引用文", - "Citations": "", + "Ciphers": "暗号化方式", + "Citation": "引用", + "Citations": "引用", "Clear memory": "メモリをクリア", - "Clear Memory": "", - "click here": "", - "Click here for filter guides.": "", + "Clear Memory": "メモリをクリア", + "click here": "ここをクリック", + "Click here for filter guides.": "フィルターガイドはこちらをクリックしてください。", "Click here for help.": "ヘルプについてはここをクリックしてください。", "Click here to": "ここをクリックして", - "Click here to download user import template file.": "ユーザーテンプレートをインポートするにはここをクリックしてください。", - "Click here to learn more about faster-whisper and see the available models.": "", - "Click here to see available models.": "", - "Click here to select": "選択するにはここをクリックしてください", - "Click here to select a csv file.": "CSVファイルを選択するにはここをクリックしてください。", - "Click here to select a py file.": "Pythonスクリプトファイルを選択するにはここをクリックしてください。", + "Click here to download user import template file.": "ここをクリックしてユーザーインポートテンプレートファイルをダウンロード", + "Click here to learn more about faster-whisper and see the available models.": "ここをクリックしてfaster-whisperについてと利用可能なモデルを確認してください。", + "Click here to see available models.": "ここをクリックして利用可能なモデルを確認", + "Click here to select": "ここをクリックして選択", + "Click here to select a csv file.": "ここをクリックしてCSVファイルを選択", + "Click here to select a py file.": "ここをクリックしてpyファイルを選択", "Click here to upload a workflow.json file.": "workflow.jsonファイルをアップロードするにはここをクリックしてください。", "click here.": "ここをクリックしてください。", - "Click on the user role button to change a user's role.": "ユーザーの役割を変更するには、ユーザー役割ボタンをクリックしてください。", + "Click on the user role button to change a user's role.": "ユーザーのロールを変更するには、ユーザーロールボタンをクリックしてください。", "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "クリップボードへの書き込み許可がありません。ブラウザ設定を確認し許可してください。", "Clone": "クローン", "Clone Chat": "チャットをクローン", "Clone of {{TITLE}}": "{{TITLE}}のクローン", "Close": "閉じる", - "Close Banner": "", - "Close Configure Connection Modal": "", - "Close modal": "", - "Close settings modal": "", - "Close Sidebar": "", - "CMU ARCTIC speaker embedding name": "", - "Code Block": "", + "Close Banner": "バナーを閉じる", + "Close Configure Connection Modal": "接続設定モーダルを閉じる", + "Close modal": "モーダルを閉じる", + "Close settings modal": "設定モーダルを閉じる", + "Close Sidebar": "サイドバーを閉じる", + "CMU ARCTIC speaker embedding name": "CMU Arctic スピーカー埋め込み名", + "Code Block": "コードブロック", "Code execution": "コードの実行", "Code Execution": "コードの実行", "Code Execution Engine": "コードの実行エンジン", @@ -273,60 +273,60 @@ "ComfyUI Base URL is required.": "ComfyUIベースURLが必要です。", "ComfyUI Workflow": "ComfyUIワークフロー", "ComfyUI Workflow Nodes": "ComfyUIワークフローノード", - "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma separated Node Ids (e.g. 1 or 1,2)": "カンマで区切られたノードID (例: 1 または 1,2)", "Command": "コマンド", - "Comment": "", - "Completions": "コンプリート", - "Compress Images in Channels": "", + "Comment": "コメント", + "Completions": "Completions", + "Compress Images in Channels": "チャンネルで画像を圧縮する", "Concurrent Requests": "同時リクエスト", - "Config imported successfully": "", + "Config imported successfully": "設定のインポートに成功しました", "Configure": "設定", "Confirm": "確認", "Confirm Password": "パスワードの確認", - "Confirm your action": "あなたのアクションの確認", + "Confirm your action": "操作の確認", "Confirm your new password": "新しいパスワードの確認", - "Confirm Your Password": "", + "Confirm Your Password": "パスワードの確認", "Connect to your own OpenAI compatible API endpoints.": "独自のOpenAI互換APIエンドポイントに接続します。", "Connect to your own OpenAPI compatible external tool servers.": "独自のOpenAPI互換外部ツールサーバーに接続します。", "Connection failed": "接続に失敗しました", "Connection successful": "接続に成功しました", - "Connection Type": "", + "Connection Type": "接続タイプ", "Connections": "接続", "Connections saved successfully": "接続が保存されました", - "Connections settings updated": "", - "Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort.": "", - "Contact Admin for WebUI Access": "WEBUIへの接続について管理者に問い合わせ下さい。", + "Connections settings updated": "接続設定が更新されました", + "Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort.": "推論モデルの推論に対する努力を設定します。特定のプロバイダーの推論の努力をサポートする推論モデルでのみ適用されます。", + "Contact Admin for WebUI Access": "WEBUIへのアクセスについて管理者に問い合わせ下さい。", "Content": "コンテンツ", - "Content Extraction Engine": "", + "Content Extraction Engine": "コンテンツ抽出エンジン", "Continue Response": "続きの応答", "Continue with {{provider}}": "{{provider}}で続ける", "Continue with Email": "メールで続ける", "Continue with LDAP": "LDAPで続ける", - "Control how message text is split for TTS requests. 'Punctuation' splits into sentences, 'paragraphs' splits into paragraphs, and 'none' keeps the message as a single string.": "TTSリクエストのメッセージテキストの分割方法を制御します。'句読点'は文に分割し、'段落'は段落に分割し、'なし'はメッセージを単一の文字列として保持します。", + "Control how message text is split for TTS requests. 'Punctuation' splits into sentences, 'paragraphs' splits into paragraphs, and 'none' keeps the message as a single string.": "TTSリクエストのメッセージテキストの分割方法を制御します。'Punctuation'は文に分割し、'Paragraphs'は段落に分割し、'なし'はメッセージを単一の文字列として扱います。", "Control the repetition of token sequences in the generated text. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 1.1) will be more lenient. At 1, it is disabled.": "生成されたテキストのトークンシーケンスの繰り返しを制御します。値が高いほど(例:1.5)繰り返しをより強くペナルティを課し、値が低いほど(例:1.1)より寛容になります。値が1の場合、無効になります。", "Controls": "コントロール", "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text.": "出力のコヒーレンスとdiversityのバランスを制御します。値が低いほど、より焦点が絞られ、一貫性のあるテキストになります。", - "Conversation saved successfully": "", + "Conversation saved successfully": "会話が正常に保存されました", "Copied": "コピーしました。", - "Copied link to clipboard": "", + "Copied link to clipboard": "クリップボードにリンクをコピーしました", "Copied shared chat URL to clipboard!": "共有チャットURLをクリップボードにコピーしました!", "Copied to clipboard": "クリップボードにコピーしました。", "Copy": "コピー", "Copy Formatted Text": "フォーマットされたテキストをコピー", "Copy last code block": "最後のコードブロックをコピー", "Copy last response": "最後の応答をコピー", - "Copy link": "", + "Copy link": "リンクをコピー", "Copy Link": "リンクをコピー", "Copy to clipboard": "クリップボードにコピー", "Copying to clipboard was successful!": "クリップボードへのコピーが成功しました!", - "CORS must be properly configured by the provider to allow requests from Open WebUI.": "", - "Create": "", + "CORS must be properly configured by the provider to allow requests from Open WebUI.": "Open WebUIからのリクエストを許可するために、プロバイダーによってCORSが適切に設定されている必要があります。", + "Create": "作成", "Create a knowledge base": "ナレッジベースを作成する", "Create a model": "モデルを作成する", "Create Account": "アカウントを作成", "Create Admin Account": "管理者アカウントを作成", "Create Channel": "チャンネルを作成", - "Create Folder": "", + "Create Folder": "フォルダを作成", "Create Group": "グループを作成", "Create Knowledge": "ナレッジベース作成", "Create new key": "新しいキーを作成", @@ -341,32 +341,32 @@ "Current Model": "現在のモデル", "Current Password": "現在のパスワード", "Custom": "カスタム", - "Custom description enabled": "", - "Custom Parameter Name": "", - "Custom Parameter Value": "", - "Danger Zone": "危険なゾーン", + "Custom description enabled": "カスタム説明が有効です", + "Custom Parameter Name": "カスタムパラメータ名", + "Custom Parameter Value": "カスタムパラメータ値", + "Danger Zone": "危険地帯", "Dark": "ダーク", "Database": "データベース", "Datalab Marker API": "", - "Datalab Marker API Key required.": "", - "DD/MM/YYYY": "", + "Datalab Marker API Key required.": "Datalab Marker APIキーが必要です", + "DD/MM/YYYY": "YYYY/MM/DD", "December": "12月", "Deepgram": "", "Default": "デフォルト", "Default (Open AI)": "デフォルト(OpenAI)", "Default (SentenceTransformers)": "デフォルト (SentenceTransformers)", - "Default action buttons will be used.": "", - "Default description enabled": "", - "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model's built-in tool-calling capabilities, but requires the model to inherently support this feature.": "", + "Default action buttons will be used.": "デフォルトのアクションボタンが使用されます", + "Default description enabled": "デフォルト説明が有効です", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model's built-in tool-calling capabilities, but requires the model to inherently support this feature.": "デフォルトモードは、実行前にツールを一度呼び出すことで、より広範なモデルで動作します。ネイティブモードは、モデルの組み込みのツール呼び出し機能を活用しますが、モデルがこの機能をサポートしている必要があります。", "Default Model": "デフォルトモデル", "Default model updated": "デフォルトモデルが更新されました", "Default Models": "デフォルトモデル", - "Default permissions": "デフォルトの許可", - "Default permissions updated successfully": "デフォルトの許可が更新されました", + "Default permissions": "デフォルトの権限", + "Default permissions updated successfully": "デフォルトの権限が更新されました", "Default Prompt Suggestions": "デフォルトのプロンプトの提案", - "Default to 389 or 636 if TLS is enabled": "TLSが有効な場合、389または636にデフォルトを設定します。", - "Default to ALL": "デフォルトをALLに設定", - "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "", + "Default to 389 or 636 if TLS is enabled": "389 またはTLSが有効な場合は 636 がデフォルト", + "Default to ALL": "標準ではALL", + "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "デフォルトではセグメント化された検索を使用して、焦点を絞った関連性の高いコンテンツ抽出を行います。これはほとんどの場合に推奨されます。", "Default User Role": "デフォルトのユーザー役割", "Delete": "削除", "Delete a model": "モデルを削除", @@ -379,48 +379,48 @@ "Delete function?": "Functionを削除しますか?", "Delete Message": "メッセージを削除", "Delete message?": "メッセージを削除しますか?", - "Delete note?": "", + "Delete note?": "ノートを削除しますか?", "Delete prompt?": "プロンプトを削除しますか?", - "delete this link": "このリンクを削除します", + "delete this link": "このリンクを削除", "Delete tool?": "ツールを削除しますか?", "Delete User": "ユーザーを削除", "Deleted {{deleteModelTag}}": "{{deleteModelTag}} を削除しました", "Deleted {{name}}": "{{name}}を削除しました", - "Deleted User": "ユーザーを削除", - "Deployment names are required for Azure OpenAI": "", + "Deleted User": "削除されたユーザー", + "Deployment names are required for Azure OpenAI": "Azure OpenAIにはデプロイメント名が必要です", "Describe Pictures in Documents": "ドキュメントの画像を説明", - "Describe your knowledge base and objectives": "ナレッジベースと目的を説明してください", + "Describe your knowledge base and objectives": "ナレッジベースと目的を説明", "Description": "説明", "Detect Artifacts Automatically": "自動的にアーティファクトを検出", - "Dictate": "", - "Didn't fully follow instructions": "説明に沿って操作していませんでした", + "Dictate": "音声入力", + "Didn't fully follow instructions": "指示に完全に従わなかった", "Direct": "直接", "Direct Connections": "ダイレクトコネクション", "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "ダイレクトコネクションは、ユーザーが独自のOpenAI互換APIエンドポイントに接続できるようにします。", "Direct Tool Servers": "ダイレクトツールサーバー", - "Directory selection was cancelled": "", - "Disable Code Interpreter": "", - "Disable Image Extraction": "", - "Disable image extraction from the PDF. If Use LLM is enabled, images will be automatically captioned. Defaults to False.": "", + "Directory selection was cancelled": "ディレクトリ選択がキャンセルされました", + "Disable Code Interpreter": "コードインタプリタを無効化", + "Disable Image Extraction": "画像の抽出を無効化", + "Disable image extraction from the PDF. If Use LLM is enabled, images will be automatically captioned. Defaults to False.": "PDFからの画像の抽出を無効化します。LLMを使用 が有効の場合、画像は自動で説明文に変換されます。デフォルトで無効", "Disabled": "無効", "Discover a function": "Functionを探す", "Discover a model": "モデルを探す", "Discover a prompt": "プロンプトを探す", "Discover a tool": "ツールを探す", "Discover how to use Open WebUI and seek support from the community.": "Open WebUIの使用方法を探し、コミュニティからサポートを求めてください。", - "Discover wonders": "", + "Discover wonders": "不思議を発見", "Discover, download, and explore custom functions": "カスタムFunctionを探してダウンロードする", "Discover, download, and explore custom prompts": "カスタムプロンプトを探してダウンロードする", "Discover, download, and explore custom tools": "カスタムツールを探てしダウンロードする", "Discover, download, and explore model presets": "モデルプリセットを探してダウンロードする", - "Display": "", + "Display": "表示", "Display Emoji in Call": "コールで絵文字を表示", - "Display Multi-model Responses in Tabs": "", + "Display Multi-model Responses in Tabs": "複数モデルの応答をタブで表示する", "Display the username instead of You in the Chat": "チャットで「あなた」の代わりにユーザー名を表示", "Displays citations in the response": "応答に引用を表示", - "Dive into knowledge": "", + "Dive into knowledge": "知識に飛び込む", "Do not install functions from sources you do not fully trust.": "信頼できないソースからFunctionをインストールしないでください。", - "Do not install tools from sources you do not fully trust.": "信頼出来ないソースからツールをインストールしないでください。", + "Do not install tools from sources you do not fully trust.": "信頼できないソースからツールをインストールしないでください。", "Docling": "", "Docling Server URL required.": "DoclingサーバーURLが必要です。", "Document": "ドキュメント", @@ -428,53 +428,53 @@ "Document Intelligence endpoint and key required.": "ドキュメントインテリジェンスエンドポイントとキーが必要です。", "Documentation": "ドキュメント", "Documents": "ドキュメント", - "does not make any external connections, and your data stays securely on your locally hosted server.": "外部接続を行わず、データはローカルでホストされているサーバー上に安全に保持されます。", - "Domain Filter List": "", - "don't fetch random pipelines from sources you don't trust.": "信頼できないソースからランダムなパイプラインを取得しないでください。", + "does not make any external connections, and your data stays securely on your locally hosted server.": "は外部接続を行わず、データはローカルでホストされているサーバー上に安全に保持されます。", + "Domain Filter List": "ドメインフィルターリスト", + "don't fetch random pipelines from sources you don't trust.": "信頼できないソースからやみくもにパイプラインを取得しないでください。", "Don't have an account?": "アカウントをお持ちではありませんか?", - "don't install random functions from sources you don't trust.": "信頼出来ないソースからランダムFunctionをインストールしないでください。", - "don't install random tools from sources you don't trust.": "信頼出来ないソースからランダムツールをインストールしないでください。", - "Don't like the style": "デザインが好きでない", + "don't install random functions from sources you don't trust.": "信頼できないソースからランダムFunctionをインストールしないでください。", + "don't install random tools from sources you don't trust.": "信頼できないソースからランダムツールをインストールしないでください。", + "Don't like the style": "スタイルが気に入らない", "Done": "完了", "Download": "ダウンロード", "Download & Delete": "ダウンロードして削除", "Download as SVG": "SVGとしてダウンロード", "Download canceled": "ダウンロードをキャンセルしました", "Download Database": "データベースをダウンロード", - "Drag and drop a file to upload or select a file to view": "", - "Draw": "", - "Drop any files here to upload": "", - "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "例: '30秒'、'10分'。有効な時間単位は '秒'、'分'、'時間' です。", - "e.g. \"json\" or a JSON schema": "", + "Drag and drop a file to upload or select a file to view": "ドラッグアンドドロップしてファイルをアップロードするか、ファイルを選択して表示", + "Draw": "引き分け", + "Drop any files here to upload": "ここにファイルをドロップしてアップロード", + "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "例: '30s'、'10m'。有効な時間単位は 's'、'm'、'h' です。", + "e.g. \"json\" or a JSON schema": "例: \"json\" または JSON スキーマ", "e.g. 60": "", - "e.g. A filter to remove profanity from text": "", + "e.g. A filter to remove profanity from text": "例: テキストから不適切な表現を削除するフィルター", "e.g. en": "", "e.g. My Filter": "", "e.g. My Tools": "", "e.g. my_filter": "", "e.g. my_tools": "", "e.g. pdf, docx, txt": "", - "e.g. Tools for performing various operations": "", - "e.g., 3, 4, 5 (leave blank for default)": "", - "e.g., audio/wav,audio/mpeg,video/* (leave blank for defaults)": "", - "e.g., en-US,ja-JP (leave blank for auto-detect)": "", - "e.g., westus (leave blank for eastus)": "", + "e.g. Tools for performing various operations": "e.g. 様々な操作を実行するためのツール", + "e.g., 3, 4, 5 (leave blank for default)": "e.g. 3, 4, 5 (空白でデフォルト)", + "e.g., audio/wav,audio/mpeg,video/* (leave blank for defaults)": "e.g., audio/wav,audio/mpeg,video/* (空白でデフォルト)", + "e.g., en-US,ja-JP (leave blank for auto-detect)": "e.g., en-US, ja-JP (空白で自動検出)", + "e.g., westus (leave blank for eastus)": "e.g., westus (空白で eastus)", "Edit": "編集", "Edit Arena Model": "Arenaモデルを編集", "Edit Channel": "チャンネルを編集", "Edit Connection": "接続を編集", "Edit Default Permissions": "デフォルトの許可を編集", - "Edit Folder": "", + "Edit Folder": "フォルダを編集", "Edit Memory": "メモリを編集", "Edit User": "ユーザーを編集", "Edit User Group": "ユーザーグループを編集", - "Edited": "", - "Editing": "", - "Eject": "", + "Edited": "編集済み", + "Editing": "編集中", + "Eject": "取り出す", "ElevenLabs": "", "Email": "メールアドレス", - "Embark on adventures": "", - "Embedding": "", + "Embark on adventures": "冒険に出かける", + "Embedding": "埋め込み", "Embedding Batch Size": "埋め込みモデルバッチサイズ", "Embedding Model": "埋め込みモデル", "Embedding Model Engine": "埋め込みモデルエンジン", @@ -484,20 +484,20 @@ "Enable Code Execution": "コードの実行を有効にする", "Enable Code Interpreter": "コードインタプリタを有効にする", "Enable Community Sharing": "コミュニティ共有を有効にする", - "Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "", - "Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "", + "Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "メモリロック (mlock) を有効にして、モデルデータがRAMからスワップアウトされるのを防ぐ。このオプションは、モデルが現在使用しているページセットをRAMにロックし、ディスクにスワップアウトされないようにします。これにより、ページフォルトを回避し、高速なデータアクセスを保証することで、パフォーマンスの維持に役立ちます。 ", + "Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "モデルデータのロードにメモリマッピング (mmap) を有効する。このオプションは、ディスクファイルをRAM内にあるかのように扱うことで、システムがディスクストレージをRAMの拡張として使用することを可能にします。これにより、より高速なデータアクセスが可能になり、モデルのパフォーマンスを向上させることができます。ただし、すべてのシステムで正しく動作するわけではなく、かなりのディスク容量を消費する可能性があります。 ", "Enable Message Rating": "メッセージ評価を有効にする", - "Enable Mirostat sampling for controlling perplexity.": "", + "Enable Mirostat sampling for controlling perplexity.": "Perplexityを制御するためにMirostatサンプリングを有効する。", "Enable New Sign Ups": "新規登録を有効にする", "Enabled": "有効", "Endpoint URL": "エンドポイントURL", "Enforce Temporary Chat": "一時的なチャットを強制する", - "Enhance": "", - "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "CSVファイルに4つの列が含まれていることを確認してください: Name, Email, Password, Role.", + "Enhance": "改善する", + "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "CSVファイルには、次の4つの列をこの順番で含めてください: Name, Email, Password, Role。", "Enter {{role}} message here": "{{role}} メッセージをここに入力してください", - "Enter a detail about yourself for your LLMs to recall": "LLM が記憶するために、自分についての詳細を入力してください", - "Enter a title for the pending user info overlay. Leave empty for default.": "保留中のユーザー情報オーバーレイのタイトルを入力してください。デフォルトのままにする場合は空のままにします。", - "Enter a watermark for the response. Leave empty for none.": "", + "Enter a detail about yourself for your LLMs to recall": "LLM が参照できるように、あなたに関する情報を入力してください", + "Enter a title for the pending user info overlay. Leave empty for default.": "保留中のユーザー情報オーバーレイのタイトルを入力。デフォルトのままにする場合は空のままにします。", + "Enter a watermark for the response. Leave empty for none.": "応答のウォーターマークを入力。なしの場合は空のままにします。", "Enter api auth string (e.g. username:password)": "API AuthStringを入力(例: Username:Password)", "Enter Application DN": "Application DNを入力", "Enter Application DN Password": "Application DNパスワードを入力", @@ -506,92 +506,92 @@ "Enter Bocha Search API Key": "Bocha Search APIキーを入力", "Enter Brave Search API Key": "Brave Search APIキーの入力", "Enter certificate path": "証明書パスを入力", - "Enter CFG Scale (e.g. 7.0)": "CFGスケースを入力してください (例: 7.0)", - "Enter Chunk Overlap": "チャンクオーバーラップを入力してください", - "Enter Chunk Size": "チャンクサイズを入力してください", - "Enter comma-separated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "カンマ区切りの \"token:bias_value\" ペアを入力してください (例: 5432:100, 413:-100)", - "Enter Config in JSON format": "", - "Enter content for the pending user info overlay. Leave empty for default.": "保留中のユーザー情報オーバーレイの内容を入力してください。デフォルトのままにする場合は空のままにします。", - "Enter coordinates (e.g. 51.505, -0.09)": "", - "Enter Datalab Marker API Base URL": "", - "Enter Datalab Marker API Key": "", + "Enter CFG Scale (e.g. 7.0)": "CFGスケールを入力 (例: 7.0)", + "Enter Chunk Overlap": "チャンクオーバーラップを入力", + "Enter Chunk Size": "チャンクサイズを入力", + "Enter comma-separated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "カンマ区切りの \"token:bias_value\" ペアを入力 (例: 5432:100, 413:-100)", + "Enter Config in JSON format": "設定をJSON形式で入力", + "Enter content for the pending user info overlay. Leave empty for default.": "保留中のユーザー情報オーバーレイの内容を入力。デフォルトのままにする場合は空のままにします。", + "Enter coordinates (e.g. 51.505, -0.09)": "座標を入力", + "Enter Datalab Marker API Base URL": "Datalab Marker APIのBase URLを入力", + "Enter Datalab Marker API Key": "Datalab Marker API Keyを入力", "Enter description": "説明を入力", "Enter Docling OCR Engine": "Docling OCRエンジンを入力", "Enter Docling OCR Language(s)": "Docling OCR言語を入力", "Enter Docling Server URL": "Docling Server URLを入力", "Enter Document Intelligence Endpoint": "Document Intelligenceエンドポイントを入力", "Enter Document Intelligence Key": "Document Intelligenceキーを入力", - "Enter domains separated by commas (e.g., example.com,site.org)": "カンマ区切りのドメインを入力してください (例: example.com,site.org)", + "Enter domains separated by commas (e.g., example.com,site.org)": "カンマ区切りのドメインを入力 (例: example.com,site.org)", "Enter Exa API Key": "Exa APIキーを入力", - "Enter External Document Loader API Key": "", - "Enter External Document Loader URL": "", - "Enter External Web Loader API Key": "External Web Loader APIキーを入力", - "Enter External Web Loader URL": "External Web Loader URLを入力", - "Enter External Web Search API Key": "External Web Search APIキーを入力", - "Enter External Web Search URL": "External Web Search URLを入力", + "Enter External Document Loader API Key": "外部ドキュメントローダーのAPIキーを入力", + "Enter External Document Loader URL": "外部ドキュメントローダーのURLを入力", + "Enter External Web Loader API Key": "外部ドキュメントローダーのAPIキーを入力", + "Enter External Web Loader URL": "外部ドキュメントローダー URLを入力", + "Enter External Web Search API Key": "外部Web検索のAPIキーを入力", + "Enter External Web Search URL": "外部Web検索のURLを入力", "Enter Firecrawl API Base URL": "Firecrawl API Base URLを入力", "Enter Firecrawl API Key": "Firecrawl APIキーを入力", - "Enter folder name": "", + "Enter folder name": "フォルダ名を入力", "Enter Github Raw URL": "Github Raw URLを入力", "Enter Google PSE API Key": "Google PSE APIキーの入力", - "Enter Google PSE Engine Id": "Google PSE エンジン ID を入力します。", - "Enter hex color (e.g. #FF0000)": "", - "Enter ID": "", - "Enter Image Size (e.g. 512x512)": "画像サイズを入力してください (例: 512x512)", + "Enter Google PSE Engine Id": "Google PSE エンジン ID を入力", + "Enter hex color (e.g. #FF0000)": "16進数で色を入力", + "Enter ID": "IDを入力", + "Enter Image Size (e.g. 512x512)": "画像サイズを入力 (例: 512x512)", "Enter Jina API Key": "Jina APIキーを入力", - "Enter JSON config (e.g., {\"disable_links\": true})": "", + "Enter JSON config (e.g., {\"disable_links\": true})": "JSON 設定を入力 (例: {\"disable_links\": true})", "Enter Jupyter Password": "Jupyterパスワードを入力", "Enter Jupyter Token": "Jupyterトークンを入力", "Enter Jupyter URL": "Jupyter URLを入力", "Enter Kagi Search API Key": "Kagi Search APIキーを入力", - "Enter Key Behavior": "Key Behaviorを入力", - "Enter language codes": "言語コードを入力してください", + "Enter Key Behavior": "Enter Keyの動作", + "Enter language codes": "言語コードを入力", "Enter Mistral API Key": "Mistral APIキーを入力", - "Enter Model ID": "モデルIDを入力してください。", - "Enter model tag (e.g. {{modelTag}})": "モデルタグを入力してください (例: {{modelTag}})", + "Enter Model ID": "モデルIDを入力", + "Enter model tag (e.g. {{modelTag}})": "モデルタグを入力 (例: {{modelTag}})", "Enter Mojeek Search API Key": "Mojeek Search APIキーを入力", - "Enter name": "", + "Enter name": "名前を入力", "Enter New Password": "新しいパスワードを入力", - "Enter Number of Steps (e.g. 50)": "ステップ数を入力してください (例: 50)", + "Enter Number of Steps (e.g. 50)": "ステップ数を入力 (例: 50)", "Enter Perplexity API Key": "Perplexity APIキーを入力", "Enter Playwright Timeout": "Playwrightタイムアウトを入力", "Enter Playwright WebSocket URL": "Playwright WebSocket URLを入力", - "Enter proxy URL (e.g. https://user:password@host:port)": "プロキシURLを入力してください (例: https://user:password@host:port)", - "Enter reasoning effort": "", - "Enter Sampler (e.g. Euler a)": "サンプラーを入力してください(e.g. Euler a)。", - "Enter Scheduler (e.g. Karras)": "スケジューラーを入力してください。(e.g. Karras)", - "Enter Score": "スコアを入力してください", - "Enter SearchApi API Key": "SearchApi API Keyを入力してください。", - "Enter SearchApi Engine": "SearchApi Engineを入力してください。", + "Enter proxy URL (e.g. https://user:password@host:port)": "プロキシURLを入力 (例: https://user:password@host:port)", + "Enter reasoning effort": "推論の努力を入力", + "Enter Sampler (e.g. Euler a)": "サンプラーを入力(e.g. Euler a)", + "Enter Scheduler (e.g. Karras)": "スケジューラーを入力。(e.g. Karras)", + "Enter Score": "スコアを入力", + "Enter SearchApi API Key": "SearchApi API Keyを入力", + "Enter SearchApi Engine": "SearchApi Engineを入力", "Enter Searxng Query URL": "SearxngクエリURLを入力", "Enter Seed": "シードを入力", "Enter SerpApi API Key": "SerpApi APIキーを入力", "Enter SerpApi Engine": "SerpApi Engineを入力", "Enter Serper API Key": "Serper APIキーの入力", - "Enter Serply API Key": "Serply API Keyを入力してください。", + "Enter Serply API Key": "Serply API Keyを入力", "Enter Serpstack API Key": "Serpstack APIキーの入力", "Enter server host": "サーバーホストを入力", "Enter server label": "サーバーラベルを入力", "Enter server port": "サーバーポートを入力", "Enter Sougou Search API sID": "Sougou Search API sIDを入力", "Enter Sougou Search API SK": "Sougou Search API SKを入力", - "Enter stop sequence": "ストップシーケンスを入力してください", + "Enter stop sequence": "ストップシーケンスを入力", "Enter system prompt": "システムプロンプトを入力", "Enter system prompt here": "システムプロンプトをここに入力", - "Enter Tavily API Key": "Tavily API Keyを入力してください。", - "Enter Tavily Extract Depth": "Tavily Extract Depthを入力してください。", + "Enter Tavily API Key": "Tavily API Keyを入力", + "Enter Tavily Extract Depth": "Tavily Extract Depthを入力", "Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "WebUIの公開URLを入力してください。このURLは通知でリンクを生成するために使用されます。", - "Enter the URL of the function to import": "", - "Enter the URL to import": "", - "Enter Tika Server URL": "Tika Server URLを入力してください。", - "Enter timeout in seconds": "タイムアウトを秒単位で入力してください", + "Enter the URL of the function to import": "インポートするFunctionのURLを入力", + "Enter the URL to import": "インポートするURLを入力", + "Enter Tika Server URL": "Tika Server URLを入力", + "Enter timeout in seconds": "タイムアウトを秒単位で入力", "Enter to Send": "送信する", - "Enter Top K": "トップ K を入力してください", - "Enter Top K Reranker": "トップ K Rerankerを入力してください。", + "Enter Top K": "トップ K を入力", + "Enter Top K Reranker": "トップ K Rerankerを入力", "Enter URL (e.g. http://127.0.0.1:7860/)": "URL を入力してください (例: http://127.0.0.1:7860/)", "Enter URL (e.g. http://localhost:11434)": "URL を入力してください (例: http://localhost:11434)", - "Enter value": "", - "Enter value (true/false)": "", + "Enter value": "値を入力", + "Enter value (true/false)": "値(true/fale)を入力", "Enter Yacy Password": "Yacyパスワードを入力してください。", "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "Yacy URLを入力してください (例: http://yacy.example.com:8090)", "Enter Yacy Username": "Yacyユーザー名を入力してください。", @@ -599,7 +599,7 @@ "Enter your current password": "現在のパスワードを入力してください", "Enter Your Email": "メールアドレスを入力してください", "Enter Your Full Name": "フルネームを入力してください", - "Enter your gender": "", + "Enter your gender": "性別を入力してください", "Enter your message": "メッセージを入力してください", "Enter your name": "名前を入力してください", "Enter Your Name": "名前を入力してください", @@ -610,16 +610,16 @@ "Enter your webhook URL": "Webhook URLを入力してください", "Error": "エラー", "ERROR": "エラー", - "Error accessing directory": "", + "Error accessing directory": "ディレクトリへのアクセスに失敗しました", "Error accessing Google Drive: {{error}}": "Google Driveへのアクセスに失敗しました: {{error}}", "Error accessing media devices.": "メディアデバイスへのアクセスに失敗しました。", "Error starting recording.": "録音を開始できませんでした。", - "Error unloading model: {{error}}": "", + "Error unloading model: {{error}}": "モデルのアンロードに失敗しました: {{error}}", "Error uploading file: {{error}}": "ファイルアップロードに失敗しました: {{error}}", - "Error: A model with the ID '{{modelId}}' already exists. Please select a different ID to proceed.": "", - "Error: Model ID cannot be empty. Please enter a valid ID to proceed.": "", + "Error: A model with the ID '{{modelId}}' already exists. Please select a different ID to proceed.": "ID '{{modelId}}' のモデルはすでに存在します。他のIDを使用してください。", + "Error: Model ID cannot be empty. Please enter a valid ID to proceed.": "モデルIDを空にすることはできません。有効なIDを入力してください。", "Evaluations": "評価", - "Everyone": "", + "Everyone": "全員", "Exa API Key": "Exa APIキー", "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "例: (&(objectClass=inetOrgPerson)(uid=%s))", "Example: ALL": "例: ALL", @@ -633,7 +633,7 @@ "Expand": "展開", "Experimental": "実験的", "Explain": "説明", - "Explore the cosmos": "", + "Explore the cosmos": "宇宙を探検", "Export": "エクスポート", "Export All Archived Chats": "すべてのアーカイブチャットをエクスポート", "Export All Chats (All Users)": "すべてのチャットをエクスポート (すべてのユーザー)", @@ -643,114 +643,114 @@ "Export Functions": "Functionのエクスポート", "Export Models": "モデルのエクスポート", "Export Presets": "プリセットのエクスポート", - "Export Prompt Suggestions": "", + "Export Prompt Suggestions": "プロンプトの提案をエクスポート", "Export Prompts": "プロンプトをエクスポート", "Export to CSV": "CSVにエクスポート", "Export Tools": "ツールのエクスポート", - "Export Users": "", + "Export Users": "ユーザのエクスポート", "External": "外部", - "External Document Loader URL required.": "", - "External Task Model": "", - "External Web Loader API Key": "External Web Loader APIキー", - "External Web Loader URL": "External Web Loader URL", - "External Web Search API Key": "External Web Search APIキー", - "External Web Search URL": "External Web Search URL", - "Fade Effect for Streaming Text": "", + "External Document Loader URL required.": "外部ドキュメントローダーのURLが必要です。", + "External Task Model": "外部タスクモデル", + "External Web Loader API Key": "外部ドキュメントローダーのAPIキー", + "External Web Loader URL": "外部ドキュメントローダーのURL", + "External Web Search API Key": "外部Web検索のAPIキー", + "External Web Search URL": "外部Web検索のURL", + "Fade Effect for Streaming Text": "ストリームテキストのフェーディング効果", "Failed to add file.": "ファイルの追加に失敗しました。", "Failed to connect to {{URL}} OpenAPI tool server": "{{URL}} OpenAPIツールサーバーへの接続に失敗しました。", - "Failed to copy link": "", + "Failed to copy link": "リンクのコピーに失敗しました。", "Failed to create API Key.": "APIキーの作成に失敗しました。", "Failed to delete note": "ノートの削除に失敗しました。", - "Failed to extract content from the file: {{error}}": "", - "Failed to extract content from the file.": "", + "Failed to extract content from the file: {{error}}": "ファイルから中身の取得に失敗しました: {{error}}", + "Failed to extract content from the file.": "ファイルから中身の取得に失敗しました。", "Failed to fetch models": "モデルの取得に失敗しました。", - "Failed to generate title": "", - "Failed to load chat preview": "", + "Failed to generate title": "タイトルの生成に失敗しました。", + "Failed to load chat preview": "チャットプレビューを読み込めませんでした。", "Failed to load file content.": "ファイルの内容を読み込めませんでした。", - "Failed to move chat": "", - "Failed to read clipboard contents": "クリップボードの内容を読み取れませんでした", + "Failed to move chat": "チャットの移動に失敗しました。", + "Failed to read clipboard contents": "クリップボードの内容を読み取れませんでした。", "Failed to save connections": "接続の保存に失敗しました。", "Failed to save conversation": "会話の保存に失敗しました。", "Failed to save models configuration": "モデルの設定の保存に失敗しました。", - "Failed to update settings": "設定アップデート失敗", - "Failed to upload file.": "ファイルアップロード失敗", - "Features": "", + "Failed to update settings": "設定アップデートに失敗しました。", + "Failed to upload file.": "ファイルアップロードに失敗しました。", + "Features": "機能", "Features Permissions": "機能の許可", "February": "2月", - "Feedback Details": "", + "Feedback Details": "フィードバックの詳細", "Feedback History": "フィードバック履歴", "Feedbacks": "フィードバック", - "Feel free to add specific details": "詳細を追加してください", - "Female": "", + "Feel free to add specific details": "詳細を追加できます", + "Female": "女性", "File": "ファイル", "File added successfully.": "ファイル追加が成功しました。", "File content updated successfully.": "ファイルコンテンツ追加が成功しました。", "File Mode": "ファイルモード", "File not found.": "ファイルが見つかりません。", "File removed successfully.": "ファイル削除が成功しました。", - "File size should not exceed {{maxSize}} MB.": "ファイルサイズ最大値{{maxSize}} MB", - "File Upload": "", - "File uploaded successfully": "", + "File size should not exceed {{maxSize}} MB.": "ファイルサイズの最大値は {{maxSize}} MB です。", + "File Upload": "ファイルアップロード", + "File uploaded successfully": "ファイルアップロードが成功しました", "Files": "ファイル", - "Filter": "", + "Filter": "フィルタ", "Filter is now globally disabled": "グローバルフィルタが無効です。", "Filter is now globally enabled": "グローバルフィルタが有効です。", "Filters": "フィルター", - "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "指紋のなりすましが検出されました: イニシャルをアバターとして使用できません。デフォルトのプロファイル画像にデフォルト設定されています。", - "Firecrawl API Base URL": "", + "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "フィンガープリントのスプーフィングが検出されました: イニシャルをアバターとして使用できません。デフォルトのプロファイル画像が使用されます。", + "Firecrawl API Base URL": "Firecrawl API ベースURL", "Firecrawl API Key": "Firecrawl APIキー", - "Floating Quick Actions": "", - "Focus chat input": "チャット入力をフォーカス", + "Floating Quick Actions": "フローティング クイックアクション", + "Focus chat input": "チャット入力にフォーカス", "Folder deleted successfully": "フォルダー削除が成功しました。", - "Folder Name": "", + "Folder Name": "フォルダ名", "Folder name cannot be empty.": "フォルダー名を入力してください。", - "Folder name updated successfully": "フォルダー名更新が成功しました。", - "Folder updated successfully": "", - "Follow up": "", - "Follow Up Generation": "", - "Follow Up Generation Prompt": "", - "Follow-Up Auto-Generation": "", - "Followed instructions perfectly": "完全に指示に従った", - "Force OCR": "", - "Force OCR on all pages of the PDF. This can lead to worse results if you have good text in your PDFs. Defaults to False.": "", + "Folder name updated successfully": "フォルダー名の変更に成功しました。", + "Folder updated successfully": "フォルダの更新に成功しました。", + "Follow up": "関連質問", + "Follow Up Generation": "関連質問の生成", + "Follow Up Generation Prompt": "関連質問の生成プロンプト", + "Follow-Up Auto-Generation": "関連質問の自動生成", + "Followed instructions perfectly": "指示に完璧に従った", + "Force OCR": "強制OCR", + "Force OCR on all pages of the PDF. This can lead to worse results if you have good text in your PDFs. Defaults to False.": "PDFのすべてのページでOCRを強制します。PDFファイルのテキストのほうが質がよく悪化することがあります。デフォルトでは無効。", "Forge new paths": "新しいパスを作成", "Form": "フォーム", - "Format Lines": "", - "Format the lines in the output. Defaults to False. If set to True, the lines will be formatted to detect inline math and styles.": "", - "Format your variables using brackets like this:": "", - "Forwards system user session credentials to authenticate": "", - "Full Context Mode": "", + "Format Lines": "出力テキストをフォーマット", + "Format the lines in the output. Defaults to False. If set to True, the lines will be formatted to detect inline math and styles.": "出力をフォーマットする。デフォルトでは無効です。有効にすると、インライン数式やスタイルを検出しフォーマットします。", + "Format your variables using brackets like this:": "変数を次のようにフォーマットできます:", + "Forwards system user session credentials to authenticate": "システムユーザーセッションの資格情報を転送して認証する", + "Full Context Mode": "フルコンテキストモード", "Function": "", - "Function Calling": "", + "Function Calling": "Function呼び出し", "Function created successfully": "Functionの作成が成功しました。", "Function deleted successfully": "Functionの削除が成功しました。", - "Function Description": "", + "Function Description": "Functionの説明", "Function ID": "", - "Function imported successfully": "", + "Function imported successfully": "Functionのインポートに成功しました", "Function is now globally disabled": "Functionはグローバルで無効です。", "Function is now globally enabled": "Functionはグローバルで有効です。", - "Function Name": "", + "Function Name": "Function名", "Function updated successfully": "Functionのアップデートが成功しました。", "Functions": "", "Functions allow arbitrary code execution.": "Functionsは任意のコード実行を許可します。", "Functions imported successfully": "Functionsのインポートが成功しました", "Gemini": "", - "Gemini API Config": "", + "Gemini API Config": "Gemini API 設定", "Gemini API Key is required.": "Gemini APIキーが必要です。", - "Gender": "", + "Gender": "性別", "General": "一般", "Generate": "生成", "Generate an image": "画像を生成", - "Generate Image": "画像を生成", + "Generate Image": "画像生成", "Generate prompt pair": "プロンプトペアを生成", "Generating search query": "検索クエリの生成", "Generating...": "生成中...", - "Get information on {{name}} in the UI": "", - "Get started": "開始", - "Get started with {{WEBUI_NAME}}": "{{WEBUI_NAME}}を開始", + "Get information on {{name}} in the UI": "UIで{{name}}の情報を得る", + "Get started": "はじめる", + "Get started with {{WEBUI_NAME}}": "{{WEBUI_NAME}}をはじめる", "Global": "グローバル", "Good Response": "良い応答", - "Google Drive": "", + "Google Drive": "Google ドライブ", "Google PSE API Key": "Google PSE APIキー", "Google PSE Engine Id": "Google PSE エンジン ID", "Gravatar": "", @@ -761,85 +761,85 @@ "Group Name": "グループ名", "Group updated successfully": "グループの更新が成功しました。", "Groups": "グループ", - "H1": "", - "H2": "", - "H3": "", + "H1": "見出し1", + "H2": "見出し2", + "H3": "見出し3", "Haptic Feedback": "触覚フィードバック", - "Height": "", + "Height": "高さ", "Hello, {{name}}": "こんにちは、{{name}} さん", "Help": "ヘルプ", - "Help us create the best community leaderboard by sharing your feedback history!": "フィードバック履歴を共有して、最も優れたコミュニティリーダーボードを作成しましょう!", + "Help us create the best community leaderboard by sharing your feedback history!": "フィードバック履歴を共有して、最高のコミュニティリーダーボードの作成を手伝ってください!", "Hex Color": "16進数の色", - "Hex Color - Leave empty for default color": "デフォルトの色を使用する場合は空のままにしてください", + "Hex Color - Leave empty for default color": "16進数の色 - デフォルトの色を使用する場合は空白のままにします", "Hide": "非表示", - "Hide from Sidebar": "", + "Hide from Sidebar": "サイドバーから非表示にする", "Hide Model": "モデルを非表示", - "High": "", - "High Contrast Mode": "", + "High": "高", + "High Contrast Mode": "ハイコントラストモード", "Home": "ホーム", "Host": "ホスト", "How can I help you today?": "今日はどのようにお手伝いしましょうか?", "How would you rate this response?": "この応答をどのように評価しますか?", "HTML": "", - "Hybrid Search": "ブリッジ検索", + "Hybrid Search": "ハイブリッド検索", "I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "私は、私の行動の結果とその影響を理解しており、任意のコードを実行するリスクを認識しています。ソースの信頼性を確認しました。", "ID": "", "iframe Sandbox Allow Forms": "iframeサンドボックスにフォームを許可", "iframe Sandbox Allow Same Origin": "iframeサンドボックスに同じオリジンを許可", - "Ignite curiosity": "", + "Ignite curiosity": "好奇心を燃やす", "Image": "画像", "Image Compression": "画像圧縮", - "Image Compression Height": "", - "Image Compression Width": "", + "Image Compression Height": "画像圧縮 高さ", + "Image Compression Width": "画像圧縮 幅", "Image Generation": "画像生成", "Image Generation (Experimental)": "画像生成 (実験的)", "Image Generation Engine": "画像生成エンジン", "Image Max Compression Size": "画像最大圧縮サイズ", - "Image Max Compression Size height": "", - "Image Max Compression Size width": "", + "Image Max Compression Size height": "画像最大圧縮 高さ", + "Image Max Compression Size width": "画像最大圧縮 幅", "Image Prompt Generation": "画像プロンプト生成", "Image Prompt Generation Prompt": "画像プロンプト生成プロンプト", "Image Settings": "画像設定", "Images": "画像", - "Import": "", + "Import": "インポート", "Import Chats": "チャットをインポート", "Import Config from JSON File": "設定をJSONファイルからインポート", - "Import From Link": "", + "Import From Link": "リンクからインポート", "Import Functions": "Functionのインポート", "Import Models": "モデルのインポート", "Import Notes": "ノートをインポート", "Import Presets": "プリセットをインポート", - "Import Prompt Suggestions": "", + "Import Prompt Suggestions": "プロンプトの提案をインポート", "Import Prompts": "プロンプトをインポート", "Import Tools": "ツールのインポート", "Important Update": "重要な更新", "Include": "含める", - "Include `--api-auth` flag when running stable-diffusion-webui": "stable-diffusion-webuiを実行する際に`--api-auth`フラグを含める", - "Include `--api` flag when running stable-diffusion-webui": "stable-diffusion-webuiを実行する際に`--api`フラグを含める", + "Include `--api-auth` flag when running stable-diffusion-webui": "stable-diffusion-webuiを実行する際に`--api-auth`フラグを含めてください", + "Include `--api` flag when running stable-diffusion-webui": "stable-diffusion-webuiを実行する際に`--api`フラグを含めてください", "Includes SharePoint": "SharePoint を含む", "Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive.": "生成されたテキストからのフィードバックに対するアルゴリズムの応答速度を影響します。低い学習率はより遅い調整をもたらし、高い学習率はアルゴリズムをより反応的にします。", "Info": "情報", - "Initials": "", - "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "複雑なクエリには、包括的な処理のためにコンテンツ全体をコンテキストとして注入することをお勧めします。", - "Input": "", + "Initials": "イニシャル", + "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "全文を取り込むことで全体を処理します。複雑な問い合わせの場合に推奨されます。", + "Input": "入力", "Input commands": "入力コマンド", - "Input Key (e.g. text, unet_name, steps)": "", - "Input Variables": "", - "Insert": "", - "Insert Follow-Up Prompt to Input": "", - "Insert Prompt as Rich Text": "", + "Input Key (e.g. text, unet_name, steps)": "入力キー", + "Input Variables": "入力 変数", + "Insert": "挿入", + "Insert Follow-Up Prompt to Input": "関連質問を入力欄に挿入する", + "Insert Prompt as Rich Text": "プロンプトをリッチテキストとして挿入する", "Install from Github URL": "Github URLからインストール", - "Instant Auto-Send After Voice Transcription": "音声文字変換後に即時自動送信", - "Integration": "統合", + "Instant Auto-Send After Voice Transcription": "音声文字変換後に自動送信", + "Integration": "連携", "Interface": "インターフェース", "Invalid file content": "無効なファイル内容", "Invalid file format.": "無効なファイル形式", - "Invalid JSON file": "", - "Invalid JSON format for ComfyUI Workflow.": "", - "Invalid JSON format in Additional Config": "", + "Invalid JSON file": "無効なJSONファイル", + "Invalid JSON format for ComfyUI Workflow.": "ComfyUIワークフローとして無効なJSON形式", + "Invalid JSON format in Additional Config": "追加設定として無効なJSON形式", "Invalid Tag": "無効なタグ", "is typing...": "入力中...", - "Italic": "", + "Italic": "斜体", "January": "1月", "Jina API Key": "Jina APIキー", "join our Discord for help.": "ヘルプについては、Discord に参加してください。", @@ -847,23 +847,23 @@ "JSON Preview": "JSON プレビュー", "July": "7月", "June": "6月", - "Jupyter Auth": "", + "Jupyter Auth": "Jupyterの認証", "Jupyter URL": "", "JWT Expiration": "JWT 有効期限", "JWT Token": "JWT トークン", "Kagi Search API Key": "Kagi Search APIキー", - "Keep Follow-Up Prompts in Chat": "", - "Keep in Sidebar": "", + "Keep Follow-Up Prompts in Chat": "関連質問をチャットに残す", + "Keep in Sidebar": "サイドバーに残す", "Key": "キー", - "Key is required": "", + "Key is required": "キーは必須です", "Keyboard shortcuts": "キーボードショートカット", "Knowledge": "ナレッジベース", "Knowledge Access": "ナレッジアクセス", - "Knowledge Base": "", + "Knowledge Base": "ナレッジベース", "Knowledge created successfully.": "ナレッジベースの作成に成功しました", "Knowledge deleted successfully.": "ナレッジベースの削除に成功しました", - "Knowledge Description": "", - "Knowledge Name": "", + "Knowledge Description": "ナレッジベースの説明", + "Knowledge Name": "ナレッジベースの名前", "Knowledge Public Sharing": "ナレッジベースの公開共有", "Knowledge reset successfully.": "ナレッジベースのリセットに成功しました", "Knowledge updated successfully": "ナレッジベースのアップデートに成功しました", @@ -879,19 +879,19 @@ "LDAP": "LDAP", "LDAP server updated": "LDAPサーバーの更新に成功しました", "Leaderboard": "リーダーボード", - "Learn More": "", + "Learn More": "詳しく", "Learn more about OpenAPI tool servers.": "OpenAPIツールサーバーについては、こちらをご覧ください。", - "Leave empty for no compression": "", - "Leave empty for unlimited": "空欄なら無制限", - "Leave empty to include all models from \"{{url}}\" endpoint": "", - "Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "空欄なら「{{url}}/api/tags」エンドポイントからすべてのモデルを含める", - "Leave empty to include all models from \"{{url}}/models\" endpoint": "空欄なら「{{url}}/models」エンドポイントからすべてのモデルを含める", - "Leave empty to include all models or select specific models": "すべてのモデルを含めるか、特定のモデルを選択", + "Leave empty for no compression": "空欄で圧縮を無効化", + "Leave empty for unlimited": "空欄で無制限", + "Leave empty to include all models from \"{{url}}\" endpoint": "空欄にすると \"{{url}}\" エンドポイントからすべてのモデルを読み込みます", + "Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "空欄にすると \"{{url}}/api/tags\" エンドポイントからすべてのモデルを読み込みます", + "Leave empty to include all models from \"{{url}}/models\" endpoint": "空欄にすると \"{{url}}/models\" エンドポイントからすべてのモデルを読み込みます", + "Leave empty to include all models or select specific models": "モデルを選択。空欄にするとすべてのモデルを読み込みます", "Leave empty to use the default prompt, or enter a custom prompt": "カスタムプロンプトを入力。空欄ならデフォルトプロンプト", - "Leave model field empty to use the default model.": "モデルフィールドを空欄にしてデフォルトモデルを使用", - "lexical": "", + "Leave model field empty to use the default model.": "モデル欄を空欄にしてデフォルトモデルを使用", + "lexical": "文法的", "License": "ライセンス", - "Lift List": "", + "Lift List": "リストを字下げ", "Light": "ライト", "Listening...": "聞いています...", "Llama.cpp": "", @@ -900,16 +900,16 @@ "Loading Kokoro.js...": "Kokoro.js を読み込んでいます...", "Loading...": "読み込み中...", "Local": "ローカル", - "Local Task Model": "", + "Local Task Model": "ローカルタスクモデル", "Location access not allowed": "位置情報のアクセスが許可されていません", - "Lost": "", - "Low": "", + "Lost": "負け", + "Low": "低", "LTR": "LTR", "Made by Open WebUI Community": "OpenWebUI コミュニティによって作成", - "Make password visible in the user interface": "", + "Make password visible in the user interface": "UIでパスワードを可視にする", "Make sure to enclose them with": "必ず次で囲んでください", - "Make sure to export a workflow.json file as API format from ComfyUI.": "", - "Male": "", + "Make sure to export a workflow.json file as API format from ComfyUI.": "ComfyUIからAPI形式でworkflow.jsonファイルをエクスポートしてください。", + "Male": "男性", "Manage": "管理", "Manage Direct Connections": "直接接続の管理", "Manage Models": "モデルの管理", @@ -918,16 +918,16 @@ "Manage OpenAI API Connections": "OpenAI API接続の管理", "Manage Pipelines": "パイプラインの管理", "Manage Tool Servers": "ツールサーバーの管理", - "Manage your account information.": "", + "Manage your account information.": "あなたのアカウント情報を管理", "March": "3月", - "Markdown": "", - "Markdown (Header)": "", - "Max Speakers": "", + "Markdown": "マークダウン", + "Markdown (Header)": "マークダウン (見出し)", + "Max Speakers": "最大話者数", "Max Upload Count": "最大アップロード数", "Max Upload Size": "最大アップロードサイズ", "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "同時にダウンロードできるモデルは最大 3 つです。後でもう一度お試しください。", "May": "5月", - "Medium": "", + "Medium": "中", "Memories accessible by LLMs will be shown here.": "LLM がアクセスできるメモリはここに表示されます。", "Memory": "メモリ", "Memory added successfully": "メモリに追加されました。", @@ -937,40 +937,40 @@ "Merge Responses": "応答を統合", "Merged Response": "統合された応答", "Message rating should be enabled to use this feature": "この機能を使用するには、メッセージ評価を有効にする必要があります。", - "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "リンクを作成した後、送信したメッセージは共有されません。URL を持つユーザーは共有チャットを閲覧できます。", + "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "リンクを作成した後で送信したメッセージは共有されません。URL を持つユーザーは共有チャットを閲覧できます。", "Microsoft OneDrive": "Microsoft OneDrive", "Microsoft OneDrive (personal)": "Microsoft OneDrive (個人用)", "Microsoft OneDrive (work/school)": "Microsoft OneDrive (職場/学校)", "Mistral OCR": "", - "Mistral OCR API Key required.": "", + "Mistral OCR API Key required.": "Mistral OCR APIキーが必要です。", "Model": "モデル", "Model '{{modelName}}' has been successfully downloaded.": "モデル '{{modelName}}' が正常にダウンロードされました。", - "Model '{{modelTag}}' is already in queue for downloading.": "モデル '{{modelTag}}' はすでにダウンロード待ち行列に入っています。", + "Model '{{modelTag}}' is already in queue for downloading.": "モデル '{{modelTag}}' はすでにダウンロード待機中です。", "Model {{modelId}} not found": "モデル {{modelId}} が見つかりません", "Model {{modelName}} is not vision capable": "モデル {{modelName}} は視覚に対応していません", "Model {{name}} is now {{status}}": "モデル {{name}} は {{status}} になりました。", "Model {{name}} is now hidden": "モデル {{name}} は非表示になりました。", "Model {{name}} is now visible": "モデル {{name}} は表示されました。", - "Model accepts file inputs": "", + "Model accepts file inputs": "モデルはファイル入力を受け入れます", "Model accepts image inputs": "モデルは画像入力を受け入れます", - "Model can execute code and perform calculations": "", - "Model can generate images based on text prompts": "", - "Model can search the web for information": "", + "Model can execute code and perform calculations": "モデルはコードを実行し、計算を行うことができます", + "Model can generate images based on text prompts": "モデルはテキストプロンプトに基づいて画像を生成できます", + "Model can search the web for information": "モデルは情報をウェブ検索できます", "Model created successfully!": "モデルが正常に作成されました!", "Model filesystem path detected. Model shortname is required for update, cannot continue.": "モデルファイルシステムパスが検出されました。モデルの短縮名が必要です。更新できません。", "Model Filtering": "モデルフィルタリング", "Model ID": "モデルID", - "Model ID is required.": "", + "Model ID is required.": "モデルIDは必須です", "Model IDs": "モデルID", "Model Name": "モデル名", - "Model name already exists, please choose a different one": "", - "Model Name is required.": "", + "Model name already exists, please choose a different one": "モデル名はすでに存在します。他の名前を入力してください。", + "Model Name is required.": "モデル名は必須です。", "Model not selected": "モデルが選択されていません", "Model Params": "モデルパラメータ", "Model Permissions": "モデルの許可", - "Model unloaded successfully": "", + "Model unloaded successfully": "モデルのアンロードが成功しました", "Model updated successfully": "モデルが正常に更新されました", - "Model(s) do not support file upload": "", + "Model(s) do not support file upload": "モデルはファイルアップロードをサポートしていません", "Modelfile Content": "モデルファイルの内容", "Models": "モデル", "Models Access": "モデルアクセス", @@ -979,30 +979,30 @@ "Mojeek Search API Key": "Mojeek Search APIキー", "more": "もっと見る", "More": "もっと見る", - "More Concise": "", - "More Options": "", - "Move": "", + "More Concise": "より簡潔に", + "More Options": "詳細オプション", + "Move": "移動", "Name": "名前", - "Name and ID are required, please fill them out": "", - "Name your knowledge base": "ナレッジベースの名前を付ける", + "Name and ID are required, please fill them out": "名前とIDは必須です。項目を入力してください。", + "Name your knowledge base": "ナレッジベースに名前を付ける", "Native": "ネイティブ", - "New Button": "", + "New Button": "新しいボタン", "New Chat": "新しいチャット", "New Folder": "新しいフォルダ", - "New Function": "", + "New Function": "新しいFunction", "New Note": "新しいノート", "New Password": "新しいパスワード", - "New Tool": "", + "New Tool": "新しいツール", "new-channel": "新しいチャンネル", - "Next message": "", - "No chats found": "", - "No chats found for this user.": "", - "No chats found.": "", + "Next message": "次のメッセージ", + "No chats found": "チャットが見つかりません。", + "No chats found for this user.": "このユーザーのチャットが見つかりません。", + "No chats found.": "チャットが見つかりません。", "No content": "内容がありません", "No content found": "内容が見つかりません", "No content found in file.": "ファイル内に内容が見つかりません。", "No content to speak": "話す内容がありません", - "No conversation to save": "", + "No conversation to save": "保存する会話がありません。", "No distance available": "距離が利用できません", "No feedbacks found": "フィードバックが見つかりません", "No file selected": "ファイルが選択されていません", @@ -1021,11 +1021,11 @@ "No source available": "使用可能なソースがありません", "No suggestion prompts": "提案プロンプトはありません", "No users were found.": "ユーザーが見つかりません。", - "No valves": "", + "No valves": "バルブがありません", "No valves to update": "更新するバルブがありません", - "Node Ids": "", - "None": "何一つ", - "Not factually correct": "実事上正しくない", + "Node Ids": "ノードID", + "None": "なし", + "Not factually correct": "事実と異なる", "Not helpful": "役に立たない", "Note deleted successfully": "ノートが正常に削除されました", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "注意:最小スコアを設定した場合、検索は最小スコア以上のスコアを持つドキュメントのみを返します。", @@ -1045,10 +1045,10 @@ "Ollama Version": "Ollama バージョン", "On": "オン", "OneDrive": "", - "Only active when \"Paste Large Text as File\" setting is toggled on.": "", - "Only active when the chat input is in focus and an LLM is generating a response.": "", - "Only alphanumeric characters and hyphens are allowed": "英数字とハイフンのみが許可されています", - "Only alphanumeric characters and hyphens are allowed in the command string.": "コマンド文字列には英数字とハイフンのみが許可されています。", + "Only active when \"Paste Large Text as File\" setting is toggled on.": "「大きなテキストをファイルとして貼り付ける」がオンのときのみ有効です。", + "Only active when the chat input is in focus and an LLM is generating a response.": "入力欄がフォーカスされていて、LLMが応答を生成している間のみ有効です。", + "Only alphanumeric characters and hyphens are allowed": "英数字とハイフンのみが使用できます", + "Only alphanumeric characters and hyphens are allowed in the command string.": "コマンド文字列には英数字とハイフンのみが使用できます。", "Only collections can be edited, create a new knowledge base to edit/add documents.": "コレクションのみ編集できます。新しいナレッジベースを作成してドキュメントを編集/追加してください。", "Only markdown files are allowed": "マークダウンファイルのみが許可されています", "Only select users and groups with permission can access": "許可されたユーザーとグループのみがアクセスできます", @@ -1058,11 +1058,11 @@ "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "おっと! サポートされていない方法 (フロントエンドのみ) を使用しています。バックエンドから WebUI を提供してください。", "Open file": "ファイルを開く", "Open in full screen": "全画面表示", - "Open modal to configure connection": "", - "Open Modal To Manage Floating Quick Actions": "", + "Open modal to configure connection": "接続設定のモーダルを開く", + "Open Modal To Manage Floating Quick Actions": "フローティング クイックアクションを管理するモーダルを開く", "Open new chat": "新しいチャットを開く", - "Open Sidebar": "", - "Open User Profile Menu": "", + "Open Sidebar": "サイドバーを開く", + "Open User Profile Menu": "ユーザープロフィールメニューを開く", "Open WebUI can use tools provided by any OpenAPI server.": "OpenWebUI は任意のOpenAPI サーバーが提供するツールを使用できます。", "Open WebUI uses faster-whisper internally.": "OpenWebUI は内部でfaster-whisperを使用します。", "Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "OpenWebUI は SpeechT5とCMU Arctic スピーカー埋め込みを使用します。", @@ -1073,50 +1073,50 @@ "OpenAI API Key is required.": "OpenAI API キーが必要です。", "OpenAI API settings updated": "OpenAI API設定が更新されました", "OpenAI URL/Key required.": "OpenAI URL/Key が必要です。", - "openapi.json URL or Path": "", - "Optional": "", - "Options for running a local vision-language model in the picture description. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with picture_description_api.": "", + "openapi.json URL or Path": "openapi.json のURLまたはパス", + "Optional": "任意", + "Options for running a local vision-language model in the picture description. The parameters refer to a model hosted on Hugging Face. This parameter is mutually exclusive with picture_description_api.": "画像を説明する視覚モデルをローカルで実行するためのオプションです。パラメータはHugging Faceでのモデルを指します。picture_description_apiと同時に使用できません。", "or": "または", - "Ordered List": "", + "Ordered List": "順序つきリスト", "Organize your users": "ユーザーを整理する", "Other": "その他", "OUTPUT": "出力", "Output format": "出力形式", - "Output Format": "", + "Output Format": "出力形式", "Overview": "概要", "page": "ページ", - "Paginate": "", - "Parameters": "", + "Paginate": "ページ分け", + "Parameters": "パラメータ", "Password": "パスワード", - "Passwords do not match.": "", + "Passwords do not match.": "パスワードが一致しません。", "Paste Large Text as File": "大きなテキストをファイルとして貼り付ける", "PDF document (.pdf)": "PDF ドキュメント (.pdf)", "PDF Extract Images (OCR)": "PDF 画像抽出 (OCR)", "pending": "保留中", - "Pending": "", + "Pending": "処理中", "Pending User Overlay Content": "保留中のユーザー情報オーバーレイの内容", "Pending User Overlay Title": "保留中のユーザー情報オーバーレイのタイトル", "Permission denied when accessing media devices": "メディアデバイスへのアクセス時に権限が拒否されました", "Permission denied when accessing microphone": "マイクへのアクセス時に権限が拒否されました", "Permission denied when accessing microphone: {{error}}": "マイクへのアクセス時に権限が拒否されました: {{error}}", - "Permissions": "許可", + "Permissions": "権限", "Perplexity API Key": "Perplexity API キー", - "Perplexity Model": "", - "Perplexity Search Context Usage": "", - "Personalization": "個人化", - "Picture Description API Config": "", - "Picture Description Local Config": "", - "Picture Description Mode": "", + "Perplexity Model": "Perplexity モデル", + "Perplexity Search Context Usage": "Perplexity Search コンテキスト使用量", + "Personalization": "パーソナライズ", + "Picture Description API Config": "画像説明API設定", + "Picture Description Local Config": "画像説明ローカル設定", + "Picture Description Mode": "画像説明モード", "Pin": "ピン留め", "Pinned": "ピン留めされています", - "Pioneer insights": "先駆者の洞察", - "Pipe": "", + "Pioneer insights": "洞察を切り開く", + "Pipe": "パイプ", "Pipeline deleted successfully": "パイプラインが正常に削除されました", "Pipeline downloaded successfully": "パイプラインが正常にダウンロードされました", "Pipelines": "パイプライン", "Pipelines are a plugin system with arbitrary code execution —": "Pipelines は任意のコード実行が可能なプラグインシステムです —", "Pipelines Not Detected": "パイプラインは検出されませんでした", - "Pipelines Valves": "パイプラインバルブ", + "Pipelines Valves": "パイプラインのバルブ", "Plain text (.md)": "プレーンテキスト (.md)", "Plain text (.txt)": "プレーンテキスト (.txt)", "Playground": "プレイグラウンド", @@ -1124,25 +1124,25 @@ "Playwright WebSocket URL": "Playwright WebSocket URL", "Please carefully review the following warnings:": "次の警告を慎重に確認してください:", "Please do not close the settings page while loading the model.": "モデルの読み込み中に設定ページを閉じないでください。", - "Please enter a message or attach a file.": "", + "Please enter a message or attach a file.": "メッセージを入力するか、ファイルを添付してください", "Please enter a prompt": "プロンプトを入力してください", "Please enter a valid path": "有効なパスを入力してください", "Please enter a valid URL": "有効なURLを入力してください", "Please fill in all fields.": "すべてのフィールドを入力してください。", - "Please select a model first.": "モデルを選択してください。", + "Please select a model first.": "先にモデルを選択してください。", "Please select a model.": "モデルを選択してください。", "Please select a reason": "理由を選択してください。", - "Please wait until all files are uploaded.": "", + "Please wait until all files are uploaded.": "ファイルがすべてアップロードされるまでお待ちください。", "Port": "ポート", - "Positive attitude": "前向きな態度", - "Prefer not to say": "", + "Positive attitude": "ポジティブな態度", + "Prefer not to say": "回答しない", "Prefix ID": "Prefix ID", "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefix ID はモデル ID に接頭辞を追加することで、他の接続との競合を避けるために使用されます - 空の場合は無効にします", - "Prevent file creation": "", - "Preview": "", - "Previous 30 days": "前の30日間", - "Previous 7 days": "前の7日間", - "Previous message": "", + "Prevent file creation": "ファイル作成を防止する", + "Preview": "プレビュー", + "Previous 30 days": "過去30日間", + "Previous 7 days": "過去7日間", + "Previous message": "前のメッセージ", "Private": "プライベート", "Profile": "プロフィール", "Prompt": "プロンプト", @@ -1159,37 +1159,37 @@ "Pull \"{{searchValue}}\" from Ollama.com": "Ollama.com から \"{{searchValue}}\" をプル", "Pull a model from Ollama.com": "Ollama.com からモデルをプル", "Query Generation Prompt": "クエリ生成プロンプト", - "Quick Actions": "", + "Quick Actions": "クイックアクション", "RAG Template": "RAG テンプレート", "Rating": "評価", "Re-rank models by topic similarity": "トピックの類似性に基づいてモデルを再ランク付け", "Read": "読み込む", "Read Aloud": "読み上げ", - "Reason": "", + "Reason": "理由", "Reasoning Effort": "推理の努力", "Record": "録音", "Record voice": "音声を録音", "Redirecting you to Open WebUI Community": "OpenWebUI コミュニティにリダイレクトしています", - "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "", - "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "自分を「User」と呼ぶ(例:「Userはスペイン語を学んでいます」)", + "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "無意味な生成の確率を減少させます。高い値(例:100)はより多様な回答を提供し、低い値(例:10)ではより保守的になります。", + "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "あなたのことは「User」としてください(例:「User はスペイン語を学んでいます」)", "References from": "参照元", "Refused when it shouldn't have": "拒否すべきでないのに拒否した", "Regenerate": "再生成", - "Regenerate Menu": "", + "Regenerate Menu": "再生成メニュー", "Reindex": "再インデックス", "Reindex Knowledge Base Vectors": "ナレッジベースベクターを再インデックス", "Release Notes": "リリースノート", - "Releases": "", + "Releases": "リリース", "Relevance": "関連性", "Relevance Threshold": "関連性の閾値", - "Remember Dismissal": "", + "Remember Dismissal": "閉じたことを記憶する", "Remove": "削除", - "Remove {{MODELID}} from list.": "", - "Remove file": "", - "Remove File": "", - "Remove image": "", + "Remove {{MODELID}} from list.": "{{MODELID}} をリストから削除する", + "Remove file": "ファイルを削除", + "Remove File": "ファイルを削除", + "Remove image": "画像を削除", "Remove Model": "モデルを削除", - "Remove this tag from list": "", + "Remove this tag from list": "このタグをリストから削除", "Rename": "名前を変更", "Reorder Models": "モデルを並べ替え", "Reply in Thread": "スレッドで返信", @@ -1201,17 +1201,17 @@ "Reset Upload Directory": "アップロードディレクトリをリセット", "Reset Vector Storage/Knowledge": "ベクターストレージとナレッジベースをリセット", "Reset view": "表示をリセット", - "Response": "", - "Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "ウェブサイトの許可が拒否されたため、応答通知をアクティブ化できません。必要なアクセスを許可するためにブラウザの設定を訪問してください。", + "Response": "応答", + "Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "ウェブサイトの許可が拒否されたため、応答の通知をアクティブ化できません。必要なアクセスを許可するためにブラウザの設定を確認してください。", "Response splitting": "応答の分割", - "Response Watermark": "", + "Response Watermark": "応答のウォーターマーク", "Result": "結果", "RESULT": "結果", - "Retrieval": "", - "Retrieval Query Generation": "", + "Retrieval": "検索", + "Retrieval Query Generation": "検索クエリ生成", "Rich Text Input for Chat": "チャットのリッチテキスト入力", "RK": "", - "Role": "", + "Role": "ロール", "Rosé Pine": "Rosé Pine", "Rosé Pine Dawn": "Rosé Pine Dawn", "RTL": "RTL", @@ -1222,32 +1222,32 @@ "Save & Create": "保存して作成", "Save & Update": "保存して更新", "Save As Copy": "コピーとして保存", - "Save Chat": "", + "Save Chat": "チャットを保存", "Save Tag": "タグを保存", "Saved": "保存しました。", "Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "チャットログをブラウザのストレージに直接保存する機能はサポートされなくなりました。下のボタンをクリックして、チャットログをダウンロードして削除してください。ご心配なく。チャットログは、次の方法でバックエンドに簡単に再インポートできます。", "Scroll On Branch Change": "ブランチ変更時にスクロール", "Search": "検索", "Search a model": "モデルを検索", - "Search all emojis": "", + "Search all emojis": "絵文字を検索", "Search Base": "ベースを検索", "Search Chats": "チャットの検索", - "Search Collection": "Collectionの検索", + "Search Collection": "コレクションの検索", "Search Filters": "フィルターの検索", - "search for archived chats": "", - "search for folders": "", - "search for pinned chats": "", - "search for shared chats": "", + "search for archived chats": "アーカイブされたチャットを検索", + "search for folders": "フォルダを検索", + "search for pinned chats": "ピン留めされたチャットを検索", + "search for shared chats": "共有されたチャットを検索", "search for tags": "タグを検索", "Search Functions": "Functionの検索", - "Search In Models": "", + "Search In Models": "モデルを検索", "Search Knowledge": "ナレッジベースの検索", "Search Models": "モデル検索", - "Search Notes": "", - "Search options": "", + "Search Notes": "ノートを検索", + "Search options": "検索オプション", "Search Prompts": "プロンプトを検索", "Search Result Count": "検索結果数", - "Search the internet": "", + "Search the internet": "インターネットを検索", "Search Tools": "ツールの検索", "SearchApi API Key": "SearchApiのAPIKey", "SearchApi Engine": "SearchApiエンジン", @@ -1259,41 +1259,41 @@ "See readme.md for instructions": "手順については readme.md を参照してください", "See what's new": "新機能を見る", "Seed": "シード", - "Select": "", + "Select": "選択", "Select a base model": "基本モデルの選択", - "Select a base model (e.g. llama3, gpt-4o)": "", - "Select a conversation to preview": "", + "Select a base model (e.g. llama3, gpt-4o)": "基本モデルを選択 (例: llama3, gpt-4o)", + "Select a conversation to preview": "プレビューする会話を選択してください", "Select a engine": "エンジンの選択", "Select a function": "Functionの選択", "Select a group": "グループの選択", - "Select a language": "", - "Select a mode": "", + "Select a language": "言語を選択", + "Select a mode": "モードを選択", "Select a model": "モデルを選択", - "Select a model (optional)": "", + "Select a model (optional)": "モデルを選択 (任意)", "Select a pipeline": "パイプラインの選択", "Select a pipeline url": "パイプラインの URL を選択する", - "Select a reranking model engine": "", - "Select a role": "", - "Select a theme": "", + "Select a reranking model engine": "リランクモデルのエンジンを選択", + "Select a role": "ロールを選択", + "Select a theme": "テーマを選択", "Select a tool": "ツールの選択", - "Select a voice": "", + "Select a voice": "声を選択", "Select an auth method": "認証方法の選択", - "Select an embedding model engine": "", - "Select an engine": "", + "Select an embedding model engine": "埋め込みモデルエンジンを選択", + "Select an engine": "エンジンを選択", "Select an Ollama instance": "Ollama インスタンスの選択", - "Select an output format": "", - "Select dtype": "", + "Select an output format": "出力フォーマットを選択", + "Select dtype": "dtypeを選択", "Select Engine": "エンジンの選択", - "Select how to split message text for TTS requests": "", + "Select how to split message text for TTS requests": "TTSリクエストのテキスト分割方法を選択", "Select Knowledge": "ナレッジベースの選択", "Select only one model to call": "1つのモデルを呼び出すには、1つのモデルを選択してください。", "Selected model(s) do not support image inputs": "一部のモデルは画像入力をサポートしていません", - "semantic": "", - "Semantic distance to query": "", + "semantic": "意味的", + "Semantic distance to query": "クエリとの意味的距離", "Send": "送信", "Send a Message": "メッセージを送信", "Send message": "メッセージを送信", - "Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "リクエストに`stream_options: { include_usage: true }`を含めます。サポートされているプロバイダーは、リクエストに`stream_options: { include_usage: true }`を含めると、レスポンスにトークン使用情報を返します。", + "Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "リクエストに`stream_options: { include_usage: true }`を含めます。サポートされているプロバイダーは、レスポンスにトークン使用情報を返すようになります。", "September": "9月", "SerpApi API Key": "SerpApi APIキー", "SerpApi Engine": "SerpApiエンジン", @@ -1301,41 +1301,41 @@ "Serply API Key": "Serply APIキー", "Serpstack API Key": "Serpstack APIキー", "Server connection verified": "サーバー接続が確認されました", - "Session": "", + "Session": "セッション", "Set as default": "デフォルトに設定", "Set CFG Scale": "CFG Scaleを設定", "Set Default Model": "デフォルトモデルを設定", "Set embedding model": "埋め込みモデルを設定", - "Set embedding model (e.g. {{model}})": "埋め込みモデルを設定します(例:{{model}})", + "Set embedding model (e.g. {{model}})": "埋め込みモデルを設定(例:{{model}})", "Set Image Size": "画像サイズを設定", - "Set reranking model (e.g. {{model}})": "モデルを設定します(例:{{model}})", + "Set reranking model (e.g. {{model}})": "リランクモデルを設定(例:{{model}})", "Set Sampler": "Samplerを設定", "Set Scheduler": "Schedulerを設定", "Set Steps": "ステップを設定", - "Set the number of layers, which will be off-loaded to GPU. Increasing this value can significantly improve performance for models that are optimized for GPU acceleration but may also consume more power and GPU resources.": "", - "Set the number of worker threads used for computation. This option controls how many threads are used to process incoming requests concurrently. Increasing this value can improve performance under high concurrency workloads but may also consume more CPU resources.": "", + "Set the number of layers, which will be off-loaded to GPU. Increasing this value can significantly improve performance for models that are optimized for GPU acceleration but may also consume more power and GPU resources.": "GPU にオフロードするレイヤー数を設定します。この値を増やすと、GPU 加速に最適化されたモデルのパフォーマンスが大幅に向上する可能性がありますが、同時に消費電力や GPU リソースの使用量も増加することがあります。", + "Set the number of worker threads used for computation. This option controls how many threads are used to process incoming requests concurrently. Increasing this value can improve performance under high concurrency workloads but may also consume more CPU resources.": "計算に使用するワーカースレッドの数を設定します。このオプションは、同時に処理可能なリクエスト数(スレッド数)を制御します。値を増やすことで、高い同時実行負荷下でのパフォーマンスが向上する可能性がありますが、その分CPUリソースの消費も増加します。", "Set Voice": "音声を設定", "Set whisper model": "whisperモデルを設定", - "Sets a flat bias against tokens that have appeared at least once. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "", - "Sets a scaling bias against tokens to penalize repetitions, based on how many times they have appeared. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "", - "Sets how far back for the model to look back to prevent repetition.": "", - "Sets the random number seed to use for generation. Setting this to a specific number will make the model generate the same text for the same prompt.": "", - "Sets the size of the context window used to generate the next token.": "", - "Sets the stop sequences to use. When this pattern is encountered, the LLM will stop generating text and return. Multiple stop patterns may be set by specifying multiple separate stop parameters in a modelfile.": "", + "Sets a flat bias against tokens that have appeared at least once. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "一度でも出現したトークンに対して一定のペナルティを設定します。値が高い(例:1.5)ほど繰り返しを強く抑制し、低い値(例:0.9)では寛容になります。0の場合は無効です。", + "Sets a scaling bias against tokens to penalize repetitions, based on how many times they have appeared. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "出現回数に応じてトークンにスケーリングされたペナルティを設定します。値が高い(例:1.5)ほど繰り返しを強く抑制し、低い値(例:0.9)では寛容になります。0の場合は無効です。", + "Sets how far back for the model to look back to prevent repetition.": "モデルが繰り返しを防止するために遡る履歴の長さを設定します。", + "Sets the random number seed to use for generation. Setting this to a specific number will make the model generate the same text for the same prompt.": "生成に用いる乱数シードを設定します。特定の数値を設定すると、同じプロンプトで同じテキストが生成されます。", + "Sets the size of the context window used to generate the next token.": "次のトークンを生成する際に使用するコンテキストウィンドウのサイズを設定します。", + "Sets the stop sequences to use. When this pattern is encountered, the LLM will stop generating text and return. Multiple stop patterns may be set by specifying multiple separate stop parameters in a modelfile.": "停止シーケンスを設定します。このパターンに達するとLLMはテキスト生成を停止し、結果を返します。複数の停止パターンは、モデルファイル内で複数のstopパラメータを指定することで設定可能です。", "Settings": "設定", "Settings saved successfully!": "設定が正常に保存されました!", "Share": "共有", "Share Chat": "チャットを共有", "Share to Open WebUI Community": "OpenWebUI コミュニティに共有", - "Share your background and interests": "", - "Sharing Permissions": "共有許可", - "Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "", + "Share your background and interests": "あなたの背景情報と興味を教えてください", + "Sharing Permissions": "共有に関する権限", + "Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "アスタリスク(*)のついたショートカットは、特定の状況下でのみ有効です。", "Show": "表示", - "Show \"What's New\" modal on login": "ログイン時に「新しいこと」モーダルを表示", + "Show \"What's New\" modal on login": "ログイン時に更新内容モーダルを表示", "Show Admin Details in Account Pending Overlay": "アカウント保留中の管理者詳細を表示", "Show All": "すべて表示", - "Show Formatting Toolbar": "", - "Show image preview": "", + "Show Formatting Toolbar": "フォーマットツールバーを表示", + "Show image preview": "画像のプレビューを表示", "Show Less": "表示を減らす", "Show Model": "モデルを表示", "Show shortcuts": "ショートカットを表示", @@ -1347,13 +1347,13 @@ "Sign Out": "サインアウト", "Sign up": "サインアップ", "Sign up to {{WEBUI_NAME}}": "{{WEBUI_NAME}}にサインアップ", - "Significantly improves accuracy by using an LLM to enhance tables, forms, inline math, and layout detection. Will increase latency. Defaults to False.": "", + "Significantly improves accuracy by using an LLM to enhance tables, forms, inline math, and layout detection. Will increase latency. Defaults to False.": "LLMを使用した表、フォーム、数式、レイアウトの検出により、精度を大きく改善します。遅延が増大します。デフォルトでは無効", "Signing in to {{WEBUI_NAME}}": "{{WEBUI_NAME}}にサインイン", - "Sink List": "", + "Sink List": "リストの字下げを戻す", "sk-1234": "sk-1234", - "Skip Cache": "", - "Skip the cache and re-run the inference. Defaults to False.": "", - "Something went wrong :/": "", + "Skip Cache": "キャッシュをスキップする", + "Skip the cache and re-run the inference. Defaults to False.": "キャッシュをスキップし、推論を再実行します。デフォルトでは無効。", + "Something went wrong :/": "何らかの問題が発生しました", "Sonar": "", "Sonar Deep Research": "", "Sonar Pro": "", @@ -1364,97 +1364,97 @@ "Source": "ソース", "Speech Playback Speed": "音声の再生速度", "Speech recognition error: {{error}}": "音声認識エラー: {{error}}", - "Speech-to-Text": "", + "Speech-to-Text": "音声テキスト変換", "Speech-to-Text Engine": "音声テキスト変換エンジン", "Start of the channel": "チャンネルの開始", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "停止", - "Stop Generating": "", + "Stop Generating": "生成を停止", "Stop Sequence": "ストップシーケンス", "Stream Chat Response": "チャットレスポンスのストリーム", - "Stream Delta Chunk Size": "", - "Strikethrough": "", - "Strip Existing OCR": "", - "Strip existing OCR text from the PDF and re-run OCR. Ignored if Force OCR is enabled. Defaults to False.": "", + "Stream Delta Chunk Size": "ストリームの差分チャンクサイズ", + "Strikethrough": "取り消し線", + "Strip Existing OCR": "既存のOCR結果を削除", + "Strip existing OCR text from the PDF and re-run OCR. Ignored if Force OCR is enabled. Defaults to False.": "PDFからテキストを削除し、OCRを再実行します。強制OCRが有効のとき無視されます。デフォルトでは無効", "STT Model": "STTモデル", "STT Settings": "STT設定", "Stylized PDF Export": "スタイル付きPDFエクスポート", - "Subtitle (e.g. about the Roman Empire)": "字幕 (例: ローマ帝国)", + "Subtitle (e.g. about the Roman Empire)": "サブタイトル(例:ローマ帝国について)", "Success": "成功", - "Successfully imported {{userCount}} users.": "", + "Successfully imported {{userCount}} users.": "{{userCount}} 人のユーザが正常にインポートされました。", "Successfully updated.": "正常に更新されました。", - "Suggest a change": "", + "Suggest a change": "変更を提案", "Suggested": "提案", "Support": "サポート", - "Support this plugin:": "このプラグインをサポートする:", - "Supported MIME Types": "", - "Sync directory": "同期ディレクトリ", + "Support this plugin:": "このプラグインを支援する:", + "Supported MIME Types": "対応するMIMEタイプ", + "Sync directory": "ディレクトリを同期", "System": "システム", "System Instructions": "システムインストラクション", "System Prompt": "システムプロンプト", "Tags": "タグ", "Tags Generation": "タグ生成", "Tags Generation Prompt": "タグ生成プロンプト", - "Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting.": "", + "Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting.": "Tail Free Samplingは、出力中の確率の低いトークンの影響を抑えるための手法です。値が高い(例:2.0)ほど影響を減らし、1.0の場合は無効となります。", "Talk to model": "モデルと話す", "Tap to interrupt": "タップして中断", - "Task List": "", - "Task Model": "", + "Task List": "タスクリスト", + "Task Model": "タスクモデル", "Tasks": "タスク", "Tavily API Key": "Tavily APIキー", "Tavily Extract Depth": "Tavily抽出深度", "Tell us more:": "もっと話してください:", - "Temperature": "温度", + "Temperature": "Temperature", "Temporary Chat": "一時的なチャット", - "Temporary Chat by Default": "", - "Text Splitter": "", - "Text-to-Speech": "", + "Temporary Chat by Default": "デフォルトで一時的なチャット", + "Text Splitter": "テキスト分割", + "Text-to-Speech": "テキスト音声変換", "Text-to-Speech Engine": "テキスト音声変換エンジン", "Thanks for your feedback!": "ご意見ありがとうございます!", "The Application Account DN you bind with for search": "LDAP属性を使用してユーザーを検索するためにバインドするアプリケーションアカウントのDN。", "The base to search for users": "ユーザーを検索するためのベース。", "The batch size determines how many text requests are processed together at once. A higher batch size can increase the performance and speed of the model, but it also requires more memory.": "バッチサイズは一度に処理されるテキストリクエストの数を決定します。バッチサイズを高くすると、モデルのパフォーマンスと速度が向上しますが、メモリの使用量も増加します。", - "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "このプラグインはコミュニティの熱意のあるボランティアによって開発されています。このプラグインがお役に立った場合は、開発に貢献することを検討してください。", + "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "このプラグインはコミュニティの熱意のあるボランティアによって開発されています。このプラグインが役に立った場合は、開発に貢献することを検討してください。", "The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "評価リーダーボードはElo評価システムに基づいており、実時間で更新されています。", - "The format to return a response in. Format can be json or a JSON schema.": "", - "The height in pixels to compress images to. Leave empty for no compression.": "", - "The language of the input audio. Supplying the input language in ISO-639-1 (e.g. en) format will improve accuracy and latency. Leave blank to automatically detect the language.": "", + "The format to return a response in. Format can be json or a JSON schema.": "レスポンスのフォーマット。jsonか、JSONスキーマを指定できます。", + "The height in pixels to compress images to. Leave empty for no compression.": "画像の圧縮後のピクセル単位での高さ。空欄で圧縮を無効化します", + "The language of the input audio. Supplying the input language in ISO-639-1 (e.g. en) format will improve accuracy and latency. Leave blank to automatically detect the language.": "入力音声の言語を指定します。ISO-639-1形式(例:en)で指定すると精度や処理速度が向上します。空欄にすると自動言語検出が行われます。", "The LDAP attribute that maps to the mail that users use to sign in.": "ユーザーがサインインに使用するメールのLDAP属性。", "The LDAP attribute that maps to the username that users use to sign in.": "ユーザーがサインインに使用するユーザー名のLDAP属性。", "The leaderboard is currently in beta, and we may adjust the rating calculations as we refine the algorithm.": "リーダーボードは現在ベータ版であり、アルゴリズムを改善する際に評価計算を調整する場合があります。", - "The maximum file size in MB. If the file size exceeds this limit, the file will not be uploaded.": "ファイルの最大サイズはMBです。ファイルサイズがこの制限を超える場合、ファイルはアップロードされません。", + "The maximum file size in MB. If the file size exceeds this limit, the file will not be uploaded.": "ファイルの最大サイズ(MB単位)。この制限を超えるファイルサイズの場合、ファイルはアップロードされません。", "The maximum number of files that can be used at once in chat. If the number of files exceeds this limit, the files will not be uploaded.": "一度に使用できるファイルの最大数。ファイルの数がこの制限を超える場合、ファイルはアップロードされません。", - "The output format for the text. Can be 'json', 'markdown', or 'html'. Defaults to 'markdown'.": "", - "The passwords you entered don't quite match. Please double-check and try again.": "", + "The output format for the text. Can be 'json', 'markdown', or 'html'. Defaults to 'markdown'.": "出力テキストの形式。'json', 'markdown', 'html'が設定できます。デフォルトは'markdown'です。", + "The passwords you entered don't quite match. Please double-check and try again.": "入力されたパスワードが一致しません。もういちど確認してください。", "The score should be a value between 0.0 (0%) and 1.0 (100%).": "スコアは0.0(0%)から1.0(100%)の間の値にしてください。", - "The stream delta chunk size for the model. Increasing the chunk size will make the model respond with larger pieces of text at once.": "", + "The stream delta chunk size for the model. Increasing the chunk size will make the model respond with larger pieces of text at once.": "モデルがストリームするテキスト差分のチャンクサイズ。増加させると返答が一度にたくさん送られます。", "The temperature of the model. Increasing the temperature will make the model answer more creatively.": "モデルのtemperature。温度を上げるとモデルはより創造的に回答します。", - "The Weight of BM25 Hybrid Search. 0 more lexical, 1 more semantic. Default 0.5": "", - "The width in pixels to compress images to. Leave empty for no compression.": "", + "The Weight of BM25 Hybrid Search. 0 more lexical, 1 more semantic. Default 0.5": "BM25 ハイブリッド検索の重み。0でより文法的、1でより意味的になります。デフォルトは0.5です", + "The width in pixels to compress images to. Leave empty for no compression.": "画像の圧縮後のピクセル単位での幅。空欄で圧縮を無効化します", "Theme": "テーマ", "Thinking...": "思考中...", "This action cannot be undone. Do you wish to continue?": "このアクションは取り消し不可です。続けますか?", "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "このチャンネルは{{createdAt}}に作成されました。これは{{channelName}}チャンネルの始まりです。", "This chat won't appear in history and your messages will not be saved.": "このチャットは履歴に表示されず、メッセージは保存されません。", "This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "これは、貴重な会話がバックエンドデータベースに安全に保存されることを保証します。ありがとうございます!", - "This feature is experimental and may be modified or discontinued without notice.": "", + "This feature is experimental and may be modified or discontinued without notice.": "この機能は実験的で、通知なしに変更・削除されることがあります。", "This is an experimental feature, it may not function as expected and is subject to change at any time.": "実験的機能であり正常動作しない場合があります。", "This model is not publicly available. Please select another model.": "このモデルは公開されていません。別のモデルを選択してください。", - "This option controls how long the model will stay loaded into memory following the request (default: 5m)": "", + "This option controls how long the model will stay loaded into memory following the request (default: 5m)": "このオプションは、モデルがリクエスト後メモリにどれくらい長く残るか設定します。 (デフォルト: 5m)", "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "このオプションは、コンテキストをリフレッシュする際に保持するトークンの数を制御します。例えば、2に設定すると、会話のコンテキストの最後の2つのトークンが保持されます。コンテキストを保持することで、会話の継続性を維持できますが、新しいトピックに応答する能力を低下させる可能性があります。", - "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", + "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "このオプションはOllamaで、応答の生成前に思考する、推論機能の有効化を設定します。有効化すると、会話を処理する時間をとり、考え深い応答を生成します。", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "このオプションは、モデルが生成できるトークンの最大数を設定します。この制限を増加すると、モデルはより長い回答を生成できるようになりますが、不適切な内容や関連性の低い内容が生成される可能性も高まります。", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "", + "This option will delete all existing files in the collection and replace them with newly uploaded files.": "このオプションを有効にすると、コレクション内の既存ファイルがすべて削除され、新たにアップロードしたファイルに置き換わります。", "This response was generated by \"{{model}}\"": "このレスポンスは\"{{model}}\"によって生成されました。", - "This will delete": "", - "This will delete {{NAME}} and all its contents.": "これは{{NAME}}すべての内容を削除します。", + "This will delete": "削除します", + "This will delete {{NAME}} and all its contents.": "これは{{NAME}}とそのすべての内容を削除します。", "This will delete all models including custom models": "これはカスタムモデルを含むすべてのモデルを削除します", "This will delete all models including custom models and cannot be undone.": "これはカスタムモデルを含むすべてのモデルを削除し、元に戻すことはできません。", "This will reset the knowledge base and sync all files. Do you wish to continue?": "これは知識ベースをリセットし、すべてのファイルを同期します。続けますか?", "Thorough explanation": "詳細な説明", - "Thought for {{DURATION}}": "{{DURATION}}秒間の思考", + "Thought for {{DURATION}}": "{{DURATION}}間の思考", "Thought for {{DURATION}} seconds": "{{DURATION}}秒間の思考", - "Thought for less than a second": "", + "Thought for less than a second": "1秒未満の思考", "Thread": "スレッド", "Tika": "", "Tika Server URL required.": "Tika Server URLが必要です。", @@ -1470,21 +1470,21 @@ "To access the available model names for downloading,": "ダウンロード可能なモデル名にアクセスするには、", "To access the GGUF models available for downloading,": "ダウンロード可能な GGUF モデルにアクセスするには、", "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "WebUIにアクセスするには、管理者にお問い合わせください。管理者は管理者パネルからユーザーのステータスを管理できます。", - "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "ここに知識ベースを添付するには、まず \"Knowledge\" ワークスペースに追加してください。", + "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "ここにナレッジベースを追加するには、まず \"Knowledge\" ワークスペースに追加してください。", "To learn more about available endpoints, visit our documentation.": "利用可能なエンドポイントについては、ドキュメントを参照してください。", - "To learn more about powerful prompt variables, click here": "", + "To learn more about powerful prompt variables, click here": "プロンプト変数についてさらに詳しく知るには、ここをクリックしてください", "To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "プライバシーを保護するため、評価、モデル ID、タグ、およびメタデータのみがフィードバックから共有されます。— チャットログはプライバシーを保護され、含まれません。", "To select actions here, add them to the \"Functions\" workspace first.": "ここでアクションを選択するには、まず \"Functions\" ワークスペースに追加してください。", "To select filters here, add them to the \"Functions\" workspace first.": "ここでフィルターを選択するには、まず \"Functions\" ワークスペースに追加してください。", "To select toolkits here, add them to the \"Tools\" workspace first.": "ここでツールキットを選択するには、まず \"Tools\" ワークスペースに追加してください。", "Toast notifications for new updates": "新しい更新のトースト通知", "Today": "今日", - "Toggle search": "", + "Toggle search": "検索を切り替え", "Toggle settings": "設定を切り替え", "Toggle sidebar": "サイドバーを切り替え", - "Toggle whether current connection is active.": "", + "Toggle whether current connection is active.": "この接続の有効性を切り替える", "Token": "トークン", - "Too verbose": "冗長すぎます", + "Too verbose": "冗長すぎる", "Tool created successfully": "ツールが正常に作成されました", "Tool deleted successfully": "ツールが正常に削除されました", "Tool Description": "ツールの説明", @@ -1500,11 +1500,11 @@ "Tools have a function calling system that allows arbitrary code execution.": "ツールは任意のコード実行を可能にする関数呼び出しシステムを持っています。", "Tools Public Sharing": "ツールの公開共有", "Top K": "トップ K", - "Top K Reranker": "", + "Top K Reranker": "トップ K リランカー", "Transformers": "", "Trouble accessing Ollama?": "Ollama へのアクセスに問題がありますか?", "Trust Proxy Environment": "プロキシ環境を信頼する", - "Try Again": "", + "Try Again": "再試行", "TTS Model": "TTSモデル", "TTS Settings": "TTS 設定", "TTS Voice": "TTSボイス", @@ -1512,16 +1512,16 @@ "Type Hugging Face Resolve (Download) URL": "Hugging Face Resolve (ダウンロード) URL を入力してください", "Uh-oh! There was an issue with the response.": "レスポンスに問題がありました。", "UI": "", - "Unarchive All": "すべてのアーカイブされたチャットをアーカイブ解除", + "Unarchive All": "すべてアーカイブ解除", "Unarchive All Archived Chats": "すべてのアーカイブされたチャットをアーカイブ解除", "Unarchive Chat": "チャットをアーカイブ解除", - "Underline": "", - "Unloads {{FROM_NOW}}": "", - "Unlock mysteries": "", + "Underline": "下線", + "Unloads {{FROM_NOW}}": "{{FROM_NOW}}にアンロード", + "Unlock mysteries": "ミステリーを解き明かす", "Unpin": "ピン留め解除", - "Unravel secrets": "", - "Unsupported file type.": "", - "Untagged": "", + "Unravel secrets": "秘密を解き明かす", + "Unsupported file type.": "未対応のファイルタイプです", + "Untagged": "タグなし", "Untitled": "タイトルなし", "Update": "更新", "Update and Copy Link": "リンクの更新とコピー", @@ -1533,58 +1533,58 @@ "Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.": "高度な機能を備えたライセンス付きプランにアップグレードしてください。", "Upload": "アップロード", "Upload a GGUF model": "GGUF モデルをアップロード", - "Upload Audio": "", - "Upload directory": "アップロードディレクトリ", - "Upload files": "アップロードファイル", - "Upload Files": "ファイルのアップロード", - "Upload Pipeline": "アップロードパイプライン", + "Upload Audio": "オーディオをアップロード", + "Upload directory": "ディレクトリをアップロード", + "Upload files": "ファイルをアップロード", + "Upload Files": "ファイルをアップロード", + "Upload Pipeline": "パイプラインをアップロード", "Upload Progress": "アップロードの進行状況", - "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", + "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "アップロード状況: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "URL": "", - "URL is required": "", + "URL is required": "URLは必須です", "URL Mode": "URL モード", - "Usage": "", - "Use '#' in the prompt input to load and include your knowledge.": "#を入力するとナレッジベースを参照することが出来ます。", + "Usage": "使用量", + "Use '#' in the prompt input to load and include your knowledge.": "#を入力するとナレッジベースを参照することができます。", "Use groups to group your users and assign permissions.": "グループを使用してユーザーをグループ化し、権限を割り当てます。", - "Use LLM": "", + "Use LLM": "LLMを使用する", "Use no proxy to fetch page contents.": "ページの内容を取得するためにプロキシを使用しません。", "Use proxy designated by http_proxy and https_proxy environment variables to fetch page contents.": "http_proxy と https_proxy 環境変数で指定されたプロキシを使用してページの内容を取得します。", "user": "ユーザー", "User": "ユーザー", - "User Groups": "", + "User Groups": "ユーザーグループ", "User location successfully retrieved.": "ユーザーの位置情報が正常に取得されました。", - "User menu": "", - "User Webhooks": "", + "User menu": "ユーザーメニュー", + "User Webhooks": "ユーザWebhook", "Username": "ユーザー名", "Users": "ユーザー", - "Using Entire Document": "", - "Using Focused Retrieval": "", - "Using the default arena model with all models. Click the plus button to add custom models.": "", - "Valid time units:": "有効な時間単位:", - "Validate certificate": "", - "Valves": "", + "Using Entire Document": "ドキュメント全体を使用します", + "Using Focused Retrieval": "選択的検索を使用します", + "Using the default arena model with all models. Click the plus button to add custom models.": "デフォルトのアリーナモデルをすべてのモデルで使用します。プラスボタンをクリックしてカスタムモデルを追加", + "Valid time units:": "使用可能な時間単位:", + "Validate certificate": "証明書を検証する", + "Valves": "バルブ", "Valves updated": "バルブが更新されました", "Valves updated successfully": "バルブが正常に更新されました", "variable": "変数", "Verify Connection": "接続を確認", "Verify SSL Certificate": "SSL証明書を確認", "Version": "バージョン", - "Version {{selectedVersion}} of {{totalVersions}}": "", + "Version {{selectedVersion}} of {{totalVersions}}": "{{selectedVersion}} / {{totalVersions}} バージョン", "View Replies": "リプライを表示", "View Result from **{{NAME}}**": "**{{NAME}}**の結果を表示", - "Visibility": "", - "Vision": "", + "Visibility": "可視性", + "Vision": "視覚", "Voice": "ボイス", "Voice Input": "音声入力", - "Voice mode": "", + "Voice mode": "音声モード", "Warning": "警告", "Warning:": "警告:", "Warning: Enabling this will allow users to upload arbitrary code on the server.": "警告: これを有効にすると、ユーザーがサーバー上で任意のコードをアップロードできるようになります。", "Warning: If you update or change your embedding model, you will need to re-import all documents.": "警告: 埋め込みモデルを更新または変更した場合は、すべてのドキュメントを再インポートする必要があります。", - "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "", + "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "警告: Jupyter 実行は任意のコード実行を可能にし、重大なセキュリティリスクを伴います。極めて慎重に進めてください。", "Web": "ウェブ", "Web API": "ウェブAPI", - "Web Loader Engine": "", + "Web Loader Engine": "ウェブローダーエンジン", "Web Search": "ウェブ検索", "Web Search Engine": "ウェブ検索エンジン", "Web Search in Chat": "チャットでウェブ検索", @@ -1595,24 +1595,24 @@ "WebUI will make requests to \"{{url}}\"": "WebUIは\"{{url}}\"にリクエストを行います", "WebUI will make requests to \"{{url}}/api/chat\"": "WebUIは\"{{url}}/api/chat\"にリクエストを行います", "WebUI will make requests to \"{{url}}/chat/completions\"": "WebUIは\"{{url}}/chat/completions\"にリクエストを行います", - "What are you trying to achieve?": "", - "What are you working on?": "", + "What are you trying to achieve?": "何を達成したいですか?", + "What are you working on?": "何に取り組んでいますか?", "What's New in": "新機能", - "When enabled, the model will respond to each chat message in real-time, generating a response as soon as the user sends a message. This mode is useful for live chat applications, but may impact performance on slower hardware.": "", - "wherever you are": "", - "Whether to paginate the output. Each page will be separated by a horizontal rule and page number. Defaults to False.": "", + "When enabled, the model will respond to each chat message in real-time, generating a response as soon as the user sends a message. This mode is useful for live chat applications, but may impact performance on slower hardware.": "有効にすると、ユーザのメッセージ送信と同時にリアルタイムで応答を生成します。ライブチャット用途に適しますが、性能の低い環境では動作が重くなる可能性があります。", + "wherever you are": "どこにいても", + "Whether to paginate the output. Each page will be separated by a horizontal rule and page number. Defaults to False.": "出力をページ分けするかどうか。各ページは水平線とページ番号で分割されます。デフォルトでは無効", "Whisper (Local)": "Whisper (ローカル)", - "Why?": "", + "Why?": "どうしてですか?", "Widescreen Mode": "ワイドスクリーンモード", - "Width": "", - "Won": "", - "Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "", + "Width": "幅", + "Won": "勝ち", + "Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "top-k と併用されます。値が高い(例:0.95)ほど多様なテキストが生成され、低い値(例:0.5)ではより集中した保守的なテキストが生成されます。", "Workspace": "ワークスペース", - "Workspace Permissions": "ワークスペースの許可", - "Write": "", + "Workspace Permissions": "ワークスペースの権限", + "Write": "書き込み", "Write a prompt suggestion (e.g. Who are you?)": "プロンプトの提案を書いてください (例: あなたは誰ですか?)", "Write a summary in 50 words that summarizes [topic or keyword].": "[トピックまたはキーワード] を要約する 50 語の概要を書いてください。", - "Write something...": "何かを書いてください...", + "Write something...": "何か書いてください...", "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "ここにモデルのシステムプロンプト内容を記入してください\n例:あなたは『スーパーマリオブラザーズ』のマリオで、アシスタントとして振る舞います。", "Yacy Instance URL": "YacyインスタンスURL", "Yacy Password": "Yacyパスワード", @@ -1620,7 +1620,7 @@ "Yesterday": "昨日", "You": "あなた", "You are currently using a trial license. Please contact support to upgrade your license.": "現在、試用ライセンスを使用しています。サポートにお問い合わせください。", - "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "一度に最大{{maxCount}}のファイルしかチャットできません。", + "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "同時にチャットに使用できるファイルは最大{{maxCount}}個までです。", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "メモリを追加することで、LLMとの対話をカスタマイズできます。", "You cannot upload an empty file.": "空のファイルをアップロードできません。", "You do not have permission to upload files.": "ファイルをアップロードする権限がありません。", @@ -1628,9 +1628,9 @@ "You have shared this chat": "このチャットを共有しました", "You're a helpful assistant.": "あなたは有能なアシスタントです。", "You're now logged in.": "ログインしました。", - "Your Account": "", + "Your Account": "あなたのアカウント", "Your account status is currently pending activation.": "あなたのアカウント状態は現在登録認証待ちです。", - "Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.": "", + "Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.": "あなたの全ての寄付はプラグイン開発者へ直接送られます。Open WebUI は手数料を一切取りません。ただし、選択した資金提供プラットフォーム側に手数料が発生する場合があります。", "Youtube": "YouTube", "Youtube Language": "YouTubeの言語", "Youtube Proxy URL": "YouTubeのプロキシURL" From a37d411dcffcb4b0dc90f7f40a8669e6f27c5947 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 25 Aug 2025 18:12:47 +0400 Subject: [PATCH 18/74] refac --- backend/open_webui/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/open_webui/config.py b/backend/open_webui/config.py index d3b7c9314c..ded5208d6b 100644 --- a/backend/open_webui/config.py +++ b/backend/open_webui/config.py @@ -1576,7 +1576,7 @@ FOLLOW_UP_GENERATION_PROMPT_TEMPLATE = PersistentConfig( ) DEFAULT_FOLLOW_UP_GENERATION_PROMPT_TEMPLATE = """### Task: -Suggest 3-5 relevant follow-up questions or prompts in the chat's primary language that the user might naturally ask next in this conversation as a **user**, based on the chat history, to help continue or deepen the discussion. +Suggest 3-5 relevant follow-up questions or prompts that the user might naturally ask next in this conversation as a **user**, based on the chat history, to help continue or deepen the discussion. ### Guidelines: - Write all follow-up questions from the user’s point of view, directed to the assistant. - Make questions concise, clear, and directly related to the discussed topic(s). From c61698efcfc9617a2a605ba7cd9e85f41616f552 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 25 Aug 2025 18:18:52 +0400 Subject: [PATCH 19/74] enh: `process_in_background` query param for file upload endpoint --- backend/open_webui/routers/files.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/routers/files.py b/backend/open_webui/routers/files.py index 3b46d0bd8a..d08c5396ce 100644 --- a/backend/open_webui/routers/files.py +++ b/backend/open_webui/routers/files.py @@ -143,9 +143,18 @@ def upload_file( file: UploadFile = File(...), metadata: Optional[dict | str] = Form(None), process: bool = Query(True), + process_in_background: bool = Query(True), user=Depends(get_verified_user), ): - return upload_file_handler(request, file, metadata, process, user, background_tasks) + return upload_file_handler( + request, + file=file, + metadata=metadata, + process=process, + process_in_background=process_in_background, + user=user, + background_tasks=background_tasks, + ) def upload_file_handler( @@ -153,6 +162,7 @@ def upload_file_handler( file: UploadFile = File(...), metadata: Optional[dict | str] = Form(None), process: bool = Query(True), + process_in_background: bool = Query(True), user=Depends(get_verified_user), background_tasks: Optional[BackgroundTasks] = None, ): @@ -225,7 +235,7 @@ def upload_file_handler( ) if process: - if background_tasks: + if background_tasks and process_in_background: background_tasks.add_task( process_uploaded_file, request, From 630cea105e10d2480fed2814c66e08d4efe76e8b Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Mon, 25 Aug 2025 18:22:28 +0400 Subject: [PATCH 20/74] fix: empty content in file modal --- src/lib/components/common/FileItemModal.svelte | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/lib/components/common/FileItemModal.svelte b/src/lib/components/common/FileItemModal.svelte index 0f3eca80f2..f84f9c047c 100644 --- a/src/lib/components/common/FileItemModal.svelte +++ b/src/lib/components/common/FileItemModal.svelte @@ -13,6 +13,7 @@ import Tooltip from './Tooltip.svelte'; import dayjs from 'dayjs'; import Spinner from './Spinner.svelte'; + import { getFileById } from '$lib/apis/files'; export let item; export let show = false; @@ -49,6 +50,18 @@ item.files = knowledge.files || []; } loading = false; + } else if (item?.type === 'file') { + loading = true; + + const file = await getFileById(localStorage.token, item.id).catch((e) => { + console.error('Error fetching file:', e); + return null; + }); + + if (file) { + item.file = file || {}; + } + loading = false; } await tick(); From 0583847943028272d78859fe24fc05fddf8b12bf Mon Sep 17 00:00:00 2001 From: "Jakub A. W" Date: Tue, 26 Aug 2025 06:45:01 +0200 Subject: [PATCH 21/74] fix: updated Polish translation --- src/lib/i18n/locales/pl-PL/translation.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/i18n/locales/pl-PL/translation.json b/src/lib/i18n/locales/pl-PL/translation.json index 00cd1a52f5..521dfc6970 100644 --- a/src/lib/i18n/locales/pl-PL/translation.json +++ b/src/lib/i18n/locales/pl-PL/translation.json @@ -1527,7 +1527,7 @@ "Update and Copy Link": "Aktualizuj i kopiuj link", "Update for the latest features and improvements.": "Aktualizacja do najnowszych funkcji i ulepszeń.", "Update password": "Zmiana hasła", - "Updated": "Aby zwiększyć wydajność aplikacji, należy rozważyć optymalizację kodu i użycie odpowiednich struktur danych. {optimization} [optimizations] mogą obejmować minimalizację liczby operacji we/wy, zwiększenie wydajności algorytmów oraz zmniejszenie zużycia pamięci. Ponadto, warto rozważyć użycie {caching} [pamięci podręcznej] do przechowywania często używanych danych, co może znacząco przyspieszyć działanie aplikacji. Wreszcie, monitorowanie wydajności aplikacji za pomocą narzędzi takich jak {profiling} [profilowanie] może pomóc zidentyfikować wolne miejsca i dalsze obszary do optymalizacji.", + "Updated": "Zaktualizowano", "Updated at": "Aktualizacja dnia", "Updated At": "Czas aktualizacji", "Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.": "Przejdź na licencjonowany plan, aby uzyskać rozszerzone możliwości, w tym niestandardowe motywy, personalizację oraz dedykowane wsparcie.", @@ -1634,4 +1634,4 @@ "Youtube": "Youtube", "Youtube Language": "Język Youtube", "Youtube Proxy URL": "URL proxy Youtube" -} +} \ No newline at end of file From f4047eea7797fa1bf0a541bf2f2e02331537dbf9 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 26 Aug 2025 13:15:47 +0400 Subject: [PATCH 22/74] fix: direct tool server --- src/lib/apis/index.ts | 18 ++++++++++-------- src/lib/components/chat/Settings/Tools.svelte | 15 ++++++++++++++- src/routes/(app)/+layout.svelte | 15 ++++++++++++++- 3 files changed, 38 insertions(+), 10 deletions(-) diff --git a/src/lib/apis/index.ts b/src/lib/apis/index.ts index 4670052459..646514eee8 100644 --- a/src/lib/apis/index.ts +++ b/src/lib/apis/index.ts @@ -347,25 +347,20 @@ export const getToolServerData = async (token: string, url: string) => { return data; }; -export const getToolServersData = async (i18n, servers: object[]) => { +export const getToolServersData = async (servers: object[]) => { return ( await Promise.all( servers .filter((server) => server?.config?.enable) .map(async (server) => { + let error = null; const data = await getToolServerData( (server?.auth_type ?? 'bearer') === 'bearer' ? server?.key : localStorage.token, (server?.path ?? '').includes('://') ? server?.path : `${server?.url}${(server?.path ?? '').startsWith('/') ? '' : '/'}${server?.path}` ).catch((err) => { - toast.error( - $i18n.t(`Failed to connect to {{URL}} OpenAPI tool server`, { - URL: (server?.path ?? '').includes('://') - ? server?.path - : `${server?.url}${(server?.path ?? '').startsWith('/') ? '' : '/'}${server?.path}` - }) - ); + error = err; return null; }); @@ -377,6 +372,13 @@ export const getToolServersData = async (i18n, servers: object[]) => { info: info, specs: specs }; + } else if (error) { + return { + error, + url: server?.url + }; + } else { + return null; } }) ) diff --git a/src/lib/components/chat/Settings/Tools.svelte b/src/lib/components/chat/Settings/Tools.svelte index ab4f3309ef..147b8f5964 100644 --- a/src/lib/components/chat/Settings/Tools.svelte +++ b/src/lib/components/chat/Settings/Tools.svelte @@ -31,7 +31,20 @@ toolServers: servers }); - toolServers.set(await getToolServersData($i18n, $settings?.toolServers ?? [])); + let toolServersData = await getToolServersData($settings?.toolServers ?? []); + toolServersData = toolServersData.filter((data) => { + if (data.error) { + toast.error( + $i18n.t(`Failed to connect to {{URL}} OpenAPI tool server`, { + URL: data?.url + }) + ); + return false; + } + + return true; + }); + toolServers.set(toolServersData); }; onMount(async () => { diff --git a/src/routes/(app)/+layout.svelte b/src/routes/(app)/+layout.svelte index 91da536301..7ae71b8663 100644 --- a/src/routes/(app)/+layout.svelte +++ b/src/routes/(app)/+layout.svelte @@ -114,7 +114,20 @@ banners.set(await getBanners(localStorage.token)); tools.set(await getTools(localStorage.token)); - toolServers.set(await getToolServersData($i18n, $settings?.toolServers ?? [])); + + let toolServersData = await getToolServersData($settings?.toolServers ?? []); + toolServersData = toolServersData.filter((data) => { + if (data.error) { + toast.error( + $i18n.t(`Failed to connect to {{URL}} OpenAPI tool server`, { + URL: data?.url + }) + ); + return false; + } + return true; + }); + toolServers.set(toolServersData); document.addEventListener('keydown', async function (event) { const isCtrlPressed = event.ctrlKey || event.metaKey; // metaKey is for Cmd key on Mac From 9c3f54cf1c48ee3f42506cf2c6ddd13e9ca5e6d1 Mon Sep 17 00:00:00 2001 From: Shirasawa <764798966@qq.com> Date: Tue, 26 Aug 2025 09:23:52 +0000 Subject: [PATCH 23/74] fix: fix Windows sidebar button cursor style --- src/lib/components/layout/Sidebar.svelte | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/lib/components/layout/Sidebar.svelte b/src/lib/components/layout/Sidebar.svelte index 5eca495a0d..2c7def4866 100644 --- a/src/lib/components/layout/Sidebar.svelte +++ b/src/lib/components/layout/Sidebar.svelte @@ -442,6 +442,8 @@ await tick(); }; + + const isWindows = /Windows/i.test(navigator.userAgent);
{/if} +
+
+ {$i18n.t('Allow Chat Edit')} +
+ + +
+
{$i18n.t('Allow Chat Delete')} @@ -302,10 +314,34 @@
- {$i18n.t('Allow Chat Edit')} + {$i18n.t('Allow Delete Messages')}
- + +
+ +
+
+ {$i18n.t('Allow Continue Response')} +
+ + +
+ +
+
+ {$i18n.t('Allow Response Regeneration')} +
+ + +
+ +
+
+ {$i18n.t('Allow Response Rating')} +
+ +
diff --git a/src/lib/components/chat/Messages/ResponseMessage.svelte b/src/lib/components/chat/Messages/ResponseMessage.svelte index 36699471d0..6010fa48d3 100644 --- a/src/lib/components/chat/Messages/ResponseMessage.svelte +++ b/src/lib/components/chat/Messages/ResponseMessage.svelte @@ -1227,7 +1227,7 @@ {/if} {#if !readOnly} - {#if !$temporaryChatEnabled && ($config?.features.enable_message_rating ?? true)} + {#if !$temporaryChatEnabled && ($config?.features.enable_message_rating ?? true) && ($user?.role === 'admin' || ($user?.permissions?.chat?.rate_response ?? true))} - - {/if} + /> - {#if siblings.length > 1} - - - + + + + {/if} + {/if} + + {#if $user?.role === 'admin' || ($user?.permissions?.chat?.delete_message ?? false)} + {#if siblings.length > 1} + + + + {/if} {/if} {#if isLastMessage} diff --git a/src/lib/components/chat/Messages/UserMessage.svelte b/src/lib/components/chat/Messages/UserMessage.svelte index 19a3d75416..489bef01eb 100644 --- a/src/lib/components/chat/Messages/UserMessage.svelte +++ b/src/lib/components/chat/Messages/UserMessage.svelte @@ -495,32 +495,34 @@ {/if} - {#if !readOnly && (!isFirstMessage || siblings.length > 1)} - - - + + + + + + {/if} {/if} {#if $settings?.chatBubble ?? true} From dced9e40942eaa4c3f5145b42c14d90c07860d0e Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 26 Aug 2025 15:06:50 +0400 Subject: [PATCH 26/74] refac --- src/lib/components/admin/Users/Groups/Permissions.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/components/admin/Users/Groups/Permissions.svelte b/src/lib/components/admin/Users/Groups/Permissions.svelte index 43cc7b0dba..6141260519 100644 --- a/src/lib/components/admin/Users/Groups/Permissions.svelte +++ b/src/lib/components/admin/Users/Groups/Permissions.svelte @@ -330,7 +330,7 @@
- {$i18n.t('Allow Response Regeneration')} + {$i18n.t('Allow Regenerate Response')}
@@ -338,7 +338,7 @@
- {$i18n.t('Allow Response Rating')} + {$i18n.t('Allow Rate Response')}
From 86a8eb1023827421b4d1a87a10994856412a8ad1 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 26 Aug 2025 16:05:02 +0400 Subject: [PATCH 27/74] refac/enh: pdf export --- src/lib/components/layout/Navbar/Menu.svelte | 97 ++++++++++------ .../components/layout/Sidebar/ChatMenu.svelte | 106 ++++++++++-------- 2 files changed, 122 insertions(+), 81 deletions(-) diff --git a/src/lib/components/layout/Navbar/Menu.svelte b/src/lib/components/layout/Navbar/Menu.svelte index d46dfd1172..376d65e11f 100644 --- a/src/lib/components/layout/Navbar/Menu.svelte +++ b/src/lib/components/layout/Navbar/Menu.svelte @@ -77,67 +77,92 @@ if (containerElement) { try { const isDarkMode = document.documentElement.classList.contains('dark'); - const virtualWidth = 800; // Fixed width in px - const pagePixelHeight = 1200; // Each slice height (adjust to avoid canvas bugs; generally 2–4k is safe) + const virtualWidth = 800; // px, fixed width for cloned element - // Clone & style once + // Clone and style const clonedElement = containerElement.cloneNode(true); clonedElement.classList.add('text-black'); clonedElement.classList.add('dark:text-white'); clonedElement.style.width = `${virtualWidth}px`; clonedElement.style.position = 'absolute'; - clonedElement.style.left = '-9999px'; // Offscreen + clonedElement.style.left = '-9999px'; clonedElement.style.height = 'auto'; document.body.appendChild(clonedElement); - // Get total height after attached to DOM - const totalHeight = clonedElement.scrollHeight; + // Wait for DOM update/layout + await new Promise((r) => setTimeout(r, 100)); + + // Render entire content once + const canvas = await html2canvas(clonedElement, { + backgroundColor: isDarkMode ? '#000' : '#fff', + useCORS: true, + scale: 2, // increase resolution + width: virtualWidth + }); + + document.body.removeChild(clonedElement); + + const pdf = new jsPDF('p', 'mm', 'a4'); + const pageWidthMM = 210; + const pageHeightMM = 297; + + // Convert page height in mm to px on canvas scale for cropping + // Get canvas DPI scale: + const pxPerMM = canvas.width / virtualWidth; // width in px / width in px? + // Since 1 page width is 210 mm, but canvas width is 800 px at scale 2 + // Assume 1 mm = px / (pageWidthMM scaled) + // Actually better: Calculate scale factor from px/mm: + // virtualWidth px corresponds directly to 210mm in PDF, so pxPerMM: + const pxPerPDFMM = canvas.width / pageWidthMM; // canvas px per PDF mm + + // Height in px for one page slice: + const pagePixelHeight = Math.floor(pxPerPDFMM * pageHeightMM); + let offsetY = 0; let page = 0; - // Prepare PDF - const pdf = new jsPDF('p', 'mm', 'a4'); - const imgWidth = 210; // A4 mm - const pageHeight = 297; // A4 mm + while (offsetY < canvas.height) { + // Height of slice + const sliceHeight = Math.min(pagePixelHeight, canvas.height - offsetY); - while (offsetY < totalHeight) { - // For each slice, adjust scrollTop to show desired part - clonedElement.scrollTop = offsetY; + // Create temp canvas for slice + const pageCanvas = document.createElement('canvas'); + pageCanvas.width = canvas.width; + pageCanvas.height = sliceHeight; - // Optionally: mask/hide overflowing content via CSS if needed - clonedElement.style.maxHeight = `${pagePixelHeight}px`; - // Only render the visible part - const canvas = await html2canvas(clonedElement, { - backgroundColor: isDarkMode ? '#000' : '#fff', - useCORS: true, - scale: 2, - width: virtualWidth, - height: Math.min(pagePixelHeight, totalHeight - offsetY), - // Optionally: y offset for correct region? - windowWidth: virtualWidth - //windowHeight: pagePixelHeight, - }); - const imgData = canvas.toDataURL('image/png'); - // Maintain aspect ratio - const imgHeight = (canvas.height * imgWidth) / canvas.width; - const position = 0; // Always first line, since we've clipped vertically + const ctx = pageCanvas.getContext('2d'); + + // Draw the slice of original canvas onto pageCanvas + ctx.drawImage( + canvas, + 0, + offsetY, + canvas.width, + sliceHeight, + 0, + 0, + canvas.width, + sliceHeight + ); + + const imgData = pageCanvas.toDataURL('image/jpeg', 0.8); + + // Calculate image height in PDF units keeping aspect ratio + const imgHeightMM = (sliceHeight * pageWidthMM) / canvas.width; if (page > 0) pdf.addPage(); - // Set page background for dark mode if (isDarkMode) { pdf.setFillColor(0, 0, 0); - pdf.rect(0, 0, imgWidth, pageHeight, 'F'); // black bg + pdf.rect(0, 0, pageWidthMM, pageHeightMM, 'F'); // black bg } - pdf.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight); + pdf.addImage(imgData, 'JPEG', 0, 0, pageWidthMM, imgHeightMM); - offsetY += pagePixelHeight; + offsetY += sliceHeight; page++; } - document.body.removeChild(clonedElement); - pdf.save(`chat-${chat.chat.title}.pdf`); } catch (error) { console.error('Error generating PDF', error); diff --git a/src/lib/components/layout/Sidebar/ChatMenu.svelte b/src/lib/components/layout/Sidebar/ChatMenu.svelte index cbb70f2796..c3ce61a815 100644 --- a/src/lib/components/layout/Sidebar/ChatMenu.svelte +++ b/src/lib/components/layout/Sidebar/ChatMenu.svelte @@ -90,67 +90,92 @@ if (containerElement) { try { const isDarkMode = document.documentElement.classList.contains('dark'); - const virtualWidth = 800; // Fixed width in px - const pagePixelHeight = 1200; // Each slice height (adjust to avoid canvas bugs; generally 2–4k is safe) + const virtualWidth = 800; // px, fixed width for cloned element - // Clone & style once + // Clone and style const clonedElement = containerElement.cloneNode(true); clonedElement.classList.add('text-black'); clonedElement.classList.add('dark:text-white'); clonedElement.style.width = `${virtualWidth}px`; clonedElement.style.position = 'absolute'; - clonedElement.style.left = '-9999px'; // Offscreen + clonedElement.style.left = '-9999px'; clonedElement.style.height = 'auto'; document.body.appendChild(clonedElement); - // Get total height after attached to DOM - const totalHeight = clonedElement.scrollHeight; + // Wait for DOM update/layout + await new Promise((r) => setTimeout(r, 100)); + + // Render entire content once + const canvas = await html2canvas(clonedElement, { + backgroundColor: isDarkMode ? '#000' : '#fff', + useCORS: true, + scale: 2, // increase resolution + width: virtualWidth + }); + + document.body.removeChild(clonedElement); + + const pdf = new jsPDF('p', 'mm', 'a4'); + const pageWidthMM = 210; + const pageHeightMM = 297; + + // Convert page height in mm to px on canvas scale for cropping + // Get canvas DPI scale: + const pxPerMM = canvas.width / virtualWidth; // width in px / width in px? + // Since 1 page width is 210 mm, but canvas width is 800 px at scale 2 + // Assume 1 mm = px / (pageWidthMM scaled) + // Actually better: Calculate scale factor from px/mm: + // virtualWidth px corresponds directly to 210mm in PDF, so pxPerMM: + const pxPerPDFMM = canvas.width / pageWidthMM; // canvas px per PDF mm + + // Height in px for one page slice: + const pagePixelHeight = Math.floor(pxPerPDFMM * pageHeightMM); + let offsetY = 0; let page = 0; - // Prepare PDF - const pdf = new jsPDF('p', 'mm', 'a4'); - const imgWidth = 210; // A4 mm - const pageHeight = 297; // A4 mm + while (offsetY < canvas.height) { + // Height of slice + const sliceHeight = Math.min(pagePixelHeight, canvas.height - offsetY); - while (offsetY < totalHeight) { - // For each slice, adjust scrollTop to show desired part - clonedElement.scrollTop = offsetY; + // Create temp canvas for slice + const pageCanvas = document.createElement('canvas'); + pageCanvas.width = canvas.width; + pageCanvas.height = sliceHeight; - // Optionally: mask/hide overflowing content via CSS if needed - clonedElement.style.maxHeight = `${pagePixelHeight}px`; - // Only render the visible part - const canvas = await html2canvas(clonedElement, { - backgroundColor: isDarkMode ? '#000' : '#fff', - useCORS: true, - scale: 2, - width: virtualWidth, - height: Math.min(pagePixelHeight, totalHeight - offsetY), - // Optionally: y offset for correct region? - windowWidth: virtualWidth - //windowHeight: pagePixelHeight, - }); - const imgData = canvas.toDataURL('image/png'); - // Maintain aspect ratio - const imgHeight = (canvas.height * imgWidth) / canvas.width; - const position = 0; // Always first line, since we've clipped vertically + const ctx = pageCanvas.getContext('2d'); + + // Draw the slice of original canvas onto pageCanvas + ctx.drawImage( + canvas, + 0, + offsetY, + canvas.width, + sliceHeight, + 0, + 0, + canvas.width, + sliceHeight + ); + + const imgData = pageCanvas.toDataURL('image/jpeg', 0.7); + + // Calculate image height in PDF units keeping aspect ratio + const imgHeightMM = (sliceHeight * pageWidthMM) / canvas.width; if (page > 0) pdf.addPage(); - // Set page background for dark mode if (isDarkMode) { pdf.setFillColor(0, 0, 0); - pdf.rect(0, 0, imgWidth, pageHeight, 'F'); // black bg + pdf.rect(0, 0, pageWidthMM, pageHeightMM, 'F'); // black bg } - pdf.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight); + pdf.addImage(imgData, 'JPEG', 0, 0, pageWidthMM, imgHeightMM); - offsetY += pagePixelHeight; + offsetY += sliceHeight; page++; } - document.body.removeChild(clonedElement); - pdf.save(`chat-${chat.chat.title}.pdf`); } catch (error) { console.error('Error generating PDF', error); @@ -360,15 +385,6 @@ >
{$i18n.t('Plain text (.txt)')}
- - { - downloadPdf(); - }} - > -
{$i18n.t('PDF document (.pdf)')}
-
Date: Tue, 26 Aug 2025 16:14:43 +0400 Subject: [PATCH 28/74] refac --- src/lib/components/layout/Navbar/Menu.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/layout/Navbar/Menu.svelte b/src/lib/components/layout/Navbar/Menu.svelte index 376d65e11f..21aee6a07b 100644 --- a/src/lib/components/layout/Navbar/Menu.svelte +++ b/src/lib/components/layout/Navbar/Menu.svelte @@ -145,7 +145,7 @@ sliceHeight ); - const imgData = pageCanvas.toDataURL('image/jpeg', 0.8); + const imgData = pageCanvas.toDataURL('image/jpeg', 0.7); // Calculate image height in PDF units keeping aspect ratio const imgHeightMM = (sliceHeight * pageWidthMM) / canvas.width; From 07357afcf6a9f06b56cdfc85eec8b8b1512c66d7 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 26 Aug 2025 16:54:36 +0400 Subject: [PATCH 29/74] refac Co-Authored-By: _00_ <131402327+rgaricano@users.noreply.github.com> --- backend/open_webui/routers/retrieval.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/backend/open_webui/routers/retrieval.py b/backend/open_webui/routers/retrieval.py index 738f2d05fc..fdb7786258 100644 --- a/backend/open_webui/routers/retrieval.py +++ b/backend/open_webui/routers/retrieval.py @@ -2075,7 +2075,9 @@ def query_doc_handler( user=Depends(get_verified_user), ): try: - if request.app.state.config.ENABLE_RAG_HYBRID_SEARCH: + if request.app.state.config.ENABLE_RAG_HYBRID_SEARCH and ( + form_data.hybrid is None or form_data.hybrid + ): collection_results = {} collection_results[form_data.collection_name] = VECTOR_DB_CLIENT.get( collection_name=form_data.collection_name @@ -2145,7 +2147,9 @@ def query_collection_handler( user=Depends(get_verified_user), ): try: - if request.app.state.config.ENABLE_RAG_HYBRID_SEARCH: + if request.app.state.config.ENABLE_RAG_HYBRID_SEARCH and ( + form_data.hybrid is None or form_data.hybrid + ): return query_collection_with_hybrid_search( collection_names=form_data.collection_names, queries=[form_data.query], From d3a952877a7d1346ea844cf62af38e19741953cc Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 26 Aug 2025 17:34:33 +0400 Subject: [PATCH 30/74] refac: pdf export --- src/lib/components/chat/Messages.svelte | 6 +- .../components/chat/Messages/CodeBlock.svelte | 39 +++-- .../chat/Messages/ContentRenderer.svelte | 3 + .../components/chat/Messages/Markdown.svelte | 3 + .../Messages/Markdown/MarkdownTokens.svelte | 3 + .../components/chat/Messages/Message.svelte | 4 + .../Messages/MultiResponseMessages.svelte | 2 + .../chat/Messages/ResponseMessage.svelte | 2 + .../chat/Messages/UserMessage.svelte | 8 +- src/lib/components/layout/Navbar/Menu.svelte | 32 +++- .../components/layout/Sidebar/ChatMenu.svelte | 149 ------------------ 11 files changed, 86 insertions(+), 165 deletions(-) diff --git a/src/lib/components/chat/Messages.svelte b/src/lib/components/chat/Messages.svelte index 8c6712ebf9..f7e7a8345d 100644 --- a/src/lib/components/chat/Messages.svelte +++ b/src/lib/components/chat/Messages.svelte @@ -49,6 +49,7 @@ export let addMessages: Function = () => {}; export let readOnly = false; + export let editCodeBlock = true; export let topPadding = false; export let bottomPadding = false; @@ -56,7 +57,7 @@ export let onSelect = (e) => {}; - let messagesCount = 20; + export let messagesCount: number | null = 20; let messagesLoading = false; const loadMoreMessages = async () => { @@ -76,7 +77,7 @@ let _messages = []; let message = history.messages[history.currentId]; - while (message && _messages.length <= messagesCount) { + while (message && (messagesCount !== null ? _messages.length <= messagesCount : true)) { _messages.unshift({ ...message }); message = message.parentId !== null ? history.messages[message.parentId] : null; } @@ -447,6 +448,7 @@ {addMessages} {triggerScroll} {readOnly} + {editCodeBlock} {topPadding} /> {/each} diff --git a/src/lib/components/chat/Messages/CodeBlock.svelte b/src/lib/components/chat/Messages/CodeBlock.svelte index 3b0dfc59a5..8c879bc75e 100644 --- a/src/lib/components/chat/Messages/CodeBlock.svelte +++ b/src/lib/components/chat/Messages/CodeBlock.svelte @@ -1,4 +1,6 @@ @@ -68,6 +69,7 @@ {editMessage} {deleteMessage} {readOnly} + {editCodeBlock} {topPadding} /> {:else if (history.messages[history.messages[messageId].parentId]?.models?.length ?? 1) === 1} @@ -93,6 +95,7 @@ {regenerateResponse} {addMessages} {readOnly} + {editCodeBlock} {topPadding} /> {:else} @@ -116,6 +119,7 @@ {triggerScroll} {addMessages} {readOnly} + {editCodeBlock} {topPadding} /> {/if} diff --git a/src/lib/components/chat/Messages/MultiResponseMessages.svelte b/src/lib/components/chat/Messages/MultiResponseMessages.svelte index 231fca66c0..0e7b108961 100644 --- a/src/lib/components/chat/Messages/MultiResponseMessages.svelte +++ b/src/lib/components/chat/Messages/MultiResponseMessages.svelte @@ -29,6 +29,7 @@ export let isLastMessage; export let readOnly = false; + export let editCodeBlock = true; export let setInputText: Function = () => {}; export let updateChat: Function; @@ -379,6 +380,7 @@ }} {addMessages} {readOnly} + {editCodeBlock} {topPadding} /> {/if} diff --git a/src/lib/components/chat/Messages/ResponseMessage.svelte b/src/lib/components/chat/Messages/ResponseMessage.svelte index 6010fa48d3..a8722912db 100644 --- a/src/lib/components/chat/Messages/ResponseMessage.svelte +++ b/src/lib/components/chat/Messages/ResponseMessage.svelte @@ -138,6 +138,7 @@ export let isLastMessage = true; export let readOnly = false; + export let editCodeBlock = true; export let topPadding = false; let citationsElement: HTMLDivElement; @@ -819,6 +820,7 @@ ($settings?.showFloatingActionButtons ?? true)} save={!readOnly} preview={!readOnly} + {editCodeBlock} {topPadding} done={($settings?.chatFadeStreamingText ?? true) ? (message?.done ?? false) diff --git a/src/lib/components/chat/Messages/UserMessage.svelte b/src/lib/components/chat/Messages/UserMessage.svelte index 489bef01eb..ae99fafefc 100644 --- a/src/lib/components/chat/Messages/UserMessage.svelte +++ b/src/lib/components/chat/Messages/UserMessage.svelte @@ -38,6 +38,7 @@ export let isFirstMessage: boolean; export let readOnly: boolean; + export let editCodeBlock = true; export let topPadding = false; let showDeleteConfirm = false; @@ -332,7 +333,12 @@ : ' w-full'} {$settings.chatDirection === 'RTL' ? 'text-right' : ''}" > {#if message.content} - + {/if}
diff --git a/src/lib/components/layout/Navbar/Menu.svelte b/src/lib/components/layout/Navbar/Menu.svelte index 21aee6a07b..a174fe3bbd 100644 --- a/src/lib/components/layout/Navbar/Menu.svelte +++ b/src/lib/components/layout/Navbar/Menu.svelte @@ -1,7 +1,7 @@ +{#if showFullMessages} + +{/if} + { if (e.detail === false) { diff --git a/src/lib/components/layout/Sidebar/ChatMenu.svelte b/src/lib/components/layout/Sidebar/ChatMenu.svelte index c3ce61a815..3342a73cab 100644 --- a/src/lib/components/layout/Sidebar/ChatMenu.svelte +++ b/src/lib/components/layout/Sidebar/ChatMenu.svelte @@ -81,155 +81,6 @@ saveAs(blob, `chat-${chat.chat.title}.txt`); }; - const downloadPdf = async () => { - const chat = await getChatById(localStorage.token, chatId); - - if ($settings?.stylizedPdfExport ?? true) { - const containerElement = document.getElementById('messages-container'); - - if (containerElement) { - try { - const isDarkMode = document.documentElement.classList.contains('dark'); - const virtualWidth = 800; // px, fixed width for cloned element - - // Clone and style - const clonedElement = containerElement.cloneNode(true); - clonedElement.classList.add('text-black'); - clonedElement.classList.add('dark:text-white'); - clonedElement.style.width = `${virtualWidth}px`; - clonedElement.style.position = 'absolute'; - clonedElement.style.left = '-9999px'; - clonedElement.style.height = 'auto'; - document.body.appendChild(clonedElement); - - // Wait for DOM update/layout - await new Promise((r) => setTimeout(r, 100)); - - // Render entire content once - const canvas = await html2canvas(clonedElement, { - backgroundColor: isDarkMode ? '#000' : '#fff', - useCORS: true, - scale: 2, // increase resolution - width: virtualWidth - }); - - document.body.removeChild(clonedElement); - - const pdf = new jsPDF('p', 'mm', 'a4'); - const pageWidthMM = 210; - const pageHeightMM = 297; - - // Convert page height in mm to px on canvas scale for cropping - // Get canvas DPI scale: - const pxPerMM = canvas.width / virtualWidth; // width in px / width in px? - // Since 1 page width is 210 mm, but canvas width is 800 px at scale 2 - // Assume 1 mm = px / (pageWidthMM scaled) - // Actually better: Calculate scale factor from px/mm: - // virtualWidth px corresponds directly to 210mm in PDF, so pxPerMM: - const pxPerPDFMM = canvas.width / pageWidthMM; // canvas px per PDF mm - - // Height in px for one page slice: - const pagePixelHeight = Math.floor(pxPerPDFMM * pageHeightMM); - - let offsetY = 0; - let page = 0; - - while (offsetY < canvas.height) { - // Height of slice - const sliceHeight = Math.min(pagePixelHeight, canvas.height - offsetY); - - // Create temp canvas for slice - const pageCanvas = document.createElement('canvas'); - pageCanvas.width = canvas.width; - pageCanvas.height = sliceHeight; - - const ctx = pageCanvas.getContext('2d'); - - // Draw the slice of original canvas onto pageCanvas - ctx.drawImage( - canvas, - 0, - offsetY, - canvas.width, - sliceHeight, - 0, - 0, - canvas.width, - sliceHeight - ); - - const imgData = pageCanvas.toDataURL('image/jpeg', 0.7); - - // Calculate image height in PDF units keeping aspect ratio - const imgHeightMM = (sliceHeight * pageWidthMM) / canvas.width; - - if (page > 0) pdf.addPage(); - - if (isDarkMode) { - pdf.setFillColor(0, 0, 0); - pdf.rect(0, 0, pageWidthMM, pageHeightMM, 'F'); // black bg - } - - pdf.addImage(imgData, 'JPEG', 0, 0, pageWidthMM, imgHeightMM); - - offsetY += sliceHeight; - page++; - } - - pdf.save(`chat-${chat.chat.title}.pdf`); - } catch (error) { - console.error('Error generating PDF', error); - } - } - } else { - console.log('Downloading PDF'); - - const chatText = await getChatAsText(chat); - - const doc = new jsPDF(); - - // Margins - const left = 15; - const top = 20; - const right = 15; - const bottom = 20; - - const pageWidth = doc.internal.pageSize.getWidth(); - const pageHeight = doc.internal.pageSize.getHeight(); - const usableWidth = pageWidth - left - right; - const usableHeight = pageHeight - top - bottom; - - // Font size and line height - const fontSize = 8; - doc.setFontSize(fontSize); - const lineHeight = fontSize * 1; // adjust if needed - - // Split the markdown into lines (handles \n) - const paragraphs = chatText.split('\n'); - - let y = top; - - for (let paragraph of paragraphs) { - // Wrap each paragraph to fit the width - const lines = doc.splitTextToSize(paragraph, usableWidth); - - for (let line of lines) { - // If the line would overflow the bottom, add a new page - if (y + lineHeight > pageHeight - bottom) { - doc.addPage(); - y = top; - } - doc.text(line, left, y); - y += lineHeight; - } - // Add empty line at paragraph breaks - y += lineHeight * 0.5; - } - - doc.save(`chat-${chat.chat.title}.pdf`); - } - }; - const downloadJSONExport = async () => { const chat = await getChatById(localStorage.token, chatId); From 58cc57e8a455f2c7c20a2ef89820af5c5a4419eb Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Tue, 26 Aug 2025 17:39:52 +0400 Subject: [PATCH 31/74] refac --- src/lib/components/chat/Messages/Citations.svelte | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/lib/components/chat/Messages/Citations.svelte b/src/lib/components/chat/Messages/Citations.svelte index 99cfaf5240..ec093f8365 100644 --- a/src/lib/components/chat/Messages/Citations.svelte +++ b/src/lib/components/chat/Messages/Citations.svelte @@ -4,6 +4,7 @@ import Collapsible from '$lib/components/common/Collapsible.svelte'; import ChevronDown from '$lib/components/icons/ChevronDown.svelte'; import ChevronUp from '$lib/components/icons/ChevronUp.svelte'; + import { mobile } from '$lib/stores'; const i18n = getContext('i18n'); @@ -155,7 +156,7 @@ >
- {#each citations.slice(0, 2) as citation, idx} + {#each citations.slice(0, $mobile ? 1 : 2) as citation, idx}
- {citations.length - 2} + {citations.length - ($mobile ? 1 : 2)} {$i18n.t('more')}
@@ -194,7 +195,7 @@
- {#each citations.slice(2) as citation, idx} + {#each citations.slice($mobile ? 1 : 2) as citation, idx} +
+ + + {#if ![true, false, null].includes(params?.reasoning_tags ?? null) && (params?.reasoning_tags ?? []).length === 2} +
+
+ +
+ +
+ +
+
+ {/if} +
+
Date: Thu, 28 Aug 2025 01:42:45 +0400 Subject: [PATCH 52/74] chore: format --- .../components/chat/Settings/Advanced/AdvancedParams.svelte | 4 +++- src/lib/i18n/locales/ar-BH/translation.json | 4 ++++ src/lib/i18n/locales/ar/translation.json | 4 ++++ src/lib/i18n/locales/bg-BG/translation.json | 4 ++++ src/lib/i18n/locales/bn-BD/translation.json | 4 ++++ src/lib/i18n/locales/bo-TB/translation.json | 4 ++++ src/lib/i18n/locales/ca-ES/translation.json | 4 ++++ src/lib/i18n/locales/ceb-PH/translation.json | 4 ++++ src/lib/i18n/locales/cs-CZ/translation.json | 4 ++++ src/lib/i18n/locales/da-DK/translation.json | 4 ++++ src/lib/i18n/locales/de-DE/translation.json | 4 ++++ src/lib/i18n/locales/dg-DG/translation.json | 4 ++++ src/lib/i18n/locales/el-GR/translation.json | 4 ++++ src/lib/i18n/locales/en-GB/translation.json | 4 ++++ src/lib/i18n/locales/en-US/translation.json | 4 ++++ src/lib/i18n/locales/es-ES/translation.json | 4 ++++ src/lib/i18n/locales/et-EE/translation.json | 4 ++++ src/lib/i18n/locales/eu-ES/translation.json | 4 ++++ src/lib/i18n/locales/fa-IR/translation.json | 4 ++++ src/lib/i18n/locales/fi-FI/translation.json | 4 ++++ src/lib/i18n/locales/fr-CA/translation.json | 4 ++++ src/lib/i18n/locales/fr-FR/translation.json | 4 ++++ src/lib/i18n/locales/gl-ES/translation.json | 4 ++++ src/lib/i18n/locales/he-IL/translation.json | 4 ++++ src/lib/i18n/locales/hi-IN/translation.json | 4 ++++ src/lib/i18n/locales/hr-HR/translation.json | 4 ++++ src/lib/i18n/locales/hu-HU/translation.json | 4 ++++ src/lib/i18n/locales/id-ID/translation.json | 4 ++++ src/lib/i18n/locales/ie-GA/translation.json | 4 ++++ src/lib/i18n/locales/it-IT/translation.json | 4 ++++ src/lib/i18n/locales/ja-JP/translation.json | 4 ++++ src/lib/i18n/locales/ka-GE/translation.json | 4 ++++ src/lib/i18n/locales/kab-DZ/translation.json | 4 ++++ src/lib/i18n/locales/ko-KR/translation.json | 4 ++++ src/lib/i18n/locales/lt-LT/translation.json | 4 ++++ src/lib/i18n/locales/ms-MY/translation.json | 4 ++++ src/lib/i18n/locales/nb-NO/translation.json | 4 ++++ src/lib/i18n/locales/nl-NL/translation.json | 4 ++++ src/lib/i18n/locales/pa-IN/translation.json | 4 ++++ src/lib/i18n/locales/pl-PL/translation.json | 4 ++++ src/lib/i18n/locales/pt-BR/translation.json | 4 ++++ src/lib/i18n/locales/pt-PT/translation.json | 4 ++++ src/lib/i18n/locales/ro-RO/translation.json | 4 ++++ src/lib/i18n/locales/ru-RU/translation.json | 4 ++++ src/lib/i18n/locales/sk-SK/translation.json | 4 ++++ src/lib/i18n/locales/sr-RS/translation.json | 4 ++++ src/lib/i18n/locales/sv-SE/translation.json | 4 ++++ src/lib/i18n/locales/th-TH/translation.json | 4 ++++ src/lib/i18n/locales/tk-TM/translation.json | 4 ++++ src/lib/i18n/locales/tr-TR/translation.json | 4 ++++ src/lib/i18n/locales/ug-CN/translation.json | 4 ++++ src/lib/i18n/locales/uk-UA/translation.json | 4 ++++ src/lib/i18n/locales/ur-PK/translation.json | 4 ++++ src/lib/i18n/locales/uz-Cyrl-UZ/translation.json | 4 ++++ src/lib/i18n/locales/uz-Latn-Uz/translation.json | 4 ++++ src/lib/i18n/locales/vi-VN/translation.json | 4 ++++ src/lib/i18n/locales/zh-CN/translation.json | 4 ++++ src/lib/i18n/locales/zh-TW/translation.json | 4 ++++ 58 files changed, 231 insertions(+), 1 deletion(-) diff --git a/src/lib/components/chat/Settings/Advanced/AdvancedParams.svelte b/src/lib/components/chat/Settings/Advanced/AdvancedParams.svelte index 4bc0647a76..046dc6b042 100644 --- a/src/lib/components/chat/Settings/Advanced/AdvancedParams.svelte +++ b/src/lib/components/chat/Settings/Advanced/AdvancedParams.svelte @@ -178,7 +178,9 @@
diff --git a/src/lib/i18n/locales/ar-BH/translation.json b/src/lib/i18n/locales/ar-BH/translation.json index 219f43f9c7..d92596aae0 100644 --- a/src/lib/i18n/locales/ar-BH/translation.json +++ b/src/lib/i18n/locales/ar-BH/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "تفعيل عمليات التسجيل الجديدة", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "ممكّن", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "أقراء لي", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "سجل صوت", "Redirecting you to Open WebUI Community": "OpenWebUI إعادة توجيهك إلى مجتمع ", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "محرك تحويل الكلام إلى نص", "Start of the channel": "بداية القناة", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "", "Stop Generating": "", diff --git a/src/lib/i18n/locales/ar/translation.json b/src/lib/i18n/locales/ar/translation.json index c202e55e7e..d4a3802ead 100644 --- a/src/lib/i18n/locales/ar/translation.json +++ b/src/lib/i18n/locales/ar/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "تفعيل تقييم الرسائل", "Enable Mirostat sampling for controlling perplexity.": "تفعيل أخذ عينات Mirostat للتحكم في درجة التعقيد.", "Enable New Sign Ups": "تفعيل عمليات التسجيل الجديدة", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "مفعل", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "أقراء لي", "Reason": "", "Reasoning Effort": "جهد الاستدلال", + "Reasoning Tags": "", "Record": "", "Record voice": "سجل صوت", "Redirecting you to Open WebUI Community": "OpenWebUI إعادة توجيهك إلى مجتمع ", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "محرك تحويل الكلام إلى نص", "Start of the channel": "بداية القناة", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "إيقاف", "Stop Generating": "", diff --git a/src/lib/i18n/locales/bg-BG/translation.json b/src/lib/i18n/locales/bg-BG/translation.json index 1c6d45488d..c67d6fe38e 100644 --- a/src/lib/i18n/locales/bg-BG/translation.json +++ b/src/lib/i18n/locales/bg-BG/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Активиране на оценяване на съобщения", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Включване на нови регистрации", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Активирано", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "Прочети на глас", "Reason": "", "Reasoning Effort": "Усилие за разсъждение", + "Reasoning Tags": "", "Record": "Запиши", "Record voice": "Записване на глас", "Redirecting you to Open WebUI Community": "Пренасочване към OpenWebUI общността", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Двигател за преобразуване на реч в текста", "Start of the channel": "Начало на канала", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Спри", "Stop Generating": "", diff --git a/src/lib/i18n/locales/bn-BD/translation.json b/src/lib/i18n/locales/bn-BD/translation.json index 024aa38462..297397e24f 100644 --- a/src/lib/i18n/locales/bn-BD/translation.json +++ b/src/lib/i18n/locales/bn-BD/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "নতুন সাইনআপ চালু করুন", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "সক্রিয়", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "পড়াশোনা করুন", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "ভয়েস রেকর্ড করুন", "Redirecting you to Open WebUI Community": "আপনাকে OpenWebUI কমিউনিটিতে পাঠানো হচ্ছে", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "স্পিচ-টু-টেক্সট ইঞ্জিন", "Start of the channel": "চ্যানেলের শুরু", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "", "Stop Generating": "", diff --git a/src/lib/i18n/locales/bo-TB/translation.json b/src/lib/i18n/locales/bo-TB/translation.json index 1f996a7933..739abf81b3 100644 --- a/src/lib/i18n/locales/bo-TB/translation.json +++ b/src/lib/i18n/locales/bo-TB/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "འཕྲིན་ལ་སྐར་མ་སྤྲོད་པ་སྒུལ་བསྐྱོད་བྱེད་པ།", "Enable Mirostat sampling for controlling perplexity.": "རྙོག་འཛིང་ཚད་ཚོད་འཛིན་གྱི་ཆེད་དུ་ Mirostat མ་དཔེ་འདེམས་པ་སྒུལ་བསྐྱོད་བྱེད་པ།", "Enable New Sign Ups": "ཐོ་འགོད་གསར་པ་སྒུལ་བསྐྱོད་བྱེད་པ།", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "སྒུལ་བསྐྱོད་བྱས་ཡོད།", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "གནས་སྐབས་ཁ་བརྡ་བཙན་བཀོལ་བྱེད་པ།", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "སྐད་གསལ་པོས་ཀློག་པ།", "Reason": "", "Reasoning Effort": "རྒྱུ་མཚན་འདྲེན་པའི་འབད་བརྩོན།", + "Reasoning Tags": "", "Record": "", "Record voice": "སྐད་སྒྲ་ཕབ་པ།", "Redirecting you to Open WebUI Community": "ཁྱེད་ Open WebUI སྤྱི་ཚོགས་ལ་ཁ་ཕྱོགས་སྒྱུར་བཞིན་པ།", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "གཏམ་བཤད་ནས་ཡིག་རྐྱང་གི་འཕྲུལ་འཁོར།", "Start of the channel": "རྒྱས་ལམ་འགོ་རིམ་", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "མཚམས་འཇོག", "Stop Generating": "", diff --git a/src/lib/i18n/locales/ca-ES/translation.json b/src/lib/i18n/locales/ca-ES/translation.json index 4153318a64..c489e131b6 100644 --- a/src/lib/i18n/locales/ca-ES/translation.json +++ b/src/lib/i18n/locales/ca-ES/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Permetre la qualificació de missatges", "Enable Mirostat sampling for controlling perplexity.": "Permetre el mostreig de Mirostat per controlar la perplexitat", "Enable New Sign Ups": "Permetre nous registres", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Habilitat", + "End Tag": "", "Endpoint URL": "URL de connexió", "Enforce Temporary Chat": "Forçar els xats temporals", "Enhance": "Millorar", @@ -1171,6 +1173,7 @@ "Read Aloud": "Llegir en veu alta", "Reason": "Raó", "Reasoning Effort": "Esforç de raonament", + "Reasoning Tags": "", "Record": "Enregistrar", "Record voice": "Enregistrar la veu", "Redirecting you to Open WebUI Community": "Redirigint-te a la comunitat OpenWebUI", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "Àudio-a-Text", "Speech-to-Text Engine": "Motor de veu a text", "Start of the channel": "Inici del canal", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Atura", "Stop Generating": "Atura la generació", diff --git a/src/lib/i18n/locales/ceb-PH/translation.json b/src/lib/i18n/locales/ceb-PH/translation.json index 321b73c0fd..34245602ae 100644 --- a/src/lib/i18n/locales/ceb-PH/translation.json +++ b/src/lib/i18n/locales/ceb-PH/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "I-enable ang bag-ong mga rehistro", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Gipaandar", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "Irekord ang tingog", "Redirecting you to Open WebUI Community": "Gi-redirect ka sa komunidad sa OpenWebUI", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Engine sa pag-ila sa tingog", "Start of the channel": "Sinugdan sa channel", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "", "Stop Generating": "", diff --git a/src/lib/i18n/locales/cs-CZ/translation.json b/src/lib/i18n/locales/cs-CZ/translation.json index 19379318f7..a113ae7668 100644 --- a/src/lib/i18n/locales/cs-CZ/translation.json +++ b/src/lib/i18n/locales/cs-CZ/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Povolit hodnocení zpráv", "Enable Mirostat sampling for controlling perplexity.": "Povolit vzorkování Mirostat pro řízení perplexity.", "Enable New Sign Ups": "Povolit nové registrace", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Povoleno", + "End Tag": "", "Endpoint URL": "URL koncového bodu", "Enforce Temporary Chat": "Vynutit dočasnou konverzaci", "Enhance": "Vylepšit", @@ -1171,6 +1173,7 @@ "Read Aloud": "Číst nahlas", "Reason": "Důvod", "Reasoning Effort": "Úsilí pro uvažování", + "Reasoning Tags": "", "Record": "Nahrát", "Record voice": "Nahrát hlas", "Redirecting you to Open WebUI Community": "Přesměrovávám vás do komunity Open WebUI", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "Převod řeči na text", "Speech-to-Text Engine": "Jádro pro převod řeči na text", "Start of the channel": "Začátek kanálu", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Zastavit", "Stop Generating": "Zastavit generování", diff --git a/src/lib/i18n/locales/da-DK/translation.json b/src/lib/i18n/locales/da-DK/translation.json index 6225c55407..0efca875fd 100644 --- a/src/lib/i18n/locales/da-DK/translation.json +++ b/src/lib/i18n/locales/da-DK/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Aktiver rating af besked", "Enable Mirostat sampling for controlling perplexity.": "Aktiver Mirostat sampling for at kontrollere perplexity.", "Enable New Sign Ups": "Aktiver nye signups", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Aktiveret", + "End Tag": "", "Endpoint URL": "Endpoint URL", "Enforce Temporary Chat": "Gennemtving midlertidig chat", "Enhance": "Forbedre", @@ -1171,6 +1173,7 @@ "Read Aloud": "Læs højt", "Reason": "Årsag", "Reasoning Effort": "Ræsonnements indsats", + "Reasoning Tags": "", "Record": "Optag", "Record voice": "Optag stemme", "Redirecting you to Open WebUI Community": "Omdirigerer dig til OpenWebUI Community", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "Tale-til-tekst", "Speech-to-Text Engine": "Tale-til-tekst-engine", "Start of the channel": "Kanalens start", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Stop", "Stop Generating": "Stop generering", diff --git a/src/lib/i18n/locales/de-DE/translation.json b/src/lib/i18n/locales/de-DE/translation.json index 6bd582be1f..5a87de95a1 100644 --- a/src/lib/i18n/locales/de-DE/translation.json +++ b/src/lib/i18n/locales/de-DE/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Nachrichtenbewertung aktivieren", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Registrierung erlauben", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Aktiviert", + "End Tag": "", "Endpoint URL": "Endpunkt-URL", "Enforce Temporary Chat": "Temporären Chat erzwingen", "Enhance": "Verbessern", @@ -1171,6 +1173,7 @@ "Read Aloud": "Vorlesen", "Reason": "Nachdenken", "Reasoning Effort": "Nachdenk-Aufwand", + "Reasoning Tags": "", "Record": "Aufzeichnen", "Record voice": "Stimme aufnehmen", "Redirecting you to Open WebUI Community": "Sie werden zur OpenWebUI-Community weitergeleitet", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "Sprache-zu-Text", "Speech-to-Text Engine": "Sprache-zu-Text-Engine", "Start of the channel": "Beginn des Kanals", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Stop", "Stop Generating": "Generierung stoppen", diff --git a/src/lib/i18n/locales/dg-DG/translation.json b/src/lib/i18n/locales/dg-DG/translation.json index 05f9840f14..c0e0dfc494 100644 --- a/src/lib/i18n/locales/dg-DG/translation.json +++ b/src/lib/i18n/locales/dg-DG/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Enable New Bark Ups", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Enabled wow", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "Record Bark", "Redirecting you to Open WebUI Community": "Redirecting you to Open WebUI Community", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Speech-to-Text Engine much speak", "Start of the channel": "Start of channel", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "", "Stop Generating": "", diff --git a/src/lib/i18n/locales/el-GR/translation.json b/src/lib/i18n/locales/el-GR/translation.json index 5bc5f9fea8..8f6f7037ad 100644 --- a/src/lib/i18n/locales/el-GR/translation.json +++ b/src/lib/i18n/locales/el-GR/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Ενεργοποίηση Αξιολόγησης Μηνυμάτων", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Ενεργοποίηση Νέων Εγγραφών", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Ενεργοποιημένο", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "Ανάγνωση Φωναχτά", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "Εγγραφή φωνής", "Redirecting you to Open WebUI Community": "Μετακατεύθυνση στην Κοινότητα OpenWebUI", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Μηχανή Speech-to-Text", "Start of the channel": "Αρχή του καναλιού", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Σταμάτημα", "Stop Generating": "", diff --git a/src/lib/i18n/locales/en-GB/translation.json b/src/lib/i18n/locales/en-GB/translation.json index 83bca3e54d..6f8ebde6cc 100644 --- a/src/lib/i18n/locales/en-GB/translation.json +++ b/src/lib/i18n/locales/en-GB/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "", "Redirecting you to Open WebUI Community": "", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "", "Start of the channel": "", + "Start Tag": "", "STDOUT/STDERR": "", "Stop": "", "Stop Generating": "", diff --git a/src/lib/i18n/locales/en-US/translation.json b/src/lib/i18n/locales/en-US/translation.json index 29980c38a1..53f068877f 100644 --- a/src/lib/i18n/locales/en-US/translation.json +++ b/src/lib/i18n/locales/en-US/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "", "Redirecting you to Open WebUI Community": "", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "", "Start of the channel": "", + "Start Tag": "", "STDOUT/STDERR": "", "Stop": "", "Stop Generating": "", diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index 27c1981fdf..5c00a40090 100644 --- a/src/lib/i18n/locales/es-ES/translation.json +++ b/src/lib/i18n/locales/es-ES/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Habilitar Calificación de los Mensajes", "Enable Mirostat sampling for controlling perplexity.": "Algoritmo de decodificación de texto neuronal que controla activamente el proceso generativo para mantener la perplejidad del texto generado en un valor deseado. Previene las trampas de aburrimiento (por excesivas repeticiones) y de incoherencia (por generación de excesivo texto).", "Enable New Sign Ups": "Habilitar Registros de Nuevos Usuarios", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Habilitado", + "End Tag": "", "Endpoint URL": "Endpoint URL", "Enforce Temporary Chat": "Forzar el uso de Chat Temporal", "Enhance": "Mejorar", @@ -1171,6 +1173,7 @@ "Read Aloud": "Leer en voz alta", "Reason": "Razonamiento", "Reasoning Effort": "Esfuerzo del Razonamiento", + "Reasoning Tags": "", "Record": "Grabar", "Record voice": "Grabar voz", "Redirecting you to Open WebUI Community": "Redireccionando a la Comunidad Open-WebUI", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "Voz a Texto", "Speech-to-Text Engine": "Motor Voz a Texto(STT)", "Start of the channel": "Inicio del canal", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Detener", "Stop Generating": "Detener la Generación", diff --git a/src/lib/i18n/locales/et-EE/translation.json b/src/lib/i18n/locales/et-EE/translation.json index 3ceb38e001..59fed5a54f 100644 --- a/src/lib/i18n/locales/et-EE/translation.json +++ b/src/lib/i18n/locales/et-EE/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Luba sõnumite hindamine", "Enable Mirostat sampling for controlling perplexity.": "Luba Mirostat'i valim perplekssuse juhtimiseks.", "Enable New Sign Ups": "Luba uued registreerimised", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Lubatud", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "Loe valjult", "Reason": "", "Reasoning Effort": "Arutluspingutus", + "Reasoning Tags": "", "Record": "", "Record voice": "Salvesta hääl", "Redirecting you to Open WebUI Community": "Suunamine Open WebUI kogukonda", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Kõne-tekstiks mootor", "Start of the channel": "Kanali algus", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Peata", "Stop Generating": "", diff --git a/src/lib/i18n/locales/eu-ES/translation.json b/src/lib/i18n/locales/eu-ES/translation.json index d66843bc00..716e875aef 100644 --- a/src/lib/i18n/locales/eu-ES/translation.json +++ b/src/lib/i18n/locales/eu-ES/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Gaitu Mezuen Balorazioa", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Gaitu Izena Emate Berriak", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Gaituta", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "Irakurri ozen", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "Grabatu ahotsa", "Redirecting you to Open WebUI Community": "OpenWebUI Komunitatera berbideratzen", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Ahotsetik-testura motorra", "Start of the channel": "Kanalaren hasiera", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Gelditu", "Stop Generating": "", diff --git a/src/lib/i18n/locales/fa-IR/translation.json b/src/lib/i18n/locales/fa-IR/translation.json index 2089fc4cb2..bfba7fb5b2 100644 --- a/src/lib/i18n/locales/fa-IR/translation.json +++ b/src/lib/i18n/locales/fa-IR/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "فعال\u200cسازی امتیازدهی پیام", "Enable Mirostat sampling for controlling perplexity.": "فعال\u200cسازی نمونه\u200cبرداری میروستات برای کنترل سردرگمی", "Enable New Sign Ups": "فعال کردن ثبت نام\u200cهای جدید", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "فعال شده", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "اجبار چت موقت", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "خواندن به صورت صوتی", "Reason": "", "Reasoning Effort": "تلاش استدلال", + "Reasoning Tags": "", "Record": "", "Record voice": "ضبط صدا", "Redirecting you to Open WebUI Community": "در حال هدایت به OpenWebUI Community", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "موتور گفتار به متن", "Start of the channel": "آغاز کانال", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "توقف", "Stop Generating": "", diff --git a/src/lib/i18n/locales/fi-FI/translation.json b/src/lib/i18n/locales/fi-FI/translation.json index 4c2772d830..f9869df1cf 100644 --- a/src/lib/i18n/locales/fi-FI/translation.json +++ b/src/lib/i18n/locales/fi-FI/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Ota viestiarviointi käyttöön", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Salli uudet rekisteröitymiset", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Käytössä", + "End Tag": "", "Endpoint URL": "Päätepiste verkko-osoite", "Enforce Temporary Chat": "Pakota väliaikaiset keskustelut", "Enhance": "Paranna", @@ -1171,6 +1173,7 @@ "Read Aloud": "Lue ääneen", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "Nauhoita", "Record voice": "Nauhoita ääntä", "Redirecting you to Open WebUI Community": "Ohjataan sinut OpenWebUI-yhteisöön", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "Puheentunnistus", "Speech-to-Text Engine": "Puheentunnistusmoottori", "Start of the channel": "Kanavan alku", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Pysäytä", "Stop Generating": "Lopeta generointi", diff --git a/src/lib/i18n/locales/fr-CA/translation.json b/src/lib/i18n/locales/fr-CA/translation.json index d67a8d99c7..d164cd0a84 100644 --- a/src/lib/i18n/locales/fr-CA/translation.json +++ b/src/lib/i18n/locales/fr-CA/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Activer l'évaluation des messages", "Enable Mirostat sampling for controlling perplexity.": "Activer l'échantillonnage Mirostat pour contrôler Perplexité.", "Enable New Sign Ups": "Activer les nouvelles inscriptions", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Activé", + "End Tag": "", "Endpoint URL": "URL du point de terminaison", "Enforce Temporary Chat": "Imposer les discussions temporaires", "Enhance": "Améliore", @@ -1171,6 +1173,7 @@ "Read Aloud": "Lire à haute voix", "Reason": "Raisonne", "Reasoning Effort": "Effort de raisonnement", + "Reasoning Tags": "", "Record": "Enregistrement", "Record voice": "Enregistrer la voix", "Redirecting you to Open WebUI Community": "Redirection vers la communauté OpenWebUI", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "Reconnaissance vocale", "Speech-to-Text Engine": "Moteur de reconnaissance vocale", "Start of the channel": "Début du canal", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Stop", "Stop Generating": "Arrêter la génération", diff --git a/src/lib/i18n/locales/fr-FR/translation.json b/src/lib/i18n/locales/fr-FR/translation.json index 21e94633f9..7994b90d3a 100644 --- a/src/lib/i18n/locales/fr-FR/translation.json +++ b/src/lib/i18n/locales/fr-FR/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Activer l'évaluation des messages", "Enable Mirostat sampling for controlling perplexity.": "Activer l'échantillonnage Mirostat pour contrôler Perplexité.", "Enable New Sign Ups": "Activer les nouvelles inscriptions", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Activé", + "End Tag": "", "Endpoint URL": "URL du point de terminaison", "Enforce Temporary Chat": "Imposer les discussions temporaires", "Enhance": "Améliore", @@ -1171,6 +1173,7 @@ "Read Aloud": "Lire à haute voix", "Reason": "Raisonne", "Reasoning Effort": "Effort de raisonnement", + "Reasoning Tags": "", "Record": "Enregistrement", "Record voice": "Enregistrer la voix", "Redirecting you to Open WebUI Community": "Redirection vers la communauté OpenWebUI", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "Reconnaissance vocale", "Speech-to-Text Engine": "Moteur de reconnaissance vocale", "Start of the channel": "Début du canal", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Stop", "Stop Generating": "Arrêter la génération", diff --git a/src/lib/i18n/locales/gl-ES/translation.json b/src/lib/i18n/locales/gl-ES/translation.json index 2dec7e738e..18b87821b9 100644 --- a/src/lib/i18n/locales/gl-ES/translation.json +++ b/src/lib/i18n/locales/gl-ES/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Habilitar a calificación de os mensaxes", "Enable Mirostat sampling for controlling perplexity.": "Habilitar o muestreo de Mirostat para controlar Perplexity.", "Enable New Sign Ups": "Habilitar novos Registros", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Activado", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "Ler en voz alta", "Reason": "", "Reasoning Effort": "Esfuerzo de razonamiento", + "Reasoning Tags": "", "Record": "", "Record voice": "Grabar voz", "Redirecting you to Open WebUI Community": "Redireccionándote a a comunidad OpenWebUI", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Motor de voz a texto", "Start of the channel": "Inicio da canle", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Detener", "Stop Generating": "", diff --git a/src/lib/i18n/locales/he-IL/translation.json b/src/lib/i18n/locales/he-IL/translation.json index bd3c352ec0..96ede39ea8 100644 --- a/src/lib/i18n/locales/he-IL/translation.json +++ b/src/lib/i18n/locales/he-IL/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "אפשר הרשמות חדשות", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "מופעל", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "קרא בקול", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "הקלט קול", "Redirecting you to Open WebUI Community": "מפנה אותך לקהילת OpenWebUI", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "מנוע תחקור שמע", "Start of the channel": "תחילת הערוץ", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "", "Stop Generating": "", diff --git a/src/lib/i18n/locales/hi-IN/translation.json b/src/lib/i18n/locales/hi-IN/translation.json index 8cd82190ec..27a0470257 100644 --- a/src/lib/i18n/locales/hi-IN/translation.json +++ b/src/lib/i18n/locales/hi-IN/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "नए साइन अप सक्रिय करें", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "सक्षम", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "जोर से पढ़ें", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "आवाज रिकॉर्ड करना", "Redirecting you to Open WebUI Community": "आपको OpenWebUI समुदाय पर पुनर्निर्देशित किया जा रहा है", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "वाक्-से-पाठ इंजन", "Start of the channel": "चैनल की शुरुआत", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "", "Stop Generating": "", diff --git a/src/lib/i18n/locales/hr-HR/translation.json b/src/lib/i18n/locales/hr-HR/translation.json index e6fdd5b2e8..d7c019d746 100644 --- a/src/lib/i18n/locales/hr-HR/translation.json +++ b/src/lib/i18n/locales/hr-HR/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Omogući nove prijave", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Omogućeno", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "Čitaj naglas", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "Snimanje glasa", "Redirecting you to Open WebUI Community": "Preusmjeravanje na OpenWebUI zajednicu", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Stroj za prepoznavanje govora", "Start of the channel": "Početak kanala", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "", "Stop Generating": "", diff --git a/src/lib/i18n/locales/hu-HU/translation.json b/src/lib/i18n/locales/hu-HU/translation.json index 5f919e4615..83e9b0ca72 100644 --- a/src/lib/i18n/locales/hu-HU/translation.json +++ b/src/lib/i18n/locales/hu-HU/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Üzenet értékelés engedélyezése", "Enable Mirostat sampling for controlling perplexity.": "Engedélyezd a Mirostat mintavételezést a perplexitás szabályozásához.", "Enable New Sign Ups": "Új regisztrációk engedélyezése", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Engedélyezve", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "Ideiglenes csevegés kikényszerítése", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "Felolvasás", "Reason": "", "Reasoning Effort": "Érvelési erőfeszítés", + "Reasoning Tags": "", "Record": "", "Record voice": "Hang rögzítése", "Redirecting you to Open WebUI Community": "Átirányítás az OpenWebUI közösséghez", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Beszéd-szöveg motor", "Start of the channel": "A csatorna eleje", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Leállítás", "Stop Generating": "", diff --git a/src/lib/i18n/locales/id-ID/translation.json b/src/lib/i18n/locales/id-ID/translation.json index 8389e1eaff..17e660e368 100644 --- a/src/lib/i18n/locales/id-ID/translation.json +++ b/src/lib/i18n/locales/id-ID/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Aktifkan Pendaftaran Baru", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Diaktifkan", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "Baca dengan Keras", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "Rekam suara", "Redirecting you to Open WebUI Community": "Mengarahkan Anda ke Komunitas OpenWebUI", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Mesin Pengenal Ucapan ke Teks", "Start of the channel": "Awal saluran", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "", "Stop Generating": "", diff --git a/src/lib/i18n/locales/ie-GA/translation.json b/src/lib/i18n/locales/ie-GA/translation.json index d05ddc2b24..ccee6a4155 100644 --- a/src/lib/i18n/locales/ie-GA/translation.json +++ b/src/lib/i18n/locales/ie-GA/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Cumasaigh Rátáil Teachtai", "Enable Mirostat sampling for controlling perplexity.": "Cumasaigh sampláil Mirostat chun seachrán a rialú.", "Enable New Sign Ups": "Cumasaigh Clárúcháin Nua", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Cumasaithe", + "End Tag": "", "Endpoint URL": "URL críochphointe", "Enforce Temporary Chat": "Cuir Comhrá Sealadach i bhfeidhm", "Enhance": "Feabhsaigh", @@ -1171,6 +1173,7 @@ "Read Aloud": "Léigh Ard", "Reason": "Cúis", "Reasoning Effort": "Iarracht Réasúnúcháin", + "Reasoning Tags": "", "Record": "Taifead", "Record voice": "Taifead guth", "Redirecting you to Open WebUI Community": "Tú a atreorú chuig OpenWebUI Community", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "Urlabhra-go-Téacs", "Speech-to-Text Engine": "Inneall Cainte-go-Téacs", "Start of the channel": "Tús an chainéil", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Stad", "Stop Generating": "Stop a Ghiniúint", diff --git a/src/lib/i18n/locales/it-IT/translation.json b/src/lib/i18n/locales/it-IT/translation.json index ecd206521d..884b9c13cb 100644 --- a/src/lib/i18n/locales/it-IT/translation.json +++ b/src/lib/i18n/locales/it-IT/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Abilita valutazione messaggio", "Enable Mirostat sampling for controlling perplexity.": "Abilita il campionamento Mirostat per controllare la perplessità.", "Enable New Sign Ups": "Abilita Nuove Registrazioni", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Abilitato", + "End Tag": "", "Endpoint URL": "URL Endpoint", "Enforce Temporary Chat": "Forza Chat Temporanea", "Enhance": "Migliora", @@ -1171,6 +1173,7 @@ "Read Aloud": "Leggi ad Alta Voce", "Reason": "", "Reasoning Effort": "Sforzo di ragionamento", + "Reasoning Tags": "", "Record": "Registra", "Record voice": "Registra voce", "Redirecting you to Open WebUI Community": "Reindirizzamento alla comunità OpenWebUI", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Motore da voce a testo", "Start of the channel": "Inizio del canale", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Arresta", "Stop Generating": "Ferma generazione", diff --git a/src/lib/i18n/locales/ja-JP/translation.json b/src/lib/i18n/locales/ja-JP/translation.json index 6f101d5b07..3ccd36b78f 100644 --- a/src/lib/i18n/locales/ja-JP/translation.json +++ b/src/lib/i18n/locales/ja-JP/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "メッセージ評価を有効にする", "Enable Mirostat sampling for controlling perplexity.": "Perplexityを制御するためにMirostatサンプリングを有効する。", "Enable New Sign Ups": "新規登録を有効にする", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "有効", + "End Tag": "", "Endpoint URL": "エンドポイントURL", "Enforce Temporary Chat": "一時的なチャットを強制する", "Enhance": "改善する", @@ -1171,6 +1173,7 @@ "Read Aloud": "読み上げ", "Reason": "理由", "Reasoning Effort": "推理の努力", + "Reasoning Tags": "", "Record": "録音", "Record voice": "音声を録音", "Redirecting you to Open WebUI Community": "OpenWebUI コミュニティにリダイレクトしています", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "音声テキスト変換", "Speech-to-Text Engine": "音声テキスト変換エンジン", "Start of the channel": "チャンネルの開始", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "停止", "Stop Generating": "生成を停止", diff --git a/src/lib/i18n/locales/ka-GE/translation.json b/src/lib/i18n/locales/ka-GE/translation.json index 17a3c1cef3..f2360956a8 100644 --- a/src/lib/i18n/locales/ka-GE/translation.json +++ b/src/lib/i18n/locales/ka-GE/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "ახალი რეგისტრაციების ჩართვა", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "ჩართულია", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "ხმამაღლა წაკითხვა", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "ხმის ჩაწერა", "Redirecting you to Open WebUI Community": "მიმდინარეობს გადამისამართება OpenWebUI-ის საზოგადოების საიტზე", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "საუბრიდან-ტექსტამდე-ის ძრავი", "Start of the channel": "არხის დასაწყისი", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "გაჩერება", "Stop Generating": "", diff --git a/src/lib/i18n/locales/kab-DZ/translation.json b/src/lib/i18n/locales/kab-DZ/translation.json index 11fa1a0214..25efc5dd93 100644 --- a/src/lib/i18n/locales/kab-DZ/translation.json +++ b/src/lib/i18n/locales/kab-DZ/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Rmed aktazal n yiznan", "Enable Mirostat sampling for controlling perplexity.": "Rmed askar n Mirostat akken ad tḥekmed deg lbaṭel.", "Enable New Sign Ups": "Rmed azmul amaynut Kkret", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "D urmid", + "End Tag": "", "Endpoint URL": "URL n wagaz n uzgu", "Enforce Temporary Chat": "Ḥettem idiwenniyen iskudanen", "Enhance": "Yesnernay", @@ -1171,6 +1173,7 @@ "Read Aloud": "Ɣeṛ-it-id s taɣect ɛlayen", "Reason": "Ssebba", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "Aklas", "Record voice": "Sekles taɣect", "Redirecting you to Open WebUI Community": "", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "Aɛqal n taɣect", "Speech-to-Text Engine": "Amsadday n uɛqal n taɣect", "Start of the channel": "Tazwara n wabadu", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Seḥbes", "Stop Generating": "Seḥbes asirew", diff --git a/src/lib/i18n/locales/ko-KR/translation.json b/src/lib/i18n/locales/ko-KR/translation.json index 05e774a3aa..e96a7d29b9 100644 --- a/src/lib/i18n/locales/ko-KR/translation.json +++ b/src/lib/i18n/locales/ko-KR/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "메시지 평가 활성화", "Enable Mirostat sampling for controlling perplexity.": "퍼플렉서티 제어를 위해 Mirostat 샘플링 활성화", "Enable New Sign Ups": "새 회원가입 활성화", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "활성화됨", + "End Tag": "", "Endpoint URL": "엔드포인트 URL", "Enforce Temporary Chat": "임시 채팅 강제 적용", "Enhance": "향상", @@ -1171,6 +1173,7 @@ "Read Aloud": "읽어주기", "Reason": "근거", "Reasoning Effort": "추론 난이도", + "Reasoning Tags": "", "Record": "녹음", "Record voice": "음성 녹음", "Redirecting you to Open WebUI Community": "OpenWebUI 커뮤니티로 리디렉션 중", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "음성-텍스트 변환", "Speech-to-Text Engine": "음성-텍스트 변환 엔진", "Start of the channel": "채널 시작", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "정지", "Stop Generating": "생성 중지", diff --git a/src/lib/i18n/locales/lt-LT/translation.json b/src/lib/i18n/locales/lt-LT/translation.json index 81c35af354..69f65fa85b 100644 --- a/src/lib/i18n/locales/lt-LT/translation.json +++ b/src/lib/i18n/locales/lt-LT/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Aktyvuoti naujas registracijas", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Leisti", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "Skaityti garsiai", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "Įrašyti balsą", "Redirecting you to Open WebUI Community": "Perkeliam Jus į OpenWebUI bendruomenę", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Balso atpažinimo modelis", "Start of the channel": "Kanalo pradžia", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "", "Stop Generating": "", diff --git a/src/lib/i18n/locales/ms-MY/translation.json b/src/lib/i18n/locales/ms-MY/translation.json index a92d10f222..61fea2fdc1 100644 --- a/src/lib/i18n/locales/ms-MY/translation.json +++ b/src/lib/i18n/locales/ms-MY/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Benarkan Pendaftaran Baharu", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Dibenarkan", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "Baca dengan lantang", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "Rakam suara", "Redirecting you to Open WebUI Community": "Membawa anda ke Komuniti OpenWebUI", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Enjin Ucapan-ke-Teks", "Start of the channel": "Permulaan saluran", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "", "Stop Generating": "", diff --git a/src/lib/i18n/locales/nb-NO/translation.json b/src/lib/i18n/locales/nb-NO/translation.json index 9e6c7f2d28..9ece2e6e36 100644 --- a/src/lib/i18n/locales/nb-NO/translation.json +++ b/src/lib/i18n/locales/nb-NO/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Aktivert vurdering av meldinger", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Aktiver nye registreringer", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Aktivert", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "Les høyt", "Reason": "", "Reasoning Effort": "Resonneringsinnsats", + "Reasoning Tags": "", "Record": "", "Record voice": "Ta opp tale", "Redirecting you to Open WebUI Community": "Omdirigerer deg til OpenWebUI-fellesskapet", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Motor for Tale-til-tekst", "Start of the channel": "Starten av kanalen", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Stopp", "Stop Generating": "", diff --git a/src/lib/i18n/locales/nl-NL/translation.json b/src/lib/i18n/locales/nl-NL/translation.json index 580f763467..b66b1432f2 100644 --- a/src/lib/i18n/locales/nl-NL/translation.json +++ b/src/lib/i18n/locales/nl-NL/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Schakel berichtbeoordeling in", "Enable Mirostat sampling for controlling perplexity.": "Mirostat-sampling in om perplexiteit te controleren inschakelen.", "Enable New Sign Ups": "Schakel nieuwe registraties in", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Ingeschakeld", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "Tijdelijke chat afdwingen", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "Voorlezen", "Reason": "", "Reasoning Effort": "Redeneerinspanning", + "Reasoning Tags": "", "Record": "", "Record voice": "Neem stem op", "Redirecting you to Open WebUI Community": "Je wordt doorgestuurd naar OpenWebUI Community", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Spraak-naar-tekst Engine", "Start of the channel": "Begin van het kanaal", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Stop", "Stop Generating": "", diff --git a/src/lib/i18n/locales/pa-IN/translation.json b/src/lib/i18n/locales/pa-IN/translation.json index dcdf587511..a788f36def 100644 --- a/src/lib/i18n/locales/pa-IN/translation.json +++ b/src/lib/i18n/locales/pa-IN/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "ਨਵੇਂ ਸਾਈਨ ਅਪ ਯੋਗ ਕਰੋ", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "ਚਾਲੂ", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "ਜੋਰ ਨਾਲ ਪੜ੍ਹੋ", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "ਆਵਾਜ਼ ਰਿਕਾਰਡ ਕਰੋ", "Redirecting you to Open WebUI Community": "ਤੁਹਾਨੂੰ ਓਪਨਵੈਬਯੂਆਈ ਕਮਿਊਨਿਟੀ ਵੱਲ ਰੀਡਾਇਰੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "ਬੋਲ-ਤੋਂ-ਪਾਠ ਇੰਜਣ", "Start of the channel": "ਚੈਨਲ ਦੀ ਸ਼ੁਰੂਆਤ", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "", "Stop Generating": "", diff --git a/src/lib/i18n/locales/pl-PL/translation.json b/src/lib/i18n/locales/pl-PL/translation.json index 1ea608e609..ad2a2a252c 100644 --- a/src/lib/i18n/locales/pl-PL/translation.json +++ b/src/lib/i18n/locales/pl-PL/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Włącz ocenianie wiadomości", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Włącz nowe rejestracje", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Włączone", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "Czytaj na głos", "Reason": "Powód", "Reasoning Effort": "Wysiłek rozumowania", + "Reasoning Tags": "", "Record": "Nagraj", "Record voice": "Nagraj swój głos", "Redirecting you to Open WebUI Community": "Przekierowujemy Cię do społeczności Open WebUI", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Silnik konwersji mowy na tekst", "Start of the channel": "Początek kanału", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Zatrzymaj", "Stop Generating": "", diff --git a/src/lib/i18n/locales/pt-BR/translation.json b/src/lib/i18n/locales/pt-BR/translation.json index 748fcdb8a7..055c10d686 100644 --- a/src/lib/i18n/locales/pt-BR/translation.json +++ b/src/lib/i18n/locales/pt-BR/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Ativar Avaliação de Mensagens", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Ativar Novos Cadastros", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Ativado", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "Aplicar chat temporário", "Enhance": "Melhorar", @@ -1171,6 +1173,7 @@ "Read Aloud": "Ler em Voz Alta", "Reason": "Razão", "Reasoning Effort": "Esforço de raciocínio", + "Reasoning Tags": "", "Record": "Registro", "Record voice": "Gravar voz", "Redirecting you to Open WebUI Community": "Redirecionando você para a Comunidade OpenWebUI", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "Fala-para-Texto", "Speech-to-Text Engine": "Motor de Transcrição de Fala", "Start of the channel": "Início do canal", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Parar", "Stop Generating": "Pare de gerar", diff --git a/src/lib/i18n/locales/pt-PT/translation.json b/src/lib/i18n/locales/pt-PT/translation.json index b60e97f141..55c8f418b5 100644 --- a/src/lib/i18n/locales/pt-PT/translation.json +++ b/src/lib/i18n/locales/pt-PT/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Ativar Novas Inscrições", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Ativado", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "Ler em Voz Alta", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "Gravar voz", "Redirecting you to Open WebUI Community": "Redirecionando-o para a Comunidade OpenWebUI", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Motor de Fala para Texto", "Start of the channel": "Início do canal", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "", "Stop Generating": "", diff --git a/src/lib/i18n/locales/ro-RO/translation.json b/src/lib/i18n/locales/ro-RO/translation.json index ba39271d81..bdba74deed 100644 --- a/src/lib/i18n/locales/ro-RO/translation.json +++ b/src/lib/i18n/locales/ro-RO/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Activează Evaluarea Mesajelor", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Activează Înscrierile Noi", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Activat", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "Citește cu Voce Tare", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "Înregistrează vocea", "Redirecting you to Open WebUI Community": "Vă redirecționăm către Comunitatea OpenWebUI", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Motor de Conversie a Vocii în Text", "Start of the channel": "Începutul canalului", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Oprire", "Stop Generating": "", diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index 3eaa734cda..66dd477dec 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Разрешить оценку ответов", "Enable Mirostat sampling for controlling perplexity.": "Включите выборку Mirostat для контроля путаницы.", "Enable New Sign Ups": "Разрешить новые регистрации", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Включено", + "End Tag": "", "Endpoint URL": "URL-адрес конечной точки", "Enforce Temporary Chat": "Принудительный временный чат", "Enhance": "Улучшить", @@ -1171,6 +1173,7 @@ "Read Aloud": "Прочитать вслух", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "Запись", "Record voice": "Записать голос", "Redirecting you to Open WebUI Community": "Перенаправляем вас в сообщество OpenWebUI", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Система распознавания речи", "Start of the channel": "Начало канала", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Остановить", "Stop Generating": "", diff --git a/src/lib/i18n/locales/sk-SK/translation.json b/src/lib/i18n/locales/sk-SK/translation.json index 6c6bbef2e2..2932c0acf2 100644 --- a/src/lib/i18n/locales/sk-SK/translation.json +++ b/src/lib/i18n/locales/sk-SK/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Povoliť hodnotenie správ", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Povoliť nové registrácie", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Povolené", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "Čítať nahlas", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "Nahrať hlas", "Redirecting you to Open WebUI Community": "Presmerovanie na komunitu OpenWebUI", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Motor prevodu reči na text", "Start of the channel": "Začiatok kanála", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Zastaviť", "Stop Generating": "", diff --git a/src/lib/i18n/locales/sr-RS/translation.json b/src/lib/i18n/locales/sr-RS/translation.json index cd5448c912..ff67c597a3 100644 --- a/src/lib/i18n/locales/sr-RS/translation.json +++ b/src/lib/i18n/locales/sr-RS/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Омогући нове пријаве", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Омогућено", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "Прочитај наглас", "Reason": "", "Reasoning Effort": "Јачина размишљања", + "Reasoning Tags": "", "Record": "", "Record voice": "Сними глас", "Redirecting you to Open WebUI Community": "Преусмеравање на OpenWebUI заједницу", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Мотор за говор у текст", "Start of the channel": "Почетак канала", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Заустави", "Stop Generating": "", diff --git a/src/lib/i18n/locales/sv-SE/translation.json b/src/lib/i18n/locales/sv-SE/translation.json index 1bda5e92f7..82f254b65d 100644 --- a/src/lib/i18n/locales/sv-SE/translation.json +++ b/src/lib/i18n/locales/sv-SE/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Aktivera meddelandebetyg", "Enable Mirostat sampling for controlling perplexity.": "Aktivera Mirostat-sampling för att kontrollera perplexitet.", "Enable New Sign Ups": "Aktivera nya registreringar", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Aktiverad", + "End Tag": "", "Endpoint URL": "Endpoint URL", "Enforce Temporary Chat": "Tvinga fram tillfällig chatt", "Enhance": "Förbättra", @@ -1171,6 +1173,7 @@ "Read Aloud": "Läs igenom", "Reason": "Anledning", "Reasoning Effort": "Resonemangsinsats", + "Reasoning Tags": "", "Record": "Spela in", "Record voice": "Spela in röst", "Redirecting you to Open WebUI Community": "Omdirigerar dig till OpenWebUI Community", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "Tal-till-text", "Speech-to-Text Engine": "Tal-till-text-motor", "Start of the channel": "Början av kanalen", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Stopp", "Stop Generating": "Sluta generera", diff --git a/src/lib/i18n/locales/th-TH/translation.json b/src/lib/i18n/locales/th-TH/translation.json index 747a045bd4..1242446afc 100644 --- a/src/lib/i18n/locales/th-TH/translation.json +++ b/src/lib/i18n/locales/th-TH/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "เปิดใช้งานการสมัครใหม่", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "เปิดใช้งาน", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "อ่านออกเสียง", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "บันทึกเสียง", "Redirecting you to Open WebUI Community": "กำลังเปลี่ยนเส้นทางคุณไปยังชุมชน OpenWebUI", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "เครื่องมือแปลงเสียงเป็นข้อความ", "Start of the channel": "จุดเริ่มต้นของช่อง", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "", "Stop Generating": "", diff --git a/src/lib/i18n/locales/tk-TM/translation.json b/src/lib/i18n/locales/tk-TM/translation.json index ca040ee354..a7a9c5c5eb 100644 --- a/src/lib/i18n/locales/tk-TM/translation.json +++ b/src/lib/i18n/locales/tk-TM/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Işjeň", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "", "Redirecting you to Open WebUI Community": "", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "", "Start of the channel": "Kanal başy", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Bes et", "Stop Generating": "", diff --git a/src/lib/i18n/locales/tr-TR/translation.json b/src/lib/i18n/locales/tr-TR/translation.json index cd8afbb53e..0b0b68e1ff 100644 --- a/src/lib/i18n/locales/tr-TR/translation.json +++ b/src/lib/i18n/locales/tr-TR/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Mesaj Değerlendirmeyi Etkinleştir", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "Yeni Kayıtları Etkinleştir", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Etkin", + "End Tag": "", "Endpoint URL": "Uçnokta URL", "Enforce Temporary Chat": "Geçici Sohbete Zorla", "Enhance": "İyileştir", @@ -1171,6 +1173,7 @@ "Read Aloud": "Sesli Oku", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "Kaydet", "Record voice": "Ses kaydı yap", "Redirecting you to Open WebUI Community": "OpenWebUI Topluluğuna yönlendiriliyorsunuz", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Konuşmadan Metne Motoru", "Start of the channel": "Kanalın başlangıcı", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Durdur", "Stop Generating": "", diff --git a/src/lib/i18n/locales/ug-CN/translation.json b/src/lib/i18n/locales/ug-CN/translation.json index d5ba397cf8..d221944053 100644 --- a/src/lib/i18n/locales/ug-CN/translation.json +++ b/src/lib/i18n/locales/ug-CN/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "ئۇچۇر باھالاشنى قوزغىتىش", "Enable Mirostat sampling for controlling perplexity.": "Perplexity نى باشقۇرۇش ئۈچۈن Mirostat ئەۋرىشىلىگۈچنى قوزغىتىش", "Enable New Sign Ups": "يېڭى تىزىملىتىشنى قوزغىتىش", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "قوزغىتىلغان", + "End Tag": "", "Endpoint URL": "ئۇلانما URL", "Enforce Temporary Chat": "ۋاقىتلىق سۆھبەتنى مەجبۇرىي قىلىش", "Enhance": "ياخشىلا", @@ -1171,6 +1173,7 @@ "Read Aloud": "ئوقۇپ ئېيتىش", "Reason": "سەۋەب", "Reasoning Effort": "چۈشەندۈرۈش كۈچى", + "Reasoning Tags": "", "Record": "خاتىرىلەش", "Record voice": "ئاۋاز خاتىرىلەش", "Redirecting you to Open WebUI Community": "Open WebUI جەمئىيىتىگە يوللاندى", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "ئاۋازدىن تېكستكە", "Speech-to-Text Engine": "ئاۋازدىن تېكستكە ماتورى", "Start of the channel": "قانالنىڭ باشلانغىنى", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "توختات", "Stop Generating": "ھاسىل قىلىشنى توختات", diff --git a/src/lib/i18n/locales/uk-UA/translation.json b/src/lib/i18n/locales/uk-UA/translation.json index c934f71976..e4c003372c 100644 --- a/src/lib/i18n/locales/uk-UA/translation.json +++ b/src/lib/i18n/locales/uk-UA/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Увімкнути оцінку повідомлень", "Enable Mirostat sampling for controlling perplexity.": "Увімкнути вибірку Mirostat для контролю перплексії.", "Enable New Sign Ups": "Дозволити нові реєстрації", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Увімкнено", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "Застосувати тимчасовий чат", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "Читати вголос", "Reason": "", "Reasoning Effort": "Зусилля на міркування", + "Reasoning Tags": "", "Record": "", "Record voice": "Записати голос", "Redirecting you to Open WebUI Community": "Перенаправляємо вас до спільноти OpenWebUI", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Система розпізнавання мови", "Start of the channel": "Початок каналу", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Зупинити", "Stop Generating": "", diff --git a/src/lib/i18n/locales/ur-PK/translation.json b/src/lib/i18n/locales/ur-PK/translation.json index dcbae6a383..638ed2d8c0 100644 --- a/src/lib/i18n/locales/ur-PK/translation.json +++ b/src/lib/i18n/locales/ur-PK/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "پیغام کی درجہ بندی فعال کریں", "Enable Mirostat sampling for controlling perplexity.": "", "Enable New Sign Ups": "نئے سائن اپس کو فعال کریں", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "فعال کردیا گیا ہے", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "بُلند آواز میں پڑھیں", "Reason": "", "Reasoning Effort": "", + "Reasoning Tags": "", "Record": "", "Record voice": "صوت ریکارڈ کریں", "Redirecting you to Open WebUI Community": "آپ کو اوپن ویب یو آئی کمیونٹی کی طرف ری ڈائریکٹ کیا جا رہا ہے", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "تقریر-سے-متن انجن", "Start of the channel": "چینل کی شروعات", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "روکیں", "Stop Generating": "", diff --git a/src/lib/i18n/locales/uz-Cyrl-UZ/translation.json b/src/lib/i18n/locales/uz-Cyrl-UZ/translation.json index 5c4bf6fc31..39c2b49ee1 100644 --- a/src/lib/i18n/locales/uz-Cyrl-UZ/translation.json +++ b/src/lib/i18n/locales/uz-Cyrl-UZ/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Хабар рейтингини ёқиш", "Enable Mirostat sampling for controlling perplexity.": "Ажабланишни назорат қилиш учун Миростат намунасини ёқинг.", "Enable New Sign Ups": "Янги рўйхатдан ўтишни ёқинг", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Ёқилган", + "End Tag": "", "Endpoint URL": "Охирги нуқта URL", "Enforce Temporary Chat": "Вақтинчалик суҳбатни жорий қилиш", "Enhance": "Яхшилаш", @@ -1171,6 +1173,7 @@ "Read Aloud": "Овоз чиқариб ўқинг", "Reason": "", "Reasoning Effort": "Мулоҳаза юритиш ҳаракатлари", + "Reasoning Tags": "", "Record": "Ёзиб олиш", "Record voice": "Овозни ёзиб олинг", "Redirecting you to Open WebUI Community": "Сизни Опен WебУИ ҳамжамиятига йўналтирмоқда", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Нутқдан матнга восита", "Start of the channel": "Канал боши", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "СТОП", "Stop Generating": "", diff --git a/src/lib/i18n/locales/uz-Latn-Uz/translation.json b/src/lib/i18n/locales/uz-Latn-Uz/translation.json index 013cd92d74..4cf3532d8d 100644 --- a/src/lib/i18n/locales/uz-Latn-Uz/translation.json +++ b/src/lib/i18n/locales/uz-Latn-Uz/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Xabar reytingini yoqish", "Enable Mirostat sampling for controlling perplexity.": "Ajablanishni nazorat qilish uchun Mirostat namunasini yoqing.", "Enable New Sign Ups": "Yangi ro'yxatdan o'tishni yoqing", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Yoqilgan", + "End Tag": "", "Endpoint URL": "Oxirgi nuqta URL", "Enforce Temporary Chat": "Vaqtinchalik suhbatni joriy qilish", "Enhance": "Yaxshilash", @@ -1171,6 +1173,7 @@ "Read Aloud": "Ovoz chiqarib o'qing", "Reason": "", "Reasoning Effort": "Mulohaza yuritish harakatlari", + "Reasoning Tags": "", "Record": "Yozib olish", "Record voice": "Ovozni yozib oling", "Redirecting you to Open WebUI Community": "Sizni Open WebUI hamjamiyatiga yoʻnaltirmoqda", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Nutqdan matnga vosita", "Start of the channel": "Kanal boshlanishi", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "STOP", "Stop Generating": "", diff --git a/src/lib/i18n/locales/vi-VN/translation.json b/src/lib/i18n/locales/vi-VN/translation.json index bc342b6dc8..b4f07862fb 100644 --- a/src/lib/i18n/locales/vi-VN/translation.json +++ b/src/lib/i18n/locales/vi-VN/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "Cho phép phản hồi, đánh giá", "Enable Mirostat sampling for controlling perplexity.": "Bật lấy mẫu Mirostat để kiểm soát perplexity.", "Enable New Sign Ups": "Cho phép đăng ký mới", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "Đã bật", + "End Tag": "", "Endpoint URL": "", "Enforce Temporary Chat": "Bắt buộc Chat nháp", "Enhance": "", @@ -1171,6 +1173,7 @@ "Read Aloud": "Đọc ra loa", "Reason": "", "Reasoning Effort": "Nỗ lực Suy luận", + "Reasoning Tags": "", "Record": "", "Record voice": "Ghi âm", "Redirecting you to Open WebUI Community": "Đang chuyển hướng bạn đến Cộng đồng OpenWebUI", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "", "Speech-to-Text Engine": "Công cụ Nhận dạng Giọng nói", "Start of the channel": "Đầu kênh", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "Dừng", "Stop Generating": "", diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index 2c837cc9f7..7cc216ffbf 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "启用回复评价", "Enable Mirostat sampling for controlling perplexity.": "启用 Mirostat 采样以控制困惑度", "Enable New Sign Ups": "允许新用户注册", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "已启用", + "End Tag": "", "Endpoint URL": "端点 URL", "Enforce Temporary Chat": "强制临时对话", "Enhance": "润色", @@ -1171,6 +1173,7 @@ "Read Aloud": "朗读", "Reason": "原因", "Reasoning Effort": "推理努力 (Reasoning Effort)", + "Reasoning Tags": "", "Record": "录制", "Record voice": "录音", "Redirecting you to Open WebUI Community": "正在将您重定向到 Open WebUI 社区", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "语音转文本", "Speech-to-Text Engine": "语音转文本引擎", "Start of the channel": "频道起点", + "Start Tag": "", "STDOUT/STDERR": "标准输出/标准错误", "Stop": "停止", "Stop Generating": "停止生成", diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index 7992ac99fb..edfece9e7f 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -493,7 +493,9 @@ "Enable Message Rating": "啟用訊息評分", "Enable Mirostat sampling for controlling perplexity.": "啟用 Mirostat 取樣以控制 perplexity。", "Enable New Sign Ups": "允許新使用者註冊", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "", "Enabled": "已啟用", + "End Tag": "", "Endpoint URL": "端點 URL", "Enforce Temporary Chat": "強制使用臨時對話", "Enhance": "增強", @@ -1171,6 +1173,7 @@ "Read Aloud": "大聲朗讀", "Reason": "原因", "Reasoning Effort": "推理程度", + "Reasoning Tags": "", "Record": "錄製", "Record voice": "錄音", "Redirecting you to Open WebUI Community": "正在將您重導向至 Open WebUI 社群", @@ -1371,6 +1374,7 @@ "Speech-to-Text": "語音轉文字 (STT) ", "Speech-to-Text Engine": "語音轉文字 (STT) 引擎", "Start of the channel": "頻道起點", + "Start Tag": "", "STDOUT/STDERR": "STDOUT/STDERR", "Stop": "停止", "Stop Generating": "停止生成", From d2fdf6999bf9e460c2d191dea202da92e859176e Mon Sep 17 00:00:00 2001 From: Everett Wilber <71281043+a1cd@users.noreply.github.com> Date: Wed, 27 Aug 2025 18:20:23 -0400 Subject: [PATCH 53/74] Add USE_SLIM argument to Dockerfile --- Dockerfile | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 83a74365f0..0faef51330 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,6 +3,7 @@ # use build args in the docker build command with --build-arg="BUILDARG=true" ARG USE_CUDA=false ARG USE_OLLAMA=false +ARG USE_SLIM=false # Tested with cu117 for CUDA 11 and cu121 for CUDA 12 (default) ARG USE_CUDA_VER=cu128 # any sentence transformer model; models to use can be found at https://huggingface.co/models?library=sentence-transformers @@ -43,6 +44,7 @@ FROM python:3.11-slim-bookworm AS base ARG USE_CUDA ARG USE_OLLAMA ARG USE_CUDA_VER +ARG USE_SLIM ARG USE_EMBEDDING_MODEL ARG USE_RERANKING_MODEL ARG UID @@ -54,6 +56,7 @@ ENV ENV=prod \ # pass build args to the build USE_OLLAMA_DOCKER=${USE_OLLAMA} \ USE_CUDA_DOCKER=${USE_CUDA} \ + USE_SLIM_DOCKER=${USE_SLIM} \ USE_CUDA_DOCKER_VER=${USE_CUDA_VER} \ USE_EMBEDDING_MODEL_DOCKER=${USE_EMBEDDING_MODEL} \ USE_RERANKING_MODEL_DOCKER=${USE_RERANKING_MODEL} @@ -120,6 +123,7 @@ RUN apt-get update && \ COPY --chown=$UID:$GID ./backend/requirements.txt ./requirements.txt RUN pip3 install --no-cache-dir uv && \ + if [ "$USE_SLIM" != "true" ]; then \ if [ "$USE_CUDA" = "true" ]; then \ # If you use CUDA the whisper and embedding model will be downloaded on first use pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/$USE_CUDA_DOCKER_VER --no-cache-dir && \ @@ -134,10 +138,13 @@ RUN pip3 install --no-cache-dir uv && \ python -c "import os; from faster_whisper import WhisperModel; WhisperModel(os.environ['WHISPER_MODEL'], device='cpu', compute_type='int8', download_root=os.environ['WHISPER_MODEL_DIR'])"; \ python -c "import os; import tiktoken; tiktoken.get_encoding(os.environ['TIKTOKEN_ENCODING_NAME'])"; \ fi; \ + else \ + uv pip install --system -r requirements.txt --no-cache-dir && \ + fi; \ chown -R $UID:$GID /app/backend/data/ # Install Ollama if requested -RUN if [ "$USE_OLLAMA" = "true" ]; then \ +RUN if [ [ "$USE_OLLAMA" = "true" ] && [ "$USE_SLIM" != "true" ] ]; then \ date +%s > /tmp/ollama_build_hash && \ echo "Cache broken at timestamp: `cat /tmp/ollama_build_hash`" && \ curl -fsSL https://ollama.com/install.sh | sh && \ From cf08d3487969c24a6ec3a7042c89a260a66f7aed Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 28 Aug 2025 02:24:21 +0400 Subject: [PATCH 54/74] refac --- backend/open_webui/socket/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/open_webui/socket/main.py b/backend/open_webui/socket/main.py index 5570348093..47abb0915d 100644 --- a/backend/open_webui/socket/main.py +++ b/backend/open_webui/socket/main.py @@ -115,7 +115,7 @@ if WEBSOCKET_MANAGER == "redis": clean_up_lock = RedisLock( redis_url=WEBSOCKET_REDIS_URL, - lock_name="usage_cleanup_lock", + lock_name=f"{REDIS_KEY_PREFIX}:usage_cleanup_lock", timeout_secs=WEBSOCKET_REDIS_LOCK_TIMEOUT, redis_sentinels=redis_sentinels, redis_cluster=WEBSOCKET_REDIS_CLUSTER, From db4adc0e8978c3c735089745a8103378b4562f2f Mon Sep 17 00:00:00 2001 From: Everett Wilber <71281043+a1cd@users.noreply.github.com> Date: Wed, 27 Aug 2025 18:27:16 -0400 Subject: [PATCH 55/74] Add build-slim-image job to Docker workflow --- .github/workflows/docker-build.yaml | 158 ++++++++++++++++++++++++++++ 1 file changed, 158 insertions(+) diff --git a/.github/workflows/docker-build.yaml b/.github/workflows/docker-build.yaml index 821ffb7206..e597ff8055 100644 --- a/.github/workflows/docker-build.yaml +++ b/.github/workflows/docker-build.yaml @@ -419,6 +419,108 @@ jobs: if-no-files-found: error retention-days: 1 + build-slim-image: + runs-on: ${{ matrix.runner }} + permissions: + contents: read + packages: write + strategy: + fail-fast: false + matrix: + include: + - platform: linux/amd64 + runner: ubuntu-latest + - platform: linux/arm64 + runner: ubuntu-24.04-arm + + steps: + # GitHub Packages requires the entire repository name to be in lowercase + # although the repository owner has a lowercase username, this prevents some people from running actions after forking + - name: Set repository and image name to lowercase + run: | + echo "IMAGE_NAME=${IMAGE_NAME,,}" >>${GITHUB_ENV} + echo "FULL_IMAGE_NAME=ghcr.io/${IMAGE_NAME,,}" >>${GITHUB_ENV} + env: + IMAGE_NAME: '${{ github.repository }}' + + - name: Prepare + run: | + platform=${{ matrix.platform }} + echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV + + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata for Docker images (slim tag) + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.FULL_IMAGE_NAME }} + tags: | + type=ref,event=branch + type=ref,event=tag + type=sha,prefix=git- + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=raw,enable=${{ github.ref == 'refs/heads/main' }},prefix=,suffix=,value=slim + flavor: | + latest=${{ github.ref == 'refs/heads/main' }} + suffix=-slim,onlatest=true + + - name: Extract metadata for Docker cache + id: cache-meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.FULL_IMAGE_NAME }} + tags: | + type=ref,event=branch + ${{ github.ref_type == 'tag' && 'type=raw,value=main' || '' }} + flavor: | + prefix=cache-slim-${{ matrix.platform }}- + latest=false + + - name: Build Docker image (slim) + uses: docker/build-push-action@v5 + id: build + with: + context: . + push: true + platforms: ${{ matrix.platform }} + labels: ${{ steps.meta.outputs.labels }} + outputs: type=image,name=${{ env.FULL_IMAGE_NAME }},push-by-digest=true,name-canonical=true,push=true + cache-from: type=registry,ref=${{ steps.cache-meta.outputs.tags }} + cache-to: type=registry,ref=${{ steps.cache-meta.outputs.tags }},mode=max + build-args: | + BUILD_HASH=${{ github.sha }} + USE_SLIM=true + + - name: Export digest + run: | + mkdir -p /tmp/digests + digest="${{ steps.build.outputs.digest }}" + touch "/tmp/digests/${digest#sha256:}" + + - name: Upload digest + uses: actions/upload-artifact@v4 + with: + name: digests-slim-${{ env.PLATFORM_PAIR }} + path: /tmp/digests/* + if-no-files-found: error + retention-days: 1 + merge-main-images: runs-on: ubuntu-latest needs: [build-main-image] @@ -640,3 +742,59 @@ jobs: - name: Inspect image run: | docker buildx imagetools inspect ${{ env.FULL_IMAGE_NAME }}:${{ steps.meta.outputs.version }} + + merge-slim-images: + runs-on: ubuntu-latest + needs: [build-slim-image] + steps: + # GitHub Packages requires the entire repository name to be in lowercase + # although the repository owner has a lowercase username, this prevents some people from running actions after forking + - name: Set repository and image name to lowercase + run: | + echo "IMAGE_NAME=${IMAGE_NAME,,}" >>${GITHUB_ENV} + echo "FULL_IMAGE_NAME=ghcr.io/${IMAGE_NAME,,}" >>${GITHUB_ENV} + env: + IMAGE_NAME: '${{ github.repository }}' + + - name: Download digests + uses: actions/download-artifact@v4 + with: + pattern: digests-slim-* + path: /tmp/digests + merge-multiple: true + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata for Docker images (default slim tag) + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.FULL_IMAGE_NAME }} + tags: | + type=ref,event=branch + type=ref,event=tag + type=sha,prefix=git- + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=raw,enable=${{ github.ref == 'refs/heads/main' }},prefix=,suffix=,value=slim + flavor: | + latest=${{ github.ref == 'refs/heads/main' }} + suffix=-slim,onlatest=true + + - name: Create manifest list and push + working-directory: /tmp/digests + run: | + docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ + $(printf '${{ env.FULL_IMAGE_NAME }}@sha256:%s ' *) + + - name: Inspect image + run: | + docker buildx imagetools inspect ${{ env.FULL_IMAGE_NAME }}:${{ steps.meta.outputs.version }} From b2d1aa3c6e4b4ad08e112ef07542b76b1c901a3b Mon Sep 17 00:00:00 2001 From: Everett Wilber <71281043+a1cd@users.noreply.github.com> Date: Wed, 27 Aug 2025 18:35:00 -0400 Subject: [PATCH 56/74] Fix syntax error in conditional for Ollama installation --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 0faef51330..12d9174d09 100644 --- a/Dockerfile +++ b/Dockerfile @@ -144,7 +144,7 @@ RUN pip3 install --no-cache-dir uv && \ chown -R $UID:$GID /app/backend/data/ # Install Ollama if requested -RUN if [ [ "$USE_OLLAMA" = "true" ] && [ "$USE_SLIM" != "true" ] ]; then \ +RUN if [ "$USE_OLLAMA" = "true" ] && [ "$USE_SLIM" != "true" ]; then \ date +%s > /tmp/ollama_build_hash && \ echo "Cache broken at timestamp: `cat /tmp/ollama_build_hash`" && \ curl -fsSL https://ollama.com/install.sh | sh && \ From e7c7c65227613e7d28d1cbdbcc755635b94e512d Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 28 Aug 2025 02:35:29 +0400 Subject: [PATCH 57/74] refac/fix: error message --- backend/open_webui/utils/middleware.py | 7 +++++++ src/lib/components/chat/Chat.svelte | 2 ++ 2 files changed, 9 insertions(+) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index 41e56e6530..a298ebeb31 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -1305,6 +1305,13 @@ async def process_chat_response( "error": {"content": error}, }, ) + if isinstance(error, str) or isinstance(error, dict): + await event_emitter( + { + "type": "chat:message:error", + "data": {"error": {"content": error}}, + }, + ) if "selected_model_id" in response_data: Chats.upsert_message_to_chat_by_id_and_message_id( diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index a2f5116dee..86d86a9ae4 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -324,6 +324,8 @@ message.content = data.content; } else if (type === 'chat:message:files' || type === 'files') { message.files = data.files; + } else if (type === 'chat:message:error') { + message.error = data.error; } else if (type === 'chat:message:follow_ups') { message.followUps = data.follow_ups; From fcc1e2729cd653546dc8aabb71395e6783d1e25e Mon Sep 17 00:00:00 2001 From: Everett Wilber <71281043+a1cd@users.noreply.github.com> Date: Wed, 27 Aug 2025 18:37:49 -0400 Subject: [PATCH 58/74] Fix Dockerfile syntax for conditional installation --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 12d9174d09..73bfe33ae8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -138,7 +138,7 @@ RUN pip3 install --no-cache-dir uv && \ python -c "import os; from faster_whisper import WhisperModel; WhisperModel(os.environ['WHISPER_MODEL'], device='cpu', compute_type='int8', download_root=os.environ['WHISPER_MODEL_DIR'])"; \ python -c "import os; import tiktoken; tiktoken.get_encoding(os.environ['TIKTOKEN_ENCODING_NAME'])"; \ fi; \ - else \ + else \ uv pip install --system -r requirements.txt --no-cache-dir && \ fi; \ chown -R $UID:$GID /app/backend/data/ From f4dde86b36ffbedef2d91b0f2a52df50b06717dd Mon Sep 17 00:00:00 2001 From: Everett Wilber <71281043+a1cd@users.noreply.github.com> Date: Wed, 27 Aug 2025 18:40:17 -0400 Subject: [PATCH 59/74] Fix syntax error in Dockerfile pip install command --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 73bfe33ae8..7dba112f34 100644 --- a/Dockerfile +++ b/Dockerfile @@ -139,7 +139,7 @@ RUN pip3 install --no-cache-dir uv && \ python -c "import os; import tiktoken; tiktoken.get_encoding(os.environ['TIKTOKEN_ENCODING_NAME'])"; \ fi; \ else \ - uv pip install --system -r requirements.txt --no-cache-dir && \ + uv pip install --system -r requirements.txt --no-cache-dir; \ fi; \ chown -R $UID:$GID /app/backend/data/ From 48635ced35e3aefe7c93e1e85bb9a5de52bcf511 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 28 Aug 2025 02:45:06 +0400 Subject: [PATCH 60/74] refac --- backend/open_webui/socket/main.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/backend/open_webui/socket/main.py b/backend/open_webui/socket/main.py index 47abb0915d..63b6c17b9c 100644 --- a/backend/open_webui/socket/main.py +++ b/backend/open_webui/socket/main.py @@ -705,6 +705,23 @@ def get_event_emitter(request_info, update_db=True): }, ) + if "type" in event_data and event_data["type"] == "files": + message = Chats.get_message_by_id_and_message_id( + request_info["chat_id"], + request_info["message_id"], + ) + + files = event_data.get("data", {}).get("files", []) + files.extend(message.get("files", [])) + + Chats.upsert_message_to_chat_by_id_and_message_id( + request_info["chat_id"], + request_info["message_id"], + { + "files": files, + }, + ) + return __event_emitter__ From a60b0a108a173c2ce7542a3c521add4aca650965 Mon Sep 17 00:00:00 2001 From: Everett Wilber <71281043+a1cd@users.noreply.github.com> Date: Wed, 27 Aug 2025 18:46:31 -0400 Subject: [PATCH 61/74] Ensure data directory exists before chown --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7dba112f34..9c982e69e2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -141,7 +141,7 @@ RUN pip3 install --no-cache-dir uv && \ else \ uv pip install --system -r requirements.txt --no-cache-dir; \ fi; \ - chown -R $UID:$GID /app/backend/data/ + mkdir -p /app/backend/data && chown -R $UID:$GID /app/backend/data/ # Install Ollama if requested RUN if [ "$USE_OLLAMA" = "true" ] && [ "$USE_SLIM" != "true" ]; then \ From 3d6605bbfdc1326e726a176fbe2fe1e9801c7c75 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 28 Aug 2025 02:48:08 +0400 Subject: [PATCH 62/74] refac: hide steps in images --- .../components/admin/Settings/Images.svelte | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/lib/components/admin/Settings/Images.svelte b/src/lib/components/admin/Settings/Images.svelte index 0f0cbfe78d..100ec7ad22 100644 --- a/src/lib/components/admin/Settings/Images.svelte +++ b/src/lib/components/admin/Settings/Images.svelte @@ -682,21 +682,23 @@
-
-
{$i18n.t('Set Steps')}
-
-
- - - + {#if ['comfyui', 'automatic1111', ''].includes(config?.engine)} +
+
{$i18n.t('Set Steps')}
+
+
+ + + +
-
+ {/if} {/if} {/if}
From 52030a241ca6788134ada7fb178475b0d485c363 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 28 Aug 2025 02:50:19 +0400 Subject: [PATCH 63/74] refac --- src/lib/components/notes/NoteEditor.svelte | 6 +++--- src/lib/components/notes/Notes.svelte | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/lib/components/notes/NoteEditor.svelte b/src/lib/components/notes/NoteEditor.svelte index 5bc912f54d..c580b14e9a 100644 --- a/src/lib/components/notes/NoteEditor.svelte +++ b/src/lib/components/notes/NoteEditor.svelte @@ -610,7 +610,7 @@ ${content} document.body.removeChild(node); } - const imgData = canvas.toDataURL('image/png'); + const imgData = canvas.toDataURL('image/jpeg', 0.7); // A4 page settings const pdf = new jsPDF('p', 'mm', 'a4'); @@ -622,7 +622,7 @@ ${content} let heightLeft = imgHeight; let position = 0; - pdf.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight); + pdf.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight); heightLeft -= pageHeight; // Handle additional pages @@ -630,7 +630,7 @@ ${content} position -= pageHeight; pdf.addPage(); - pdf.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight); + pdf.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight); heightLeft -= pageHeight; } diff --git a/src/lib/components/notes/Notes.svelte b/src/lib/components/notes/Notes.svelte index 80fa3893f5..7005387631 100644 --- a/src/lib/components/notes/Notes.svelte +++ b/src/lib/components/notes/Notes.svelte @@ -167,7 +167,7 @@ document.body.removeChild(node); } - const imgData = canvas.toDataURL('image/png'); + const imgData = canvas.toDataURL('image/jpeg', 0.7); // A4 page settings const pdf = new jsPDF('p', 'mm', 'a4'); @@ -179,7 +179,7 @@ let heightLeft = imgHeight; let position = 0; - pdf.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight); + pdf.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight); heightLeft -= pageHeight; // Handle additional pages @@ -187,7 +187,7 @@ position -= pageHeight; pdf.addPage(); - pdf.addImage(imgData, 'PNG', 0, position, imgWidth, imgHeight); + pdf.addImage(imgData, 'JPEG', 0, position, imgWidth, imgHeight); heightLeft -= pageHeight; } From 40617b9e0e5f794d0441c773653a9f4c18cc7ee8 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 28 Aug 2025 02:59:45 +0400 Subject: [PATCH 64/74] refac: file item modal --- src/lib/components/common/FileItem.svelte | 2 +- .../components/common/FileItemModal.svelte | 44 ++++++++++++++++--- 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/src/lib/components/common/FileItem.svelte b/src/lib/components/common/FileItem.svelte index c12b75d6f8..238bbbe6ff 100644 --- a/src/lib/components/common/FileItem.svelte +++ b/src/lib/components/common/FileItem.svelte @@ -51,7 +51,7 @@ : 'rounded-2xl'} text-left" type="button" on:click={async () => { - if (item?.file?.data?.content || modal) { + if (item?.file?.data?.content || item?.type === 'file' || modal) { showModal = !showModal; } else { if (url) { diff --git a/src/lib/components/common/FileItemModal.svelte b/src/lib/components/common/FileItemModal.svelte index f84f9c047c..7cf034087d 100644 --- a/src/lib/components/common/FileItemModal.svelte +++ b/src/lib/components/common/FileItemModal.svelte @@ -25,6 +25,8 @@ let isAudio = false; let loading = false; + let selectedTab = ''; + $: isPDF = item?.meta?.content_type === 'application/pdf' || (item?.name && item?.name.toLowerCase().endsWith('.pdf')); @@ -115,7 +117,7 @@
-
+
{#if item?.type === 'collection'} {#if item?.type}
{item.type}
@@ -202,11 +204,41 @@ {/each}
{:else if isPDF} -