Просмотр исходного кода

Merge pull request #12524 from open-webui/dev

0.6.2
Timothy Jaeryang Baek 4 месяцев назад
Родитель
Сommit
63533c9e3a
79 измененных файлов с 768 добавлено и 490 удалено
  1. 14 0
      .github/dependabot.yml
  2. 12 2
      .github/workflows/format-backend.yaml
  3. 9 1
      .github/workflows/format-build-frontend.yaml
  4. 17 0
      CHANGELOG.md
  5. 1 1
      backend/open_webui/retrieval/utils.py
  6. 9 2
      backend/open_webui/routers/files.py
  7. 24 19
      backend/open_webui/routers/retrieval.py
  8. 37 17
      backend/open_webui/utils/middleware.py
  9. 3 1
      backend/open_webui/utils/tools.py
  10. 1 0
      backend/requirements.txt
  11. 2 2
      package-lock.json
  12. 1 1
      package.json
  13. 1 0
      pyproject.toml
  14. 8 0
      src/app.css
  15. 1 1
      src/lib/components/channel/MessageInput.svelte
  16. 9 0
      src/lib/components/chat/Chat.svelte
  17. 3 2
      src/lib/components/chat/MessageInput.svelte
  18. 9 5
      src/lib/components/chat/Messages/CitationsModal.svelte
  19. 5 5
      src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte
  20. 1 1
      src/lib/components/chat/Messages/ResponseMessage.svelte
  21. 1 1
      src/lib/components/chat/Messages/UserMessage.svelte
  22. 12 4
      src/lib/components/chat/Settings/Interface.svelte
  23. 8 0
      src/lib/components/chat/Settings/Tools.svelte
  24. 2 2
      src/lib/components/chat/ToolServersModal.svelte
  25. 3 0
      src/lib/i18n/locales/ar-BH/translation.json
  26. 3 0
      src/lib/i18n/locales/ar/translation.json
  27. 3 0
      src/lib/i18n/locales/bg-BG/translation.json
  28. 3 0
      src/lib/i18n/locales/bn-BD/translation.json
  29. 3 0
      src/lib/i18n/locales/bo-TB/translation.json
  30. 3 0
      src/lib/i18n/locales/ca-ES/translation.json
  31. 3 0
      src/lib/i18n/locales/ceb-PH/translation.json
  32. 3 0
      src/lib/i18n/locales/cs-CZ/translation.json
  33. 3 0
      src/lib/i18n/locales/da-DK/translation.json
  34. 3 0
      src/lib/i18n/locales/de-DE/translation.json
  35. 3 0
      src/lib/i18n/locales/dg-DG/translation.json
  36. 3 0
      src/lib/i18n/locales/el-GR/translation.json
  37. 3 0
      src/lib/i18n/locales/en-GB/translation.json
  38. 3 0
      src/lib/i18n/locales/en-US/translation.json
  39. 3 0
      src/lib/i18n/locales/es-ES/translation.json
  40. 3 0
      src/lib/i18n/locales/et-EE/translation.json
  41. 3 0
      src/lib/i18n/locales/eu-ES/translation.json
  42. 3 0
      src/lib/i18n/locales/fa-IR/translation.json
  43. 3 0
      src/lib/i18n/locales/fi-FI/translation.json
  44. 3 0
      src/lib/i18n/locales/fr-CA/translation.json
  45. 3 0
      src/lib/i18n/locales/fr-FR/translation.json
  46. 3 0
      src/lib/i18n/locales/he-IL/translation.json
  47. 3 0
      src/lib/i18n/locales/hi-IN/translation.json
  48. 3 0
      src/lib/i18n/locales/hr-HR/translation.json
  49. 3 0
      src/lib/i18n/locales/hu-HU/translation.json
  50. 3 0
      src/lib/i18n/locales/id-ID/translation.json
  51. 3 0
      src/lib/i18n/locales/ie-GA/translation.json
  52. 3 0
      src/lib/i18n/locales/it-IT/translation.json
  53. 3 0
      src/lib/i18n/locales/ja-JP/translation.json
  54. 3 0
      src/lib/i18n/locales/ka-GE/translation.json
  55. 3 0
      src/lib/i18n/locales/ko-KR/translation.json
  56. 4 4
      src/lib/i18n/locales/languages.json
  57. 3 0
      src/lib/i18n/locales/lt-LT/translation.json
  58. 3 0
      src/lib/i18n/locales/ms-MY/translation.json
  59. 3 0
      src/lib/i18n/locales/nb-NO/translation.json
  60. 3 0
      src/lib/i18n/locales/nl-NL/translation.json
  61. 3 0
      src/lib/i18n/locales/pa-IN/translation.json
  62. 3 0
      src/lib/i18n/locales/pl-PL/translation.json
  63. 3 0
      src/lib/i18n/locales/pt-BR/translation.json
  64. 3 0
      src/lib/i18n/locales/pt-PT/translation.json
  65. 3 0
      src/lib/i18n/locales/ro-RO/translation.json
  66. 3 0
      src/lib/i18n/locales/ru-RU/translation.json
  67. 3 0
      src/lib/i18n/locales/sk-SK/translation.json
  68. 3 0
      src/lib/i18n/locales/sr-RS/translation.json
  69. 3 0
      src/lib/i18n/locales/sv-SE/translation.json
  70. 3 0
      src/lib/i18n/locales/th-TH/translation.json
  71. 3 0
      src/lib/i18n/locales/tk-TW/translation.json
  72. 3 0
      src/lib/i18n/locales/tr-TR/translation.json
  73. 3 0
      src/lib/i18n/locales/uk-UA/translation.json
  74. 3 0
      src/lib/i18n/locales/ur-PK/translation.json
  75. 375 373
      src/lib/i18n/locales/vi-VN/translation.json
  76. 25 22
      src/lib/i18n/locales/zh-CN/translation.json
  77. 25 22
      src/lib/i18n/locales/zh-TW/translation.json
  78. 1 1
      src/lib/stores/index.ts
  79. 1 1
      src/lib/utils/index.ts

+ 14 - 0
.github/dependabot.yml

@@ -1,12 +1,26 @@
 version: 2
 updates:
+  - package-ecosystem: uv
+    directory: '/'
+    schedule:
+      interval: monthly
+    target-branch: 'dev'
+
   - package-ecosystem: pip
     directory: '/backend'
     schedule:
       interval: monthly
     target-branch: 'dev'
+
+  - package-ecosystem: npm
+    directory: '/'
+    schedule:
+      interval: monthly
+    target-branch: 'dev'
+
   - package-ecosystem: 'github-actions'
     directory: '/'
     schedule:
       # Check for updates to GitHub Actions every week
       interval: monthly
+    target-branch: 'dev'

+ 12 - 2
.github/workflows/format-backend.yaml

@@ -5,10 +5,18 @@ on:
     branches:
       - main
       - dev
+    paths:
+      - 'backend/**'
+      - 'pyproject.toml'
+      - 'uv.lock'
   pull_request:
     branches:
       - main
       - dev
+    paths:
+      - 'backend/**'
+      - 'pyproject.toml'
+      - 'uv.lock'
 
 jobs:
   build:
@@ -17,7 +25,9 @@ jobs:
 
     strategy:
       matrix:
-        python-version: [3.11]
+        python-version:
+          - 3.11.x
+          - 3.12.x
 
     steps:
       - uses: actions/checkout@v4
@@ -25,7 +35,7 @@ jobs:
       - name: Set up Python
         uses: actions/setup-python@v5
         with:
-          python-version: ${{ matrix.python-version }}
+          python-version: '${{ matrix.python-version }}'
 
       - name: Install dependencies
         run: |

+ 9 - 1
.github/workflows/format-build-frontend.yaml

@@ -5,10 +5,18 @@ on:
     branches:
       - main
       - dev
+    paths-ignore:
+      - 'backend/**'
+      - 'pyproject.toml'
+      - 'uv.lock'
   pull_request:
     branches:
       - main
       - dev
+    paths-ignore:
+      - 'backend/**'
+      - 'pyproject.toml'
+      - 'uv.lock'
 
 jobs:
   build:
@@ -21,7 +29,7 @@ jobs:
       - name: Setup Node.js
         uses: actions/setup-node@v4
         with:
-          node-version: '22' # Or specify any other version you want to use
+          node-version: '22'
 
       - name: Install Dependencies
         run: npm install

+ 17 - 0
CHANGELOG.md

@@ -5,6 +5,23 @@ All notable changes to this project will be documented in this file.
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 
+## [0.6.2] - 2025-04-06
+
+### Added
+
+- 🌍 **Improved Global Language Support**: Expanded and refined translations across multiple languages to enhance clarity and consistency for international users.
+
+### Fixed
+
+- 🛠️ **Accurate Tool Descriptions from OpenAPI Servers**: External tools now use full endpoint descriptions instead of summaries when generating tool specifications—helping AI models understand tool purpose more precisely and choose the right tool more accurately in tool workflows.
+- 🔧 **Precise Web Results Source Attribution**: Fixed a key issue where all web search results showed the same source ID—now each result gets its correct and distinct source, ensuring accurate citations and traceability.
+- 🔍 **Clean Web Search Retrieval**: Web search now retains only results from URLs where real content was successfully fetched—improving accuracy and removing empty or broken links from citations.
+- 🎵 **Audio File Upload Response Restored**: Resolved an issue where uploading audio files did not return valid responses, restoring smooth file handling for transcription and audio-based workflows.
+
+### Changed
+
+- 🧰 **General Backend Refactoring**: Multiple behind-the-scenes improvements streamline backend performance, reduce complexity, and ensure a more stable, maintainable system overall—making everything smoother without changing your workflow.
+
 ## [0.6.1] - 2025-04-05
 
 ### Added

+ 1 - 1
backend/open_webui/retrieval/utils.py

