From bc0da24e9cf4a064fe9b9c47e17213d8dae9d89c Mon Sep 17 00:00:00 2001 From: Tim Jaeryang Baek Date: Tue, 7 Oct 2025 23:06:04 -0500 Subject: [PATCH 01/54] 0.6.33 (#18118) (#18137) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: improve ollama model management experience This commit introduces several improvements to the Ollama model management modal: - Adds a cancel button to the model pulling operation, using the existing 'x' button pattern. - Adds a cancel button to the "Update All" models operation, allowing the user to cancel the update for the currently processing model. - Cleans up toast notifications when updating all models. A single toast is now shown at the beginning and a summary toast at the end, preventing notification spam. - Refactors the `ManageOllama.svelte` component to support these new cancellation features. - Adds tooltips to all buttons in the modal to improve clarity. - Disables buttons when their corresponding input fields are empty to prevent accidental clicks. * fix * i18n: improve Chinese translation * fix: handle non‑UTF8 chars in third‑party responses without error * German translation of new strings in i18n * log web search queries only with level 'debug' instead of 'info' * Tool calls now only include text and dont inlcude other content like image b64 * fix onedrive * fix: discovery url * fix: default permissions not being loaded * fix: ai hallucination * fix: non rich text input copy * refac: rm print statements * refac: disable direct models from model editors * refac/fix: do not process xlsx files with azure doc intelligence * Update pull_request_template.md * Update generated image translation in DE-de * added missing danish translations * feat(onedrive): Enable search and "My Organization" pivot * style(onedrive): Formatting fix * feat: Implement toggling for vertical and horizontal flow layouts This commit introduces the necessary logic and UI controls to allow users to switch the Flow component layout between vertical and horizontal orientations. * **`Flow.svelte` Refactoring:** * Updates logic for calculating level offsets and node positions to consistently respect the current flow orientation. * Adds a control panel using `` and `` components. * Provides user interface elements to easily switch the flow layout between horizontal and vertical orientations. * build(deps): bump pydantic from 2.11.7 to 2.11.9 in /backend Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.11.7 to 2.11.9. - [Release notes](https://github.com/pydantic/pydantic/releases) - [Changelog](https://github.com/pydantic/pydantic/blob/v2.11.9/HISTORY.md) - [Commits](https://github.com/pydantic/pydantic/compare/v2.11.7...v2.11.9) --- updated-dependencies: - dependency-name: pydantic dependency-version: 2.11.9 dependency-type: direct:production update-type: version-update:semver-patch ... * build(deps): bump black from 25.1.0 to 25.9.0 in /backend Bumps [black](https://github.com/psf/black) from 25.1.0 to 25.9.0. - [Release notes](https://github.com/psf/black/releases) - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md) - [Commits](https://github.com/psf/black/compare/25.1.0...25.9.0) --- updated-dependencies: - dependency-name: black dependency-version: 25.9.0 dependency-type: direct:production update-type: version-update:semver-minor ... * build(deps): bump markdown from 3.8.2 to 3.9 in /backend Bumps [markdown](https://github.com/Python-Markdown/markdown) from 3.8.2 to 3.9. - [Release notes](https://github.com/Python-Markdown/markdown/releases) - [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md) - [Commits](https://github.com/Python-Markdown/markdown/compare/3.8.2...3.9.0) --- updated-dependencies: - dependency-name: markdown dependency-version: '3.9' dependency-type: direct:production update-type: version-update:semver-minor ... * build(deps): bump chromadb from 1.0.20 to 1.1.0 in /backend Bumps [chromadb](https://github.com/chroma-core/chroma) from 1.0.20 to 1.1.0. - [Release notes](https://github.com/chroma-core/chroma/releases) - [Changelog](https://github.com/chroma-core/chroma/blob/main/RELEASE_PROCESS.md) - [Commits](https://github.com/chroma-core/chroma/compare/1.0.20...1.1.0) --- updated-dependencies: - dependency-name: chromadb dependency-version: 1.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... * build(deps): bump opentelemetry-api from 1.36.0 to 1.37.0 Bumps [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) from 1.36.0 to 1.37.0. - [Release notes](https://github.com/open-telemetry/opentelemetry-python/releases) - [Changelog](https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md) - [Commits](https://github.com/open-telemetry/opentelemetry-python/compare/v1.36.0...v1.37.0) --- updated-dependencies: - dependency-name: opentelemetry-api dependency-version: 1.37.0 dependency-type: direct:production update-type: version-update:semver-minor ... * refac: ollama embed form data * fix: non rich text handling * fix: oauth client registration * refac * chore: dep bump * chore: fastapi bump * chore/refac: bump bcrypt and remove passlib * Improving Korean Translation * refac * Improving Korean Translation * feat: PWA share_target implementation * refac: message input mobile detection behaviour * feat: model_ids per folder * Update translation.json (pt-BR) inclusion of new translations of items that have been added * refac * refac * refac * refac * refac/fix: temp chat * refac * refac: stop task * refac/fix: azure audio escape * refac: external tool validation * refac/enh: start.sh additional args support * refac * refac: styling * refac/fix: direct connection floating action buttons * refac/fix: system prompt duplication * refac/enh: openai tts additional params support * refac * feat: load data in parallel to accelerate page loading speed * i18n: improve Chinese translation * refac * refac: model selector * UPD: i18n es-ES Translation v0.6.33 UPD: i18n es-ES Translation v0.6.33 Updated new strings. * refac * improved query pref by querying only relevant columns * refac/enh: docling params * refac * refac: openai additional headers support * refac * FEAT: Add Vega Char Visualizer Renderer ### FEAT: Add Vega Char Visualizer Renderer Feature required in https://github.com/open-webui/open-webui/discussions/18022 Added npm vega lib to package.json Added function for visualization renderer to src/libs/utils/index.ts Added logic to src/lib/components/chat/Messages/CodeBlock.svelte The treatment is similar as for mermaid diagrams. Reference: https://vega.github.io/vega/ * refac * chore * refac * FEAT: Add Vega-Lite Char Visualizer Renderer ### FEAT: Add Vega Char Visualizer Renderer Add suport for Vega-Lite Specifications. Vega-Lite is a "compiled" version of Vega Char Visualizer. For be rendered with Vega it have to be compiled. This PR add the check and compile if necessary, is a complement of recent Vega Renderer Feature added. * refac * refac/fix: switch * enh/refac: url input handling * refac * refac: styling * UPD: Add Validators & Error Toast for Mermaid & Vega diagrams ### UPD: Feat: Add Validators & Error Toast for Mermaid & Vega diagrams Description: As many time the diagrams generated or entered have syntax errors the diagrams are not rendered due to that errors, but as there isn't any notification is difficult to know what happend. This PR add validator and toast notification when error on Mermaid and Vega/Vega-Lite diagrams, helping the user to fix its. * removed redundant knowledge API call * Fix Code Format * refac: model workspace view * refac * refac: knowledge * refac: prompts * refac: tools * refac * feat: attach folder * refac: make tencentcloud-sdk-python optional * refac/fix: oauth * enh: ENABLE_OAUTH_EMAIL_FALLBACK * refac/fix: folders * Update requirements.txt * Update pyproject.toml * UPD: Add Validators & Error Toast for Mermaid & Vega diagrams ### UPD: Feat: Add Validators & Error Toast for Mermaid & Vega diagrams Description: As many time the diagrams generated or entered have syntax errors the diagrams are not rendered due to that errors, but as there isn't any notification is difficult to know what happend. This PR add validator and toast notification when error on Mermaid and Vega/Vega-Lite diagrams, helping the user to fix its. Note: Another possibility of integrating this Graph Visualizer is through its svelte component: https://github.com/vega/svelte-vega/tree/main/packages/svelte-vega * Removed unused toast import & Code Format * refac * refac: external tool server view * refac * refac: overview * refac: styling * refac * Update bug_report.yaml * refac * refac * refac * refac * refac: oauth client fallback * Fixed: Cannot handle batch sizes > 1 if no padding token is defined Fixes Cannot handle batch sizes > 1 if no padding token is defined For reranker models that do not have this defined in their config by using the eos_token_id if present as pad_token_id. * refac: fallback to reasoning content * fix(i18n): corrected typo in Spanish translation for "Reasoning Tags" Typo fixed in Spanish translation file at line 1240 of `open-webui/src/lib/i18n/locales/es-ES/translation.json`: - Incorrect: "Eriquetas de Razonamiento" - Correct: "Etiquetas de Razonamiento" This improves clarity and consistency in the UI. * refac/fix: ENABLE_STAR_SESSIONS_MIDDLEWARE * refac/fix: redirect * refac * refac * refac * refac: web search error handling * refac: source parsing * refac: functions * refac * refac/enh: note pdf export * refac/fix: mcp oauth2.1 * chore: format * chore: Changelog (#17995) * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * refac * chore: dep bump --------- Signed-off-by: dependabot[bot] Co-authored-by: silentoplayz Co-authored-by: Shirasawa <764798966@qq.com> Co-authored-by: Jan Kessler Co-authored-by: Jacob Leksan Co-authored-by: Classic298 <27028174+Classic298@users.noreply.github.com> Co-authored-by: sinejespersen Co-authored-by: Selene Blok Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Cyp Co-authored-by: gjveld <19951982+gjveld@users.noreply.github.com> Co-authored-by: joaoback <156559121+joaoback@users.noreply.github.com> Co-authored-by: _00_ <131402327+rgaricano@users.noreply.github.com> Co-authored-by: expruc Co-authored-by: YetheSamartaka <55753928+YetheSamartaka@users.noreply.github.com> Co-authored-by: Akutangulo From 0127ac39ebe8c96f5310aa378e8d3fa9428fea2c Mon Sep 17 00:00:00 2001 From: Shirasawa <764798966@qq.com> Date: Wed, 8 Oct 2025 14:20:47 +0800 Subject: [PATCH 02/54] i18n: improve Chinese translation --- src/lib/i18n/locales/zh-CN/translation.json | 50 +++++++++--------- src/lib/i18n/locales/zh-TW/translation.json | 56 ++++++++++----------- 2 files changed, 53 insertions(+), 53 deletions(-) diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index 31b248cd0d..36efca3046 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -344,7 +344,7 @@ "Create Folder": "创建分组", "Create Group": "创建权限组", "Create Knowledge": "创建知识", - "Create Model": "", + "Create Model": "创建模型", "Create new key": "创建新密钥", "Create new secret key": "创建新安全密钥", "Create Note": "创建笔记", @@ -352,7 +352,7 @@ "Created at": "创建于", "Created At": "创建于", "Created by": "作者", - "Created by you": "", + "Created by you": "由您创建", "CSV Import": "通过 CSV 文件导入", "Ctrl+Enter to Send": "Ctrl+Enter 发送", "Current Model": "当前模型", @@ -399,7 +399,7 @@ "Delete function?": "要删除此函数吗?", "Delete Message": "删除消息", "Delete message?": "要删除此消息吗?", - "Delete Model": "", + "Delete Model": "删除模型", "Delete note?": "要删除此笔记吗?", "Delete prompt?": "要删除此提示词吗?", "delete this link": "此处删除这个链接", @@ -505,7 +505,7 @@ "Embedding Batch Size": "嵌入层批处理大小 (Embedding Batch Size)", "Embedding Model": "嵌入模型", "Embedding Model Engine": "嵌入模型引擎", - "Embedding model set to \"{{embedding_model}}\"": "嵌入模型设置为 \"{{embedding_model}}\"", + "Embedding model set to \"{{embedding_model}}\"": "嵌入模型设置为 “{{embedding_model}}”", "Enable API Key": "启用 API 密钥", "Enable autocomplete generation for chat messages": "启用对话输入框内容自动补全", "Enable Code Execution": "启用代码执行", @@ -527,9 +527,9 @@ "Enter a detail about yourself for your LLMs to recall": "输入关于您的详细信息,以便大语言模型记住这些内容。", "Enter a title for the pending user info overlay. Leave empty for default.": "输入用户待激活界面的标题。留空使用默认", "Enter a watermark for the response. Leave empty for none.": "输入复制水印。留空则不添加", - "Enter additional headers in JSON format": "", - "Enter additional headers in JSON format (e.g. {{'{{\"X-Custom-Header\": \"value\"}}'}})": "", - "Enter additional parameters in JSON format": "", + "Enter additional headers in JSON format": "输入 JSON 格式的额外 HTTP 标头", + "Enter additional headers in JSON format (e.g. {{'{{\"X-Custom-Header\": \"value\"}}'}})": "输入 JSON 格式的额外 HTTP 标头(例如:{{'{{\"X-Custom-Header\": \"value\"}}'}})", + "Enter additional parameters in JSON format": "输入 JSON 格式的额外参数", "Enter api auth string (e.g. username:password)": "输入 API 鉴权路径(例如:用户名:密码)", "Enter Application DN": "输入 Application DN", "Enter Application DN Password": "输入 Application DN 密码", @@ -701,7 +701,7 @@ "Failed to load file content.": "文件内容加载失败", "Failed to move chat": "移动对话失败", "Failed to read clipboard contents": "读取剪贴板内容失败", - "Failed to render diagram": "", + "Failed to render diagram": "渲染图表失败", "Failed to save connections": "保存连接失败", "Failed to save conversation": "保存对话失败", "Failed to save models configuration": "保存模型配置失败", @@ -735,7 +735,7 @@ "Firecrawl API Key": "Firecrawl API 密钥", "Floating Quick Actions": "快捷操作浮窗", "Focus chat input": "激活对话输入框", - "Folder": "", + "Folder": "分组", "Folder Background Image": "分组背景图", "Folder deleted successfully": "分组删除成功", "Folder Name": "分组名称", @@ -805,8 +805,8 @@ "H2": "二级标题", "H3": "三级标题", "Haptic Feedback": "震动反馈", - "Headers": "", - "Headers must be a valid JSON object": "", + "Headers": "HTTP 标头", + "Headers must be a valid JSON object": "HTTP 标头必须是有效的 JSON 格式", "Height": "高度", "Hello, {{name}}": "您好,{{name}}", "Help": "帮助", @@ -1038,11 +1038,11 @@ "New Chat": "新对话", "New Folder": "创建分组", "New Function": "新函数", - "New Knowledge": "", - "New Model": "", + "New Knowledge": "创建知识库", + "New Model": "创建模型", "New Note": "新笔记", "New Password": "新密码", - "New Prompt": "", + "New Prompt": "创建提示词", "New Tool": "新工具", "new-channel": "新频道", "Next message": "下一条消息", @@ -1058,7 +1058,7 @@ "No distance available": "没有可用距离", "No feedbacks found": "暂无任何反馈", "No file selected": "未选中文件", - "No functions found": "", + "No functions found": "未找到函数", "No groups with access, add a group to grant access": "没有权限组,请添加一个权限组以授予访问权限", "No HTML, CSS, or JavaScript content found.": "未找到 HTML、CSS 或 JavaScript 内容。", "No inference engine with management support found": "未找到支持管理的推理引擎", @@ -1069,14 +1069,14 @@ "No models selected": "未选择任何模型", "No Notes": "没有笔记", "No notes found": "没有任何笔记", - "No prompts found": "", + "No prompts found": "未找到提示词", "No results": "未找到结果", "No results found": "未找到结果", "No search query generated": "未生成搜索查询", "No source available": "没有可用引用来源", "No sources found": "未找到任何引用来源", "No suggestion prompts": "没有推荐提示词", - "No tools found": "", + "No tools found": "未找到工具", "No users were found.": "未找到用户", "No valves": "没有配置项", "No valves to update": "没有需要更新的配置项", @@ -1233,9 +1233,9 @@ "Prompts Public Sharing": "提示词公开共享", "Provider Type": "服务提供商类型", "Public": "公共", - "Pull \"{{searchValue}}\" from Ollama.com": "从 Ollama.com 拉取“{{searchValue}}”", - "Pull a model from Ollama.com": "从 Ollama.com 拉取一个模型", - "Pull Model": "", + "Pull \"{{searchValue}}\" from Ollama.com": "从 Ollama.com 下载 “{{searchValue}}”", + "Pull a model from Ollama.com": "从 Ollama.com 下载模型", + "Pull Model": "下载模型", "pypdfium2": "pypdfium2", "Query Generation Prompt": "查询生成提示词", "Querying": "查询中", @@ -1382,7 +1382,7 @@ "Select how to split message text for TTS requests": "选择消息文本拆分方法,用于 TTS 请求。", "Select Knowledge": "选择知识", "Select only one model to call": "只允许选择一个模型进行语音通话", - "Select view": "", + "Select view": "选择视图", "Selected model(s) do not support image inputs": "所选择的模型不支持处理图像", "semantic": "语义", "Send": "发送", @@ -1423,7 +1423,7 @@ "Share Chat": "分享对话", "Share to Open WebUI Community": "分享到 Open WebUI 社区", "Share your background and interests": "分享您的经历和兴趣爱好", - "Shared with you": "", + "Shared with you": "已共享给您", "Sharing Permissions": "共享权限", "Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "带星号 (*) 的快捷键受场景限制,仅在特定条件下生效。", "Show": "显示", @@ -1491,7 +1491,7 @@ "System Instructions": "系统指令", "System Prompt": "系统提示词", "Table Mode": "表格模式", - "Tag": "", + "Tag": "标签", "Tags": "标签", "Tags Generation": "标签生成", "Tags Generation Prompt": "标签生成提示词", @@ -1603,7 +1603,7 @@ "Transformers": "Transformers", "Trouble accessing Ollama?": "访问 Ollama 时遇到问题?", "Trust Proxy Environment": "信任代理环境", - "Try adjusting your search or filter to find what you are looking for.": "", + "Try adjusting your search or filter to find what you are looking for.": "请尝试调整您的搜索词或过滤器以找到您需要的内容。", "Try Again": "重新生成", "TTS Model": "文本转语音模型", "TTS Settings": "文本转语音设置", @@ -1640,7 +1640,7 @@ "Upload directory": "上传目录", "Upload files": "上传文件", "Upload Files": "上传文件", - "Upload Model": "", + "Upload Model": "上传模型", "Upload Pipeline": "上传 Pipeline", "Upload Progress": "上传进度", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "上传进度:{{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index 836e9fdeb6..f5ae080c62 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -344,7 +344,7 @@ "Create Folder": "建立分組", "Create Group": "建立群組", "Create Knowledge": "建立知識", - "Create Model": "", + "Create Model": "建立模型", "Create new key": "建立新的金鑰", "Create new secret key": "建立新的金鑰", "Create Note": "新增筆記", @@ -352,7 +352,7 @@ "Created at": "建立於", "Created At": "建立於", "Created by": "建立者", - "Created by you": "", + "Created by you": "由您建立", "CSV Import": "CSV 匯入", "Ctrl+Enter to Send": "使用 Ctrl+Enter 傳送", "Current Model": "目前模型", @@ -399,7 +399,7 @@ "Delete function?": "刪除函式?", "Delete Message": "刪除訊息", "Delete message?": "刪除訊息?", - "Delete Model": "", + "Delete Model": "刪除模型", "Delete note?": "刪除筆記?", "Delete prompt?": "刪除提示詞?", "delete this link": "刪除此連結", @@ -505,7 +505,7 @@ "Embedding Batch Size": "嵌入批次大小", "Embedding Model": "嵌入模型", "Embedding Model Engine": "嵌入模型引擎", - "Embedding model set to \"{{embedding_model}}\"": "嵌入模型已設定為 \"{{embedding_model}}\"", + "Embedding model set to \"{{embedding_model}}\"": "嵌入模型已設定為「{{embedding_model}}」", "Enable API Key": "啟用 API 金鑰", "Enable autocomplete generation for chat messages": "啟用對話訊息的自動完成", "Enable Code Execution": "啟用程式碼執行", @@ -527,9 +527,9 @@ "Enter a detail about yourself for your LLMs to recall": "輸入有關您的詳細資訊,讓您的大型語言模型可以回想起來", "Enter a title for the pending user info overlay. Leave empty for default.": "為待處理的使用者訊息覆蓋層輸入標題。留空以使用預設值。", "Enter a watermark for the response. Leave empty for none.": "請輸入回應浮水印內容,留空表示不使用浮水印。", - "Enter additional headers in JSON format": "", - "Enter additional headers in JSON format (e.g. {{'{{\"X-Custom-Header\": \"value\"}}'}})": "", - "Enter additional parameters in JSON format": "", + "Enter additional headers in JSON format": "請輸入額外的 HTTP 標頭,以 JSON 格式表示", + "Enter additional headers in JSON format (e.g. {{'{{\"X-Custom-Header\": \"value\"}}'}})": "請輸入額外的 HTTP 標頭,以 JSON 格式表示(例如:{{'{{\"X-Custom-Header\": \"value\"}}'}})", + "Enter additional parameters in JSON format": "請輸入額外的參數,以 JSON 格式表示", "Enter api auth string (e.g. username:password)": "輸入 API 驗證字串(例如:username:password)", "Enter Application DN": "輸入應用程式 DN", "Enter Application DN Password": "輸入應用程式 DN 密碼", @@ -701,7 +701,7 @@ "Failed to load file content.": "載入檔案內容失敗。", "Failed to move chat": "移動對話失敗", "Failed to read clipboard contents": "讀取剪貼簿內容失敗", - "Failed to render diagram": "", + "Failed to render diagram": "繪製圖表失敗", "Failed to save connections": "儲存連線失敗", "Failed to save conversation": "儲存對話失敗", "Failed to save models configuration": "儲存模型設定失敗", @@ -735,14 +735,14 @@ "Firecrawl API Key": "Firecrawl API 金鑰", "Floating Quick Actions": "浮動快速操作", "Focus chat input": "聚焦對話輸入", - "Folder": "", - "Folder Background Image": "資料夾背景圖", - "Folder deleted successfully": "成功刪除資料夾", + "Folder": "分組", + "Folder Background Image": "分組背景圖", + "Folder deleted successfully": "成功刪除分組", "Folder Name": "分組名稱", - "Folder name cannot be empty.": "資料夾名稱不能為空。", - "Folder name updated successfully": "成功更新資料夾名稱", + "Folder name cannot be empty.": "分組名稱不能為空。", + "Folder name updated successfully": "成功更新分組名稱", "Folder updated successfully": "分組更新成功", - "Folders": "資料夾", + "Folders": "分組", "Follow up": "跟進", "Follow Up Generation": "跟進內容生成", "Follow Up Generation Prompt": "跟進內容生成提示詞", @@ -805,8 +805,8 @@ "H2": "二級標題", "H3": "三級標題", "Haptic Feedback": "觸覺回饋", - "Headers": "", - "Headers must be a valid JSON object": "", + "Headers": "HTTP 標頭", + "Headers must be a valid JSON object": "HTTP 標頭必須是有效的 JSON 格式", "Height": "高度", "Hello, {{name}}": "您好,{{name}}", "Help": "說明", @@ -1038,11 +1038,11 @@ "New Chat": "新增對話", "New Folder": "新增資料夾", "New Function": "新增函式", - "New Knowledge": "", - "New Model": "", + "New Knowledge": "新增知識", + "New Model": "新增模型", "New Note": "新增筆記", "New Password": "新密碼", - "New Prompt": "", + "New Prompt": "新增提示詞", "New Tool": "新增工具", "new-channel": "new-channel", "Next message": "下一條訊息", @@ -1058,7 +1058,7 @@ "No distance available": "無可用距離", "No feedbacks found": "未找到回饋", "No file selected": "未選取檔案", - "No functions found": "", + "No functions found": "未找到函式", "No groups with access, add a group to grant access": "沒有具有存取權限的群組,新增群組以授予存取權限", "No HTML, CSS, or JavaScript content found.": "未找到 HTML、CSS 或 JavaScript 內容。", "No inference engine with management support found": "未找到支援管理功能的推理引擎", @@ -1069,14 +1069,14 @@ "No models selected": "未選取模型", "No Notes": "尚無筆記", "No notes found": "沒有任何筆記", - "No prompts found": "", + "No prompts found": "未找到提示詞", "No results": "沒有結果", "No results found": "未找到任何結果", "No search query generated": "未產生搜尋查詢", "No source available": "無可用來源", "No sources found": "未找到任何來源", "No suggestion prompts": "沒有建議提示詞", - "No tools found": "", + "No tools found": "未找到工具", "No users were found.": "未找到任何使用者", "No valves": "沒有設定項目", "No valves to update": "設定項目可更新", @@ -1235,7 +1235,7 @@ "Public": "公開", "Pull \"{{searchValue}}\" from Ollama.com": "從 Ollama.com 下載「{{searchValue}}」", "Pull a model from Ollama.com": "從 Ollama.com 下載模型", - "Pull Model": "", + "Pull Model": "下載模型", "pypdfium2": "pypdfium2", "Query Generation Prompt": "查詢生成提示詞", "Querying": "查詢中", @@ -1382,7 +1382,7 @@ "Select how to split message text for TTS requests": "選擇如何拆分訊息文字以用於 TTS 請求", "Select Knowledge": "選擇知識庫", "Select only one model to call": "僅選擇一個模型來呼叫", - "Select view": "", + "Select view": "選擇檢視", "Selected model(s) do not support image inputs": "選取的模型不支援圖片輸入", "semantic": "語義", "Send": "傳送", @@ -1423,7 +1423,7 @@ "Share Chat": "分享對話", "Share to Open WebUI Community": "分享到 Open WebUI 社群", "Share your background and interests": "分享您的背景與興趣", - "Shared with you": "", + "Shared with you": "分享給您", "Sharing Permissions": "分享權限設定", "Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "帶星號 (*) 的快捷鍵受場景限制,僅在特定條件下生效。", "Show": "顯示", @@ -1491,7 +1491,7 @@ "System Instructions": "系統指令", "System Prompt": "系統提示詞", "Table Mode": "表格模式", - "Tag": "", + "Tag": "標籤", "Tags": "標籤", "Tags Generation": "標籤生成", "Tags Generation Prompt": "標籤生成提示詞", @@ -1603,7 +1603,7 @@ "Transformers": "Transformers", "Trouble accessing Ollama?": "存取 Ollama 時遇到問題?", "Trust Proxy Environment": "信任代理環境", - "Try adjusting your search or filter to find what you are looking for.": "", + "Try adjusting your search or filter to find what you are looking for.": "調整您的搜尋或過濾器以找到您正在尋找的內容。", "Try Again": "重新產生", "TTS Model": "文字轉語音 (TTS) 模型", "TTS Settings": "文字轉語音 (TTS) 設定", @@ -1640,7 +1640,7 @@ "Upload directory": "上傳目錄", "Upload files": "上傳檔案", "Upload Files": "上傳檔案", - "Upload Model": "", + "Upload Model": "上傳模型", "Upload Pipeline": "上傳管線", "Upload Progress": "上傳進度", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "上傳進度:{{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", From 38a39b58925fb9f03b9d9f7656fde5ba391536a1 Mon Sep 17 00:00:00 2001 From: Kylapaallikko Date: Wed, 8 Oct 2025 16:31:18 +0300 Subject: [PATCH 03/54] Update fi-FI translation.json Added missing translations --- src/lib/i18n/locales/fi-FI/translation.json | 138 ++++++++++---------- 1 file changed, 69 insertions(+), 69 deletions(-) diff --git a/src/lib/i18n/locales/fi-FI/translation.json b/src/lib/i18n/locales/fi-FI/translation.json index 38ff0ea2b1..5e455e78a4 100644 --- a/src/lib/i18n/locales/fi-FI/translation.json +++ b/src/lib/i18n/locales/fi-FI/translation.json @@ -16,7 +16,7 @@ "{{COUNT}} Replies": "{{COUNT}} vastausta", "{{COUNT}} Sources": "{{COUNT}} lähdettä", "{{COUNT}} words": "{{COUNT}} sanaa", - "{{LOCALIZED_DATE}} at {{LOCALIZED_TIME}}": "", + "{{LOCALIZED_DATE}} at {{LOCALIZED_TIME}}": "{{LOCALIZED_DATE}} {{LOCALIZED_TIME}}", "{{model}} download has been canceled": "{{model}} lataus peruttu", "{{user}}'s Chats": "{{user}}:n keskustelut", "{{webUIName}} Backend Required": "{{webUIName}}-backend vaaditaan", @@ -65,7 +65,7 @@ "Add User Group": "Lisää käyttäjäryhmä", "Additional Config": "Lisäasetukset", "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": "", - "Additional Parameters": "", + "Additional Parameters": "Lisäparametrit", "Adjusting these settings will apply changes universally to all users.": "Näiden asetusten säätäminen vaikuttaa kaikkiin käyttäjiin.", "admin": "hallinta", "Admin": "Ylläpito", @@ -76,7 +76,7 @@ "Advanced Params": "Edistyneet parametrit", "AI": "AI", "All": "Kaikki", - "All chats have been unarchived.": "", + "All chats have been unarchived.": "Kaikki keskustelut poistettu arkistosta.", "All Documents": "Kaikki asiakirjat", "All models deleted successfully": "Kaikki mallit poistettu onnistuneesti", "Allow Call": "Salli puhelut", @@ -151,7 +151,7 @@ "Attach file from knowledge": "Liitä tiedosto tietokannasta", "Attach Knowledge": "Liitä tietoa", "Attach Notes": "Liitä muistiinpanoja", - "Attach Webpage": "", + "Attach Webpage": "Liitä verkkosivu", "Attention to detail": "Huomio yksityiskohtiin", "Attribute for Mail": "Attribuutti sähköpostille", "Attribute for Username": "Attribuutti käyttäjätunnukselle", @@ -344,7 +344,7 @@ "Create Folder": "Luo kansio", "Create Group": "Luo ryhmä", "Create Knowledge": "Luo tietoa", - "Create Model": "", + "Create Model": "Luo malli", "Create new key": "Luo uusi avain", "Create new secret key": "Luo uusi salainen avain", "Create Note": "Luo muistiinpano", @@ -352,7 +352,7 @@ "Created at": "Luotu", "Created At": "Luotu", "Created by": "Luonut", - "Created by you": "", + "Created by you": "Sinun luomasi", "CSV Import": "CSV-tuonti", "Ctrl+Enter to Send": "Ctrl+Enter lähettääksesi", "Current Model": "Nykyinen malli", @@ -399,7 +399,7 @@ "Delete function?": "Haluatko varmasti poistaa tämän toiminnon?", "Delete Message": "Poista viesti", "Delete message?": "Poista viesti?", - "Delete Model": "", + "Delete Model": "Poista malli", "Delete note?": "Poista muistiinpano?", "Delete prompt?": "Haluatko varmasti poistaa tämän kehotteen?", "delete this link": "poista tämä linkki", @@ -435,7 +435,7 @@ "Discover, download, and explore custom tools": "Etsi, lataa ja tutki mukautettuja työkaluja", "Discover, download, and explore model presets": "Löydä ja lataa mallien esiasetuksia", "Display": "Näytä", - "Display chat title in tab": "", + "Display chat title in tab": "Näytä keskustelu otiskko välilehdessä", "Display Emoji in Call": "Näytä hymiöitä puhelussa", "Display Multi-model Responses in Tabs": "Näytä usean mallin vastaukset välilehdissä", "Display the username instead of You in the Chat": "Näytä käyttäjänimi keskustelussa \"Sinä\" -tekstin sijaan", @@ -527,9 +527,9 @@ "Enter a detail about yourself for your LLMs to recall": "Kirjoita yksityiskohta itsestäsi, jonka LLM-ohjelmat voivat muistaa", "Enter a title for the pending user info overlay. Leave empty for default.": "Kirjoita infon otsikko odottaville käyttäjille. Käytä oletusta jättämällä tyhjäksi.", "Enter a watermark for the response. Leave empty for none.": "Kirjoita vastauksen vesileima. Jätä tyhjäksi, jos et halua mitään.", - "Enter additional headers in JSON format": "", - "Enter additional headers in JSON format (e.g. {{'{{\"X-Custom-Header\": \"value\"}}'}})": "", - "Enter additional parameters in JSON format": "", + "Enter additional headers in JSON format": "Kirjoita lisä ylätunnisteita JSON muodossa", + "Enter additional headers in JSON format (e.g. {{'{{\"X-Custom-Header\": \"value\"}}'}})": "Kirjoita lisä ylätunnisteita JSON muodossa (esim. {{'{{\"X-Custom-Header\": \"value\"}}'}}", + "Enter additional parameters in JSON format": "Kirjoita lisäparametrit JSON muodossa", "Enter api auth string (e.g. username:password)": "Kirjoita API-todennusmerkkijono (esim. käyttäjätunnus:salasana)", "Enter Application DN": "Kirjoita sovelluksen DN", "Enter Application DN Password": "Kirjoita sovelluksen DN-salasana", @@ -585,7 +585,7 @@ "Enter name": "Kirjoita nimi", "Enter New Password": "Kirjoita uusi salasana", "Enter Number of Steps (e.g. 50)": "Kirjoita askelten määrä (esim. 50)", - "Enter Ollama Cloud API Key": "", + "Enter Ollama Cloud API Key": "Kirjoita Ollama Cloud API avain", "Enter Perplexity API Key": "Aseta Perplexity API-avain", "Enter Playwright Timeout": "Aseta Playwright aikakatkaisu", "Enter Playwright WebSocket URL": "Aseta Playwright WebSocket-aikakatkaisu", @@ -696,12 +696,12 @@ "Failed to extract content from the file.": "Tiedoston sisällön pomiminen epäonnistui.", "Failed to fetch models": "Mallien hakeminen epäonnistui", "Failed to generate title": "Otsikon luonti epäonnistui", - "Failed to import models": "", + "Failed to import models": "Mallien tuonti 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": "Keskustelun siirto epäonnistui", "Failed to read clipboard contents": "Leikepöydän sisällön lukeminen epäonnistui", - "Failed to render diagram": "", + "Failed to render diagram": "Diagrammin renderöinti epäonnistui", "Failed to save connections": "Yhteyksien tallentaminen epäonnistui", "Failed to save conversation": "Keskustelun tallentaminen epäonnistui", "Failed to save models configuration": "Mallien määrityksen tallentaminen epäonnistui", @@ -735,7 +735,7 @@ "Firecrawl API Key": "Firecrawl API-avain", "Floating Quick Actions": "Kelluvat pikakomennot", "Focus chat input": "Fokusoi syöttökenttään", - "Folder": "", + "Folder": "Kansio", "Folder Background Image": "Kansion taustakuva", "Folder deleted successfully": "Kansio poistettu onnistuneesti", "Folder Name": "Kansion nimi", @@ -782,7 +782,7 @@ "Generate an image": "Luo kuva", "Generate Image": "Luo kuva", "Generate prompt pair": "Luo kehotepari", - "Generated Image": "", + "Generated Image": "Luo kuva", "Generating search query": "Luodaan hakukyselyä", "Generating...": "Luodaan...", "Get information on {{name}} in the UI": "Hae tietoja {{name}} -nimestä käyttöliittymässä", @@ -805,8 +805,8 @@ "H2": "H2", "H3": "H3", "Haptic Feedback": "Haptinen palaute", - "Headers": "", - "Headers must be a valid JSON object": "", + "Headers": "Ylätunnisteet", + "Headers must be a valid JSON object": "Ylätunnisteet täytyy olla kelvollisia JSON-objekteja", "Height": "Korkeus", "Hello, {{name}}": "Hei, {{name}}", "Help": "Ohje", @@ -826,7 +826,7 @@ "Hybrid Search": "Hybridihaku", "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.": "Vahvistan, että olen lukenut ja ymmärrän toimintani seuraukset. Olen tietoinen mielivaltaisen koodin suorittamiseen liittyvistä riskeistä ja olen varmistanut lähteen luotettavuuden.", "ID": "Tunnus", - "ID cannot contain \":\" or \"|\" characters": "", + "ID cannot contain \":\" or \"|\" characters": "ID ei voi sisältää \":\" tai \"|\" kirjaimia", "iframe Sandbox Allow Forms": "Salli lomakkeet iframe hiekkalaatikossa", "iframe Sandbox Allow Same Origin": "Salli iframe hiekkalaatikko samasta alkuperästä", "Ignite curiosity": "Sytytä uteliaisuus", @@ -851,7 +851,7 @@ "Import Notes": "Tuo muistiinpanoja", "Import Presets": "Tuo esiasetuksia", "Import Prompt Suggestions": "Tuo kehote ehdotukset", - "Import successful": "", + "Import successful": "Tuonti onnistui", "Important Update": "Tärkeä päivitys", "In order to force OCR, performing OCR must be enabled.": "", "Include": "Sisällytä", @@ -879,7 +879,7 @@ "Invalid file format.": "Virheellinen tiedostomuoto.", "Invalid JSON file": "Virheellinen JSON tiedosto", "Invalid JSON format for ComfyUI Workflow.": "Virhellinen JSON muotoilu ComfyUI työnkululle.", - "Invalid JSON format for Parameters": "", + "Invalid JSON format for Parameters": "Virheellinen JSON muotoilu parametreille", "Invalid JSON format in Additional Config": "Virheellinen JSON muotoilu lisäasetuksissa", "Invalid Tag": "Virheellinen tagi", "is typing...": "Kirjoittaa...", @@ -889,7 +889,7 @@ "join our Discord for help.": "liity Discordiimme saadaksesi apua.", "JSON": "JSON", "JSON Preview": "JSON-esikatselu", - "JSON Spec": "", + "JSON Spec": "JSON Spec", "July": "heinäkuu", "June": "kesäkuu", "Jupyter Auth": "Jupyter todennus", @@ -973,8 +973,8 @@ "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", - "MCP": "", - "MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "", + "MCP": "MCP", + "MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP-tuki on kokeellinen ja sen määritykset muuttuvat usein, mikä voi johtaa yhteensopivuus ongelmiin. OpenAPI-määritysten tuesta vastaa suoraan Open WebUI -tiimi, joten se on luotettavampi vaihtoehto yhteensopivuuden kannalta.", "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", @@ -1023,7 +1023,7 @@ "Models": "Mallit", "Models Access": "Mallien käyttöoikeudet", "Models configuration saved successfully": "Mallien määritykset tallennettu onnistuneesti", - "Models imported successfully": "", + "Models imported successfully": "Mallit tuotiin onnistuneesti", "Models Public Sharing": "Mallin julkinen jakaminen", "Mojeek Search API Key": "Mojeek Search API -avain", "More": "Lisää", @@ -1038,11 +1038,11 @@ "New Chat": "Uusi keskustelu", "New Folder": "Uusi kansio", "New Function": "Uusi toiminto", - "New Knowledge": "", - "New Model": "", + "New Knowledge": "Uutta tietoa", + "New Model": "Uusi malli", "New Note": "Uusi muistiinpano", "New Password": "Uusi salasana", - "New Prompt": "", + "New Prompt": "Uusi kehoite", "New Tool": "Uusi työkalu", "new-channel": "uusi-kanava", "Next message": "Seuraava viesti", @@ -1058,7 +1058,7 @@ "No distance available": "Etäisyyttä ei saatavilla", "No feedbacks found": "Palautteita ei löytynyt", "No file selected": "Tiedostoa ei ole valittu", - "No functions found": "", + "No functions found": "Funktioita ei löytynyt", "No groups with access, add a group to grant access": "Ei ryhmiä, joilla on pääsy, lisää ryhmä antaaksesi pääsyn", "No HTML, CSS, or JavaScript content found.": "HTML-, CSS- tai JavaScript-sisältöä ei löytynyt.", "No inference engine with management support found": "", @@ -1069,14 +1069,14 @@ "No models selected": "Malleja ei ole valittu", "No Notes": "Ei muistiinpanoja", "No notes found": "Muistiinpanoja ei löytynyt", - "No prompts found": "", + "No prompts found": "Kehoitteita ei löytynyt", "No results": "Ei tuloksia", "No results found": "Ei tuloksia", "No search query generated": "Hakukyselyä ei luotu", "No source available": "Lähdettä ei saatavilla", "No sources found": "Lähteitä ei löytynyt", "No suggestion prompts": "Ei ehdotettuja promptteja", - "No tools found": "", + "No tools found": "Työkaluja ei löytynyt", "No users were found.": "Käyttäjiä ei löytynyt.", "No valves": "Ei venttiileitä", "No valves to update": "Ei venttiileitä päivitettäväksi", @@ -1084,18 +1084,18 @@ "None": "Ei mikään", "Not factually correct": "Ei faktuaalisesti oikein", "Not helpful": "Ei hyödyllinen", - "Not Registered": "", + "Not Registered": "Ei kirjautunut", "Note": "Muistiinpano", "Note deleted successfully": "Muistiinpano poistettiin onnistuneesti", "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Huomautus: Jos asetat vähimmäispistemäärän, haku palauttaa vain sellaiset asiakirjat, joiden pistemäärä on vähintään vähimmäismäärä.", "Notes": "Muistiinpanot", - "Notes Public Sharing": "", + "Notes Public Sharing": "Muistiinpanojen julkinen jako", "Notification Sound": "Ilmoitusääni", "Notification Webhook": "Webhook ilmoitus", "Notifications": "Ilmoitukset", "November": "marraskuu", "OAuth": "OAuth", - "OAuth 2.1": "", + "OAuth 2.1": "OAuth 2.1", "OAuth ID": "OAuth-tunnus", "October": "lokakuu", "Off": "Pois päältä", @@ -1104,7 +1104,7 @@ "Ollama": "Ollama", "Ollama API": "Ollama API", "Ollama API settings updated": "Ollama API -asetukset päivitetty", - "Ollama Cloud API Key": "", + "Ollama Cloud API Key": "Ollama Cloud API avain", "Ollama Version": "Ollama-versio", "On": "Päällä", "OneDrive": "OneDrive", @@ -1138,8 +1138,8 @@ "OpenAI API Key is required.": "OpenAI API -avain vaaditaan.", "OpenAI API settings updated": "OpenAI API -asetukset päivitetty", "OpenAI URL/Key required.": "OpenAI URL/avain vaaditaan.", - "OpenAPI": "", - "OpenAPI Spec": "", + "OpenAPI": "OpenAPI", + "OpenAPI Spec": "OpenAPI Spec", "openapi.json URL or Path": "openapi.json verkko-osoite tai polku", "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.", @@ -1196,18 +1196,18 @@ "Please do not close the settings page while loading the model.": "Älä sulje asetussivua mallin latautuessa.", "Please enter a message or attach a file.": "Kirjoita viesti tai liittä tiedosto.", "Please enter a prompt": "Kirjoita kehote", - "Please enter a valid ID": "", - "Please enter a valid JSON spec": "", + "Please enter a valid ID": "Kirjoita kelvollinen ID", + "Please enter a valid JSON spec": "Kirjoita kelvollinen JSON speksi", "Please enter a valid path": "Kirjoita kelvollinen polku", "Please enter a valid URL": "Kirjoita kelvollinen verkko-osoite", - "Please enter a valid URL.": "", + "Please enter a valid URL.": "Kirjoita kelvollinen verkko-osoite", "Please fill in all fields.": "Täytä kaikki kentät.", - "Please register the OAuth client": "", - "Please save the connection to persist the OAuth client information and do not change the ID": "", + "Please register the OAuth client": "Rekisteröi OAuth asiakasohjelma", + "Please save the connection to persist the OAuth client information and do not change the ID": "Tallenna yhteys, jotta OAuth-asiakastiedot säilyvät, äläkä muuta tunnusta.", "Please select a model first.": "Valitse ensin malli.", "Please select a model.": "Valitse malli.", "Please select a reason": "Valitse syy", - "Please select a valid JSON file": "", + "Please select a valid JSON file": "Valitse kelvollinen JSON-tiedosto", "Please wait until all files are uploaded.": "Odota kunnes kaikki tiedostot ovat ladattu.", "Port": "Portti", "Positive attitude": "Positiivinen asenne", @@ -1235,7 +1235,7 @@ "Public": "Julkinen", "Pull \"{{searchValue}}\" from Ollama.com": "Lataa \"{{searchValue}}\" Ollama.comista", "Pull a model from Ollama.com": "Lataa malli Ollama.comista", - "Pull Model": "", + "Pull Model": "Lataa malli", "pypdfium2": "pypdfium2", "Query Generation Prompt": "Kyselytulosten luontikehote", "Querying": "Kysely", @@ -1245,24 +1245,24 @@ "Re-rank models by topic similarity": "Uudelleenjärjestä mallit aiheyhteyden mukaan", "Read": "Lue", "Read Aloud": "Lue ääneen", - "Read more →": "", + "Read more →": "Lue lisää →", "Reason": "Päättely", "Reasoning Effort": "Päättelyn määrä", "Reasoning Tags": "Päättely tagit", "Record": "Nauhoita", "Record voice": "Nauhoita ääntä", "Redirecting you to Open WebUI Community": "Ohjataan sinut OpenWebUI-yhteisöön", - "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.": "", + "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.": "Vähentää hölynpölyn tuottamisen todennäköisyyttä. Korkeampi arvo (esim. 100) antaa monipuolisempia vastauksia, kun taas matalampi arvo (esim. 10) on varovaisempi.", "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "Viittaa itseen \"Käyttäjänä\" (esim. \"Käyttäjä opiskelee espanjaa\")", "Reference Chats": "Viitekeskustelut", "Refused when it shouldn't have": "Kieltäytyi, vaikka ei olisi pitänyt", "Regenerate": "Regeneroi", "Regenerate Menu": "Regenerointi ikkuna", - "Register Again": "", - "Register Client": "", - "Registered": "", - "Registration failed": "", - "Registration successful": "", + "Register Again": "Rekisteröi uudelleen", + "Register Client": "Rekiströi asiakasohjelma", + "Registered": "Rekisteröity", + "Registration failed": "Rekisteröinti epäonnistui", + "Registration successful": "Rekisteröinti onnistui", "Reindex": "Indeksoi uudelleen", "Reindex Knowledge Base Vectors": "Indeksoi tietämyksen vektorit uudelleen", "Release Notes": "Julkaisutiedot", @@ -1279,10 +1279,10 @@ "Remove this tag from list": "Poista tämä tagi listalta", "Rename": "Nimeä uudelleen", "Reorder Models": "Uudelleenjärjestä malleja", - "Reply": "", - "Reply in Thread": "Vastauksia ", - "Reply to thread...": "", - "Replying to {{NAME}}": "", + "Reply": "Vastaa", + "Reply in Thread": "Vastaa ketjussa", + "Reply to thread...": "Vastaa ketjussa...", + "Replying to {{NAME}}": "Vastaa {{NAME}}", "required": "vaaditaan", "Reranking Engine": "Uudelleenpisteytymismallin moottori", "Reranking Model": "Uudelleenpisteytymismalli", @@ -1383,7 +1383,7 @@ "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", - "Select view": "", + "Select view": "Valitse näkymä", "Selected model(s) do not support image inputs": "Valitut mallit eivät tue kuvasöytteitä", "semantic": "Semaattinen", "Send": "Lähetä", @@ -1424,7 +1424,7 @@ "Share Chat": "Jaa keskustelu", "Share to Open WebUI Community": "Jaa OpenWebUI-yhteisöön", "Share your background and interests": "Jaa taustasi ja kiinnostuksen kohteesi", - "Shared with you": "", + "Shared with you": "Jaettu kanssasi", "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ä", @@ -1471,7 +1471,7 @@ "Stop Sequence": "Lopetussekvenssi", "Stream Chat Response": "Streamaa keskusteluvastaus", "Stream Delta Chunk Size": "Striimin delta-lohkon koko", - "Streamable HTTP": "", + "Streamable HTTP": "Streamable HTTP", "Strikethrough": "Yliviivaus", "Strip Existing OCR": "Poista olemassa oleva OCR", "Strip existing OCR text from the PDF and re-run OCR. Ignored if Force OCR is enabled. Defaults to False.": "Poista olemassa oleva OCR-teksti PDF-tiedostosta ja suorita OCR uudelleen. Ohitetaan, jos pakota OCR -asetus on käytössä. Oletusarvo ei käytössä.", @@ -1492,7 +1492,7 @@ "System Instructions": "Järjestelmäohjeet", "System Prompt": "Järjestelmäkehote", "Table Mode": "Tablet-moodi", - "Tag": "", + "Tag": "Tagi", "Tags": "Tagit", "Tags Generation": "Tagien luonti", "Tags Generation Prompt": "Tagien luontikehote", @@ -1526,7 +1526,7 @@ "The maximum file size in MB. If the file size exceeds this limit, the file will not be uploaded.": "Enimmäistiedostokoko megatavuissa. Jos tiedoston koko ylittää tämän rajan, tiedostoa ei ladata.", "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.": "Suurin sallittu tiedostojen määrä käytettäväksi kerralla chatissa. Jos tiedostojen määrä ylittää tämän rajan, niitä ei ladata.", "The output format for the text. Can be 'json', 'markdown', or 'html'. Defaults to 'markdown'.": "Tekstin tulostusmuoto. Voi olla 'json', 'markdown' tai 'html'. Oletusarvo on '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.": "Antamasi salasanat eivät täysin täsmää. Tarkista ne ja yritä uudelleen.", "The score should be a value between 0.0 (0%) and 1.0 (100%).": "Pisteytyksen tulee olla arvo välillä 0,0 (0 %) ja 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.": "Mallin striimin delta-lohkon koko. Lohkon koon kasvattaminen saa mallin vastaamaan kerralla suuremmilla tekstipaloilla.", "The temperature of the model. Increasing the temperature will make the model answer more creatively.": "Mallin lämpötila. Lisäämällä lämpötilaa mallin vastaukset ovat luovempia.", @@ -1539,7 +1539,7 @@ "This chat won't appear in history and your messages will not be saved.": "Tämä keskustelu ei näy historiassa, eikä viestejäsi tallenneta.", "This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Tämä varmistaa, että arvokkaat keskustelusi tallennetaan turvallisesti backend-tietokantaasi. Kiitos!", "This feature is experimental and may be modified or discontinued without notice.": "Tämä ominaisuus on kokeellinen ja sitä voidaan muokata tai se voidaan lopettaa ilman erillistä ilmoitusta.", - "This is a default user permission and will remain enabled.": "", + "This is a default user permission and will remain enabled.": "Tämä on oletusarvoinen käyttäjäoikeus ja pysyy käytössä.", "This is an experimental feature, it may not function as expected and is subject to change at any time.": "Tämä on kokeellinen ominaisuus, se ei välttämättä toimi odotetulla tavalla ja se voi muuttua milloin tahansa.", "This model is not publicly available. Please select another model.": "Tämä malli ei ole julkisesti saatavilla. Valitse toinen malli.", "This option controls how long the model will stay loaded into memory following the request (default: 5m)": "Tämä asetus määrittää kuinka kauan malli pysyy ladattuna muistissa pyynnön jälkeen (oletusarvo: 5m)", @@ -1604,13 +1604,13 @@ "Transformers": "Muunnokset", "Trouble accessing Ollama?": "Ongelmia Ollama-yhteydessä?", "Trust Proxy Environment": "Luota välityspalvelimen ympäristöön", - "Try adjusting your search or filter to find what you are looking for.": "", + "Try adjusting your search or filter to find what you are looking for.": "Kokeile muokata hakuasi tai suodatintasi löytääksesi etsimäsi.", "Try Again": "Yritä uudelleen", "TTS Model": "Puhesynteesimalli", "TTS Settings": "Puhesynteesiasetukset", "TTS Voice": "Puhesynteesiääni", "Type": "Tyyppi", - "Type here...": "", + "Type here...": "Kirjoita tähän...", "Type Hugging Face Resolve (Download) URL": "Kirjoita Hugging Face -resolve-latausosoite", "Uh-oh! There was an issue with the response.": "Voi ei! Vastauksessa ilmeni ongelma.", "UI": "Käyttöliittymä", @@ -1619,7 +1619,7 @@ "Unarchive Chat": "Pura keskustelun arkistointi", "Underline": "Alleviivaus", "Unknown": "Tuntematon", - "Unknown User": "", + "Unknown User": "Tuntematon käyttäjä", "Unloads {{FROM_NOW}}": "Purkuja {{FROM_NOW}}", "Unlock mysteries": "Selvitä arvoituksia", "Unpin": "Irrota kiinnitys", @@ -1641,7 +1641,7 @@ "Upload directory": "Lataa hakemisto", "Upload files": "Lataa tiedostoja", "Upload Files": "Lataa tiedostoja", - "Upload Model": "", + "Upload Model": "Lataa malli", "Upload Pipeline": "Lataa putki", "Upload Progress": "Latauksen edistyminen", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Latauksen edistyminen: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", @@ -1663,7 +1663,7 @@ "Username": "Käyttäjätunnus", "Users": "Käyttäjät", "Uses DefaultAzureCredential to authenticate": "Käyttää DefaultAzureCredential todentamiseen", - "Uses OAuth 2.1 Dynamic Client Registration": "", + "Uses OAuth 2.1 Dynamic Client Registration": "Käyttää OAuth 2.1 -dynaamista asiakasrekisteröintiä", "Using Entire Document": "Koko asiakirjan käyttäminen", "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.", @@ -1698,7 +1698,7 @@ "Web Search in Chat": "Verkkohaku keskustelussa", "Web Search Query Generation": "Verkkohakukyselyn luonti", "Webhook URL": "Webhook verkko-osoite", - "Webpage URL": "", + "Webpage URL": "Verkkosivun verkko-osoite", "WebUI Settings": "WebUI-asetukset", "WebUI URL": "WebUI-osoite", "WebUI will make requests to \"{{url}}\"": "WebUI lähettää pyyntöjä osoitteeseen \"{{url}}\"", @@ -1733,8 +1733,8 @@ "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Voit keskustella enintään {{maxCount}} tiedoston kanssa kerralla.", "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Voit personoida vuorovaikutustasi LLM-ohjelmien kanssa lisäämällä muistoja 'Hallitse'-painikkeen kautta, jolloin ne ovat hyödyllisempiä ja räätälöityjä sinua varten.", "You cannot upload an empty file.": "Et voi ladata tyhjää tiedostoa.", - "You do not have permission to send messages in this channel.": "", - "You do not have permission to send messages in this thread.": "", + "You do not have permission to send messages in this channel.": "Sinulla ei ole oikeuksia lähettää viestejä tähän kanavaan.", + "You do not have permission to send messages in this thread.": "Sinulla ei ole oikeuksia lähettää viestejä tähän ketjuun.", "You do not have permission to upload files.": "Sinulla ei ole lupaa ladata tiedostoja.", "You have no archived conversations.": "Sinulla ei ole arkistoituja keskusteluja.", "You have shared this chat": "Olet jakanut tämän keskustelun", From 3512904e00f6b65e058a925cb1e54e71fa464c9c Mon Sep 17 00:00:00 2001 From: joaoback <156559121+joaoback@users.noreply.github.com> Date: Wed, 8 Oct 2025 11:04:27 -0300 Subject: [PATCH 04/54] Update translation.json (pt-BR) Translations of new items added in the latest version. --- src/lib/i18n/locales/pt-BR/translation.json | 54 ++++++++++++--------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/src/lib/i18n/locales/pt-BR/translation.json b/src/lib/i18n/locales/pt-BR/translation.json index 3e167e3bdd..8b2dd92709 100644 --- a/src/lib/i18n/locales/pt-BR/translation.json +++ b/src/lib/i18n/locales/pt-BR/translation.json @@ -65,7 +65,7 @@ "Add User Group": "Adicionar grupo de usuários", "Additional Config": "Configuração adicional", "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": "Opções de configuração adicionais para o marcador. Deve ser uma string JSON com pares chave-valor. Por exemplo, '{\"key\": \"value\"}'. As chaves suportadas incluem: 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", - "Additional Parameters": "", + "Additional Parameters": "Parâmetros adicionais", "Adjusting these settings will apply changes universally to all users.": "Ajustar essas configurações aplicará mudanças para todos os usuários.", "admin": "admin", "Admin": "Admin", @@ -344,7 +344,7 @@ "Create Folder": "Criar Pasta", "Create Group": "Criar Grupo", "Create Knowledge": "Criar Base de Conhecimento", - "Create Model": "", + "Create Model": "Criar modelo", "Create new key": "Criar nova chave", "Create new secret key": "Criar nova chave secreta", "Create Note": "Criar Nota", @@ -352,7 +352,7 @@ "Created at": "Criado em", "Created At": "Criado Em", "Created by": "Criado por", - "Created by you": "", + "Created by you": "Criado por você", "CSV Import": "Importação CSV", "Ctrl+Enter to Send": "Ctrl+Enter para enviar", "Current Model": "Modelo Atual", @@ -399,7 +399,7 @@ "Delete function?": "Excluir função?", "Delete Message": "Excluir mensagem", "Delete message?": "Excluir mensagem?", - "Delete Model": "", + "Delete Model": "Excluir modelo", "Delete note?": "Excluir nota?", "Delete prompt?": "Excluir prompt?", "delete this link": "Excluir este link", @@ -527,9 +527,9 @@ "Enter a detail about yourself for your LLMs to recall": "Digite um detalhe sobre você para seus LLMs lembrarem", "Enter a title for the pending user info overlay. Leave empty for default.": "Insira um título para a sobreposição de informações pendentes do usuário. Deixe em branco como padrão.", "Enter a watermark for the response. Leave empty for none.": "Insira uma marca d'água para a resposta. Deixe em branco se não houver nenhuma.", - "Enter additional headers in JSON format": "", - "Enter additional headers in JSON format (e.g. {{'{{\"X-Custom-Header\": \"value\"}}'}})": "", - "Enter additional parameters in JSON format": "", + "Enter additional headers in JSON format": "Insira cabeçalhos adicionais no formato JSON", + "Enter additional headers in JSON format (e.g. {{'{{\"X-Custom-Header\": \"value\"}}'}})": "Insira cabeçalhos adicionais no formato JSON (por exemplo, {{'{{\"X-Custom-Header\": \"value\"}}'}})", + "Enter additional parameters in JSON format": "Insira parâmetros adicionais no formato JSON", "Enter api auth string (e.g. username:password)": "Digite a string de autenticação da API (por exemplo, username:password)", "Enter Application DN": "Digite o DN da Aplicação", "Enter Application DN Password": "Digite a Senha do DN da Aplicação", @@ -674,9 +674,13 @@ "Export chat (.json)": "Exportar chat (.json)", "Export Chats": "Exportar Chats", "Export Config to JSON File": "Exportar Configuração para Arquivo JSON", + + "Export Presets": "Exportar Presets", "Export Prompt Suggestions": "Exportar Sugestões de Prompt", + "Export to CSV": "Exportar para CSV", + "Export Users": "Exportar Usuários", "External": "Externo", "External Document Loader URL required.": "URL do carregador de documentos externo necessária.", @@ -701,7 +705,7 @@ "Failed to load file content.": "Falha ao carregar o conteúdo do arquivo.", "Failed to move chat": "Falha ao mover o chat", "Failed to read clipboard contents": "Falha ao ler o conteúdo da área de transferência", - "Failed to render diagram": "", + "Failed to render diagram": "Falha ao renderizar o diagrama", "Failed to save connections": "Falha ao salvar conexões", "Failed to save conversation": "Falha ao salvar a conversa", "Failed to save models configuration": "Falha ao salvar a configuração dos modelos", @@ -735,7 +739,7 @@ "Firecrawl API Key": "Chave de API do Firecrawl", "Floating Quick Actions": "Ações rápidas flutuantes", "Focus chat input": "Focar entrada de chat", - "Folder": "", + "Folder": "Pasta", "Folder Background Image": "Imagem de fundo da pasta", "Folder deleted successfully": "Pasta excluída com sucesso", "Folder Name": "Nome da Pasta", @@ -805,8 +809,8 @@ "H2": "Subtítulo", "H3": "Sub-subtítulos", "Haptic Feedback": "Feedback Tátil", - "Headers": "", - "Headers must be a valid JSON object": "", + "Headers": "Cabeçalhos", + "Headers must be a valid JSON object": "Os cabeçalhos devem ser um objeto JSON válido", "Height": "Altura", "Hello, {{name}}": "Olá, {{name}}", "Help": "Ajuda", @@ -848,10 +852,14 @@ "Import Chats": "Importar Chats", "Import Config from JSON File": "Importar Configurações de JSON", "Import From Link": "Importar do link", + + "Import Notes": "Importar Notas", "Import Presets": "Importar Presets", "Import Prompt Suggestions": "Importar Sugestões de Prompt", + "Import successful": "Importação bem-sucedida", + "Important Update": "Atualização importante", "In order to force OCR, performing OCR must be enabled.": "Para forçar o OCR, a execução do OCR deve estar habilitada.", "Include": "Incluir", @@ -879,7 +887,7 @@ "Invalid file format.": "Formato de arquivo inválido.", "Invalid JSON file": "Arquivo JSON inválido", "Invalid JSON format for ComfyUI Workflow.": "Formato JSON inválido para o fluxo de trabalho do ComfyUI.", - "Invalid JSON format for Parameters": "", + "Invalid JSON format for Parameters": "Formato JSON inválido para parâmetros", "Invalid JSON format in Additional Config": "Formato JSON inválido na configuração adicional", "Invalid Tag": "Tag Inválida", "is typing...": "está digitando...", @@ -1038,11 +1046,11 @@ "New Chat": "Novo Chat", "New Folder": "Nova Pasta", "New Function": "Nova Função", - "New Knowledge": "", - "New Model": "", + "New Knowledge": "Novo Conhecimento", + "New Model": "Novo Modelo", "New Note": "Nota Nota", "New Password": "Nova Senha", - "New Prompt": "", + "New Prompt": "Novo Prompt", "New Tool": "Nova Ferrameta", "new-channel": "novo-canal", "Next message": "Próxima mensagem", @@ -1058,7 +1066,7 @@ "No distance available": "Sem distância disponível", "No feedbacks found": "Comentários não encontrados", "No file selected": "Nenhum arquivo selecionado", - "No functions found": "", + "No functions found": "Nenhuma função encontrada", "No groups with access, add a group to grant access": "Nenhum grupo com acesso, adicione um grupo para dar acesso", "No HTML, CSS, or JavaScript content found.": "Nenhum conteúdo HTML, CSS ou JavaScript encontrado.", "No inference engine with management support found": "Nenhum mecanismo de inferência com suporte de gerenciamento encontrado", @@ -1069,14 +1077,14 @@ "No models selected": "Nenhum modelo selecionado", "No Notes": "Sem Notas", "No notes found": "Notas não encontradas", - "No prompts found": "", + "No prompts found": "Nenhum prompt encontrado", "No results": "Nenhum resultado encontrado", "No results found": "Nenhum resultado encontrado", "No search query generated": "Nenhuma consulta de pesquisa gerada", "No source available": "Nenhuma fonte disponível", "No sources found": "Nenhuma fonte encontrada", "No suggestion prompts": "Sem prompts sugeridos", - "No tools found": "", + "No tools found": "Nenhuma ferramenta encontrada", "No users were found.": "Nenhum usuário foi encontrado.", "No valves": "Sem configurações", "No valves to update": "Nenhuma configuração para atualizar", @@ -1235,7 +1243,7 @@ "Public": "Público", "Pull \"{{searchValue}}\" from Ollama.com": "Obter \"{{searchValue}}\" de Ollama.com", "Pull a model from Ollama.com": "Obter um modelo de Ollama.com", - "Pull Model": "", + "Pull Model": "Obter Modelo", "pypdfium2": "", "Query Generation Prompt": "Prompt de Geração de Consulta", "Querying": "Consultando", @@ -1384,7 +1392,7 @@ "Select how to split message text for TTS requests": "Selecione como dividir o texto da mensagem para solicitações TTS", "Select Knowledge": "Selecionar Conhecimento", "Select only one model to call": "Selecione apenas um modelo para chamar", - "Select view": "", + "Select view": "Selecionar visualização", "Selected model(s) do not support image inputs": "Modelo(s) selecionado(s) não suportam entradas de imagem", "semantic": "semântica", "Send": "Enviar", @@ -1425,7 +1433,7 @@ "Share Chat": "Compartilhar Chat", "Share to Open WebUI Community": "Compartilhar com a Comunidade OpenWebUI", "Share your background and interests": "Fale sobre você e seus interesses", - "Shared with you": "", + "Shared with you": "Compartilhado com você", "Sharing Permissions": "Permissões de compartilhamento", "Shortcuts with an asterisk (*) are situational and only active under specific conditions.": "Atalhos com um asterisco (*) são situacionais e só estão ativos em condições específicas.", "Show": "Mostrar", @@ -1605,7 +1613,7 @@ "Transformers": "", "Trouble accessing Ollama?": "Problemas para acessar o Ollama?", "Trust Proxy Environment": "Ambiente de Proxy Confiável", - "Try adjusting your search or filter to find what you are looking for.": "", + "Try adjusting your search or filter to find what you are looking for.": "Tente ajustar sua pesquisa ou filtro para encontrar o que você está procurando.", "Try Again": "Tentar novamente", "TTS Model": "Modelo TTS", "TTS Settings": "Configurações TTS", @@ -1642,7 +1650,7 @@ "Upload directory": "Carregar diretório", "Upload files": "Carregar arquivos", "Upload Files": "Carregar Arquivos", - "Upload Model": "", + "Upload Model": "Carregar Modelo", "Upload Pipeline": "Fazer upload de Pipeline", "Upload Progress": "Progresso do Upload", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Progresso do upload: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", From 62456a606ebce707b2611a4476ecbd68aa48044b Mon Sep 17 00:00:00 2001 From: joaoback <156559121+joaoback@users.noreply.github.com> Date: Wed, 8 Oct 2025 11:11:38 -0300 Subject: [PATCH 05/54] Update translation.json (pt-BR) Translations of new items added in the latest version. --- src/lib/i18n/locales/pt-BR/translation.json | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/lib/i18n/locales/pt-BR/translation.json b/src/lib/i18n/locales/pt-BR/translation.json index 8b2dd92709..5ffe56ead8 100644 --- a/src/lib/i18n/locales/pt-BR/translation.json +++ b/src/lib/i18n/locales/pt-BR/translation.json @@ -674,13 +674,9 @@ "Export chat (.json)": "Exportar chat (.json)", "Export Chats": "Exportar Chats", "Export Config to JSON File": "Exportar Configuração para Arquivo JSON", - - "Export Presets": "Exportar Presets", "Export Prompt Suggestions": "Exportar Sugestões de Prompt", - "Export to CSV": "Exportar para CSV", - "Export Users": "Exportar Usuários", "External": "Externo", "External Document Loader URL required.": "URL do carregador de documentos externo necessária.", @@ -852,14 +848,10 @@ "Import Chats": "Importar Chats", "Import Config from JSON File": "Importar Configurações de JSON", "Import From Link": "Importar do link", - - "Import Notes": "Importar Notas", "Import Presets": "Importar Presets", "Import Prompt Suggestions": "Importar Sugestões de Prompt", - "Import successful": "Importação bem-sucedida", - "Important Update": "Atualização importante", "In order to force OCR, performing OCR must be enabled.": "Para forçar o OCR, a execução do OCR deve estar habilitada.", "Include": "Incluir", From 3f030ef5375c357fdbc7b50608e45f3d937c82a3 Mon Sep 17 00:00:00 2001 From: _00_ <131402327+rgaricano@users.noreply.github.com> Date: Wed, 8 Oct 2025 16:18:50 +0200 Subject: [PATCH 06/54] UPD: i18n: es-ES Translation v0.6.34 ### UPD: i18n: es-ES Translation v0.6.34 Added new strings --- src/lib/i18n/locales/es-ES/translation.json | 48 ++++++++++----------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index a8578d9ccc..0e519dd5c7 100644 --- a/src/lib/i18n/locales/es-ES/translation.json +++ b/src/lib/i18n/locales/es-ES/translation.json @@ -65,7 +65,7 @@ "Add User Group": "Añadir grupo de usuarios", "Additional Config": "Config Adicional", "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": "Opciones de configuración adicionales para Marker. Debe ser una cadena JSON con pares clave-valor. Por ejemplo, '{\"key\": \"value\"}'. Las claves soportadas son: disabled_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", - "Additional Parameters": "", + "Additional Parameters": "Parámetros Adicionales", "Adjusting these settings will apply changes universally to all users.": "El ajuste de estas opciones se aplicará globalmente a todos los usuarios.", "admin": "admin", "Admin": "Admin", @@ -344,7 +344,7 @@ "Create Folder": "Crear Carpeta", "Create Group": "Crear Grupo", "Create Knowledge": "Crear Conocimiento", - "Create Model": "", + "Create Model": "Crear Modelo", "Create new key": "Crear Nueva Clave", "Create new secret key": "Crear Nueva Clave Secreta", "Create Note": "Crear Nota", @@ -352,7 +352,7 @@ "Created at": "Creado en", "Created At": "Creado En", "Created by": "Creado por", - "Created by you": "", + "Created by you": "Creado por tí", "CSV Import": "Importar CSV", "Ctrl+Enter to Send": "'Ctrl+Enter' para Enviar", "Current Model": "Modelo Actual", @@ -399,7 +399,7 @@ "Delete function?": "Borrar la función?", "Delete Message": "Borrar mensaje", "Delete message?": "¿Borrar mensaje?", - "Delete Model": "", + "Delete Model": "Borrar Modelo", "Delete note?": "¿Borrar nota?", "Delete prompt?": "¿Borrar el indicador?", "delete this link": "Borrar este enlace", @@ -527,9 +527,9 @@ "Enter a detail about yourself for your LLMs to recall": "Ingresar detalles sobre ti para que los recuerden sus LLMs", "Enter a title for the pending user info overlay. Leave empty for default.": "Ingresar un título para la sobrecapa informativa de usuario pendiente. Dejar vacío para usar el predeterminado.", "Enter a watermark for the response. Leave empty for none.": "Ingresar una marca de agua para la respuesta. Dejalo vacío para ninguna", - "Enter additional headers in JSON format": "", - "Enter additional headers in JSON format (e.g. {{'{{\"X-Custom-Header\": \"value\"}}'}})": "", - "Enter additional parameters in JSON format": "", + "Enter additional headers in JSON format": "Ingresar encabezados adicionales en formato JSON", + "Enter additional headers in JSON format (e.g. {{'{{\"X-Custom-Header\": \"value\"}}'}})": "Ingresar encabezados adicionales en formato JSON (ej. {{'{{\"X-Custom-Header\": \"valor\"}}'}})", + "Enter additional parameters in JSON format": "Ingresar parámetros adicionales en formato JSON", "Enter api auth string (e.g. username:password)": "Ingresar campo de autorización de la api (p.ej. nombre:contraseña)", "Enter Application DN": "Ingresar el DN de la Aplicación", "Enter Application DN Password": "Ingresar la Contraseña del DN de la Aplicación", @@ -701,7 +701,7 @@ "Failed to load file content.": "Fallo al cargar el contenido del archivo", "Failed to move chat": "Fallo al mover el chat", "Failed to read clipboard contents": "Fallo al leer el contenido del portapapeles", - "Failed to render diagram": "", + "Failed to render diagram": "Fallo al renderizar el diagrama", "Failed to save connections": "Fallo al guardar las conexiones", "Failed to save conversation": "Fallo al guardar la conversación", "Failed to save models configuration": "Fallo al guardar la configuración de los modelos", @@ -735,7 +735,7 @@ "Firecrawl API Key": "Clave de API de Firecrawl", "Floating Quick Actions": "Acciones Rápidas Flotantes", "Focus chat input": "Enfocar campo de chat", - "Folder": "", + "Folder": "Carpeta", "Folder Background Image": "Imagen de Fondo de la Carpeta", "Folder deleted successfully": "Carpeta eliminada correctamente", "Folder Name": "Nombre de la Carpeta", @@ -805,8 +805,8 @@ "H2": "H2", "H3": "H3", "Haptic Feedback": "Realimentación Háptica", - "Headers": "", - "Headers must be a valid JSON object": "", + "Headers": "Encabezados", + "Headers must be a valid JSON object": "El Encabezado debe ser un objeto JSON válido", "Height": "Altura", "Hello, {{name}}": "Hola, {{name}}", "Help": "Ayuda", @@ -879,7 +879,7 @@ "Invalid file format.": "Formato de archivo inválido.", "Invalid JSON file": "Archivo JSON inválido", "Invalid JSON format for ComfyUI Workflow.": "Formato JSON Inválido para el Flujo de Trabajo de ComfyUI", - "Invalid JSON format for Parameters": "", + "Invalid JSON format for Parameters": "Formato JSON Inválido para los Parámetros", "Invalid JSON format in Additional Config": "Formato JSON Inválido en Configuración Adicional", "Invalid Tag": "Etiqueta Inválida", "is typing...": "está escribiendo...", @@ -1038,11 +1038,11 @@ "New Chat": "Nuevo Chat", "New Folder": "Nueva Carpeta", "New Function": "Nueva Función", - "New Knowledge": "", - "New Model": "", + "New Knowledge": "Nuevo Conocimiento", + "New Model": "Nuevo Modelo", "New Note": "Nueva Nota", "New Password": "Nueva Contraseña", - "New Prompt": "", + "New Prompt": "Nuevo Indicador", "New Tool": "Nueva Herramienta", "new-channel": "nuevo-canal", "Next message": "Siguiente mensaje", @@ -1058,7 +1058,7 @@ "No distance available": "No hay distancia disponible", "No feedbacks found": "No se encontraron comentarios", "No file selected": "No se seleccionó archivo", - "No functions found": "", + "No functions found": "No se encontraron funciones", "No groups with access, add a group to grant access": "No hay grupos con acceso, añade un grupo para otorgar acceso", "No HTML, CSS, or JavaScript content found.": "No se encontró contenido HTML, CSS, o JavaScript.", "No inference engine with management support found": "No se encontró un motor de inferencia que soporte gestión", @@ -1069,14 +1069,14 @@ "No models selected": "No se seleccionaron modelos", "No Notes": "Sin Notas", "No notes found": "No se encontraron notas", - "No prompts found": "", + "No prompts found": "No se encontraron indicadores", "No results": "No se encontraron resultados", "No results found": "No se encontraron resultados", "No search query generated": "No se generó ninguna consulta de búsqueda", "No source available": "No hay fuente disponible", "No sources found": "No se han encontrado fuentes", "No suggestion prompts": "Sin prompts sugeridos", - "No tools found": "", + "No tools found": "No se encontraron herramientas", "No users were found.": "No se encontraron usuarios.", "No valves": "No hay válvulas", "No valves to update": "No hay válvulas para actualizar", @@ -1235,7 +1235,7 @@ "Public": "Público", "Pull \"{{searchValue}}\" from Ollama.com": "Extraer \"{{searchValue}}\" desde Ollama.com", "Pull a model from Ollama.com": "Extraer un modelo desde Ollama.com", - "Pull Model": "", + "Pull Model": "Extraer Modelo", "pypdfium2": "pypdfium2", "Query Generation Prompt": "Indicador para la Consulta de Generación", "Querying": "Consultando", @@ -1384,7 +1384,7 @@ "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", - "Select view": "", + "Select view": "Seleccionar vista", "Selected model(s) do not support image inputs": "Modelo(s) seleccionado(s) no admiten entradas de imagen", "semantic": "semántica", "Send": "Enviar", @@ -1425,7 +1425,7 @@ "Share Chat": "Compartir Chat", "Share to Open WebUI Community": "Compartir con la Comunidad Open-WebUI", "Share your background and interests": "Compartir tus antecedentes e intereses", - "Shared with you": "", + "Shared with you": "Compartido contigo", "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", @@ -1493,7 +1493,7 @@ "System Instructions": "Instrucciones del sistema", "System Prompt": "Indicador del sistema", "Table Mode": "Modo de Tabla", - "Tag": "", + "Tag": "Etiqueta", "Tags": "Etiquetas", "Tags Generation": "Generación de Etiquetas", "Tags Generation Prompt": "Indicador para la Generación de Etiquetas", @@ -1605,7 +1605,7 @@ "Transformers": "Transformadores", "Trouble accessing Ollama?": "¿Problemas para acceder a Ollama?", "Trust Proxy Environment": "Entorno Proxy Confiable", - "Try adjusting your search or filter to find what you are looking for.": "", + "Try adjusting your search or filter to find what you are looking for.": "Prueba ajustando tu búsqueda o filtro para encontrar lo que estás buscando", "Try Again": "Prueba de Nuevo", "TTS Model": "Modelo TTS", "TTS Settings": "Ajustes Texto a Voz (TTS)", @@ -1642,7 +1642,7 @@ "Upload directory": "Directorio de Subidas", "Upload files": "Subir archivos", "Upload Files": "Subir Archivos", - "Upload Model": "", + "Upload Model": "Subir Modelo", "Upload Pipeline": "Subir Tubería", "Upload Progress": "Progreso de la Subida", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Progreso de la Subida: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", From fbfbc297892c6a0eaf05791b9b9a73a28faa2f3c Mon Sep 17 00:00:00 2001 From: EntropyYue <164553692+EntropyYue@users.noreply.github.com> Date: Thu, 9 Oct 2025 04:31:15 +0800 Subject: [PATCH 07/54] fix: search action i18n (#18162) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 0.6.33 (#18118) * feat: improve ollama model management experience This commit introduces several improvements to the Ollama model management modal: - Adds a cancel button to the model pulling operation, using the existing 'x' button pattern. - Adds a cancel button to the "Update All" models operation, allowing the user to cancel the update for the currently processing model. - Cleans up toast notifications when updating all models. A single toast is now shown at the beginning and a summary toast at the end, preventing notification spam. - Refactors the `ManageOllama.svelte` component to support these new cancellation features. - Adds tooltips to all buttons in the modal to improve clarity. - Disables buttons when their corresponding input fields are empty to prevent accidental clicks. * fix * i18n: improve Chinese translation * fix: handle non‑UTF8 chars in third‑party responses without error * German translation of new strings in i18n * log web search queries only with level 'debug' instead of 'info' * Tool calls now only include text and dont inlcude other content like image b64 * fix onedrive * fix: discovery url * fix: default permissions not being loaded * fix: ai hallucination * fix: non rich text input copy * refac: rm print statements * refac: disable direct models from model editors * refac/fix: do not process xlsx files with azure doc intelligence * Update pull_request_template.md * Update generated image translation in DE-de * added missing danish translations * feat(onedrive): Enable search and "My Organization" pivot * style(onedrive): Formatting fix * feat: Implement toggling for vertical and horizontal flow layouts This commit introduces the necessary logic and UI controls to allow users to switch the Flow component layout between vertical and horizontal orientations. * **`Flow.svelte` Refactoring:** * Updates logic for calculating level offsets and node positions to consistently respect the current flow orientation. * Adds a control panel using `` and `` components. * Provides user interface elements to easily switch the flow layout between horizontal and vertical orientations. * build(deps): bump pydantic from 2.11.7 to 2.11.9 in /backend Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.11.7 to 2.11.9. - [Release notes](https://github.com/pydantic/pydantic/releases) - [Changelog](https://github.com/pydantic/pydantic/blob/v2.11.9/HISTORY.md) - [Commits](https://github.com/pydantic/pydantic/compare/v2.11.7...v2.11.9) --- updated-dependencies: - dependency-name: pydantic dependency-version: 2.11.9 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * build(deps): bump black from 25.1.0 to 25.9.0 in /backend Bumps [black](https://github.com/psf/black) from 25.1.0 to 25.9.0. - [Release notes](https://github.com/psf/black/releases) - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md) - [Commits](https://github.com/psf/black/compare/25.1.0...25.9.0) --- updated-dependencies: - dependency-name: black dependency-version: 25.9.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * build(deps): bump markdown from 3.8.2 to 3.9 in /backend Bumps [markdown](https://github.com/Python-Markdown/markdown) from 3.8.2 to 3.9. - [Release notes](https://github.com/Python-Markdown/markdown/releases) - [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md) - [Commits](https://github.com/Python-Markdown/markdown/compare/3.8.2...3.9.0) --- updated-dependencies: - dependency-name: markdown dependency-version: '3.9' dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * build(deps): bump chromadb from 1.0.20 to 1.1.0 in /backend Bumps [chromadb](https://github.com/chroma-core/chroma) from 1.0.20 to 1.1.0. - [Release notes](https://github.com/chroma-core/chroma/releases) - [Changelog](https://github.com/chroma-core/chroma/blob/main/RELEASE_PROCESS.md) - [Commits](https://github.com/chroma-core/chroma/compare/1.0.20...1.1.0) --- updated-dependencies: - dependency-name: chromadb dependency-version: 1.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * build(deps): bump opentelemetry-api from 1.36.0 to 1.37.0 Bumps [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) from 1.36.0 to 1.37.0. - [Release notes](https://github.com/open-telemetry/opentelemetry-python/releases) - [Changelog](https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md) - [Commits](https://github.com/open-telemetry/opentelemetry-python/compare/v1.36.0...v1.37.0) --- updated-dependencies: - dependency-name: opentelemetry-api dependency-version: 1.37.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * refac: ollama embed form data * fix: non rich text handling * fix: oauth client registration * refac * chore: dep bump * chore: fastapi bump * chore/refac: bump bcrypt and remove passlib * Improving Korean Translation * refac * Improving Korean Translation * feat: PWA share_target implementation Co-Authored-By: gjveld <19951982+gjveld@users.noreply.github.com> * refac: message input mobile detection behaviour * feat: model_ids per folder * Update translation.json (pt-BR) inclusion of new translations of items that have been added * refac * refac * refac * refac * refac/fix: temp chat * refac * refac: stop task * refac/fix: azure audio escape * refac: external tool validation * refac/enh: start.sh additional args support * refac * refac: styling * refac/fix: direct connection floating action buttons * refac/fix: system prompt duplication * refac/enh: openai tts additional params support * refac * feat: load data in parallel to accelerate page loading speed * i18n: improve Chinese translation * refac * refac: model selector * UPD: i18n es-ES Translation v0.6.33 UPD: i18n es-ES Translation v0.6.33 Updated new strings. * refac * improved query pref by querying only relevant columns * refac/enh: docling params * refac * refac: openai additional headers support * refac * FEAT: Add Vega Char Visualizer Renderer ### FEAT: Add Vega Char Visualizer Renderer Feature required in https://github.com/open-webui/open-webui/discussions/18022 Added npm vega lib to package.json Added function for visualization renderer to src/libs/utils/index.ts Added logic to src/lib/components/chat/Messages/CodeBlock.svelte The treatment is similar as for mermaid diagrams. Reference: https://vega.github.io/vega/ * refac * chore * refac * FEAT: Add Vega-Lite Char Visualizer Renderer ### FEAT: Add Vega Char Visualizer Renderer Add suport for Vega-Lite Specifications. Vega-Lite is a "compiled" version of Vega Char Visualizer. For be rendered with Vega it have to be compiled. This PR add the check and compile if necessary, is a complement of recent Vega Renderer Feature added. * refac * refac/fix: switch * enh/refac: url input handling * refac * refac: styling * UPD: Add Validators & Error Toast for Mermaid & Vega diagrams ### UPD: Feat: Add Validators & Error Toast for Mermaid & Vega diagrams Description: As many time the diagrams generated or entered have syntax errors the diagrams are not rendered due to that errors, but as there isn't any notification is difficult to know what happend. This PR add validator and toast notification when error on Mermaid and Vega/Vega-Lite diagrams, helping the user to fix its. * removed redundant knowledge API call * Fix Code Format * refac: model workspace view * refac * refac: knowledge * refac: prompts * refac: tools * refac * feat: attach folder * refac: make tencentcloud-sdk-python optional * refac/fix: oauth * enh: ENABLE_OAUTH_EMAIL_FALLBACK * refac/fix: folders * Update requirements.txt * Update pyproject.toml * UPD: Add Validators & Error Toast for Mermaid & Vega diagrams ### UPD: Feat: Add Validators & Error Toast for Mermaid & Vega diagrams Description: As many time the diagrams generated or entered have syntax errors the diagrams are not rendered due to that errors, but as there isn't any notification is difficult to know what happend. This PR add validator and toast notification when error on Mermaid and Vega/Vega-Lite diagrams, helping the user to fix its. Note: Another possibility of integrating this Graph Visualizer is through its svelte component: https://github.com/vega/svelte-vega/tree/main/packages/svelte-vega * Removed unused toast import & Code Format * refac * refac: external tool server view * refac * refac: overview * refac: styling * refac * Update bug_report.yaml * refac * refac * refac * refac * refac: oauth client fallback * Fixed: Cannot handle batch sizes > 1 if no padding token is defined Fixes Cannot handle batch sizes > 1 if no padding token is defined For reranker models that do not have this defined in their config by using the eos_token_id if present as pad_token_id. * refac: fallback to reasoning content * fix(i18n): corrected typo in Spanish translation for "Reasoning Tags" Typo fixed in Spanish translation file at line 1240 of `open-webui/src/lib/i18n/locales/es-ES/translation.json`: - Incorrect: "Eriquetas de Razonamiento" - Correct: "Etiquetas de Razonamiento" This improves clarity and consistency in the UI. * refac/fix: ENABLE_STAR_SESSIONS_MIDDLEWARE * refac/fix: redirect * refac * refac * refac * refac: web search error handling * refac: source parsing * refac: functions * refac * refac/enh: note pdf export * refac/fix: mcp oauth2.1 * chore: format * chore: Changelog (#17995) * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md * refac * chore: dep bump --------- Signed-off-by: dependabot[bot] Co-authored-by: silentoplayz Co-authored-by: Shirasawa <764798966@qq.com> Co-authored-by: Jan Kessler Co-authored-by: Jacob Leksan Co-authored-by: Classic298 <27028174+Classic298@users.noreply.github.com> Co-authored-by: sinejespersen Co-authored-by: Selene Blok Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Cyp Co-authored-by: gjveld <19951982+gjveld@users.noreply.github.com> Co-authored-by: joaoback <156559121+joaoback@users.noreply.github.com> Co-authored-by: _00_ <131402327+rgaricano@users.noreply.github.com> Co-authored-by: expruc Co-authored-by: YetheSamartaka <55753928+YetheSamartaka@users.noreply.github.com> Co-authored-by: Akutangulo * fix: search action i18n --------- Signed-off-by: dependabot[bot] Co-authored-by: Tim Jaeryang Baek Co-authored-by: silentoplayz Co-authored-by: Shirasawa <764798966@qq.com> Co-authored-by: Jan Kessler Co-authored-by: Jacob Leksan Co-authored-by: Classic298 <27028174+Classic298@users.noreply.github.com> Co-authored-by: sinejespersen Co-authored-by: Selene Blok Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Cyp Co-authored-by: gjveld <19951982+gjveld@users.noreply.github.com> Co-authored-by: joaoback <156559121+joaoback@users.noreply.github.com> Co-authored-by: _00_ <131402327+rgaricano@users.noreply.github.com> Co-authored-by: expruc Co-authored-by: YetheSamartaka <55753928+YetheSamartaka@users.noreply.github.com> Co-authored-by: Akutangulo --- src/lib/components/layout/SearchModal.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/components/layout/SearchModal.svelte b/src/lib/components/layout/SearchModal.svelte index d9e18236be..c69bbf6346 100644 --- a/src/lib/components/layout/SearchModal.svelte +++ b/src/lib/components/layout/SearchModal.svelte @@ -24,7 +24,7 @@ let actions = [ { - label: 'Start a new conversation', + label: $i18n.t('Start a new conversation'), onClick: async () => { await goto(`/${query ? `?q=${query}` : ''}`); show = false; @@ -231,7 +231,7 @@ ($user?.role === 'admin' || ($user?.permissions?.features?.notes ?? true)) ? [ { - label: 'Create a new note', + label: $i18n.t('Create a new note'), onClick: async () => { await goto(`/notes${query ? `?content=${query}` : ''}`); show = false; From 5043e7fc8c826af077d1dcff3711cd568349eb22 Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 8 Oct 2025 16:54:06 -0500 Subject: [PATCH 08/54] refac: introduce model id length limit --- backend/open_webui/constants.py | 1 + backend/open_webui/routers/models.py | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/constants.py b/backend/open_webui/constants.py index 59ee6aaacb..6d63295ab8 100644 --- a/backend/open_webui/constants.py +++ b/backend/open_webui/constants.py @@ -38,6 +38,7 @@ class ERROR_MESSAGES(str, Enum): ID_TAKEN = "Uh-oh! This id is already registered. Please choose another id string." MODEL_ID_TAKEN = "Uh-oh! This model id is already registered. Please choose another model id string." NAME_TAG_TAKEN = "Uh-oh! This name tag is already registered. Please choose another name tag string." + MODEL_ID_TOO_LONG = "The model id is too long. Please make sure your model id is less than 256 characters long." INVALID_TOKEN = ( "Your session has expired or the token is invalid. Please sign in again." diff --git a/backend/open_webui/routers/models.py b/backend/open_webui/routers/models.py index 5c5a2dcd90..215cd8426c 100644 --- a/backend/open_webui/routers/models.py +++ b/backend/open_webui/routers/models.py @@ -35,6 +35,10 @@ log = logging.getLogger(__name__) router = APIRouter() +def validate_model_id(model_id: str) -> bool: + return model_id and len(model_id) <= 256 + + ########################### # GetModels ########################### @@ -84,6 +88,12 @@ async def create_new_model( detail=ERROR_MESSAGES.MODEL_ID_TAKEN, ) + if not validate_model_id(form_data.id): + raise HTTPException( + status_code=status.HTTP_400_BAD_REQUEST, + detail=ERROR_MESSAGES.MODEL_ID_TOO_LONG, + ) + else: model = Models.insert_new_model(form_data, user.id) if model: @@ -124,7 +134,8 @@ async def import_models( for model_data in data: # Here, you can add logic to validate model_data if needed model_id = model_data.get("id") - if model_id: + + if model_id and validate_model_id(model_id): existing_model = Models.get_model_by_id(model_id) if existing_model: # Update existing model From 8ca4596918384a5655888230c67260dc4ba0a953 Mon Sep 17 00:00:00 2001 From: Classic298 <27028174+Classic298@users.noreply.github.com> Date: Thu, 9 Oct 2025 09:03:36 +0200 Subject: [PATCH 09/54] Update SECURITY.md --- docs/SECURITY.md | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/docs/SECURITY.md b/docs/SECURITY.md index 507e3c6069..4f24b3f6a6 100644 --- a/docs/SECURITY.md +++ b/docs/SECURITY.md @@ -4,10 +4,11 @@ Our primary goal is to ensure the protection and confidentiality of sensitive da ## Supported Versions -| Version | Supported | -| ------- | ------------------ | -| main | :white_check_mark: | -| others | :x: | +| Version (Branch) | Supported | +| ---------------- | ------------------ | +| main | :white_check_mark: | +| dev | :x: | +| others | :x: | ## Zero Tolerance for External Platforms @@ -17,7 +18,7 @@ Any reports or solicitations arriving from sources other than our designated Git ## Reporting a Vulnerability -We appreciate the community's interest in identifying potential vulnerabilities. However, effective immediately, we will **not** accept low-effort vulnerability reports. To ensure that submissions are constructive and actionable, please adhere to the following guidelines: +We appreciate the community's interest in identifying potential vulnerabilities. However, effective immediately, we will **not** accept low-effort vulnerability reports. Ensure that **submissions are constructive, actionable, reproducible, well documented and adhere to the following guidelines**: Reports not submitted through our designated GitHub repository will be disregarded, and we will categorically reject invitations to collaborate on external platforms. Our aggressive stance on this matter underscores our commitment to a secure, transparent, and open community where all operations are visible and contributors are accountable. @@ -25,13 +26,26 @@ Reports not submitted through our designated GitHub repository will be disregard 2. **In-Depth Understanding Required**: Reports must reflect a clear understanding of the codebase and provide specific details about the vulnerability, including the affected components and potential impacts. -3. **Proof of Concept (PoC) is Mandatory**: Each submission must include a well-documented proof of concept (PoC) that demonstrates the vulnerability. If confidentiality is a concern, reporters are encouraged to create a private fork of the repository and share access with the maintainers. Reports lacking valid evidence will be disregarded. +3. **Proof of Concept (PoC) is Mandatory**: Each submission must include a well-documented proof of concept (PoC) that demonstrates the vulnerability. If confidentiality is a concern, reporters are encouraged to create a private fork of the repository and share access with the maintainers. Reports lacking valid evidence may be disregarded. -4. **Required Patch Submission**: Along with the PoC, reporters must provide a patch or actionable steps to remediate the identified vulnerability. This helps us evaluate and implement fixes rapidly. +4. **Required Patch or Actionable Remediation Plan Submission**: Along with the PoC, reporters must provide a patch or actionable steps to remediate the identified vulnerability. This helps us evaluate and implement fixes rapidly. 5. **Streamlined Merging Process**: When vulnerability reports meet the above criteria, we can consider them for immediate merging, similar to regular pull requests. Well-structured and thorough submissions will expedite the process of enhancing our security. -**Non-compliant submissions will be closed, and repeat violators may be banned.** Our goal is to foster a constructive reporting environment where quality submissions promote better security for all users. +6. **Default Configuration Testing**: All vulnerability reports MUST be tested and reproducible using Open WebUI's out-of-the-box default configuration. Claims of vulnerabilities that only manifest with explicitly weakened security settings may not be considered valid vulnerability reports. + +> [!NOTE] +> **Note**: If you believe you have found a security issue that +> 1) affects default configurations **or** +> 2) represents a genuine bypass of intended security controls **or** +> 3) works only with non-default configurations **but** the configuration in question is likely to be used by production deployments +> **then we absolutely want to hear about it.** This policy is intended to filter configuration issues and deployment problems, not to discourage legitimate security research. + +7. **Threat Model Understanding Required**: Reports must demonstrate understanding of Open WebUI's self-hosted, authenticated, role-based access control architecture. Comparing Open WebUI to services with fundamentally different security models without acknowledging the architectural differences may result in report rejection. + +**Non-compliant submissions will be closed, and repeat extreme violators may be banned.** Our goal is to foster a constructive reporting environment where quality submissions promote better security for all users. + +If you want to report a vulnerability and can meet all outlines requirements, [open a vulnerability report here](https://github.com/open-webui/open-webui/security/advisories/new). ## Product Security @@ -41,4 +55,4 @@ For immediate concerns or detailed reports that meet our guidelines, please crea --- -_Last updated on **2024-08-19**._ +_Last updated on **2025-10-09**._ From f1b50fb83a64791a256f1e1c05b18236c94f62f2 Mon Sep 17 00:00:00 2001 From: Shirasawa <764798966@qq.com> Date: Thu, 9 Oct 2025 15:42:59 +0800 Subject: [PATCH 10/54] fix: fix incorrect display of undefined tool ID --- src/lib/components/chat/Settings/Tools/Connection.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/chat/Settings/Tools/Connection.svelte b/src/lib/components/chat/Settings/Tools/Connection.svelte index 70a182e925..09631948fa 100644 --- a/src/lib/components/chat/Settings/Tools/Connection.svelte +++ b/src/lib/components/chat/Settings/Tools/Connection.svelte @@ -54,7 +54,7 @@
{connection?.info?.name ?? connection?.url} - {connection?.info?.id} + {connection?.info?.id ?? ''}
From ccfb0f54e1ea05c99e0cc70336d808b7ae3ec64b Mon Sep 17 00:00:00 2001 From: Shirasawa <764798966@qq.com> Date: Thu, 9 Oct 2025 15:57:50 +0800 Subject: [PATCH 11/54] feat: do not initiate requests when the RecursiveFolder is not open to speed up page loading --- src/lib/components/layout/Sidebar/RecursiveFolder.svelte | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib/components/layout/Sidebar/RecursiveFolder.svelte b/src/lib/components/layout/Sidebar/RecursiveFolder.svelte index a748352d2f..72a9f007fe 100644 --- a/src/lib/components/layout/Sidebar/RecursiveFolder.svelte +++ b/src/lib/components/layout/Sidebar/RecursiveFolder.svelte @@ -385,7 +385,9 @@ } }; - $: setFolderItems(open); + $: if (open) { + setFolderItems(); + } const renameHandler = async () => { console.log('Edit'); From cce20f8bfc1635c079fdbf105ea9044d681b1e71 Mon Sep 17 00:00:00 2001 From: Shirasawa <764798966@qq.com> Date: Thu, 9 Oct 2025 16:43:24 +0800 Subject: [PATCH 12/54] i18n: improve Chinese translation --- src/lib/i18n/locales/zh-CN/translation.json | 4 +++- src/lib/i18n/locales/zh-TW/translation.json | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index 36efca3046..24aa4dc273 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -337,7 +337,8 @@ "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 a model": "创建模型", + "Create a new note": "新建笔记", "Create Account": "创建账号", "Create Admin Account": "创建管理员账号", "Create Channel": "创建频道", @@ -1461,6 +1462,7 @@ "Speech-to-Text": "语音转文本", "Speech-to-Text Engine": "语音转文本引擎", "standard": "标准", + "Start a new conversation": "开始新对话", "Start of the channel": "频道起点", "Start Tag": "起始标签", "Status Updates": "显示实时回答状态", diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index f5ae080c62..fa79ae0b16 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -338,6 +338,7 @@ "Create": "建立", "Create a knowledge base": "建立知識", "Create a model": "建立模型", + "Create a new note": "新建筆記", "Create Account": "建立帳號", "Create Admin Account": "建立管理員賬號", "Create Channel": "建立頻道", @@ -1461,6 +1462,7 @@ "Speech-to-Text": "語音轉文字 (STT) ", "Speech-to-Text Engine": "語音轉文字 (STT) 引擎", "standard": "標準", + "Start a new conversation": "開始新對話", "Start of the channel": "頻道起點", "Start Tag": "起始標籤", "Status Updates": "顯示實時回答狀態", From c4832fdb7033e6787961e21eb81e2671519cf87d Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Thu, 9 Oct 2025 11:55:12 -0500 Subject: [PATCH 13/54] fix: full context issue --- backend/open_webui/utils/middleware.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/backend/open_webui/utils/middleware.py b/backend/open_webui/utils/middleware.py index bbfdd6a368..75bd0ae54a 100644 --- a/backend/open_webui/utils/middleware.py +++ b/backend/open_webui/utils/middleware.py @@ -827,11 +827,7 @@ async def chat_completion_files_handler( if files := body.get("metadata", {}).get("files", None): # Check if all files are in full context mode - all_full_context = all( - item.get("context") == "full" - for item in files - if item.get("type") == "file" - ) + all_full_context = all(item.get("context") == "full" for item in files) queries = [] if not all_full_context: From 8ac30955a36f7e03832bc732202283200fb9a5ab Mon Sep 17 00:00:00 2001 From: EntropyYue Date: Fri, 10 Oct 2025 01:13:59 +0800 Subject: [PATCH 14/54] fix: Artifacts duplicate matching --- src/lib/components/chat/Artifacts.svelte | 70 ++++++++++++------------ 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/src/lib/components/chat/Artifacts.svelte b/src/lib/components/chat/Artifacts.svelte index 848d81f635..188b476839 100644 --- a/src/lib/components/chat/Artifacts.svelte +++ b/src/lib/components/chat/Artifacts.svelte @@ -39,51 +39,51 @@ const codeBlockContents = message.content.match(/```[\s\S]*?```/g); let codeBlocks = []; + let htmlContent = ''; + let cssContent = ''; + let jsContent = ''; + if (codeBlockContents) { codeBlockContents.forEach((block) => { const lang = block.split('\n')[0].replace('```', '').trim().toLowerCase(); const code = block.replace(/```[\s\S]*?\n/, '').replace(/```$/, ''); codeBlocks.push({ lang, code }); }); - } - let htmlContent = ''; - let cssContent = ''; - let jsContent = ''; + codeBlocks.forEach((block) => { + const { lang, code } = block; - codeBlocks.forEach((block) => { - const { lang, code } = block; + if (lang === 'html') { + htmlContent += code + '\n'; + } else if (lang === 'css') { + cssContent += code + '\n'; + } else if (lang === 'javascript' || lang === 'js') { + jsContent += code + '\n'; + } + }); + } else { + const inlineHtml = message.content.match(/[\s\S]*?<\/html>/gi); + const inlineCss = message.content.match(/