@@ -357,7 +357,7 @@ def get_embedding_function(
 ):
     if embedding_engine == "":
         return lambda query, prefix=None, user=None: embedding_function.encode(
-            query, prompt=prefix if prefix else None
+            query, **({"prompt": prefix} if prefix else {})
         ).tolist()
     elif embedding_engine in ["ollama", "openai"]:
         func = lambda query, prefix=None, user=None: generate_embeddings(

+ 9 - 2
backend/open_webui/routers/files.py

@@ -122,6 +122,7 @@ def upload_file(
                 ]:
                     file_path = Storage.get_file(file_path)
                     result = transcribe(request, file_path)
+
                     process_file(
                         request,
                         ProcessFileForm(file_id=id, content=result.get("text", "")),
@@ -129,7 +130,8 @@ def upload_file(
                     )
                 elif file.content_type not in ["image/png", "image/jpeg", "image/gif"]:
                     process_file(request, ProcessFileForm(file_id=id), user=user)
-                    file_item = Files.get_file_by_id(id=id)
+
+                file_item = Files.get_file_by_id(id=id)
             except Exception as e:
                 log.exception(e)
                 log.error(f"Error processing file: {file_item.id}")
@@ -162,11 +164,16 @@ def upload_file(
 
 
 @router.get("/", response_model=list[FileModelResponse])
-async def list_files(user=Depends(get_verified_user)):
+async def list_files(user=Depends(get_verified_user), content: bool = Query(True)):
     if user.role == "admin":
         files = Files.get_files()
     else:
         files = Files.get_files_by_user_id(user.id)
+
+    if not content:
+        for file in files:
+            del file.data["content"]
+
     return files
 
 

+ 24 - 19
backend/open_webui/routers/retrieval.py

@@ -150,8 +150,8 @@ def get_rf(
                     device=DEVICE_TYPE,
                     trust_remote_code=RAG_RERANKING_MODEL_TRUST_REMOTE_CODE,
                 )
-            except:
-                log.error("CrossEncoder error")
+            except Exception as e:
+                log.error(f"CrossEncoder: {e}")
                 raise Exception(ERROR_MESSAGES.DEFAULT("CrossEncoder error"))
     return rf
 
@@ -174,7 +174,7 @@ class ProcessUrlForm(CollectionNameForm):
     url: str
 
 
-class SearchForm(CollectionNameForm):
+class SearchForm(BaseModel):
     query: str
 
 
@@ -958,7 +958,7 @@ def process_file(
 
         if form_data.content:
             # Update the content in the file
-            # Usage: /files/{file_id}/data/content/update
+            # Usage: /files/{file_id}/data/content/update, /files/ (audio file upload pipeline)
 
             try:
                 # /files/{file_id}/data/content/update
@@ -1464,12 +1464,6 @@ async def process_web_search(
     log.debug(f"web_results: {web_results}")
 
     try:
-        collection_name = form_data.collection_name
-        if collection_name == "" or collection_name is None:
-            collection_name = f"web-search-{calculate_sha256_string(form_data.query)}"[
-                :63
-            ]
-
         urls = [result.link for result in web_results]
         loader = get_web_loader(
             urls,
@@ -1478,6 +1472,9 @@ async def process_web_search(
             trust_env=request.app.state.config.RAG_WEB_SEARCH_TRUST_ENV,
         )
         docs = await loader.aload()
+        urls = [
+            doc.metadata["source"] for doc in docs
+        ]  # only keep URLs which could be retrieved
 
         if request.app.state.config.BYPASS_WEB_SEARCH_EMBEDDING_AND_RETRIEVAL:
             return {
@@ -1494,18 +1491,26 @@ async def process_web_search(
                 "loaded_count": len(docs),
             }
         else:
-            await run_in_threadpool(
-                save_docs_to_vector_db,
-                request,
-                docs,
-                collection_name,
-                overwrite=True,
-                user=user,
-            )
+            collection_names = []
+            for doc_idx, doc in enumerate(docs):
+                collection_name = f"web-search-{calculate_sha256_string(form_data.query + '-' + urls[doc_idx])}"[
+                    :63
+                ]
+
+                collection_names.append(collection_name)
+
+                await run_in_threadpool(
+                    save_docs_to_vector_db,
+                    request,
+                    [doc],
+                    collection_name,
+                    overwrite=True,
+                    user=user,
+                )
 
             return {
                 "status": True,
-                "collection_name": collection_name,
+                "collection_names": collection_names,
                 "filenames": urls,
                 "loaded_count": len(docs),
             }

+ 37 - 17
backend/open_webui/utils/middleware.py

@@ -399,24 +399,44 @@ async def chat_web_search_handler(
                 all_results.append(results)
                 files = form_data.get("files", [])
 
-                if results.get("collection_name"):
-                    files.append(
-                        {
-                            "collection_name": results["collection_name"],
-                            "name": searchQuery,
-                            "type": "web_search",
-                            "urls": results["filenames"],
-                        }
-                    )
+                if results.get("collection_names"):
+                    for col_idx, collection_name in enumerate(
+                        results.get("collection_names")
+                    ):
+                        files.append(
+                            {
+                                "collection_name": collection_name,
+                                "name": searchQuery,
+                                "type": "web_search",
+                                "urls": [results["filenames"][col_idx]],
+                            }
+                        )
                 elif results.get("docs"):
-                    files.append(
-                        {
-                            "docs": results.get("docs", []),
-                            "name": searchQuery,
-                            "type": "web_search",
-                            "urls": results["filenames"],
-                        }
-                    )
+                    # Invoked when bypass embedding and retrieval is set to True
+                    docs = results["docs"]
+
+                    if len(docs) == len(results["filenames"]):
+                        # the number of docs and filenames (urls) should be the same
+                        for doc_idx, doc in enumerate(docs):
+                            files.append(
+                                {
+                                    "docs": [doc],
+                                    "name": searchQuery,
+                                    "type": "web_search",
+                                    "urls": [results["filenames"][doc_idx]],
+                                }
+                            )
+                    else:
+                        # edge case when the number of docs and filenames (urls) are not the same
+                        # this should not happen, but if it does, we will just append the docs
+                        files.append(
+                            {
+                                "docs": results.get("docs", []),
+                                "name": searchQuery,
+                                "type": "web_search",
+                                "urls": results["filenames"],
+                            }
+                        )
 
                 form_data["files"] = files
         except Exception as e:

+ 3 - 1
backend/open_webui/utils/tools.py

@@ -337,7 +337,9 @@ def convert_openapi_to_tool_payload(openapi_spec):
             tool = {
                 "type": "function",
                 "name": operation.get("operationId"),
-                "description": operation.get("summary", "No description available."),
+                "description": operation.get(
+                    "description", operation.get("summary", "No description available.")
+                ),
                 "parameters": {"type": "object", "properties": {}, "required": []},
             }
 

+ 1 - 0
backend/requirements.txt

@@ -54,6 +54,7 @@ elasticsearch==8.17.1
 
 transformers
 sentence-transformers==3.3.1
+accelerate
 colbert-ai==0.2.21
 einops==0.8.1
 

+ 2 - 2
package-lock.json

@@ -1,12 +1,12 @@
 {
 	"name": "open-webui",
-	"version": "0.6.1",
+	"version": "0.6.2",
 	"lockfileVersion": 3,
 	"requires": true,
 	"packages": {
 		"": {
 			"name": "open-webui",
-			"version": "0.6.1",
+			"version": "0.6.2",
 			"dependencies": {
 				"@azure/msal-browser": "^4.5.0",
 				"@codemirror/lang-javascript": "^6.2.2",

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
 	"name": "open-webui",
-	"version": "0.6.1",
+	"version": "0.6.2",
 	"private": true,
 	"scripts": {
 		"dev": "npm run pyodide:fetch && vite dev --host",

+ 1 - 0
pyproject.toml

@@ -61,6 +61,7 @@ dependencies = [
 
     "transformers",
     "sentence-transformers==3.3.1",
+    "accelerate",
     "colbert-ai==0.2.21",
     "einops==0.8.1",
 

+ 8 - 0
src/app.css

@@ -46,6 +46,14 @@ math {
 	@apply rounded-lg;
 }
 
+input::placeholder {
+	direction: auto;
+}
+
+textarea::placeholder {
+	direction: auto;
+}
+
 .input-prose {
 	@apply prose dark:prose-invert prose-headings:font-semibold prose-hr:my-4 prose-hr:border-gray-100 prose-hr:dark:border-gray-800 prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line;
 }

+ 1 - 1
src/lib/components/channel/MessageInput.svelte

@@ -381,7 +381,7 @@
 				>
 					<div
 						class="flex-1 flex flex-col relative w-full rounded-3xl px-1 bg-gray-600/5 dark:bg-gray-400/5 dark:text-gray-100"
-						dir={$settings?.chatDirection ?? 'LTR'}
+						dir={$settings?.chatDirection ?? 'auto'}
 					>
 						{#if files.length > 0}
 							<div class="mx-2 mt-2.5 -mb-1 flex flex-wrap gap-2">

+ 9 - 0
src/lib/components/chat/Chat.svelte

@@ -1744,6 +1744,11 @@
 		history.currentId = userMessageId;
 
 		await tick();
+
+		if (autoScroll) {
+			scrollToBottom();
+		}
+
 		await sendPrompt(history, userPrompt, userMessageId);
 	};
 
@@ -1754,6 +1759,10 @@
 			let userMessage = history.messages[message.parentId];
 			let userPrompt = userMessage.content;
 
+			if (autoScroll) {
+				scrollToBottom();
+			}
+
 			if ((userMessage?.models ?? [...selectedModels]).length == 1) {
 				// If user message has only one model selected, sendPrompt automatically selects it for regeneration
 				await sendPrompt(history, userPrompt, userMessage.id);

+ 3 - 2
src/lib/components/chat/MessageInput.svelte

@@ -510,7 +510,7 @@
 						>
 							<div
 								class="flex-1 flex flex-col relative w-full shadow-lg rounded-3xl border border-gray-100 dark:border-gray-850 hover:border-gray-200 focus-within:border-gray-200 hover:dark:border-gray-800 focus-within:dark:border-gray-800 transition px-1 bg-white/90 dark:bg-gray-400/5 dark:text-gray-100"
-								dir={$settings?.chatDirection ?? 'LTR'}
+								dir={$settings?.chatDirection ?? 'auto'}
 							>
 								{#if files.length > 0}
 									<div class="mx-2 mt-2.5 -mb-1 flex items-center flex-wrap gap-2">
@@ -821,6 +821,7 @@
 									{:else}
 										<textarea
 											id="chat-input"
+											dir="auto"
 											bind:this={chatInputElement}
 											class="scrollbar-hidden bg-transparent dark:text-gray-100 outline-hidden w-full pt-3 px-1 resize-none"
 											placeholder={placeholder ? placeholder : $i18n.t('Send a Message')}
@@ -1032,7 +1033,7 @@
 									{/if}
 								</div>
 
-								<div class=" flex justify-between mt-1.5 mb-2.5 mx-0.5 max-w-full">
+								<div class=" flex justify-between mt-1.5 mb-2.5 mx-0.5 max-w-full" dir="ltr">
 									<div class="ml-1 self-end flex items-center flex-1 max-w-[80%] gap-0.5">
 										<InputMenu
 											bind:selectedToolIds

+ 9 - 5
src/lib/components/chat/Messages/CitationsModal.svelte

@@ -14,6 +14,7 @@
 	let mergedDocuments = [];
 
 	function calculatePercentage(distance: number) {
+		if (typeof distance !== 'number') return null;
 		if (distance < 0) return 0;
 		if (distance > 1) return 100;
 		return Math.round(distance * 10000) / 100;
@@ -122,11 +123,14 @@
 										<div class="text-sm my-1 dark:text-gray-400 flex items-center gap-2 w-fit">
 											{#if showPercentage}
 												{@const percentage = calculatePercentage(document.distance)}
-												<span
-													class={`px-1 rounded-sm font-medium ${getRelevanceColor(percentage)}`}
-												>
-													{percentage.toFixed(2)}%
-												</span>
+
+												{#if typeof percentage === 'number'}
+													<span
+														class={`px-1 rounded-sm font-medium ${getRelevanceColor(percentage)}`}
+													>
+														{percentage.toFixed(2)}%
+													</span>
+												{/if}
 												<span class="text-gray-500 dark:text-gray-500">
 													({(document?.distance ?? 0).toFixed(4)})
 												</span>

+ 5 - 5
src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte

@@ -184,9 +184,9 @@
 		{/if}
 	{:else if token.type === 'list'}
 		{#if token.ordered}
-			<ol start={token.start || 1}>
+			<ol start={token.start || 1} dir="auto">
 				{#each token.items as item, itemIdx}
-					<li dir="auto" class="text-start">
+					<li class="text-start">
 						{#if item?.task}
 							<input
 								class=" translate-y-[1px] -translate-x-1"
@@ -216,9 +216,9 @@
 				{/each}
 			</ol>
 		{:else}
-			<ul>
+			<ul dir="auto">
 				{#each token.items as item, itemIdx}
-					<li dir="auto" class="text-start">
+					<li class="text-start">
 						{#if item?.task}
 							<input
 								class=" translate-y-[1px] -translate-x-1"
@@ -295,7 +295,7 @@
 		</p>
 	{:else if token.type === 'text'}
 		{#if top}
-			<p dir="auto">
+			<p>
 				{#if token.tokens}
 					<MarkdownInlineTokens id={`${id}-${tokenIdx}-t`} tokens={token.tokens} {onSourceClick} />
 				{:else}

+ 1 - 1
src/lib/components/chat/Messages/ResponseMessage.svelte

@@ -582,7 +582,7 @@
 		id="message-{message.id}"
 		dir={$settings.chatDirection}
 	>
-		<div class={`shrink-0 ${($settings?.chatDirection ?? 'LTR') === 'LTR' ? 'mr-3' : 'ml-3'}`}>
+		<div class={`shrink-0 ltr:mr-3 rtl:ml-3`}>
 			<ProfileImage
 				src={model?.info?.meta?.profile_image_url ??
 					($i18n.language === 'dg-DG' ? `/doge.png` : `${WEBUI_BASE_URL}/static/favicon.png`)}

+ 1 - 1
src/lib/components/chat/Messages/UserMessage.svelte

@@ -102,7 +102,7 @@
 
 <div class=" flex w-full user-message" dir={$settings.chatDirection} id="message-{message.id}">
 	{#if !($settings?.chatBubble ?? true)}
-		<div class={`shrink-0 ${($settings?.chatDirection ?? 'LTR') === 'LTR' ? 'mr-3' : 'ml-3'}`}>
+		<div class={`shrink-0 ltr:mr-3 rtl:ml-3`}>
 			<ProfileImage
 				src={message.user
 					? ($models.find((m) => m.id === message.user)?.info?.meta?.profile_image_url ??

+ 12 - 4
src/lib/components/chat/Settings/Interface.svelte

@@ -39,7 +39,7 @@
 
 	let landingPageMode = '';
 	let chatBubble = true;
-	let chatDirection: 'LTR' | 'RTL' = 'LTR';
+	let chatDirection: 'LTR' | 'RTL' | 'auto' = 'auto';
 	let ctrlEnterToSend = false;
 
 	let collapseCodeBlocks = false;
@@ -211,7 +211,13 @@
 	};
 
 	const toggleChangeChatDirection = async () => {
-		chatDirection = chatDirection === 'LTR' ? 'RTL' : 'LTR';
+		if (chatDirection === 'auto') {
+			chatDirection = 'LTR';
+		} else if (chatDirection === 'LTR') {
+			chatDirection = 'RTL';
+		} else if (chatDirection === 'RTL') {
+			chatDirection = 'auto';
+		}
 		saveSettings({ chatDirection });
 	};
 
@@ -257,7 +263,7 @@
 		widescreenMode = $settings.widescreenMode ?? false;
 		splitLargeChunks = $settings.splitLargeChunks ?? false;
 		scrollOnBranchChange = $settings.scrollOnBranchChange ?? true;
-		chatDirection = $settings.chatDirection ?? 'LTR';
+		chatDirection = $settings.chatDirection ?? 'auto';
 		userLocation = $settings.userLocation ?? false;
 
 		notificationSound = $settings.notificationSound ?? true;
@@ -412,8 +418,10 @@
 					>
 						{#if chatDirection === 'LTR'}
 							<span class="ml-2 self-center">{$i18n.t('LTR')}</span>
-						{:else}
+						{:else if chatDirection === 'RTL'}
 							<span class="ml-2 self-center">{$i18n.t('RTL')}</span>
+						{:else}
+							<span class="ml-2 self-center">{$i18n.t('Auto')}</span>
 						{/if}
 					</button>
 				</div>

+ 8 - 0
src/lib/components/chat/Settings/Tools.svelte

@@ -97,6 +97,14 @@
 							)}
 						</div>
 					</div>
+
+					<div class=" text-xs text-gray-600 dark:text-gray-300 mb-2">
+						<a
+							class="underline"
+							href="https://github.com/open-webui/openapi-servers"
+							target="_blank">{$i18n.t('Learn more about OpenAPI tool servers.')}</a
+						>
+					</div>
 				</div>
 			</div>
 		{:else}

+ 2 - 2
src/lib/components/chat/ToolServersModal.svelte

@@ -82,10 +82,10 @@
 
 			<div class="px-5 pb-5 w-full flex flex-col justify-center">
 				<div class=" text-xs text-gray-600 dark:text-gray-300 mb-2">
-					Open WebUI can use tools provided by any OpenAPI server. <br /><a
+					{$i18n.t('Open WebUI can use tools provided by any OpenAPI server.')} <br /><a
 						class="underline"
 						href="https://github.com/open-webui/openapi-servers"
-						target="_blank">Learn more about OpenAPI tool servers.</a
+						target="_blank">{$i18n.t('Learn more about OpenAPI tool servers.')}</a
 					>
 				</div>
 				<div class=" text-sm dark:text-gray-300 mb-1">

+ 3 - 0
src/lib/i18n/locales/ar-BH/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "النسخ التلقائي للاستجابة إلى الحافظة",
 	"Auto-playback response": "استجابة التشغيل التلقائي",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "فتح محادثة جديده",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",

+ 3 - 0
src/lib/i18n/locales/ar/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "توثيق",
 	"Authentication": "المصادقة",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "نسخ الرد تلقائيًا إلى الحافظة",
 	"Auto-playback response": "تشغيل الرد تلقائيًا",
 	"Autocomplete Generation": "توليد الإكمال التلقائي",
@@ -654,6 +655,7 @@
 	"LDAP": "LDAP",
 	"LDAP server updated": "تم تحديث خادم LDAP",
 	"Leaderboard": "لوحة المتصدرين",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "اتركه فارغًا لعدم وجود حد",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "فتح الملف",
 	"Open in full screen": "فتح في وضع ملء الشاشة",
 	"Open new chat": "فتح محادثة جديده",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "تستخدم واجهة WebUI أداة faster-whisper داخليًا.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "تستخدم WebUI نموذج SpeechT5 وتضمينات صوتية من CMU Arctic.",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "إصدار WebUI الحالي (v{{OPEN_WEBUI_VERSION}}) أقل من الإصدار المطلوب (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/bg-BG/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "Удостоверяване",
 	"Authentication": "Автентикация",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Автоматично копиране на отговор в клипборда",
 	"Auto-playback response": "Автоматично възпроизвеждане на отговора",
 	"Autocomplete Generation": "Генериране на автоматично довършване",
@@ -654,6 +655,7 @@
 	"LDAP": "LDAP",
 	"LDAP server updated": "LDAP сървърът е актуализиран",
 	"Leaderboard": "Класация",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "Оставете празно за неограничено",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "Отвори файл",
 	"Open in full screen": "Отвори на цял екран",
 	"Open new chat": "Отвори нов чат",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Open WebUI използва вътрешно faster-whisper.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI използва SpeechT5 и CMU Arctic говорителни вграждания.",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Версията на Open WebUI (v{{OPEN_WEBUI_VERSION}}) е по-ниска от необходимата версия (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/bn-BD/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "রেসপন্সগুলো স্বয়ংক্রিভাবে ক্লিপবোর্ডে কপি হবে",
 	"Auto-playback response": "রেসপন্স অটো-প্লেব্যাক",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "নতুন চ্যাট খুলুন",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",

+ 3 - 0
src/lib/i18n/locales/bo-TB/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "དངོས་ར་སྤྲོད་པ།",
 	"Authentication": "དངོས་ར་སྤྲོད་པ།",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "ལན་རང་འགུལ་གྱིས་སྦྱར་སྡེར་དུ་འདྲ་བཤུས་བྱེད་པ།",
 	"Auto-playback response": "ལན་རང་འགུལ་གྱིས་གཏོང་བ།",
 	"Autocomplete Generation": "རང་འཚང་བཟོ་སྐྲུན།",
@@ -654,6 +655,7 @@
 	"LDAP": "LDAP",
 	"LDAP server updated": "LDAP སར་བར་གསར་སྒྱུར་བྱས།",
 	"Leaderboard": "འགྲན་རེས་རེའུ་མིག",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "ཚད་མེད་པའི་ཆེད་དུ་སྟོང་པ་བཞག་པ།",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "\"{{url}}/api/tags\" མཇུག་མཐུད་ནས་དཔེ་དབྱིབས་ཡོངས་རྫོགས་ཚུད་པར་སྟོང་པ་བཞག་པ།",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "\"{{url}}/models\" མཇུག་མཐུད་ནས་དཔེ་དབྱིབས་ཡོངས་རྫོགས་ཚུད་པར་སྟོང་པ་བཞག་པ།",
@@ -792,6 +794,7 @@
 	"Open file": "ཡིག་ཆ་ཁ་ཕྱེ་བ།",
 	"Open in full screen": "ཡོངས་གནས་ངོས་སུ་ཁ་ཕྱེ་བ།",
 	"Open new chat": "ཁ་བརྡ་གསར་པ་ཁ་ཕྱེ་བ།",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Open WebUI ཡིས་ནང་ཁུལ་དུ་ faster-whisper བེད་སྤྱོད་བྱེད།",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI ཡིས་ SpeechT5 དང་ CMU Arctic གཏམ་བཤད་པའི་ཚུད་འཇུག་བེད་སྤྱོད་བྱེད།",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Open WebUI པར་གཞི། (v{{OPEN_WEBUI_VERSION}}) དེ་དགོས་ངེས་ཀྱི་པར་གཞི་ (v{{REQUIRED_VERSION}}) ལས་དམའ་བ།",

+ 3 - 0
src/lib/i18n/locales/ca-ES/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "Autenticar",
 	"Authentication": "Autenticació",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Copiar la resposta automàticament al porta-retalls",
 	"Auto-playback response": "Reproduir la resposta automàticament",
 	"Autocomplete Generation": "Generació automàtica",
@@ -654,6 +655,7 @@
 	"LDAP": "LDAP",
 	"LDAP server updated": "Servidor LDAP actualitzat",
 	"Leaderboard": "Tauler de classificació",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "Deixar-ho buit per il·limitat",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "Deixar-ho buit per incloure tots els models del punt de connexió \"{{url}}/api/tags\"",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "Deixar-ho buit per incloure tots els models del punt de connexió \"{{url}}/models\"",
@@ -792,6 +794,7 @@
 	"Open file": "Obrir arxiu",
 	"Open in full screen": "Obrir en pantalla complerta",
 	"Open new chat": "Obre un xat nou",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Open WebUI utilitza faster-whisper internament.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI utilitza incrustacions de SpeechT5 i CMU Arctic.",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "La versió d'Open WebUI (v{{OPEN_WEBUI_VERSION}}) és inferior a la versió requerida (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/ceb-PH/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Awtomatikong kopya sa tubag sa clipboard",
 	"Auto-playback response": "Autoplay nga tubag",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "Ablihi ang bag-ong diskusyon",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",

+ 3 - 0
src/lib/i18n/locales/cs-CZ/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "Autentikace",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Automatické kopírování odpovědi do schránky",
 	"Auto-playback response": "Automatická odpověď při přehrávání",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "Žebříček",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "Nechte prázdné pro neomezeně",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "Otevřít soubor",
 	"Open in full screen": "Otevřít na celou obrazovku",
 	"Open new chat": "Otevřít nový chat",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Open WebUI interně používá faster-whisper.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Verze Open WebUI (v{{OPEN_WEBUI_VERSION}}) je nižší než požadovaná verze (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/da-DK/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Automatisk kopiering af svar til udklipsholder",
 	"Auto-playback response": "Automatisk afspil svar",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "Lad stå tomt for ubegrænset",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "Åbn fil",
 	"Open in full screen": "Åbn i fuld skærm",
 	"Open new chat": "Åbn ny chat",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Open WebUI-version (v{{OPEN_WEBUI_VERSION}}) er lavere end den krævede version (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/de-DE/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "Authentifizieren",
 	"Authentication": "Authentifizierung",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Antwort automatisch in die Zwischenablage kopieren",
 	"Auto-playback response": "Antwort automatisch abspielen",
 	"Autocomplete Generation": "Automatische Vervollständigung",
@@ -654,6 +655,7 @@
 	"LDAP": "LDAP",
 	"LDAP server updated": "LDAP-Server aktualisiert",
 	"Leaderboard": "Bestenliste",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "Leer lassen für unbegrenzt",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "Datei öffnen",
 	"Open in full screen": "Im Vollbildmodus öffnen",
 	"Open new chat": "Neuen Chat öffnen",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Open WebUI verwendet intern faster-whisper.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI verwendet SpeechT5 und CMU Arctic-Sprecher-Embeddings.",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Die installierte Open-WebUI-Version (v{{OPEN_WEBUI_VERSION}}) ist niedriger als die erforderliche Version (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/dg-DG/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Copy Bark Auto Bark",
 	"Auto-playback response": "Auto-playback response",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "Open new bark",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",

+ 3 - 0
src/lib/i18n/locales/el-GR/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "Επαλήθευση",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Αυτόματη Αντιγραφή Απάντησης στο Πρόχειρο",
 	"Auto-playback response": "Αυτόματη αναπαραγωγή της απάντησης",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "LDAP",
 	"LDAP server updated": "Ο διακομιστής LDAP ενημερώθηκε",
 	"Leaderboard": "Κατάταξη",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "Αφήστε κενό για απεριόριστο",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "Άνοιγμα αρχείου",
 	"Open in full screen": "Άνοιγμα σε πλήρη οθόνη",
 	"Open new chat": "Άνοιγμα νέας συνομιλίας",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Το Open WebUI χρησιμοποιεί το faster-whisper εσωτερικά.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Το Open WebUI χρησιμοποιεί τα SpeechT5 και CMU Arctic embeddings ομιλητών.",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Η έκδοση Open WebUI (v{{OPEN_WEBUI_VERSION}}) είναι χαμηλότερη από την απαιτούμενη έκδοση (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/en-GB/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "",
 	"Auto-playback response": "",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",

+ 3 - 0
src/lib/i18n/locales/en-US/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "",
 	"Auto-playback response": "",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",

+ 3 - 0
src/lib/i18n/locales/es-ES/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "Autentificar",
 	"Authentication": "Autentificación",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Auto-Copiar respuesta al Portapapeles",
 	"Auto-playback response": "Auto-Reproducir Respuesta",
 	"Autocomplete Generation": "Generación de Autocompletado",
@@ -654,6 +655,7 @@
 	"LDAP": "LDAP",
 	"LDAP server updated": "Servidor LDAP actualizado",
 	"Leaderboard": "Tabla Clasificatoria",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "Dejar vacío para ilimitado",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "Dejar vacío para incluir todos los modelos desde el endpoint \"{{url}}/api/tags\"",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "Dejar vacío para incluir todos los modelos desde el endpoint \"{{url}}/models\"",
@@ -792,6 +794,7 @@
 	"Open file": "Abrir archivo",
 	"Open in full screen": "Abrir en pantalla completa",
 	"Open new chat": "Abrir nuevo chat",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Open-WebUI usa faster-whisper internamente.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open-WebUI usa SpeechT5 y la incrustración de locutores de CMU Arctic.",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "La versión de Open-WebUI (v{{OPEN_WEBUI_VERSION}}) es inferior a la versión  (v{{REQUIRED_VERSION}}) requerida",

+ 3 - 0
src/lib/i18n/locales/et-EE/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "Autendi",
 	"Authentication": "Autentimine",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Kopeeri vastus automaatselt lõikelauale",
 	"Auto-playback response": "Mängi vastus automaatselt",
 	"Autocomplete Generation": "Automaattäitmise genereerimine",
@@ -654,6 +655,7 @@
 	"LDAP": "LDAP",
 	"LDAP server updated": "LDAP server uuendatud",
 	"Leaderboard": "Edetabel",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "Jäta tühjaks piiranguta kasutamiseks",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "Ava fail",
 	"Open in full screen": "Ava täisekraanil",
 	"Open new chat": "Ava uus vestlus",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Open WebUI kasutab sisemiselt faster-whisper'it.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI kasutab SpeechT5 ja CMU Arctic kõneleja manustamisi.",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Open WebUI versioon (v{{OPEN_WEBUI_VERSION}}) on madalam kui nõutav versioon (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/eu-ES/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "Autentifikatu",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Automatikoki Kopiatu Erantzuna Arbelera",
 	"Auto-playback response": "Automatikoki erreproduzitu erantzuna",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "LDAP",
 	"LDAP server updated": "LDAP zerbitzaria eguneratu da",
 	"Leaderboard": "Sailkapena",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "Utzi hutsik mugarik ez jartzeko",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "Ireki fitxategia",
 	"Open in full screen": "Ireki pantaila osoan",
 	"Open new chat": "Ireki txat berria",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Open WebUI-k faster-whisper erabiltzen du barnean.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI-k SpeechT5 eta CMU Arctic hiztun txertaketak erabiltzen ditu.",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Open WebUI bertsioa (v{{OPEN_WEBUI_VERSION}}) beharrezko bertsioa (v{{REQUIRED_VERSION}}) baino baxuagoa da",

+ 3 - 0
src/lib/i18n/locales/fa-IR/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "کپی خودکار پاسخ به کلیپ بورد",
 	"Auto-playback response": "پخش خودکار پاسخ",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "باز کردن گپ جدید",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",

+ 3 - 0
src/lib/i18n/locales/fi-FI/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "Todennus",
 	"Authenticate": "Todentaa",
 	"Authentication": "Todennus",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Kopioi vastaus automaattisesti leikepöydälle",
 	"Auto-playback response": "Soita vastaus automaattisesti",
 	"Autocomplete Generation": "Automaattisen täydennyksen luonti",
@@ -654,6 +655,7 @@
 	"LDAP": "LDAP",
 	"LDAP server updated": "LDAP-palvelin päivitetty",
 	"Leaderboard": "Tulosluettelo",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "Rajaton tyhjäksi jättämällä",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "Jätä tyhjäksi sisällyttääksesi \"{{url}}/api/tags\" päätepisteen mallit",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "Jätä tyhjäksi sisällyttääksesi \"{{url}}/models\" päätepisteen mallit",
@@ -792,6 +794,7 @@
 	"Open file": "Avaa tiedosto",
 	"Open in full screen": "Avaa koko näytön tilaan",
 	"Open new chat": "Avaa uusi keskustelu",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Open WebUI käyttää faster-whisperia sisäisesti.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI käyttää SpeechT5:tä ja CMU Arctic -kaiuttimen upotuksia.",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Open WebUI -versio (v{{OPEN_WEBUI_VERSION}}) on alempi kuin vaadittu versio (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/fr-CA/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Copie automatique de la réponse vers le presse-papiers",
 	"Auto-playback response": "Réponse de lecture automatique",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "Ouvrir une nouvelle discussion",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",

+ 3 - 0
src/lib/i18n/locales/fr-FR/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "Authentifier",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Copie automatique de la réponse vers le presse-papiers",
 	"Auto-playback response": "Lire automatiquement la réponse",
 	"Autocomplete Generation": "Génération des suggestions",
@@ -654,6 +655,7 @@
 	"LDAP": "LDAP",
 	"LDAP server updated": "Serveur LDAP mis à jour",
 	"Leaderboard": "Classement",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "Laissez vide pour illimité",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "Ouvrir le fichier",
 	"Open in full screen": "Ouvrir en plein écran",
 	"Open new chat": "Ouvrir une nouvelle conversation",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Open WebUI utilise faster-whisper en interne.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI utilise SpeechT5 et les embeddings de locuteur CMU Arctic.",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "La version Open WebUI (v{{OPEN_WEBUI_VERSION}}) est inférieure à la version requise (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/he-IL/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "העתקה אוטומטית של תגובה ללוח",
 	"Auto-playback response": "תגובת השמעה אוטומטית",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "פתח צ'אט חדש",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",

+ 3 - 0
src/lib/i18n/locales/hi-IN/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "क्लिपबोर्ड पर प्रतिक्रिया ऑटोकॉपी",
 	"Auto-playback response": "ऑटो-प्लेबैक प्रतिक्रिया",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "नई चैट खोलें",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",

+ 3 - 0
src/lib/i18n/locales/hr-HR/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Automatsko kopiranje odgovora u međuspremnik",
 	"Auto-playback response": "Automatska reprodukcija odgovora",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "Otvorite novi razgovor",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",

+ 3 - 0
src/lib/i18n/locales/hu-HU/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Válasz automatikus másolása a vágólapra",
 	"Auto-playback response": "Automatikus válasz lejátszás",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "Ranglista",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "Hagyja üresen a korlátlan használathoz",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "Fájl megnyitása",
 	"Open in full screen": "Megnyitás teljes képernyőn",
 	"Open new chat": "Új beszélgetés megnyitása",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Az Open WebUI belsőleg a faster-whispert használja.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Az Open WebUI verzió (v{{OPEN_WEBUI_VERSION}}) alacsonyabb, mint a szükséges verzió (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/id-ID/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Tanggapan Salin Otomatis ke Papan Klip",
 	"Auto-playback response": "Respons pemutaran otomatis",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "Buka obrolan baru",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",

+ 3 - 0
src/lib/i18n/locales/ie-GA/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "Fíordheimhnigh",
 	"Authentication": "Fíordheimhniú",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Freagra AutoCopy go Gearrthaisce",
 	"Auto-playback response": "Freagra uathsheinm",
 	"Autocomplete Generation": "Giniúint Uathchríochnaithe",
@@ -654,6 +655,7 @@
 	"LDAP": "LDAP",
 	"LDAP server updated": "Nuashonraíodh freastalaí LDAP",
 	"Leaderboard": "An Clár Ceannairí",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "Fág folamh le haghaidh neamhtheoranta",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "Oscail comhad",
 	"Open in full screen": "Oscail i scáileán iomlán",
 	"Open new chat": "Oscail comhrá nua",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Úsáideann Open WebUI cogar níos tapúla go hinmheánach.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Úsáideann Open WebUI úsáidí SpeechT5 agus CMU leabaithe cainteoir Artach.",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Tá leagan WebUI oscailte (v{{OPEN_WEBUI_VERSION}}) níos ísle ná an leagan riachtanach (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/it-IT/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Copia automatica della risposta negli appunti",
 	"Auto-playback response": "Riproduzione automatica della risposta",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "Apri nuova chat",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",

+ 3 - 0
src/lib/i18n/locales/ja-JP/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "クリップボードへの応答の自動コピー",
 	"Auto-playback response": "応答の自動再生",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "空欄なら無制限",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "新しいチャットを開く",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",

+ 3 - 0
src/lib/i18n/locales/ka-GE/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "ავთენტიკაცია",
 	"Authentication": "ავთენტიკაცია",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "პასუხის ავტომატური კოპირება ბუფერში",
 	"Auto-playback response": "ავტომატური დაკვრის პასუხი",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "LDAP",
 	"LDAP server updated": "",
 	"Leaderboard": "ლიდერების დაფა",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "ფაილის გახსნა",
 	"Open in full screen": "მთელ ეკრანზე გახსნა",
 	"Open new chat": "ახალი ჩატის გახსნა",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",

+ 3 - 0
src/lib/i18n/locales/ko-KR/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "응답을 클립보드에 자동 복사",
 	"Auto-playback response": "응답 자동 재생",
 	"Autocomplete Generation": "자동완성 생성",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "리더보드",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "무제한을 위해 빈칸으로 남겨두세요",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "파일 열기",
 	"Open in full screen": "전체화면으로 열기",
 	"Open new chat": "새 채팅 열기",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Open WebUI는 내부적으로 패스트 위스퍼를 사용합니다.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI는 SpeechT5와 CMU Arctic 스피커 임베딩을 사용합니다.",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "열린 WebUI 버젼(v{{OPEN_WEBUI_VERSION}})은 최소 버젼 (v{{REQUIRED_VERSION}})보다 낮습니다",

+ 4 - 4
src/lib/i18n/locales/languages.json

@@ -1,8 +1,4 @@
 [
-	{
-		"code": "ar",
-		"title": "Arabic (العربية)"
-	},
 	{
 		"code": "en-US",
 		"title": "English (US)"
@@ -11,6 +7,10 @@
 		"code": "en-GB",
 		"title": "English (GB)"
 	},
+	{
+		"code": "ar",
+		"title": "Arabic (العربية)"
+	},
 	{
 		"code": "ar-BH",
 		"title": "Arabic (Bahrain)"

+ 3 - 0
src/lib/i18n/locales/lt-LT/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Automatiškai nukopijuoti atsakymą",
 	"Auto-playback response": "Automatinis atsakymo skaitymas",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "Atverti naują pokalbį",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Tortue Chat versija per sena. Reikalinga (v{{REQUIRED_VERSION}}) versija.",

+ 3 - 0
src/lib/i18n/locales/ms-MY/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Salin Response secara Automatik ke Papan Klip",
 	"Auto-playback response": "Main semula respons secara automatik",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "Buka perbualan baru",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) adalah lebih rendah daripada versi yang diperlukan iaitu (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/nb-NO/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "Godkjenn",
 	"Authentication": "Godkjenning",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Kopier svar automatisk til utklippstavlen",
 	"Auto-playback response": "Spill av svar automatisk",
 	"Autocomplete Generation": "Generering av autofullføring",
@@ -654,6 +655,7 @@
 	"LDAP": "LDAP",
 	"LDAP server updated": "LDAP-server oppdatert",
 	"Leaderboard": "Ledertavle",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "La stå tomt for ubegrenset",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "Åpne fil",
 	"Open in full screen": "Åpne i fullskjerm",
 	"Open new chat": "Åpne ny chat",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Open WebUI bruker faster-whisper internt.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI bruker SpeechT5 og CMU Arctic-høytalerinnbygginger",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Open WebUI-versjonen (v{{OPEN_WEBUI_VERSION}}) er lavere enn den påkrevde versjonen (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/nl-NL/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "Authenticeer",
 	"Authentication": "Authenticatie",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Antwoord automatisch kopiëren naar klembord",
 	"Auto-playback response": "Automatisch afspelen van antwoord",
 	"Autocomplete Generation": "Automatische aanvullingsgeneratie",
@@ -654,6 +655,7 @@
 	"LDAP": "LDAP",
 	"LDAP server updated": "LDAP-server bijgewerkt",
 	"Leaderboard": "Klassement",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "Laat leeg voor ongelimiteerd",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "Laat leeg om alle modellen van het \"{{url}}/api/tags\"-endpoint mee te nemen",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "Laat leeg om alle modellen van \"{{url}}/models\"-endpoint mee te nemen",
@@ -792,6 +794,7 @@
 	"Open file": "Open bestand",
 	"Open in full screen": "Open in volledig scherm",
 	"Open new chat": "Open nieuwe chat",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Open WebUI gebruikt faster-whisper intern",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI gebruikt SpeechT5 en CMU Arctic spreker-embeddings",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Open WebUI versie (v{{OPEN_WEBUI_VERSION}}) is kleiner dan de benodigde versie (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/pa-IN/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "ਜਵਾਬ ਆਟੋ ਕਾਪੀ ਕਲਿੱਪਬੋਰਡ 'ਤੇ",
 	"Auto-playback response": "ਆਟੋ-ਪਲੇਬੈਕ ਜਵਾਬ",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "ਨਵੀਂ ਗੱਲਬਾਤ ਖੋਲ੍ਹੋ",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",

+ 3 - 0
src/lib/i18n/locales/pl-PL/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "Zaloguj się",
 	"Authentication": "Uwierzytelnianie",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Automatyczne kopiowanie odpowiedzi do schowka",
 	"Auto-playback response": "Automatyczna odpowiedź na powtórzenie",
 	"Autocomplete Generation": "Generowanie autouzupełniania",
@@ -654,6 +655,7 @@
 	"LDAP": "LDAP",
 	"LDAP server updated": "Serwer LDAP został zaktualizowany",
 	"Leaderboard": "Tablica wyników",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "Pozostaw puste dla nieograniczonego",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "Otwórz plik",
 	"Open in full screen": "Otwórz na pełny ekran",
 	"Open new chat": "Otwórz nową rozmowę",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Open WebUI korzysta wewnętrznie z szybszego faster-whisper.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Otwarta WebUI wykorzystuje SpeechT5 i wbudowane zbiory danych mówcy CMU Arctic.",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Wersja Open WebUI (v{{OPEN_WEBUI_VERSION}}) jest niższa niż wymagana wersja (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/pt-BR/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "Autenticar",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Cópia Automática da Resposta para a Área de Transferência",
 	"Auto-playback response": "Resposta de reprodução automática",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "Servidor LDAP atualizado",
 	"Leaderboard": "Tabela de classificação",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "Deixe vazio para ilimitado",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "Abrir arquivo",
 	"Open in full screen": "Abrir em tela cheia",
 	"Open new chat": "Abrir novo chat",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Open WebUI usa faster-whisper internamente.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "A Open WebUI usa os embeddings de voz do SpeechT5 e do CMU Arctic.",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "A versão do Open WebUI (v{{OPEN_WEBUI_VERSION}}) é inferior à versão necessária (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/pt-PT/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Cópia Automática da Resposta para a Área de Transferência",
 	"Auto-playback response": "Reprodução automática da resposta",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "Abrir nova conversa",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",

+ 3 - 0
src/lib/i18n/locales/ro-RO/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "Autentificare",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Copiere Automată a Răspunsului în Clipboard",
 	"Auto-playback response": "Redare automată a răspunsului",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "Tabel de clasament",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "Lăsați gol pentru nelimitat",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "Deschide fișierul",
 	"Open in full screen": "Deschide în ecran complet",
 	"Open new chat": "Deschide conversație nouă",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Open WebUI folosește faster-whisper intern.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Versiunea Open WebUI (v{{OPEN_WEBUI_VERSION}}) este mai mică decât versiunea necesară (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/ru-RU/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "Аутентификация",
 	"Authentication": "Аутентификация",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Автоматическое копирование ответа в буфер обмена",
 	"Auto-playback response": "Автоматическое воспроизведение ответа",
 	"Autocomplete Generation": "Генерация автозаполнения",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "LDAP сервер обновлен",
 	"Leaderboard": "Таблица Лидеров",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "Оставьте пустым для неограниченного",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "Открыть файл",
 	"Open in full screen": "Открыть на весь экран",
 	"Open new chat": "Открыть новый чат",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Open WebUI использует более быстрый внутренний интерфейс whisper.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "В Open WebUI используются встраиваемые движки генерации речи SpeechT5 и CMU Arctic.",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Версия Open WebUI (v{{OPEN_WEBUI_VERSION}}) ниже требуемой версии (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/sk-SK/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "Autentifikovať",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Automatické kopírovanie odpovede do schránky",
 	"Auto-playback response": "Automatická odpoveď pri prehrávaní",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "Rebríček",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "Nechajte prázdne pre neobmedzene",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "Otvoriť súbor",
 	"Open in full screen": "Otvoriť na celú obrazovku",
 	"Open new chat": "Otvoriť nový chat",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Open WebUI interne používa faster-whisper.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Verzia Open WebUI (v{{OPEN_WEBUI_VERSION}}) je nižšia ako požadovaná verzia (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/sr-RS/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "Идентификација",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Самостално копирање одговора у оставу",
 	"Auto-playback response": "Самостално пуштање одговора",
 	"Autocomplete Generation": "Стварање самодовршавања",
@@ -654,6 +655,7 @@
 	"LDAP": "ЛДАП",
 	"LDAP server updated": "ЛДАП сервер измењен",
 	"Leaderboard": "Ранг листа",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "Покрени ново ћаскање",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",

+ 3 - 0
src/lib/i18n/locales/sv-SE/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "Autentisera",
 	"Authentication": "Autentisering",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Automatisk kopiering av svar till urklipp",
 	"Auto-playback response": "Automatisk uppspelning av svar",
 	"Autocomplete Generation": "Automatisk komplettering av generering",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "Öppna ny chatt",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",

+ 3 - 0
src/lib/i18n/locales/th-TH/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "ตอบสนองการคัดลอกอัตโนมัติไปยังคลิปบอร์ด",
 	"Auto-playback response": "ตอบสนองการเล่นอัตโนมัติ",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "เปิดแชทใหม่",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "เวอร์ชั่น Open WebUI (v{{OPEN_WEBUI_VERSION}}) ต่ำกว่าเวอร์ชั่นที่ต้องการ (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/tk-TW/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "",
 	"Auto-playback response": "",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "",
 	"Open in full screen": "",
 	"Open new chat": "",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "",

+ 3 - 0
src/lib/i18n/locales/tr-TR/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "Kimlik Doğrulama",
 	"Authentication": "Kimlik Doğrulama",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Yanıtı Panoya Otomatik Kopyala",
 	"Auto-playback response": "Yanıtı otomatik oynatma",
 	"Autocomplete Generation": "Otomatik Tamamlama Üretimi",
@@ -654,6 +655,7 @@
 	"LDAP": "LDAP",
 	"LDAP server updated": "LDAP sunucusu güncellendi",
 	"Leaderboard": "Liderlik Tablosu",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "Sınırsız için boş bırakınız",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "Dosyayı aç",
 	"Open in full screen": "Tam ekranda aç",
 	"Open new chat": "Yeni sohbet aç",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Open WebUI, dahili olarak daha hızlı-fısıltı kullanır.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI, SpeechT5 ve CMU Arctic konuşmacı gömme kullanır.",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Open-WebUI sürümü (v{{OPEN_WEBUI_VERSION}}) gerekli sürümden (v{{REQUIRED_VERSION}}) düşük",

+ 3 - 0
src/lib/i18n/locales/uk-UA/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "Автентифікувати",
 	"Authentication": "Аутентифікація",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "Автокопіювання відповіді в буфер обміну",
 	"Auto-playback response": "Автоматичне відтворення відповіді",
 	"Autocomplete Generation": "Генерація автозаповнення",
@@ -654,6 +655,7 @@
 	"LDAP": "LDAP",
 	"LDAP server updated": "Сервер LDAP оновлено",
 	"Leaderboard": "Таблиця лідерів",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "Залиште порожнім для необмеженого розміру",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "Залиште порожнім, щоб включити всі моделі з кінцевої точки \"{{url}}/api/tags\"",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "Залиште порожнім, щоб включити всі моделі з кінцевої точки \"{{url}}/models\"",
@@ -792,6 +794,7 @@
 	"Open file": "Відкрити файл",
 	"Open in full screen": "Відкрити на весь екран",
 	"Open new chat": "Відкрити новий чат",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Open WebUI використовує faster-whisper внутрішньо.",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI використовує вбудовування голосів SpeechT5 та CMU Arctic.",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Open WebUI версія (v{{OPEN_WEBUI_VERSION}}) нижча за необхідну версію (v{{REQUIRED_VERSION}})",

+ 3 - 0
src/lib/i18n/locales/ur-PK/translation.json

@@ -111,6 +111,7 @@
 	"Auth": "",
 	"Authenticate": "",
 	"Authentication": "",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "جواب خودکار طور پر کلپ بورڈ پر کاپی ہو گیا",
 	"Auto-playback response": "آٹو پلے بیک جواب",
 	"Autocomplete Generation": "",
@@ -654,6 +655,7 @@
 	"LDAP": "",
 	"LDAP server updated": "",
 	"Leaderboard": "لیڈر بورڈ",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "لامحدود کے لیے خالی چھوڑیں",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "",
@@ -792,6 +794,7 @@
 	"Open file": "فائل کھولیں",
 	"Open in full screen": "پوری اسکرین میں کھولیں",
 	"Open new chat": "نیا چیٹ کھولیں",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "اوپن ویب یو آئی اندرونی طور پر فاسٹر وِسپر استعمال کرتا ہے",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "اوپن WebUI ورژن (v{{OPEN_WEBUI_VERSION}}) مطلوبہ ورژن (v{{REQUIRED_VERSION}}) سے کم ہے",

Разница между файлами не показана из-за своего большого размера
+ 375 - 373
src/lib/i18n/locales/vi-VN/translation.json


+ 25 - 22
src/lib/i18n/locales/zh-CN/translation.json

@@ -6,7 +6,7 @@
 	"(latest)": "(最新版)",
 	"(Ollama)": "(Ollama)",
 	"{{ models }}": "{{ models }}",
-	"{{COUNT}} Available Tools": "",
+	"{{COUNT}} Available Tools": "{{COUNT}} 个可用工具",
 	"{{COUNT}} hidden lines": "{{COUNT}} 行被隐藏",
 	"{{COUNT}} Replies": "{{COUNT}} 回复",
 	"{{user}}'s Chats": "{{user}} 的对话记录",
@@ -108,9 +108,10 @@
 	"Attribute for Username": "用户名属性",
 	"Audio": "语音",
 	"August": "八月",
-	"Auth": "",
+	"Auth": "授权",
 	"Authenticate": "认证",
 	"Authentication": "身份验证",
+	"Auto": "",
 	"Auto-Copy Response to Clipboard": "自动复制回复到剪贴板",
 	"Auto-playback response": "自动念出回复内容",
 	"Autocomplete Generation": "输入框内容猜测补全",
@@ -120,7 +121,7 @@
 	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 基础地址",
 	"AUTOMATIC1111 Base URL is required.": "需要 AUTOMATIC1111 基础地址。",
 	"Available list": "可用列表",
-	"Available Tools": "",
+	"Available Tools": "可用工具",
 	"available!": "版本可用!",
 	"Awful": "糟糕",
 	"Azure AI Speech": "Azure AI 语音",
@@ -219,10 +220,10 @@
 	"Confirm your new password": "确认新密码",
 	"Connect to your own OpenAI compatible API endpoints.": "连接到你自己的与 OpenAI 兼容的 API 接口端点。",
 	"Connect to your own OpenAPI compatible external tool servers.": "连接到您自己的兼容 OpenAPI 的外部工具服务器。",
-	"Connection failed": "",
-	"Connection successful": "",
+	"Connection failed": "连接失败",
+	"Connection successful": "连接成功",
 	"Connections": "外部连接",
-	"Connections saved successfully": "",
+	"Connections saved successfully": "连接保存成功",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort.": "约束推理模型的推理努力程度。仅适用于支持推理努力控制的特定提供商的推理模型。",
 	"Contact Admin for WebUI Access": "请联系管理员以获取访问权限",
 	"Content": "内容",
@@ -307,7 +308,7 @@
 	"Direct Connections": "直接连接",
 	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "直接连接功能允许用户连接至其自有的、兼容 OpenAI 的 API 端点。",
 	"Direct Connections settings updated": "直接连接设置已更新",
-	"Direct Tool Servers": "",
+	"Direct Tool Servers": "直接连接工具服务器",
 	"Disabled": "禁用",
 	"Discover a function": "发现更多函数",
 	"Discover a model": "发现更多模型",
@@ -417,7 +418,7 @@
 	"Enter Kagi Search API Key": "输入 Kagi Search API 密钥",
 	"Enter Key Behavior": "Enter 键行为",
 	"Enter language codes": "输入语言代码",
-	"Enter Mistral API Key": "",
+	"Enter Mistral API Key": "输入 Mistral API 密钥",
 	"Enter Model ID": "输入模型 ID",
 	"Enter model tag (e.g. {{modelTag}})": "输入模型标签 (例如:{{modelTag}})",
 	"Enter Mojeek Search API Key": "输入 Mojeek Search API 密钥",
@@ -442,7 +443,7 @@
 	"Enter server port": "输入服务器端口",
 	"Enter stop sequence": "输入停止序列 (Stop Sequence)",
 	"Enter system prompt": "输入系统提示词 (Prompt)",
-	"Enter system prompt here": "",
+	"Enter system prompt here": "在这里输入系统提示词 (Prompt)",
 	"Enter Tavily API Key": "输入 Tavily API 密钥",
 	"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "输入 WebUI 的公共 URL。此 URL 将用于在通知中生成链接。",
 	"Enter Tika Server URL": "输入 Tika 服务器地址",
@@ -456,7 +457,7 @@
 	"Enter Your Email": "输入您的电子邮箱",
 	"Enter Your Full Name": "输入您的名称",
 	"Enter your message": "输入您的消息",
-	"Enter your name": "",
+	"Enter your name": "输入您的名称",
 	"Enter your new password": "输入新的密码",
 	"Enter Your Password": "输入您的密码",
 	"Enter Your Role": "输入您的权限组",
@@ -476,7 +477,7 @@
 	"Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "已达到最大授权人数,请联系支持人员提升授权人数。",
 	"Exclude": "排除",
 	"Execute code for analysis": "执行代码进行分析",
-	"Executing **{{NAME}}**...": "",
+	"Executing **{{NAME}}**...": "正在执行 **{{NAME}}**...",
 	"Expand": "展开",
 	"Experimental": "实验性",
 	"Explain": "解释",
@@ -501,7 +502,7 @@
 	"Failed to create API Key.": "无法创建 API 密钥。",
 	"Failed to fetch models": "无法获取模型",
 	"Failed to read clipboard contents": "无法读取剪贴板内容",
-	"Failed to save connections": "",
+	"Failed to save connections": "无法保存连接",
 	"Failed to save models configuration": "无法保存模型配置",
 	"Failed to update settings": "无法更新设置",
 	"Failed to upload file.": "上传文件失败",
@@ -534,7 +535,7 @@
 	"Forge new paths": "开拓新道路",
 	"Form": "手动创建",
 	"Format your variables using brackets like this:": "使用括号格式化你的变量,如下所示:",
-	"Forwards system user session credentials to authenticate": "",
+	"Forwards system user session credentials to authenticate": "转发系统用户 session 凭证以进行身份\u200b\u200b验证",
 	"Frequency Penalty": "频率惩罚",
 	"Full Context Mode": "完整上下文模式",
 	"Function": "函数",
@@ -654,6 +655,7 @@
 	"LDAP": "LDAP",
 	"LDAP server updated": "LDAP 服务器已更新",
 	"Leaderboard": "排行榜",
+	"Learn more about OpenAPI tool servers.": "",
 	"Leave empty for unlimited": "留空表示无限制",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "留空以包含来自 \"{{url}}/api/tags\" 端点的所有模型",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "留空以包含来自 \"{{url}}/models\" 端点的所有模型",
@@ -704,8 +706,8 @@
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",
 	"Mirostat Tau": "Mirostat Tau",
-	"Mistral OCR": "",
-	"Mistral OCR API Key required.": "",
+	"Mistral OCR": "Mistral OCR",
+	"Mistral OCR API Key required.": "需要 Mistral OCR API 密钥。",
 	"Model": "模型",
 	"Model '{{modelName}}' has been successfully downloaded.": "模型'{{modelName}}'已成功下载。",
 	"Model '{{modelTag}}' is already in queue for downloading.": "模型'{{modelTag}}'已在下载队列中。",
@@ -792,6 +794,7 @@
 	"Open file": "打开文件",
 	"Open in full screen": "全屏打开",
 	"Open new chat": "打开新对话",
+	"Open WebUI can use tools provided by any OpenAPI server.": "",
 	"Open WebUI uses faster-whisper internally.": "Open WebUI 使用内置 faster-whisper。",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI 使用 SpeechT5 和 CMU Arctic speaker embedding。",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "当前 Open WebUI 版本 (v{{OPEN_WEBUI_VERSION}}) 低于所需的版本 (v{{REQUIRED_VERSION}})",
@@ -801,7 +804,7 @@
 	"OpenAI API Key is required.": "需要 OpenAI API 密钥。",
 	"OpenAI API settings updated": "OpenAI API 设置已更新",
 	"OpenAI URL/Key required.": "需要 OpenAI URL/Key",
-	"openapi.json Path": "",
+	"openapi.json Path": "openapi.json 路径",
 	"or": "或",
 	"Organize your users": "组织用户",
 	"Other": "其他",
@@ -833,8 +836,8 @@
 	"Please carefully review the following warnings:": "请仔细阅读以下警告信息:",
 	"Please do not close the settings page while loading the model.": "加载模型时请不要关闭设置页面。",
 	"Please enter a prompt": "请输入一个 Prompt",
-	"Please enter a valid path": "",
-	"Please enter a valid URL": "",
+	"Please enter a valid path": "请输入有效路径",
+	"Please enter a valid URL": "请输入有效 URL",
 	"Please fill in all fields.": "请填写所有字段。",
 	"Please select a model first.": "请先选择一个模型。",
 	"Please select a model.": "请选择一个模型。",
@@ -1057,7 +1060,7 @@
 	"Thinking...": "正在思考...",
 	"This action cannot be undone. Do you wish to continue?": "此操作无法撤销。是否确认继续?",
 	"This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "此频道创建于{{createdAt}},这里是{{channelName}}频道的开始",
-	"This chat won’t appear in history and your messages will not be saved.": "",
+	"This chat won’t appear in history and your messages will not be saved.": "此聊天不会出现在历史记录中,且您的消息不会被保存。",
 	"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "这将确保您的宝贵对话被安全地保存到后台数据库中。感谢!",
 	"This is an experimental feature, it may not function as expected and is subject to change at any time.": "这是一个实验功能,可能不会如预期那样工作,而且可能随时发生变化。",
 	"This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "此选项控制刷新上下文时保留多少 Token。例如,如果设置为 2,则将保留对话上下文的最后 2 个 Token。保留上下文有助于保持对话的连续性,但可能会降低响应新主题的能力。",
@@ -1105,7 +1108,7 @@
 	"Tool ID": "工具 ID",
 	"Tool imported successfully": "工具导入成功",
 	"Tool Name": "工具名称",
-	"Tool Servers": "",
+	"Tool Servers": "工具服务器",
 	"Tool updated successfully": "工具更新成功",
 	"Tools": "工具",
 	"Tools Access": "访问工具",
@@ -1175,7 +1178,7 @@
 	"Version": "版本",
 	"Version {{selectedVersion}} of {{totalVersions}}": "版本 {{selectedVersion}}/{{totalVersions}}",
 	"View Replies": "查看回复",
-	"View Result from **{{NAME}}**": "",
+	"View Result from **{{NAME}}**": "查看来自 **{{NAME}}** 的结果",
 	"Visibility": "可见性",
 	"Voice": "语音",
 	"Voice Input": "语音输入",
@@ -1193,7 +1196,7 @@
 	"Webhook URL": "Webhook URL",
 	"WebUI Settings": "WebUI 设置",
 	"WebUI URL": "WebUI URL",
-	"WebUI will make requests to \"{{url}}\"": "",
+	"WebUI will make requests to \"{{url}}\"": "WebUI 将向 \"{{url}}\" 发出请求",
 	"WebUI will make requests to \"{{url}}/api/chat\"": "WebUI 将向 \"{{url}}/api/chat\" 发出请求",
 	"WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI 将向 \"{{url}}/chat/completions\" 发出请求",
 	"What are you trying to achieve?": "你想要达到什么目标?",

+ 25 - 22
src/lib/i18n/locales/zh-TW/translation.json

@@ -6,7 +6,7 @@
 	"(latest)": "(最新版)",
 	"(Ollama)": "(Ollama)",
 	"{{ models }}": "{{ models }}",
-	"{{COUNT}} Available Tools": "",
+	"{{COUNT}} Available Tools": "{{COUNT}} 個可用工具",
 	"{{COUNT}} hidden lines": "已隱藏 {{COUNT}} 行",
 	"{{COUNT}} Replies": "{{COUNT}} 回覆",
 	"{{user}}'s Chats": "{{user}} 的對話",
@@ -108,9 +108,10 @@
 	"Attribute for Username": "使用者名稱屬性",
 	"Audio": "音訊",
 	"August": "8 月",
-	"Auth": "",
+	"Auth": "驗證",
 	"Authenticate": "驗證",
 	"Authentication": "驗證",
+	"Auto": "自動",
 	"Auto-Copy Response to Clipboard": "自動將回應複製到剪貼簿",
 	"Auto-playback response": "自動播放回應",
 	"Autocomplete Generation": "自動完成生成",
@@ -120,7 +121,7 @@
 	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 基礎 URL",
 	"AUTOMATIC1111 Base URL is required.": "需要 AUTOMATIC1111 基礎 URL。",
 	"Available list": "可用清單",
-	"Available Tools": "",
+	"Available Tools": "可用工具",
 	"available!": "可用!",
 	"Awful": "糟糕",
 	"Azure AI Speech": "Azure AI 語音",
@@ -219,10 +220,10 @@
 	"Confirm your new password": "確認您的新密碼",
 	"Connect to your own OpenAI compatible API endpoints.": "連線到您自己的 OpenAI 相容 API 端點。",
 	"Connect to your own OpenAPI compatible external tool servers.": "連接至您自己的與 OpenAPI 相容的外部工具伺服器。",
-	"Connection failed": "",
-	"Connection successful": "",
+	"Connection failed": "連線失敗",
+	"Connection successful": "連線成功",
 	"Connections": "連線",
-	"Connections saved successfully": "",
+	"Connections saved successfully": "連線已成功儲存",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort.": "限制推理模型的推理程度。僅適用於特定供應商支援推理程度的推理模型。",
 	"Contact Admin for WebUI Access": "請聯絡管理員以取得 WebUI 存取權限",
 	"Content": "內容",
@@ -307,7 +308,7 @@
 	"Direct Connections": "直接連線",
 	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "直接連線允許使用者連接到自己的 OpenAI 相容 API 端點。",
 	"Direct Connections settings updated": "直接連線設定已更新。",
-	"Direct Tool Servers": "",
+	"Direct Tool Servers": "直連工具伺服器",
 	"Disabled": "已停用",
 	"Discover a function": "發掘函式",
 	"Discover a model": "發掘模型",
@@ -417,7 +418,7 @@
 	"Enter Kagi Search API Key": "輸入 Kagi 搜尋 API 金鑰",
 	"Enter Key Behavior": "Enter 鍵行為",
 	"Enter language codes": "輸入語言代碼",
-	"Enter Mistral API Key": "",
+	"Enter Mistral API Key": "輸入 Mistral API 金鑰",
 	"Enter Model ID": "輸入模型 ID",
 	"Enter model tag (e.g. {{modelTag}})": "輸入模型標籤(例如:{{modelTag}})",
 	"Enter Mojeek Search API Key": "輸入 Mojeek 搜尋 API 金鑰",
@@ -442,7 +443,7 @@
 	"Enter server port": "輸入伺服器連接埠",
 	"Enter stop sequence": "輸入停止序列",
 	"Enter system prompt": "輸入系統提示詞",
-	"Enter system prompt here": "",
+	"Enter system prompt here": "在此輸入系統提示詞",
 	"Enter Tavily API Key": "輸入 Tavily API 金鑰",
 	"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "請輸入您 WebUI 的公開 URL。此 URL 將用於在通知中產生連結。",
 	"Enter Tika Server URL": "輸入 Tika 伺服器 URL",
@@ -456,7 +457,7 @@
 	"Enter Your Email": "輸入您的電子郵件",
 	"Enter Your Full Name": "輸入您的全名",
 	"Enter your message": "輸入您的訊息",
-	"Enter your name": "",
+	"Enter your name": "輸入你的名稱",
 	"Enter your new password": "輸入您的新密碼",
 	"Enter Your Password": "輸入您的密碼",
 	"Enter Your Role": "輸入您的角色",
@@ -476,7 +477,7 @@
 	"Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "您的授權名額已超過上限。請聯絡支援以增加授權名額。",
 	"Exclude": "排除",
 	"Execute code for analysis": "執行程式碼以進行分析",
-	"Executing **{{NAME}}**...": "",
+	"Executing **{{NAME}}**...": "正在執行 **{{NAME}}**...",
 	"Expand": "展開",
 	"Experimental": "實驗性功能",
 	"Explain": "解釋",
@@ -501,7 +502,7 @@
 	"Failed to create API Key.": "建立 API 金鑰失敗。",
 	"Failed to fetch models": "取得模型失敗",
 	"Failed to read clipboard contents": "讀取剪貼簿內容失敗",
-	"Failed to save connections": "",
+	"Failed to save connections": "儲存連線失敗",
 	"Failed to save models configuration": "儲存模型設定失敗",
 	"Failed to update settings": "更新設定失敗",
 	"Failed to upload file.": "上傳檔案失敗。",
@@ -534,7 +535,7 @@
 	"Forge new paths": "開創新路徑",
 	"Form": "表單",
 	"Format your variables using brackets like this:": "使用方括號格式化您的變數,如下所示:",
-	"Forwards system user session credentials to authenticate": "",
+	"Forwards system user session credentials to authenticate": "轉發系統使用者 session 憑證以進行驗證",
 	"Frequency Penalty": "頻率懲罰",
 	"Full Context Mode": "完整上下文模式",
 	"Function": "函式",
@@ -654,6 +655,7 @@
 	"LDAP": "LDAP",
 	"LDAP server updated": "LDAP 伺服器已更新",
 	"Leaderboard": "排行榜",
+	"Learn more about OpenAPI tool servers.": "進一步了解 OpenAPI 工具伺服器。",
 	"Leave empty for unlimited": "留空表示無限制",
 	"Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "留空以包含來自 \"{{url}}/api/tags\" 端點的所有模型。",
 	"Leave empty to include all models from \"{{url}}/models\" endpoint": "留空以包含來自 \"{{url}}/models\" 端點的所有模型。",
@@ -704,8 +706,8 @@
 	"Mirostat": "Mirostat",
 	"Mirostat Eta": "Mirostat Eta",
 	"Mirostat Tau": "Mirostat Tau",
-	"Mistral OCR": "",
-	"Mistral OCR API Key required.": "",
+	"Mistral OCR": "Mistral OCR",
+	"Mistral OCR API Key required.": "需要 Mistral OCR API 金鑰。",
 	"Model": "模型",
 	"Model '{{modelName}}' has been successfully downloaded.": "模型「{{modelName}}」已成功下載。",
 	"Model '{{modelTag}}' is already in queue for downloading.": "模型「{{modelTag}}」已在下載佇列中。",
@@ -792,6 +794,7 @@
 	"Open file": "開啟檔案",
 	"Open in full screen": "全螢幕開啟",
 	"Open new chat": "開啟新的對話",
+	"Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI 可使用任何 OpenAPI 伺服器提供的工具。",
 	"Open WebUI uses faster-whisper internally.": "Open WebUI 使用內部 faster-whisper。",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI 使用 SpeechT5 和 CMU Arctic 說話者嵌入。",
 	"Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "Open WebUI 版本 (v{{OPEN_WEBUI_VERSION}}) 低於所需版本 (v{{REQUIRED_VERSION}})",
@@ -801,7 +804,7 @@
 	"OpenAI API Key is required.": "需要 OpenAI API 金鑰。",
 	"OpenAI API settings updated": "OpenAI API 設定已更新",
 	"OpenAI URL/Key required.": "需要 OpenAI URL 或金鑰。",
-	"openapi.json Path": "",
+	"openapi.json Path": "openapi.json 路徑",
 	"or": "或",
 	"Organize your users": "組織您的使用者",
 	"Other": "其他",
@@ -833,8 +836,8 @@
 	"Please carefully review the following warnings:": "請仔細閱讀以下警告:",
 	"Please do not close the settings page while loading the model.": "載入模型時,請勿關閉設定頁面。",
 	"Please enter a prompt": "請輸入提示詞",
-	"Please enter a valid path": "",
-	"Please enter a valid URL": "",
+	"Please enter a valid path": "請輸入有效路徑",
+	"Please enter a valid URL": "請輸入有效 URL",
 	"Please fill in all fields.": "請填寫所有欄位。",
 	"Please select a model first.": "請先選擇模型。",
 	"Please select a model.": "請選擇一個模型。",
@@ -1057,7 +1060,7 @@
 	"Thinking...": "正在思考...",
 	"This action cannot be undone. Do you wish to continue?": "此操作無法復原。您確定要繼續進行嗎?",
 	"This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "此頻道建立於 {{createdAt}}。這是 {{channelName}} 頻道的起點。",
-	"This chat won’t appear in history and your messages will not be saved.": "",
+	"This chat won’t appear in history and your messages will not be saved.": "此對話不會出現在歷史記錄中,且您的訊息將不被儲存。",
 	"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "這確保您寶貴的對話會安全地儲存到您的後端資料庫。謝謝!",
 	"This is an experimental feature, it may not function as expected and is subject to change at any time.": "這是一個實驗性功能,它可能無法如預期運作,並且可能會隨時變更。",
 	"This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "此選項控制在重新整理上下文時保留多少 token。例如,如果設定為 2,則會保留對話上下文的最後 2 個 token。保留上下文有助於保持對話的連貫性,但也可能降低對新主題的回應能力。",
@@ -1105,7 +1108,7 @@
 	"Tool ID": "工具 ID",
 	"Tool imported successfully": "成功匯入工具",
 	"Tool Name": "工具名稱",
-	"Tool Servers": "",
+	"Tool Servers": "工具伺服器",
 	"Tool updated successfully": "成功更新工具",
 	"Tools": "工具",
 	"Tools Access": "工具存取",
@@ -1175,7 +1178,7 @@
 	"Version": "版本",
 	"Version {{selectedVersion}} of {{totalVersions}}": "第 {{selectedVersion}} 版,共 {{totalVersions}} 版",
 	"View Replies": "檢視回覆",
-	"View Result from **{{NAME}}**": "",
+	"View Result from **{{NAME}}**": "檢視來自 **{{NAME}}** 的結果",
 	"Visibility": "可見性",
 	"Voice": "語音",
 	"Voice Input": "語音輸入",
@@ -1193,7 +1196,7 @@
 	"Webhook URL": "Webhook URL",
 	"WebUI Settings": "WebUI 設定",
 	"WebUI URL": "WebUI URL",
-	"WebUI will make requests to \"{{url}}\"": "",
+	"WebUI will make requests to \"{{url}}\"": "WebUI 將向 \"{{url}}\" 發送請求",
 	"WebUI will make requests to \"{{url}}/api/chat\"": "WebUI 將向 \"{{url}}/api/chat\" 傳送請求",
 	"WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI 將向 \"{{url}}/chat/completions\" 傳送請求",
 	"What are you trying to achieve?": "您正在試圖完成什麼?",

+ 1 - 1
src/lib/stores/index.ts

@@ -141,7 +141,7 @@ type Settings = {
 	notificationEnabled?: boolean;
 	title?: TitleSettings;
 	splitLargeDeltas?: boolean;
-	chatDirection: 'LTR' | 'RTL';
+	chatDirection: 'LTR' | 'RTL' | 'auto';
 	ctrlEnterToSend?: boolean;
 
 	system?: string;

+ 1 - 1
src/lib/utils/index.ts

@@ -1153,7 +1153,7 @@ export const convertOpenApiToToolPayload = (openApiSpec) => {
 			const tool = {
 				type: 'function',
 				name: operation.operationId,
-				description: operation.summary || 'No description available.',
+				description: operation.description || operation.summary || 'No description available.',
 				parameters: {
 					type: 'object',
 					properties: {},

Некоторые файлы не были показаны из-за большого количества измененных файлов