Browse Source

Merge remote-tracking branch 'upstream/dev' into playwright

# Conflicts:
#	backend/open_webui/config.py
#	backend/open_webui/main.py
#	backend/open_webui/retrieval/web/utils.py
#	backend/open_webui/routers/retrieval.py
#	backend/open_webui/utils/middleware.py
#	pyproject.toml
Rory 2 months ago
parent
commit
4da220c513
92 changed files with 2580 additions and 451 deletions
  1. 37 0
      CHANGELOG.md
  2. 24 0
      backend/open_webui/config.py
  3. 52 18
      backend/open_webui/main.py
  4. 10 17
      backend/open_webui/retrieval/web/bocha.py
  5. 7 4
      backend/open_webui/retrieval/web/google_pse.py
  6. 48 0
      backend/open_webui/retrieval/web/serpapi.py
  7. 10 3
      backend/open_webui/retrieval/web/tavily.py
  8. 93 1
      backend/open_webui/retrieval/web/utils.py
  9. 43 3
      backend/open_webui/routers/retrieval.py
  10. 65 8
      backend/open_webui/routers/tasks.py
  11. 4 4
      backend/open_webui/socket/main.py
  12. 216 79
      backend/open_webui/utils/chat.py
  13. 59 30
      backend/open_webui/utils/middleware.py
  14. 10 2
      backend/open_webui/utils/misc.py
  15. 27 15
      backend/open_webui/utils/response.py
  16. 0 3
      backend/requirements.txt
  17. 2 2
      package-lock.json
  18. 1 1
      package.json
  19. 1 4
      pyproject.toml
  20. 15 1
      src/lib/apis/index.ts
  21. 26 13
      src/lib/components/admin/Settings/Interface.svelte
  22. 29 0
      src/lib/components/admin/Settings/WebSearch.svelte
  23. 3 0
      src/lib/components/chat/Chat.svelte
  24. 2 2
      src/lib/components/chat/Messages/Citations.svelte
  25. 3 0
      src/lib/components/chat/Messages/ContentRenderer.svelte
  26. 3 0
      src/lib/components/chat/Messages/Markdown.svelte
  27. 3 9
      src/lib/components/chat/Messages/Markdown/MarkdownInlineTokens.svelte
  28. 45 1
      src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte
  29. 16 9
      src/lib/components/chat/Messages/Markdown/Source.svelte
  30. 7 2
      src/lib/components/chat/Messages/ResponseMessage.svelte
  31. 4 0
      src/lib/components/chat/Settings/Connections.svelte
  32. 1 0
      src/lib/components/chat/Settings/Connections/Connection.svelte
  33. 12 8
      src/lib/components/chat/Suggestions.svelte
  34. 1 1
      src/lib/components/common/Collapsible.svelte
  35. 68 51
      src/lib/components/common/RichTextInput.svelte
  36. 23 0
      src/lib/components/icons/Home.svelte
  37. 29 2
      src/lib/components/layout/Sidebar.svelte
  38. 2 2
      src/lib/components/playground/Completions.svelte
  39. 2 1
      src/lib/components/playground/Notes.svelte
  40. 26 0
      src/lib/i18n/locales/ar-BH/translation.json
  41. 26 0
      src/lib/i18n/locales/bg-BG/translation.json
  42. 26 0
      src/lib/i18n/locales/bn-BD/translation.json
  43. 26 0
      src/lib/i18n/locales/ca-ES/translation.json
  44. 26 0
      src/lib/i18n/locales/ceb-PH/translation.json
  45. 26 0
      src/lib/i18n/locales/cs-CZ/translation.json
  46. 26 0
      src/lib/i18n/locales/da-DK/translation.json
  47. 26 0
      src/lib/i18n/locales/de-DE/translation.json
  48. 26 0
      src/lib/i18n/locales/dg-DG/translation.json
  49. 26 0
      src/lib/i18n/locales/el-GR/translation.json
  50. 26 0
      src/lib/i18n/locales/en-GB/translation.json
  51. 26 0
      src/lib/i18n/locales/en-US/translation.json
  52. 26 0
      src/lib/i18n/locales/es-ES/translation.json
  53. 26 0
      src/lib/i18n/locales/eu-ES/translation.json
  54. 26 0
      src/lib/i18n/locales/fa-IR/translation.json
  55. 101 75
      src/lib/i18n/locales/fi-FI/translation.json
  56. 26 0
      src/lib/i18n/locales/fr-CA/translation.json
  57. 26 0
      src/lib/i18n/locales/fr-FR/translation.json
  58. 26 0
      src/lib/i18n/locales/he-IL/translation.json
  59. 26 0
      src/lib/i18n/locales/hi-IN/translation.json
  60. 26 0
      src/lib/i18n/locales/hr-HR/translation.json
  61. 26 0
      src/lib/i18n/locales/hu-HU/translation.json
  62. 26 0
      src/lib/i18n/locales/id-ID/translation.json
  63. 26 0
      src/lib/i18n/locales/ie-GA/translation.json
  64. 26 0
      src/lib/i18n/locales/it-IT/translation.json
  65. 26 0
      src/lib/i18n/locales/ja-JP/translation.json
  66. 26 0
      src/lib/i18n/locales/ka-GE/translation.json
  67. 26 0
      src/lib/i18n/locales/ko-KR/translation.json
  68. 26 0
      src/lib/i18n/locales/lt-LT/translation.json
  69. 26 0
      src/lib/i18n/locales/ms-MY/translation.json
  70. 26 0
      src/lib/i18n/locales/nb-NO/translation.json
  71. 26 0
      src/lib/i18n/locales/nl-NL/translation.json
  72. 26 0
      src/lib/i18n/locales/pa-IN/translation.json
  73. 26 0
      src/lib/i18n/locales/pl-PL/translation.json
  74. 26 0
      src/lib/i18n/locales/pt-BR/translation.json
  75. 26 0
      src/lib/i18n/locales/pt-PT/translation.json
  76. 80 54
      src/lib/i18n/locales/ro-RO/translation.json
  77. 26 0
      src/lib/i18n/locales/ru-RU/translation.json
  78. 26 0
      src/lib/i18n/locales/sk-SK/translation.json
  79. 26 0
      src/lib/i18n/locales/sr-RS/translation.json
  80. 26 0
      src/lib/i18n/locales/sv-SE/translation.json
  81. 26 0
      src/lib/i18n/locales/th-TH/translation.json
  82. 26 0
      src/lib/i18n/locales/tk-TW/translation.json
  83. 26 0
      src/lib/i18n/locales/tr-TR/translation.json
  84. 35 9
      src/lib/i18n/locales/uk-UA/translation.json
  85. 26 0
      src/lib/i18n/locales/ur-PK/translation.json
  86. 26 0
      src/lib/i18n/locales/vi-VN/translation.json
  87. 34 10
      src/lib/i18n/locales/zh-CN/translation.json
  88. 26 0
      src/lib/i18n/locales/zh-TW/translation.json
  89. 3 6
      src/lib/utils/index.ts
  90. 65 0
      src/routes/(app)/home/+layout.svelte
  91. 0 0
      src/routes/(app)/home/+page.svelte
  92. 89 1
      src/routes/+layout.svelte

+ 37 - 0
CHANGELOG.md

@@ -5,6 +5,43 @@ 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.5.12] - 2025-02-13
+
+### Added
+
+- **🛠️ Multiple Tool Calls Support for Native Function Mode**: Functions now can call multiple tools within a single response, unlocking better automation and workflow flexibility when using native function calling.
+
+### Fixed
+
+- **📝 Playground Text Completion Restored**: Addressed an issue where text completion in the Playground was not functioning.
+- **🔗 Direct Connections Now Work for Regular Users**: Fixed a bug where users with the 'user' role couldn't establish direct API connections, enabling seamless model usage for all user tiers.
+- **⚡ Landing Page Input No Longer Lags with Long Text**: Improved input responsiveness on the landing page, ensuring fast and smooth typing experiences even when entering long messages.
+- **🔧 Parameter in Functions Fixed**: Fixed an issue where the reserved parameters wasn’t recognized within functions, restoring full functionality for advanced task-based automation.
+
+## [0.5.11] - 2025-02-13
+
+### Added
+
+- **🎤 Kokoro-JS TTS Support**: A new on-device, high-quality text-to-speech engine has been integrated, vastly improving voice generation quality—everything runs directly in your browser.
+- **🐍 Jupyter Notebook Support in Code Interpreter**: Now, you can configure Code Interpreter to run Python code not only via Pyodide but also through Jupyter, offering a more robust coding environment for AI-driven computations and analysis.
+- **🔗 Direct API Connections for Private & Local Inference**: You can now connect Open WebUI to your private or localhost API inference endpoints. CORS must be enabled, but this unlocks direct, on-device AI infrastructure support.
+- **🔍 Advanced Domain Filtering for Web Search**: You can now specify which domains should be included or excluded from web searches, refining results for more relevant information retrieval.
+- **🚀 Improved Image Generation Metadata Handling**: Generated images now retain metadata for better organization and future retrieval.
+- **📂 S3 Key Prefix Support**: Fine-grained control over S3 storage file structuring with configurable key prefixes.
+- **📸 Support for Image-Only Messages**: Send messages containing only images, facilitating more visual-centric interactions.
+- **🌍 Updated Translations**: German, Spanish, Traditional Chinese, and Catalan translations updated for better multilingual support.
+
+### Fixed
+
+- **🔧 OAuth Debug Logs & Username Claim Fixes**: Debug logs have been added for OAuth role and group management, with fixes ensuring proper OAuth username retrieval and claim handling.
+- **📌 Citations Formatting & Toggle Fixes**: Inline citation toggles now function correctly, and citations with more than three sources are now fully visible when expanded.
+- **📸 ComfyUI Maximum Seed Value Constraint Fixed**: The maximum allowed seed value for ComfyUI has been corrected, preventing unintended behavior.
+- **🔑 Connection Settings Stability**: Addressed connection settings issues that were causing instability when saving configurations.
+- **📂 GGUF Model Upload Stability**: Fixed upload inconsistencies for GGUF models, ensuring reliable local model handling.
+- **🔧 Web Search Configuration Bug**: Fixed issues where web search filters and settings weren't correctly applied.
+- **💾 User Settings Persistence Fix**: Ensured user-specific settings are correctly saved and applied across sessions.
+- **🔄 OpenID Username Retrieval Enhancement**: Usernames are now correctly picked up and assigned for OpenID Connect (OIDC) logins.
+
 ## [0.5.10] - 2025-02-05
 
 ### Fixed

+ 24 - 0
backend/open_webui/config.py

@@ -1190,6 +1190,12 @@ ENABLE_TAGS_GENERATION = PersistentConfig(
     os.environ.get("ENABLE_TAGS_GENERATION", "True").lower() == "true",
 )
 
+ENABLE_TITLE_GENERATION = PersistentConfig(
+    "ENABLE_TITLE_GENERATION",
+    "task.title.enable",
+    os.environ.get("ENABLE_TITLE_GENERATION", "True").lower() == "true",
+)
+
 
 ENABLE_SEARCH_QUERY_GENERATION = PersistentConfig(
     "ENABLE_SEARCH_QUERY_GENERATION",
@@ -1803,6 +1809,18 @@ SEARCHAPI_ENGINE = PersistentConfig(
     os.getenv("SEARCHAPI_ENGINE", ""),
 )
 
+SERPAPI_API_KEY = PersistentConfig(
+    "SERPAPI_API_KEY",
+    "rag.web.search.serpapi_api_key",
+    os.getenv("SERPAPI_API_KEY", ""),
+)
+
+SERPAPI_ENGINE = PersistentConfig(
+    "SERPAPI_ENGINE",
+    "rag.web.search.serpapi_engine",
+    os.getenv("SERPAPI_ENGINE", ""),
+)
+
 BING_SEARCH_V7_ENDPOINT = PersistentConfig(
     "BING_SEARCH_V7_ENDPOINT",
     "rag.web.search.bing_search_v7_endpoint",
@@ -1841,6 +1859,12 @@ RAG_WEB_LOADER = PersistentConfig(
     os.environ.get("RAG_WEB_LOADER", "safe_web")
 )
 
+RAG_WEB_SEARCH_TRUST_ENV = PersistentConfig(
+    "RAG_WEB_SEARCH_TRUST_ENV",
+    "rag.web.search.trust_env",
+    os.getenv("RAG_WEB_SEARCH_TRUST_ENV", False),
+)
+
 PLAYWRIGHT_WS_URI = PersistentConfig(
     "PLAYWRIGHT_WS_URI",
     "rag.web.loader.playwright.ws.uri",

+ 52 - 18
backend/open_webui/main.py

@@ -177,10 +177,13 @@ from open_webui.config import (
     RAG_WEB_SEARCH_ENGINE,
     RAG_WEB_SEARCH_RESULT_COUNT,
     RAG_WEB_SEARCH_CONCURRENT_REQUESTS,
+    RAG_WEB_SEARCH_TRUST_ENV,
     RAG_WEB_SEARCH_DOMAIN_FILTER_LIST,
     JINA_API_KEY,
     SEARCHAPI_API_KEY,
     SEARCHAPI_ENGINE,
+    SERPAPI_API_KEY,
+    SERPAPI_ENGINE,
     SEARXNG_QUERY_URL,
     SERPER_API_KEY,
     SERPLY_API_KEY,
@@ -266,6 +269,7 @@ from open_webui.config import (
     TASK_MODEL,
     TASK_MODEL_EXTERNAL,
     ENABLE_TAGS_GENERATION,
+    ENABLE_TITLE_GENERATION,
     ENABLE_SEARCH_QUERY_GENERATION,
     ENABLE_RETRIEVAL_QUERY_GENERATION,
     ENABLE_AUTOCOMPLETE_GENERATION,
@@ -347,12 +351,12 @@ class SPAStaticFiles(StaticFiles):
 
 print(
     rf"""
-  ___                    __        __   _     _   _ ___
- / _ \ _ __   ___ _ __   \ \      / /__| |__ | | | |_ _|
-| | | | '_ \ / _ \ '_ \   \ \ /\ / / _ \ '_ \| | | || |
-| |_| | |_) |  __/ | | |   \ V  V /  __/ |_) | |_| || |
- \___/| .__/ \___|_| |_|    \_/\_/ \___|_.__/ \___/|___|
-      |_|
+ ██████╗ ██████╗ ███████╗███╗   ██╗    ██╗    ██╗███████╗██████╗ ██╗   ██╗██╗
+██╔═══██╗██╔══██╗██╔════╝████╗  ██║    ██║    ██║██╔════╝██╔══██╗██║   ██║██║
+██║   ██║██████╔╝█████╗  ██╔██╗ ██║    ██║ █╗ ██║█████╗  ██████╔╝██║   ██║██║
+██║   ██║██╔═══╝ ██╔══╝  ██║╚██╗██║    ██║███╗██║██╔══╝  ██╔══██╗██║   ██║██║
+╚██████╔╝██║     ███████╗██║ ╚████║    ╚███╔███╔╝███████╗██████╔╝╚██████╔╝██║
+ ╚═════╝ ╚═╝     ╚══════╝╚═╝  ╚═══╝     ╚══╝╚══╝ ╚══════╝╚═════╝  ╚═════╝ ╚═╝
 
 
 v{VERSION} - building the best open-source AI user interface.
@@ -548,6 +552,8 @@ app.state.config.SERPLY_API_KEY = SERPLY_API_KEY
 app.state.config.TAVILY_API_KEY = TAVILY_API_KEY
 app.state.config.SEARCHAPI_API_KEY = SEARCHAPI_API_KEY
 app.state.config.SEARCHAPI_ENGINE = SEARCHAPI_ENGINE
+app.state.config.SERPAPI_API_KEY = SERPAPI_API_KEY
+app.state.config.SERPAPI_ENGINE = SERPAPI_ENGINE
 app.state.config.JINA_API_KEY = JINA_API_KEY
 app.state.config.BING_SEARCH_V7_ENDPOINT = BING_SEARCH_V7_ENDPOINT
 app.state.config.BING_SEARCH_V7_SUBSCRIPTION_KEY = BING_SEARCH_V7_SUBSCRIPTION_KEY
@@ -556,6 +562,7 @@ app.state.config.EXA_API_KEY = EXA_API_KEY
 app.state.config.RAG_WEB_SEARCH_RESULT_COUNT = RAG_WEB_SEARCH_RESULT_COUNT
 app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS = RAG_WEB_SEARCH_CONCURRENT_REQUESTS
 app.state.config.RAG_WEB_LOADER = RAG_WEB_LOADER
+app.state.config.RAG_WEB_SEARCH_TRUST_ENV = RAG_WEB_SEARCH_TRUST_ENV
 app.state.config.PLAYWRIGHT_WS_URI = PLAYWRIGHT_WS_URI
 
 app.state.EMBEDDING_FUNCTION = None
@@ -693,6 +700,7 @@ app.state.config.ENABLE_SEARCH_QUERY_GENERATION = ENABLE_SEARCH_QUERY_GENERATION
 app.state.config.ENABLE_RETRIEVAL_QUERY_GENERATION = ENABLE_RETRIEVAL_QUERY_GENERATION
 app.state.config.ENABLE_AUTOCOMPLETE_GENERATION = ENABLE_AUTOCOMPLETE_GENERATION
 app.state.config.ENABLE_TAGS_GENERATION = ENABLE_TAGS_GENERATION
+app.state.config.ENABLE_TITLE_GENERATION = ENABLE_TITLE_GENERATION
 
 
 app.state.config.TITLE_GENERATION_PROMPT_TEMPLATE = TITLE_GENERATION_PROMPT_TEMPLATE
@@ -904,20 +912,30 @@ async def chat_completion(
     if not request.app.state.MODELS:
         await get_all_models(request)
 
+    model_item = form_data.pop("model_item", {})
     tasks = form_data.pop("background_tasks", None)
+
     try:
-        model_id = form_data.get("model", None)
-        if model_id not in request.app.state.MODELS:
-            raise Exception("Model not found")
-        model = request.app.state.MODELS[model_id]
-        model_info = Models.get_model_by_id(model_id)
-
-        # Check if user has access to the model
-        if not BYPASS_MODEL_ACCESS_CONTROL and user.role == "user":
-            try:
-                check_model_access(user, model)
-            except Exception as e:
-                raise e
+        if not model_item.get("direct", False):
+            model_id = form_data.get("model", None)
+            if model_id not in request.app.state.MODELS:
+                raise Exception("Model not found")
+
+            model = request.app.state.MODELS[model_id]
+            model_info = Models.get_model_by_id(model_id)
+
+            # Check if user has access to the model
+            if not BYPASS_MODEL_ACCESS_CONTROL and user.role == "user":
+                try:
+                    check_model_access(user, model)
+                except Exception as e:
+                    raise e
+        else:
+            model = model_item
+            model_info = None
+
+            request.state.direct = True
+            request.state.model = model
 
         metadata = {
             "user_id": user.id,
@@ -929,6 +947,7 @@ async def chat_completion(
             "features": form_data.get("features", None),
             "variables": form_data.get("variables", None),
             "model": model_info,
+            "direct": model_item.get("direct", False),
             **(
                 {"function_calling": "native"}
                 if form_data.get("params", {}).get("function_calling") == "native"
@@ -940,6 +959,8 @@ async def chat_completion(
                 else {}
             ),
         }
+
+        request.state.metadata = metadata
         form_data["metadata"] = metadata
 
         form_data, metadata, events = await process_chat_payload(
@@ -947,6 +968,7 @@ async def chat_completion(
         )
 
     except Exception as e:
+        log.debug(f"Error processing chat payload: {e}")
         raise HTTPException(
             status_code=status.HTTP_400_BAD_REQUEST,
             detail=str(e),
@@ -975,6 +997,12 @@ async def chat_completed(
     request: Request, form_data: dict, user=Depends(get_verified_user)
 ):
     try:
+        model_item = form_data.pop("model_item", {})
+
+        if model_item.get("direct", False):
+            request.state.direct = True
+            request.state.model = model_item
+
         return await chat_completed_handler(request, form_data, user)
     except Exception as e:
         raise HTTPException(
@@ -988,6 +1016,12 @@ async def chat_action(
     request: Request, action_id: str, form_data: dict, user=Depends(get_verified_user)
 ):
     try:
+        model_item = form_data.pop("model_item", {})
+
+        if model_item.get("direct", False):
+            request.state.direct = True
+            request.state.model = model_item
+
         return await chat_action_handler(request, action_id, form_data, user)
     except Exception as e:
         raise HTTPException(

+ 10 - 17
backend/open_webui/retrieval/web/bocha.py

@@ -9,6 +9,7 @@ from open_webui.env import SRC_LOG_LEVELS
 log = logging.getLogger(__name__)
 log.setLevel(SRC_LOG_LEVELS["RAG"])
 
+
 def _parse_response(response):
     result = {}
     if "data" in response:
@@ -25,7 +26,8 @@ def _parse_response(response):
                         "summary": item.get("summary", ""),
                         "siteName": item.get("siteName", ""),
                         "siteIcon": item.get("siteIcon", ""),
-                        "datePublished": item.get("datePublished", "") or item.get("dateLastCrawled", ""),
+                        "datePublished": item.get("datePublished", "")
+                        or item.get("dateLastCrawled", ""),
                     }
                     for item in webPages["value"]
                 ]
@@ -42,17 +44,11 @@ def search_bocha(
         query (str): The query to search for
     """
     url = "https://api.bochaai.com/v1/web-search?utm_source=ollama"
-    headers = {
-        "Authorization": f"Bearer {api_key}",
-        "Content-Type": "application/json"
-    }
-    
-    payload = json.dumps({
-        "query": query,
-        "summary": True,
-        "freshness": "noLimit",
-        "count": count
-    })
+    headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
+
+    payload = json.dumps(
+        {"query": query, "summary": True, "freshness": "noLimit", "count": count}
+    )
 
     response = requests.post(url, headers=headers, data=payload, timeout=5)
     response.raise_for_status()
@@ -63,10 +59,7 @@ def search_bocha(
 
     return [
         SearchResult(
-            link=result["url"], 
-            title=result.get("name"), 
-            snippet=result.get("summary")
+            link=result["url"], title=result.get("name"), snippet=result.get("summary")
         )
-        for result in results.get("webpage", [])[:count]  
+        for result in results.get("webpage", [])[:count]
     ]
-

+ 7 - 4
backend/open_webui/retrieval/web/google_pse.py

@@ -8,6 +8,7 @@ from open_webui.env import SRC_LOG_LEVELS
 log = logging.getLogger(__name__)
 log.setLevel(SRC_LOG_LEVELS["RAG"])
 
+
 def search_google_pse(
     api_key: str,
     search_engine_id: str,
@@ -46,12 +47,14 @@ def search_google_pse(
         response.raise_for_status()
         json_response = response.json()
         results = json_response.get("items", [])
-        if results: # check if results are returned. If not, no more pages to fetch.
+        if results:  # check if results are returned. If not, no more pages to fetch.
             all_results.extend(results)
-            count -= len(results) # Decrement count by the number of results fetched in this page.
-            start_index += 10 # Increment start index for the next page
+            count -= len(
+                results
+            )  # Decrement count by the number of results fetched in this page.
+            start_index += 10  # Increment start index for the next page
         else:
-            break # No more results from Google PSE, break the loop
+            break  # No more results from Google PSE, break the loop
 
     if filter_list:
         all_results = get_filtered_results(all_results, filter_list)

+ 48 - 0
backend/open_webui/retrieval/web/serpapi.py

@@ -0,0 +1,48 @@
+import logging
+from typing import Optional
+from urllib.parse import urlencode
+
+import requests
+from open_webui.retrieval.web.main import SearchResult, get_filtered_results
+from open_webui.env import SRC_LOG_LEVELS
+
+log = logging.getLogger(__name__)
+log.setLevel(SRC_LOG_LEVELS["RAG"])
+
+
+def search_serpapi(
+    api_key: str,
+    engine: str,
+    query: str,
+    count: int,
+    filter_list: Optional[list[str]] = None,
+) -> list[SearchResult]:
+    """Search using serpapi.com's API and return the results as a list of SearchResult objects.
+
+    Args:
+      api_key (str): A serpapi.com API key
+      query (str): The query to search for
+    """
+    url = "https://serpapi.com/search"
+
+    engine = engine or "google"
+
+    payload = {"engine": engine, "q": query, "api_key": api_key}
+
+    url = f"{url}?{urlencode(payload)}"
+    response = requests.request("GET", url)
+
+    json_response = response.json()
+    log.info(f"results from serpapi search: {json_response}")
+
+    results = sorted(
+        json_response.get("organic_results", []), key=lambda x: x.get("position", 0)
+    )
+    if filter_list:
+        results = get_filtered_results(results, filter_list)
+    return [
+        SearchResult(
+            link=result["link"], title=result["title"], snippet=result["snippet"]
+        )
+        for result in results[:count]
+    ]

+ 10 - 3
backend/open_webui/retrieval/web/tavily.py

@@ -1,4 +1,5 @@
 import logging
+from typing import Optional
 
 import requests
 from open_webui.retrieval.web.main import SearchResult
@@ -8,7 +9,13 @@ log = logging.getLogger(__name__)
 log.setLevel(SRC_LOG_LEVELS["RAG"])
 
 
-def search_tavily(api_key: str, query: str, count: int) -> list[SearchResult]:
+def search_tavily(
+    api_key: str,
+    query: str,
+    count: int,
+    filter_list: Optional[list[str]] = None,
+    # **kwargs,
+) -> list[SearchResult]:
     """Search using Tavily's Search API and return the results as a list of SearchResult objects.
 
     Args:
@@ -20,8 +27,8 @@ def search_tavily(api_key: str, query: str, count: int) -> list[SearchResult]:
     """
     url = "https://api.tavily.com/search"
     data = {"query": query, "api_key": api_key}
-
-    response = requests.post(url, json=data)
+    include_domain = filter_list
+    response = requests.post(url, include_domain, json=data)
     response.raise_for_status()
 
     json_response = response.json()

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

@@ -2,11 +2,15 @@ import asyncio
 from datetime import datetime, time, timedelta
 import socket
 import ssl
+import aiohttp
+import asyncio
 import urllib.parse
 import certifi
 import validators
 from collections import defaultdict
 from typing import AsyncIterator, Dict, List, Optional, Union, Sequence, Iterator
+from typing import Any, AsyncIterator, Dict, Iterator, List, Sequence, Union
+
 
 from langchain_community.document_loaders import (
     WebBaseLoader,
@@ -230,6 +234,71 @@ class SafePlaywrightURLLoader(PlaywrightURLLoader):
 class SafeWebBaseLoader(WebBaseLoader):
     """WebBaseLoader with enhanced error handling for URLs."""
 
+    def __init__(self, trust_env: bool = False, *args, **kwargs):
+        """Initialize SafeWebBaseLoader
+        Args:
+            trust_env (bool, optional): set to True if using proxy to make web requests, for example
+                using http(s)_proxy environment variables. Defaults to False.
+        """
+        super().__init__(*args, **kwargs)
+        self.trust_env = trust_env
+
+    async def _fetch(
+        self, url: str, retries: int = 3, cooldown: int = 2, backoff: float = 1.5
+    ) -> str:
+        async with aiohttp.ClientSession(trust_env=self.trust_env) as session:
+            for i in range(retries):
+                try:
+                    kwargs: Dict = dict(
+                        headers=self.session.headers,
+                        cookies=self.session.cookies.get_dict(),
+                    )
+                    if not self.session.verify:
+                        kwargs["ssl"] = False
+
+                    async with session.get(
+                        url, **(self.requests_kwargs | kwargs)
+                    ) as response:
+                        if self.raise_for_status:
+                            response.raise_for_status()
+                        return await response.text()
+                except aiohttp.ClientConnectionError as e:
+                    if i == retries - 1:
+                        raise
+                    else:
+                        log.warning(
+                            f"Error fetching {url} with attempt "
+                            f"{i + 1}/{retries}: {e}. Retrying..."
+                        )
+                        await asyncio.sleep(cooldown * backoff**i)
+        raise ValueError("retry count exceeded")
+
+    def _unpack_fetch_results(
+        self, results: Any, urls: List[str], parser: Union[str, None] = None
+    ) -> List[Any]:
+        """Unpack fetch results into BeautifulSoup objects."""
+        from bs4 import BeautifulSoup
+
+        final_results = []
+        for i, result in enumerate(results):
+            url = urls[i]
+            if parser is None:
+                if url.endswith(".xml"):
+                    parser = "xml"
+                else:
+                    parser = self.default_parser
+                self._check_parser(parser)
+            final_results.append(BeautifulSoup(result, parser, **self.bs_kwargs))
+        return final_results
+
+    async def ascrape_all(
+        self, urls: List[str], parser: Union[str, None] = None
+    ) -> List[Any]:
+        """Async fetch all urls, then return soups for all results."""
+        results = await self.fetch_all(urls)
+        return self._unpack_fetch_results(results, urls, parser=parser)
+
+
     def lazy_load(self) -> Iterator[Document]:
         """Lazy load text from the url(s) in web_path with error handling."""
         for path in self.web_paths:
@@ -245,6 +314,26 @@ class SafeWebBaseLoader(WebBaseLoader):
                 # Log the error and continue with the next URL
                 log.exception(e, "Error loading %s", path)
 
+    async def alazy_load(self) -> AsyncIterator[Document]:
+        """Async lazy load text from the url(s) in web_path."""
+        results = await self.ascrape_all(self.web_paths)
+        for path, soup in zip(self.web_paths, results):
+            text = soup.get_text(**self.bs_get_text_kwargs)
+            metadata = {"source": path}
+            if title := soup.find("title"):
+                metadata["title"] = title.get_text()
+            if description := soup.find("meta", attrs={"name": "description"}):
+                metadata["description"] = description.get(
+                    "content", "No description found."
+                )
+            if html := soup.find("html"):
+                metadata["language"] = html.get("lang", "No language found.")
+            yield Document(page_content=text, metadata=metadata)
+
+    async def aload(self) -> list[Document]:
+        """Load data into Document objects."""
+        return [document async for document in self.alazy_load()]
+
 RAG_WEB_LOADERS = defaultdict(lambda: SafeWebBaseLoader)
 RAG_WEB_LOADERS["playwright"] = SafePlaywrightURLLoader
 RAG_WEB_LOADERS["safe_web"] = SafeWebBaseLoader
@@ -253,16 +342,19 @@ def get_web_loader(
     urls: Union[str, Sequence[str]],
     verify_ssl: bool = True,
     requests_per_second: int = 2,
+    trust_env: bool = False,
 ):
     # Check if the URLs are valid
     safe_urls = safe_validate_urls([urls] if isinstance(urls, str) else urls)
 
 
     web_loader_args = {
+        web_path=safe_urls,
         "urls": safe_urls,
         "verify_ssl": verify_ssl,
         "requests_per_second": requests_per_second,
-        "continue_on_failure": True
+        "continue_on_failure": True,
+        trust_env=trust_env
     }
 
     if PLAYWRIGHT_WS_URI.value:

+ 43 - 3
backend/open_webui/routers/retrieval.py

@@ -21,6 +21,7 @@ from fastapi import (
     APIRouter,
 )
 from fastapi.middleware.cors import CORSMiddleware
+from fastapi.concurrency import run_in_threadpool
 from pydantic import BaseModel
 import tiktoken
 
@@ -50,6 +51,7 @@ from open_webui.retrieval.web.duckduckgo import search_duckduckgo
 from open_webui.retrieval.web.google_pse import search_google_pse
 from open_webui.retrieval.web.jina_search import search_jina
 from open_webui.retrieval.web.searchapi import search_searchapi
+from open_webui.retrieval.web.serpapi import search_serpapi
 from open_webui.retrieval.web.searxng import search_searxng
 from open_webui.retrieval.web.serper import search_serper
 from open_webui.retrieval.web.serply import search_serply
@@ -388,6 +390,8 @@ async def get_rag_config(request: Request, user=Depends(get_admin_user)):
                 "tavily_api_key": request.app.state.config.TAVILY_API_KEY,
                 "searchapi_api_key": request.app.state.config.SEARCHAPI_API_KEY,
                 "searchapi_engine": request.app.state.config.SEARCHAPI_ENGINE,
+                "serpapi_api_key": request.app.state.config.SERPAPI_API_KEY,
+                "serpapi_engine": request.app.state.config.SERPAPI_ENGINE,
                 "jina_api_key": request.app.state.config.JINA_API_KEY,
                 "bing_search_v7_endpoint": request.app.state.config.BING_SEARCH_V7_ENDPOINT,
                 "bing_search_v7_subscription_key": request.app.state.config.BING_SEARCH_V7_SUBSCRIPTION_KEY,
@@ -439,12 +443,15 @@ class WebSearchConfig(BaseModel):
     tavily_api_key: Optional[str] = None
     searchapi_api_key: Optional[str] = None
     searchapi_engine: Optional[str] = None
+    serpapi_api_key: Optional[str] = None
+    serpapi_engine: Optional[str] = None
     jina_api_key: Optional[str] = None
     bing_search_v7_endpoint: Optional[str] = None
     bing_search_v7_subscription_key: Optional[str] = None
     exa_api_key: Optional[str] = None
     result_count: Optional[int] = None
     concurrent_requests: Optional[int] = None
+    trust_env: Optional[bool] = None
     domain_filter_list: Optional[List[str]] = []
 
 
@@ -545,6 +552,9 @@ async def update_rag_config(
             form_data.web.search.searchapi_engine
         )
 
+        request.app.state.config.SERPAPI_API_KEY = form_data.web.search.serpapi_api_key
+        request.app.state.config.SERPAPI_ENGINE = form_data.web.search.serpapi_engine
+
         request.app.state.config.JINA_API_KEY = form_data.web.search.jina_api_key
         request.app.state.config.BING_SEARCH_V7_ENDPOINT = (
             form_data.web.search.bing_search_v7_endpoint
@@ -561,6 +571,9 @@ async def update_rag_config(
         request.app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS = (
             form_data.web.search.concurrent_requests
         )
+        request.app.state.config.RAG_WEB_SEARCH_TRUST_ENV = (
+            form_data.web.search.trust_env
+        )
         request.app.state.config.RAG_WEB_SEARCH_DOMAIN_FILTER_LIST = (
             form_data.web.search.domain_filter_list
         )
@@ -604,6 +617,8 @@ async def update_rag_config(
                 "serply_api_key": request.app.state.config.SERPLY_API_KEY,
                 "serachapi_api_key": request.app.state.config.SEARCHAPI_API_KEY,
                 "searchapi_engine": request.app.state.config.SEARCHAPI_ENGINE,
+                "serpapi_api_key": request.app.state.config.SERPAPI_API_KEY,
+                "serpapi_engine": request.app.state.config.SERPAPI_ENGINE,
                 "tavily_api_key": request.app.state.config.TAVILY_API_KEY,
                 "jina_api_key": request.app.state.config.JINA_API_KEY,
                 "bing_search_v7_endpoint": request.app.state.config.BING_SEARCH_V7_ENDPOINT,
@@ -611,6 +626,7 @@ async def update_rag_config(
                 "exa_api_key": request.app.state.config.EXA_API_KEY,
                 "result_count": request.app.state.config.RAG_WEB_SEARCH_RESULT_COUNT,
                 "concurrent_requests": request.app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS,
+                "trust_env": request.app.state.config.RAG_WEB_SEARCH_TRUST_ENV,
                 "domain_filter_list": request.app.state.config.RAG_WEB_SEARCH_DOMAIN_FILTER_LIST,
             },
         },
@@ -760,7 +776,11 @@ def save_docs_to_vector_db(
     # for meta-data so convert them to string.
     for metadata in metadatas:
         for key, value in metadata.items():
-            if isinstance(value, datetime):
+            if (
+                isinstance(value, datetime)
+                or isinstance(value, list)
+                or isinstance(value, dict)
+            ):
                 metadata[key] = str(value)
 
     try:
@@ -1127,6 +1147,7 @@ def search_web(request: Request, engine: str, query: str) -> list[SearchResult]:
     - TAVILY_API_KEY
     - EXA_API_KEY
     - SEARCHAPI_API_KEY + SEARCHAPI_ENGINE (by default `google`)
+    - SERPAPI_API_KEY + SERPAPI_ENGINE (by default `google`)
     Args:
         query (str): The query to search for
     """
@@ -1255,6 +1276,17 @@ def search_web(request: Request, engine: str, query: str) -> list[SearchResult]:
             )
         else:
             raise Exception("No SEARCHAPI_API_KEY found in environment variables")
+    elif engine == "serpapi":
+        if request.app.state.config.SERPAPI_API_KEY:
+            return search_serpapi(
+                request.app.state.config.SERPAPI_API_KEY,
+                request.app.state.config.SERPAPI_ENGINE,
+                query,
+                request.app.state.config.RAG_WEB_SEARCH_RESULT_COUNT,
+                request.app.state.config.RAG_WEB_SEARCH_DOMAIN_FILTER_LIST,
+            )
+        else:
+            raise Exception("No SERPAPI_API_KEY found in environment variables")
     elif engine == "jina":
         return search_jina(
             request.app.state.config.JINA_API_KEY,
@@ -1314,17 +1346,25 @@ async def process_web_search(
             urls,
             verify_ssl=request.app.state.config.ENABLE_RAG_WEB_LOADER_SSL_VERIFICATION,
             requests_per_second=request.app.state.config.RAG_WEB_SEARCH_CONCURRENT_REQUESTS,
+            trust_env=request.app.state.config.RAG_WEB_SEARCH_TRUST_ENV,
         )
         docs = [doc async for doc in loader.alazy_load()]
         # docs = loader.load()
-        save_docs_to_vector_db(
-            request, docs, collection_name, overwrite=True, user=user
+        docs = await loader.aload()
+        await run_in_threadpool(
+            save_docs_to_vector_db,
+            request,
+            docs,
+            collection_name,
+            overwrite=True,
+            user=user
         )
 
         return {
             "status": True,
             "collection_name": collection_name,
             "filenames": urls,
+            "loaded_count": len(docs),
         }
     except Exception as e:
         log.exception(e)

+ 65 - 8
backend/open_webui/routers/tasks.py

@@ -58,6 +58,7 @@ async def get_task_config(request: Request, user=Depends(get_verified_user)):
         "AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH": request.app.state.config.AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH,
         "TAGS_GENERATION_PROMPT_TEMPLATE": request.app.state.config.TAGS_GENERATION_PROMPT_TEMPLATE,
         "ENABLE_TAGS_GENERATION": request.app.state.config.ENABLE_TAGS_GENERATION,
+        "ENABLE_TITLE_GENERATION": request.app.state.config.ENABLE_TITLE_GENERATION,
         "ENABLE_SEARCH_QUERY_GENERATION": request.app.state.config.ENABLE_SEARCH_QUERY_GENERATION,
         "ENABLE_RETRIEVAL_QUERY_GENERATION": request.app.state.config.ENABLE_RETRIEVAL_QUERY_GENERATION,
         "QUERY_GENERATION_PROMPT_TEMPLATE": request.app.state.config.QUERY_GENERATION_PROMPT_TEMPLATE,
@@ -68,6 +69,7 @@ async def get_task_config(request: Request, user=Depends(get_verified_user)):
 class TaskConfigForm(BaseModel):
     TASK_MODEL: Optional[str]
     TASK_MODEL_EXTERNAL: Optional[str]
+    ENABLE_TITLE_GENERATION: bool
     TITLE_GENERATION_PROMPT_TEMPLATE: str
     IMAGE_PROMPT_GENERATION_PROMPT_TEMPLATE: str
     ENABLE_AUTOCOMPLETE_GENERATION: bool
@@ -86,6 +88,7 @@ async def update_task_config(
 ):
     request.app.state.config.TASK_MODEL = form_data.TASK_MODEL
     request.app.state.config.TASK_MODEL_EXTERNAL = form_data.TASK_MODEL_EXTERNAL
+    request.app.state.config.ENABLE_TITLE_GENERATION = form_data.ENABLE_TITLE_GENERATION
     request.app.state.config.TITLE_GENERATION_PROMPT_TEMPLATE = (
         form_data.TITLE_GENERATION_PROMPT_TEMPLATE
     )
@@ -122,6 +125,7 @@ async def update_task_config(
     return {
         "TASK_MODEL": request.app.state.config.TASK_MODEL,
         "TASK_MODEL_EXTERNAL": request.app.state.config.TASK_MODEL_EXTERNAL,
+        "ENABLE_TITLE_GENERATION": request.app.state.config.ENABLE_TITLE_GENERATION,
         "TITLE_GENERATION_PROMPT_TEMPLATE": request.app.state.config.TITLE_GENERATION_PROMPT_TEMPLATE,
         "IMAGE_PROMPT_GENERATION_PROMPT_TEMPLATE": request.app.state.config.IMAGE_PROMPT_GENERATION_PROMPT_TEMPLATE,
         "ENABLE_AUTOCOMPLETE_GENERATION": request.app.state.config.ENABLE_AUTOCOMPLETE_GENERATION,
@@ -139,7 +143,19 @@ async def update_task_config(
 async def generate_title(
     request: Request, form_data: dict, user=Depends(get_verified_user)
 ):
-    models = request.app.state.MODELS
+
+    if not request.app.state.config.ENABLE_TITLE_GENERATION:
+        return JSONResponse(
+            status_code=status.HTTP_200_OK,
+            content={"detail": "Title generation is disabled"},
+        )
+
+    if getattr(request.state, "direct", False) and hasattr(request.state, "model"):
+        models = {
+            request.state.model["id"]: request.state.model,
+        }
+    else:
+        models = request.app.state.MODELS
 
     model_id = form_data["model"]
     if model_id not in models:
@@ -198,6 +214,7 @@ async def generate_title(
             }
         ),
         "metadata": {
+            **(request.state.metadata if hasattr(request.state, "metadata") else {}),
             "task": str(TASKS.TITLE_GENERATION),
             "task_body": form_data,
             "chat_id": form_data.get("chat_id", None),
@@ -225,7 +242,12 @@ async def generate_chat_tags(
             content={"detail": "Tags generation is disabled"},
         )
 
-    models = request.app.state.MODELS
+    if getattr(request.state, "direct", False) and hasattr(request.state, "model"):
+        models = {
+            request.state.model["id"]: request.state.model,
+        }
+    else:
+        models = request.app.state.MODELS
 
     model_id = form_data["model"]
     if model_id not in models:
@@ -261,6 +283,7 @@ async def generate_chat_tags(
         "messages": [{"role": "user", "content": content}],
         "stream": False,
         "metadata": {
+            **(request.state.metadata if hasattr(request.state, "metadata") else {}),
             "task": str(TASKS.TAGS_GENERATION),
             "task_body": form_data,
             "chat_id": form_data.get("chat_id", None),
@@ -281,7 +304,12 @@ async def generate_chat_tags(
 async def generate_image_prompt(
     request: Request, form_data: dict, user=Depends(get_verified_user)
 ):
-    models = request.app.state.MODELS
+    if getattr(request.state, "direct", False) and hasattr(request.state, "model"):
+        models = {
+            request.state.model["id"]: request.state.model,
+        }
+    else:
+        models = request.app.state.MODELS
 
     model_id = form_data["model"]
     if model_id not in models:
@@ -321,6 +349,7 @@ async def generate_image_prompt(
         "messages": [{"role": "user", "content": content}],
         "stream": False,
         "metadata": {
+            **(request.state.metadata if hasattr(request.state, "metadata") else {}),
             "task": str(TASKS.IMAGE_PROMPT_GENERATION),
             "task_body": form_data,
             "chat_id": form_data.get("chat_id", None),
@@ -356,7 +385,12 @@ async def generate_queries(
                 detail=f"Query generation is disabled",
             )
 
-    models = request.app.state.MODELS
+    if getattr(request.state, "direct", False) and hasattr(request.state, "model"):
+        models = {
+            request.state.model["id"]: request.state.model,
+        }
+    else:
+        models = request.app.state.MODELS
 
     model_id = form_data["model"]
     if model_id not in models:
@@ -392,6 +426,7 @@ async def generate_queries(
         "messages": [{"role": "user", "content": content}],
         "stream": False,
         "metadata": {
+            **(request.state.metadata if hasattr(request.state, "metadata") else {}),
             "task": str(TASKS.QUERY_GENERATION),
             "task_body": form_data,
             "chat_id": form_data.get("chat_id", None),
@@ -431,7 +466,12 @@ async def generate_autocompletion(
                 detail=f"Input prompt exceeds maximum length of {request.app.state.config.AUTOCOMPLETE_GENERATION_INPUT_MAX_LENGTH}",
             )
 
-    models = request.app.state.MODELS
+    if getattr(request.state, "direct", False) and hasattr(request.state, "model"):
+        models = {
+            request.state.model["id"]: request.state.model,
+        }
+    else:
+        models = request.app.state.MODELS
 
     model_id = form_data["model"]
     if model_id not in models:
@@ -467,6 +507,7 @@ async def generate_autocompletion(
         "messages": [{"role": "user", "content": content}],
         "stream": False,
         "metadata": {
+            **(request.state.metadata if hasattr(request.state, "metadata") else {}),
             "task": str(TASKS.AUTOCOMPLETE_GENERATION),
             "task_body": form_data,
             "chat_id": form_data.get("chat_id", None),
@@ -488,7 +529,12 @@ async def generate_emoji(
     request: Request, form_data: dict, user=Depends(get_verified_user)
 ):
 
-    models = request.app.state.MODELS
+    if getattr(request.state, "direct", False) and hasattr(request.state, "model"):
+        models = {
+            request.state.model["id"]: request.state.model,
+        }
+    else:
+        models = request.app.state.MODELS
 
     model_id = form_data["model"]
     if model_id not in models:
@@ -531,7 +577,11 @@ async def generate_emoji(
             }
         ),
         "chat_id": form_data.get("chat_id", None),
-        "metadata": {"task": str(TASKS.EMOJI_GENERATION), "task_body": form_data},
+        "metadata": {
+            **(request.state.metadata if hasattr(request.state, "metadata") else {}),
+            "task": str(TASKS.EMOJI_GENERATION),
+            "task_body": form_data,
+        },
     }
 
     try:
@@ -548,7 +598,13 @@ async def generate_moa_response(
     request: Request, form_data: dict, user=Depends(get_verified_user)
 ):
 
-    models = request.app.state.MODELS
+    if getattr(request.state, "direct", False) and hasattr(request.state, "model"):
+        models = {
+            request.state.model["id"]: request.state.model,
+        }
+    else:
+        models = request.app.state.MODELS
+
     model_id = form_data["model"]
 
     if model_id not in models:
@@ -581,6 +637,7 @@ async def generate_moa_response(
         "messages": [{"role": "user", "content": content}],
         "stream": form_data.get("stream", False),
         "metadata": {
+            **(request.state.metadata if hasattr(request.state, "metadata") else {}),
             "chat_id": form_data.get("chat_id", None),
             "task": str(TASKS.MOA_RESPONSE_GENERATION),
             "task_body": form_data,

+ 4 - 4
backend/open_webui/socket/main.py

@@ -279,8 +279,8 @@ def get_event_emitter(request_info):
             await sio.emit(
                 "chat-events",
                 {
-                    "chat_id": request_info["chat_id"],
-                    "message_id": request_info["message_id"],
+                    "chat_id": request_info.get("chat_id", None),
+                    "message_id": request_info.get("message_id", None),
                     "data": event_data,
                 },
                 to=session_id,
@@ -329,8 +329,8 @@ def get_event_call(request_info):
         response = await sio.call(
             "chat-events",
             {
-                "chat_id": request_info["chat_id"],
-                "message_id": request_info["message_id"],
+                "chat_id": request_info.get("chat_id", None),
+                "message_id": request_info.get("message_id", None),
                 "data": event_data,
             },
             to=request_info["session_id"],

+ 216 - 79
backend/open_webui/utils/chat.py

@@ -7,14 +7,17 @@ from typing import Any, Optional
 import random
 import json
 import inspect
+import uuid
+import asyncio
 
-from fastapi import Request
-from starlette.responses import Response, StreamingResponse
+from fastapi import Request, status
+from starlette.responses import Response, StreamingResponse, JSONResponse
 
 
 from open_webui.models.users import UserModel
 
 from open_webui.socket.main import (
+    sio,
     get_event_call,
     get_event_emitter,
 )
@@ -57,16 +60,127 @@ log = logging.getLogger(__name__)
 log.setLevel(SRC_LOG_LEVELS["MAIN"])
 
 
+async def generate_direct_chat_completion(
+    request: Request,
+    form_data: dict,
+    user: Any,
+    models: dict,
+):
+    print("generate_direct_chat_completion")
+
+    metadata = form_data.pop("metadata", {})
+
+    user_id = metadata.get("user_id")
+    session_id = metadata.get("session_id")
+    request_id = str(uuid.uuid4())  # Generate a unique request ID
+
+    event_caller = get_event_call(metadata)
+
+    channel = f"{user_id}:{session_id}:{request_id}"
+
+    if form_data.get("stream"):
+        q = asyncio.Queue()
+
+        async def message_listener(sid, data):
+            """
+            Handle received socket messages and push them into the queue.
+            """
+            await q.put(data)
+
+        # Register the listener
+        sio.on(channel, message_listener)
+
+        # Start processing chat completion in background
+        res = await event_caller(
+            {
+                "type": "request:chat:completion",
+                "data": {
+                    "form_data": form_data,
+                    "model": models[form_data["model"]],
+                    "channel": channel,
+                    "session_id": session_id,
+                },
+            }
+        )
+
+        print("res", res)
+
+        if res.get("status", False):
+            # Define a generator to stream responses
+            async def event_generator():
+                nonlocal q
+                try:
+                    while True:
+                        data = await q.get()  # Wait for new messages
+                        if isinstance(data, dict):
+                            if "done" in data and data["done"]:
+                                break  # Stop streaming when 'done' is received
+
+                            yield f"data: {json.dumps(data)}\n\n"
+                        elif isinstance(data, str):
+                            yield data
+                except Exception as e:
+                    log.debug(f"Error in event generator: {e}")
+                    pass
+
+            # Define a background task to run the event generator
+            async def background():
+                try:
+                    del sio.handlers["/"][channel]
+                except Exception as e:
+                    pass
+
+            # Return the streaming response
+            return StreamingResponse(
+                event_generator(), media_type="text/event-stream", background=background
+            )
+        else:
+            raise Exception(str(res))
+    else:
+        res = await event_caller(
+            {
+                "type": "request:chat:completion",
+                "data": {
+                    "form_data": form_data,
+                    "model": models[form_data["model"]],
+                    "channel": channel,
+                    "session_id": session_id,
+                },
+            }
+        )
+
+        if "error" in res:
+            raise Exception(res["error"])
+
+        return res
+
+
 async def generate_chat_completion(
     request: Request,
     form_data: dict,
     user: Any,
     bypass_filter: bool = False,
 ):
+    log.debug(f"generate_chat_completion: {form_data}")
     if BYPASS_MODEL_ACCESS_CONTROL:
         bypass_filter = True
 
-    models = request.app.state.MODELS
+    if hasattr(request.state, "metadata"):
+        if "metadata" not in form_data:
+            form_data["metadata"] = request.state.metadata
+        else:
+            form_data["metadata"] = {
+                **form_data["metadata"],
+                **request.state.metadata,
+            }
+
+    if getattr(request.state, "direct", False) and hasattr(request.state, "model"):
+        models = {
+            request.state.model["id"]: request.state.model,
+        }
+        log.debug(f"direct connection to model: {models}")
+    else:
+        models = request.app.state.MODELS
 
     model_id = form_data["model"]
     if model_id not in models:
@@ -80,85 +194,96 @@ async def generate_chat_completion(
 
     model = models[model_id]
 
-    # Check if user has access to the model
-    if not bypass_filter and user.role == "user":
-        try:
-            check_model_access(user, model)
-        except Exception as e:
-            raise e
-
-    if model["owned_by"] == "arena":
-        model_ids = model.get("info", {}).get("meta", {}).get("model_ids")
-        filter_mode = model.get("info", {}).get("meta", {}).get("filter_mode")
-        if model_ids and filter_mode == "exclude":
-            model_ids = [
-                model["id"]
-                for model in list(request.app.state.MODELS.values())
-                if model.get("owned_by") != "arena" and model["id"] not in model_ids
-            ]
-
-        selected_model_id = None
-        if isinstance(model_ids, list) and model_ids:
-            selected_model_id = random.choice(model_ids)
-        else:
-            model_ids = [
-                model["id"]
-                for model in list(request.app.state.MODELS.values())
-                if model.get("owned_by") != "arena"
-            ]
-            selected_model_id = random.choice(model_ids)
-
-        form_data["model"] = selected_model_id
-
-        if form_data.get("stream") == True:
-
-            async def stream_wrapper(stream):
-                yield f"data: {json.dumps({'selected_model_id': selected_model_id})}\n\n"
-                async for chunk in stream:
-                    yield chunk
+    if getattr(request.state, "direct", False):
+        return await generate_direct_chat_completion(
+            request, form_data, user=user, models=models
+        )
+    else:
+        # Check if user has access to the model
+        if not bypass_filter and user.role == "user":
+            try:
+                check_model_access(user, model)
+            except Exception as e:
+                raise e
+
+        if model["owned_by"] == "arena":
+            model_ids = model.get("info", {}).get("meta", {}).get("model_ids")
+            filter_mode = model.get("info", {}).get("meta", {}).get("filter_mode")
+            if model_ids and filter_mode == "exclude":
+                model_ids = [
+                    model["id"]
+                    for model in list(request.app.state.MODELS.values())
+                    if model.get("owned_by") != "arena" and model["id"] not in model_ids
+                ]
+
+            selected_model_id = None
+            if isinstance(model_ids, list) and model_ids:
+                selected_model_id = random.choice(model_ids)
+            else:
+                model_ids = [
+                    model["id"]
+                    for model in list(request.app.state.MODELS.values())
+                    if model.get("owned_by") != "arena"
+                ]
+                selected_model_id = random.choice(model_ids)
+
+            form_data["model"] = selected_model_id
+
+            if form_data.get("stream") == True:
+
+                async def stream_wrapper(stream):
+                    yield f"data: {json.dumps({'selected_model_id': selected_model_id})}\n\n"
+                    async for chunk in stream:
+                        yield chunk
+
+                response = await generate_chat_completion(
+                    request, form_data, user, bypass_filter=True
+                )
+                return StreamingResponse(
+                    stream_wrapper(response.body_iterator),
+                    media_type="text/event-stream",
+                    background=response.background,
+                )
+            else:
+                return {
+                    **(
+                        await generate_chat_completion(
+                            request, form_data, user, bypass_filter=True
+                        )
+                    ),
+                    "selected_model_id": selected_model_id,
+                }
 
-            response = await generate_chat_completion(
-                request, form_data, user, bypass_filter=True
+        if model.get("pipe"):
+            # Below does not require bypass_filter because this is the only route the uses this function and it is already bypassing the filter
+            return await generate_function_chat_completion(
+                request, form_data, user=user, models=models
             )
-            return StreamingResponse(
-                stream_wrapper(response.body_iterator),
-                media_type="text/event-stream",
-                background=response.background,
+        if model["owned_by"] == "ollama":
+            # Using /ollama/api/chat endpoint
+            form_data = convert_payload_openai_to_ollama(form_data)
+            response = await generate_ollama_chat_completion(
+                request=request,
+                form_data=form_data,
+                user=user,
+                bypass_filter=bypass_filter,
             )
+            if form_data.get("stream"):
+                response.headers["content-type"] = "text/event-stream"
+                return StreamingResponse(
+                    convert_streaming_response_ollama_to_openai(response),
+                    headers=dict(response.headers),
+                    background=response.background,
+                )
+            else:
+                return convert_response_ollama_to_openai(response)
         else:
-            return {
-                **(
-                    await generate_chat_completion(
-                        request, form_data, user, bypass_filter=True
-                    )
-                ),
-                "selected_model_id": selected_model_id,
-            }
-
-    if model.get("pipe"):
-        # Below does not require bypass_filter because this is the only route the uses this function and it is already bypassing the filter
-        return await generate_function_chat_completion(
-            request, form_data, user=user, models=models
-        )
-    if model["owned_by"] == "ollama":
-        # Using /ollama/api/chat endpoint
-        form_data = convert_payload_openai_to_ollama(form_data)
-        response = await generate_ollama_chat_completion(
-            request=request, form_data=form_data, user=user, bypass_filter=bypass_filter
-        )
-        if form_data.get("stream"):
-            response.headers["content-type"] = "text/event-stream"
-            return StreamingResponse(
-                convert_streaming_response_ollama_to_openai(response),
-                headers=dict(response.headers),
-                background=response.background,
+            return await generate_openai_chat_completion(
+                request=request,
+                form_data=form_data,
+                user=user,
+                bypass_filter=bypass_filter,
             )
-        else:
-            return convert_response_ollama_to_openai(response)
-    else:
-        return await generate_openai_chat_completion(
-            request=request, form_data=form_data, user=user, bypass_filter=bypass_filter
-        )
 
 
 chat_completion = generate_chat_completion
@@ -167,7 +292,13 @@ chat_completion = generate_chat_completion
 async def chat_completed(request: Request, form_data: dict, user: Any):
     if not request.app.state.MODELS:
         await get_all_models(request)
-    models = request.app.state.MODELS
+
+    if getattr(request.state, "direct", False) and hasattr(request.state, "model"):
+        models = {
+            request.state.model["id"]: request.state.model,
+        }
+    else:
+        models = request.app.state.MODELS
 
     data = form_data
     model_id = data["model"]
@@ -227,7 +358,13 @@ async def chat_action(request: Request, action_id: str, form_data: dict, user: A
 
     if not request.app.state.MODELS:
         await get_all_models(request)
-    models = request.app.state.MODELS
+
+    if getattr(request.state, "direct", False) and hasattr(request.state, "model"):
+        models = {
+            request.state.model["id"]: request.state.model,
+        }
+    else:
+        models = request.app.state.MODELS
 
     data = form_data
     model_id = data["model"]

+ 59 - 30
backend/open_webui/utils/middleware.py

@@ -616,7 +616,13 @@ async def process_chat_payload(request, form_data, metadata, user, model):
 
     # Initialize events to store additional event to be sent to the client
     # Initialize contexts and citation
-    models = request.app.state.MODELS
+    if getattr(request.state, "direct", False) and hasattr(request.state, "model"):
+        models = {
+            request.state.model["id"]: request.state.model,
+        }
+    else:
+        models = request.app.state.MODELS
+
     task_model_id = get_task_model_id(
         form_data["model"],
         request.app.state.config.TASK_MODEL,
@@ -766,17 +772,7 @@ async def process_chat_payload(request, form_data, metadata, user, model):
 
             if "document" in source:
                 for doc_idx, doc_context in enumerate(source["document"]):
-                    doc_metadata = source.get("metadata")
-                    doc_source_id = None
-
-                    if doc_metadata:
-                        doc_source_id = doc_metadata[doc_idx].get("source", source_id)
-
-                    if source_id:
-                        context_string += f"<source><source_id>{doc_source_id if doc_source_id is not None else source_id}</source_id><source_context>{doc_context}</source_context></source>\n"
-                    else:
-                        # If there is no source_id, then do not include the source_id tag
-                        context_string += f"<source><source_context>{doc_context}</source_context></source>\n"
+                    context_string += f"<source><source_id>{doc_idx}</source_id><source_context>{doc_context}</source_context></source>\n"
 
         context_string = context_string.strip()
         prompt = get_last_user_message(form_data["messages"])
@@ -1149,6 +1145,46 @@ async def process_chat_response(
 
                 return content.strip()
 
+            def convert_content_blocks_to_messages(content_blocks):
+                messages = []
+
+                temp_blocks = []
+                for idx, block in enumerate(content_blocks):
+                    if block["type"] == "tool_calls":
+                        messages.append(
+                            {
+                                "role": "assistant",
+                                "content": serialize_content_blocks(temp_blocks),
+                                "tool_calls": block.get("content"),
+                            }
+                        )
+
+                        results = block.get("results", [])
+
+                        for result in results:
+                            messages.append(
+                                {
+                                    "role": "tool",
+                                    "tool_call_id": result["tool_call_id"],
+                                    "content": result["content"],
+                                }
+                            )
+                        temp_blocks = []
+                    else:
+                        temp_blocks.append(block)
+
+                if temp_blocks:
+                    content = serialize_content_blocks(temp_blocks)
+                    if content:
+                        messages.append(
+                            {
+                                "role": "assistant",
+                                "content": content,
+                            }
+                        )
+
+                return messages
+
             def tag_content_handler(content_type, tags, content, content_blocks):
                 end_flag = False
 
@@ -1540,7 +1576,6 @@ async def process_chat_response(
 
                     results = []
                     for tool_call in response_tool_calls:
-                        print("\n\n" + str(tool_call) + "\n\n")
                         tool_call_id = tool_call.get("id", "")
                         tool_name = tool_call.get("function", {}).get("name", "")
 
@@ -1606,23 +1641,10 @@ async def process_chat_response(
                             {
                                 "model": model_id,
                                 "stream": True,
+                                "tools": form_data["tools"],
                                 "messages": [
                                     *form_data["messages"],
-                                    {
-                                        "role": "assistant",
-                                        "content": serialize_content_blocks(
-                                            content_blocks, raw=True
-                                        ),
-                                        "tool_calls": response_tool_calls,
-                                    },
-                                    *[
-                                        {
-                                            "role": "tool",
-                                            "tool_call_id": result["tool_call_id"],
-                                            "content": result["content"],
-                                        }
-                                        for result in results
-                                    ],
+                                    *convert_content_blocks_to_messages(content_blocks),
                                 ],
                             },
                             user,
@@ -1671,6 +1693,9 @@ async def process_chat_response(
                                             "data": {
                                                 "id": str(uuid4()),
                                                 "code": code,
+                                                "session_id": metadata.get(
+                                                    "session_id", None
+                                                ),
                                             },
                                         }
                                     )
@@ -1699,10 +1724,12 @@ async def process_chat_response(
                                         "stdout": "Code interpreter engine not configured."
                                     }
 
+                                log.debug(f"Code interpreter output: {output}")
+
                                 if isinstance(output, dict):
                                     stdout = output.get("stdout", "")
 
-                                    if stdout:
+                                    if isinstance(stdout, str):
                                         stdoutLines = stdout.split("\n")
                                         for idx, line in enumerate(stdoutLines):
                                             if "data:image/png;base64" in line:
@@ -1734,7 +1761,7 @@ async def process_chat_response(
 
                                     result = output.get("result", "")
 
-                                    if result:
+                                    if isinstance(result, str):
                                         resultLines = result.split("\n")
                                         for idx, line in enumerate(resultLines):
                                             if "data:image/png;base64" in line:
@@ -1784,6 +1811,8 @@ async def process_chat_response(
                             }
                         )
 
+                        print(content_blocks, serialize_content_blocks(content_blocks))
+
                         try:
                             res = await generate_chat_completion(
                                 request,

+ 10 - 2
backend/open_webui/utils/misc.py

@@ -217,12 +217,20 @@ def openai_chat_chunk_message_template(
 
 
 def openai_chat_completion_message_template(
-    model: str, message: Optional[str] = None, usage: Optional[dict] = None
+    model: str,
+    message: Optional[str] = None,
+    tool_calls: Optional[list[dict]] = None,
+    usage: Optional[dict] = None,
 ) -> dict:
     template = openai_chat_message_template(model)
     template["object"] = "chat.completion"
     if message is not None:
-        template["choices"][0]["message"] = {"content": message, "role": "assistant"}
+        template["choices"][0]["message"] = {
+            "content": message,
+            "role": "assistant",
+            **({"tool_calls": tool_calls} if tool_calls else {}),
+        }
+
     template["choices"][0]["finish_reason"] = "stop"
 
     if usage:

+ 27 - 15
backend/open_webui/utils/response.py

@@ -6,9 +6,32 @@ from open_webui.utils.misc import (
 )
 
 
+def convert_ollama_tool_call_to_openai(tool_calls: dict) -> dict:
+    openai_tool_calls = []
+    for tool_call in tool_calls:
+        openai_tool_call = {
+            "index": tool_call.get("index", 0),
+            "id": tool_call.get("id", f"call_{str(uuid4())}"),
+            "type": "function",
+            "function": {
+                "name": tool_call.get("function", {}).get("name", ""),
+                "arguments": json.dumps(
+                    tool_call.get("function", {}).get("arguments", {})
+                ),
+            },
+        }
+        openai_tool_calls.append(openai_tool_call)
+    return openai_tool_calls
+
+
 def convert_response_ollama_to_openai(ollama_response: dict) -> dict:
     model = ollama_response.get("model", "ollama")
     message_content = ollama_response.get("message", {}).get("content", "")
+    tool_calls = ollama_response.get("message", {}).get("tool_calls", None)
+    openai_tool_calls = None
+
+    if tool_calls:
+        openai_tool_calls = convert_ollama_tool_call_to_openai(tool_calls)
 
     data = ollama_response
     usage = {
@@ -51,7 +74,9 @@ def convert_response_ollama_to_openai(ollama_response: dict) -> dict:
         ),
     }
 
-    response = openai_chat_completion_message_template(model, message_content, usage)
+    response = openai_chat_completion_message_template(
+        model, message_content, openai_tool_calls, usage
+    )
     return response
 
 
@@ -65,20 +90,7 @@ async def convert_streaming_response_ollama_to_openai(ollama_streaming_response)
         openai_tool_calls = None
 
         if tool_calls:
-            openai_tool_calls = []
-            for tool_call in tool_calls:
-                openai_tool_call = {
-                    "index": tool_call.get("index", 0),
-                    "id": tool_call.get("id", f"call_{str(uuid4())}"),
-                    "type": "function",
-                    "function": {
-                        "name": tool_call.get("function", {}).get("name", ""),
-                        "arguments": json.dumps(
-                            tool_call.get("function", {}).get("arguments", {})
-                        ),
-                    },
-                }
-                openai_tool_calls.append(openai_tool_call)
+            openai_tool_calls = convert_ollama_tool_call_to_openai(tool_calls)
 
         done = data.get("done", False)
 

+ 0 - 3
backend/requirements.txt

@@ -3,9 +3,6 @@ uvicorn[standard]==0.30.6
 pydantic==2.9.2
 python-multipart==0.0.18
 
-Flask==3.1.0
-Flask-Cors==5.0.0
-
 python-socketio==5.11.3
 python-jose==3.3.0
 passlib[bcrypt]==1.7.4

+ 2 - 2
package-lock.json

@@ -1,12 +1,12 @@
 {
 	"name": "open-webui",
-	"version": "0.5.10",
+	"version": "0.5.12",
 	"lockfileVersion": 3,
 	"requires": true,
 	"packages": {
 		"": {
 			"name": "open-webui",
-			"version": "0.5.10",
+			"version": "0.5.12",
 			"dependencies": {
 				"@codemirror/lang-javascript": "^6.2.2",
 				"@codemirror/lang-python": "^6.1.6",

+ 1 - 1
package.json

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

+ 1 - 4
pyproject.toml

@@ -11,9 +11,6 @@ dependencies = [
     "pydantic==2.9.2",
     "python-multipart==0.0.18",
 
-    "Flask==3.1.0",
-    "Flask-Cors==5.0.0",
-
     "python-socketio==5.11.3",
     "python-jose==3.3.0",
     "passlib[bcrypt]==1.7.4",
@@ -55,7 +52,7 @@ dependencies = [
     "chromadb==0.6.2",
     "pymilvus==2.5.0",
     "qdrant-client~=1.12.0",
-    "opensearch-py==2.7.1",
+    "opensearch-py==2.8.0",
     "playwright==1.49.1",
 
     "transformers",

+ 15 - 1
src/lib/apis/index.ts

@@ -68,7 +68,21 @@ export const getModels = async (
 								})()
 							);
 						} else {
-							requests.push(getOpenAIModelsDirect(url, OPENAI_API_KEYS[idx]));
+							requests.push(
+								(async () => {
+									return await getOpenAIModelsDirect(url, OPENAI_API_KEYS[idx])
+										.then((res) => {
+											return res;
+										})
+										.catch((err) => {
+											return {
+												object: 'list',
+												data: [],
+												urlIdx: idx
+											};
+										});
+								})()
+							);
 						}
 					} else {
 						requests.push(

+ 26 - 13
src/lib/components/admin/Settings/Interface.svelte

@@ -23,6 +23,7 @@
 	let taskConfig = {
 		TASK_MODEL: '',
 		TASK_MODEL_EXTERNAL: '',
+		ENABLE_TITLE_GENERATION: true,
 		TITLE_GENERATION_PROMPT_TEMPLATE: '',
 		IMAGE_PROMPT_GENERATION_PROMPT_TEMPLATE: '',
 		ENABLE_AUTOCOMPLETE_GENERATION: true,
@@ -126,22 +127,34 @@
 					</div>
 				</div>
 
-				<div class="mt-3">
-					<div class=" mb-2.5 text-xs font-medium">{$i18n.t('Title Generation Prompt')}</div>
+				<hr class=" border-gray-50 dark:border-gray-850 my-3" />
 
-					<Tooltip
-						content={$i18n.t('Leave empty to use the default prompt, or enter a custom prompt')}
-						placement="top-start"
-					>
-						<Textarea
-							bind:value={taskConfig.TITLE_GENERATION_PROMPT_TEMPLATE}
-							placeholder={$i18n.t(
-								'Leave empty to use the default prompt, or enter a custom prompt'
-							)}
-						/>
-					</Tooltip>
+				<div class="my-3 flex w-full items-center justify-between">
+					<div class=" self-center text-xs font-medium">
+						{$i18n.t('Title Generation')}
+					</div>
+
+					<Switch bind:state={taskConfig.ENABLE_TITLE_GENERATION} />
 				</div>
 
+				{#if taskConfig.ENABLE_TITLE_GENERATION}
+					<div class="mt-3">
+						<div class=" mb-2.5 text-xs font-medium">{$i18n.t('Title Generation Prompt')}</div>
+
+						<Tooltip
+							content={$i18n.t('Leave empty to use the default prompt, or enter a custom prompt')}
+							placement="top-start"
+						>
+							<Textarea
+								bind:value={taskConfig.TITLE_GENERATION_PROMPT_TEMPLATE}
+								placeholder={$i18n.t(
+									'Leave empty to use the default prompt, or enter a custom prompt'
+								)}
+							/>
+						</Tooltip>
+					</div>
+				{/if}
+
 				<div class="mt-3">
 					<div class=" mb-2.5 text-xs font-medium">{$i18n.t('Image Prompt Generation Prompt')}</div>
 

+ 29 - 0
src/lib/components/admin/Settings/WebSearch.svelte

@@ -23,6 +23,7 @@
 		'serper',
 		'serply',
 		'searchapi',
+		'serpapi',
 		'duckduckgo',
 		'tavily',
 		'jina',
@@ -268,6 +269,34 @@
 									</div>
 								</div>
 							</div>
+						{:else if webConfig.search.engine === 'serpapi'}
+							<div>
+								<div class=" self-center text-xs font-medium mb-1">
+									{$i18n.t('SerpApi API Key')}
+								</div>
+
+								<SensitiveInput
+									placeholder={$i18n.t('Enter SerpApi API Key')}
+									bind:value={webConfig.search.serpapi_api_key}
+								/>
+							</div>
+							<div class="mt-1.5">
+								<div class=" self-center text-xs font-medium mb-1">
+									{$i18n.t('SerpApi Engine')}
+								</div>
+
+								<div class="flex w-full">
+									<div class="flex-1">
+										<input
+											class="w-full rounded-lg py-2 px-4 text-sm bg-gray-50 dark:text-gray-300 dark:bg-gray-850 outline-none"
+											type="text"
+											placeholder={$i18n.t('Enter SerpApi Engine')}
+											bind:value={webConfig.search.serpapi_engine}
+											autocomplete="off"
+										/>
+									</div>
+								</div>
+							</div>
 						{:else if webConfig.search.engine === 'tavily'}
 							<div>
 								<div class=" self-center text-xs font-medium mb-1">

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

@@ -838,6 +838,7 @@
 				timestamp: m.timestamp,
 				...(m.sources ? { sources: m.sources } : {})
 			})),
+			model_item: $models.find((m) => m.id === modelId),
 			chat_id: chatId,
 			session_id: $socket?.id,
 			id: responseMessageId
@@ -896,6 +897,7 @@
 				...(m.sources ? { sources: m.sources } : {})
 			})),
 			...(event ? { event: event } : {}),
+			model_item: $models.find((m) => m.id === modelId),
 			chat_id: chatId,
 			session_id: $socket?.id,
 			id: responseMessageId
@@ -1574,6 +1576,7 @@
 						$settings?.userLocation ? await getAndUpdateUserLocation(localStorage.token) : undefined
 					)
 				},
+				model_item: $models.find((m) => m.id === model.id),
 
 				session_id: $socket?.id,
 				chat_id: $chatId,

+ 2 - 2
src/lib/components/chat/Messages/Citations.svelte

@@ -100,7 +100,7 @@
 			<div class="flex text-xs font-medium flex-wrap">
 				{#each citations as citation, idx}
 					<button
-						id={`source-${citation.source.name}`}
+						id={`source-${idx}`}
 						class="no-toggle outline-none flex dark:text-gray-300 p-1 bg-white dark:bg-gray-900 rounded-xl max-w-96"
 						on:click={() => {
 							showCitationModal = true;
@@ -179,7 +179,7 @@
 					<div class="flex text-xs font-medium flex-wrap">
 						{#each citations as citation, idx}
 							<button
-								id={`source-${citation.source.name}`}
+								id={`source-${idx}`}
 								class="no-toggle outline-none flex dark:text-gray-300 p-1 bg-gray-50 hover:bg-gray-100 dark:bg-gray-900 dark:hover:bg-gray-850 transition rounded-xl max-w-96"
 								on:click={() => {
 									showCitationModal = true;

+ 3 - 0
src/lib/components/chat/Messages/ContentRenderer.svelte

@@ -18,6 +18,8 @@
 	export let floatingButtons = true;
 
 	export let onSourceClick = () => {};
+	export let onTaskClick = () => {};
+
 	export let onAddMessages = () => {};
 
 	let contentContainerElement;
@@ -141,6 +143,7 @@
 			return acc.filter((item, index) => acc.indexOf(item) === index);
 		}, [])}
 		{onSourceClick}
+		{onTaskClick}
 		on:update={(e) => {
 			dispatch('update', e.detail);
 		}}

+ 3 - 0
src/lib/components/chat/Messages/Markdown.svelte

@@ -17,7 +17,9 @@
 	export let save = false;
 
 	export let sourceIds = [];
+
 	export let onSourceClick = () => {};
+	export let onTaskClick = () => {};
 
 	let tokens = [];
 
@@ -42,6 +44,7 @@
 		{tokens}
 		{id}
 		{save}
+		{onTaskClick}
 		{onSourceClick}
 		on:update={(e) => {
 			dispatch('update', e.detail);

+ 3 - 9
src/lib/components/chat/Messages/Markdown/MarkdownInlineTokens.svelte

@@ -44,13 +44,9 @@
 	{:else if token.type === 'image'}
 		<Image src={token.href} alt={token.text} />
 	{:else if token.type === 'strong'}
-		<strong>
-			<svelte:self id={`${id}-strong`} tokens={token.tokens} {onSourceClick} />
-		</strong>
+		<strong><svelte:self id={`${id}-strong`} tokens={token.tokens} {onSourceClick} /></strong>
 	{:else if token.type === 'em'}
-		<em>
-			<svelte:self id={`${id}-em`} tokens={token.tokens} {onSourceClick} />
-		</em>
+		<em><svelte:self id={`${id}-em`} tokens={token.tokens} {onSourceClick} /></em>
 	{:else if token.type === 'codespan'}
 		<!-- svelte-ignore a11y-click-events-have-key-events -->
 		<!-- svelte-ignore a11y-no-noninteractive-element-interactions -->
@@ -64,9 +60,7 @@
 	{:else if token.type === 'br'}
 		<br />
 	{:else if token.type === 'del'}
-		<del>
-			<svelte:self id={`${id}-del`} tokens={token.tokens} {onSourceClick} />
-		</del>
+		<del><svelte:self id={`${id}-del`} tokens={token.tokens} {onSourceClick} /></del>
 	{:else if token.type === 'inlineKatex'}
 		{#if token.text}
 			<KatexRenderer content={token.text} displayMode={false} />

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

@@ -26,6 +26,8 @@
 	export let attributes = {};
 
 	export let save = false;
+
+	export let onTaskClick: Function = () => {};
 	export let onSourceClick: Function = () => {};
 
 	const headerComponent = (depth: number) => {
@@ -168,17 +170,37 @@
 		</div>
 	{:else if token.type === 'blockquote'}
 		<blockquote>
-			<svelte:self id={`${id}-${tokenIdx}`} tokens={token.tokens} />
+			<svelte:self id={`${id}-${tokenIdx}`} tokens={token.tokens} {onTaskClick} {onSourceClick} />
 		</blockquote>
 	{:else if token.type === 'list'}
 		{#if token.ordered}
 			<ol start={token.start || 1}>
 				{#each token.items as item, itemIdx}
 					<li>
+						{#if item?.task}
+							<input
+								class=" translate-y-[1px] -translate-x-1"
+								type="checkbox"
+								checked={item.checked}
+								on:change={(e) => {
+									onTaskClick({
+										id: id,
+										token: token,
+										tokenIdx: tokenIdx,
+										item: item,
+										itemIdx: itemIdx,
+										checked: e.target.checked
+									});
+								}}
+							/>
+						{/if}
+
 						<svelte:self
 							id={`${id}-${tokenIdx}-${itemIdx}`}
 							tokens={item.tokens}
 							top={token.loose}
+							{onTaskClick}
+							{onSourceClick}
 						/>
 					</li>
 				{/each}
@@ -187,10 +209,30 @@
 			<ul>
 				{#each token.items as item, itemIdx}
 					<li>
+						{#if item?.task}
+							<input
+								class=" translate-y-[1px] -translate-x-1"
+								type="checkbox"
+								checked={item.checked}
+								on:change={(e) => {
+									onTaskClick({
+										id: id,
+										token: token,
+										tokenIdx: tokenIdx,
+										item: item,
+										itemIdx: itemIdx,
+										checked: e.target.checked
+									});
+								}}
+							/>
+						{/if}
+
 						<svelte:self
 							id={`${id}-${tokenIdx}-${itemIdx}`}
 							tokens={item.tokens}
 							top={token.loose}
+							{onTaskClick}
+							{onSourceClick}
 						/>
 					</li>
 				{/each}
@@ -203,6 +245,8 @@
 					id={`${id}-${tokenIdx}-d`}
 					tokens={marked.lexer(token.text)}
 					attributes={token?.attributes}
+					{onTaskClick}
+					{onSourceClick}
 				/>
 			</div>
 		</Collapsible>

+ 16 - 9
src/lib/components/chat/Messages/Markdown/Source.svelte

@@ -2,24 +2,31 @@
 	export let token;
 	export let onClick: Function = () => {};
 
-	let id = '';
-	function extractDataAttribute(input) {
-		// Use a regular expression to extract the value of the `data` attribute
-		const match = input.match(/data="([^"]*)"/);
-		// Check if a match was found and return the first captured group
-		return match ? match[1] : null;
+	let attributes: Record<string, string> = {};
+
+	function extractAttributes(input: string): Record<string, string> {
+		const regex = /(\w+)="([^"]*)"/g;
+		let match;
+		let attrs: Record<string, string> = {};
+
+		// Loop through all matches and populate the attributes object
+		while ((match = regex.exec(input)) !== null) {
+			attrs[match[1]] = match[2];
+		}
+
+		return attrs;
 	}
 
-	$: id = extractDataAttribute(token.text);
+	$: attributes = extractAttributes(token.text);
 </script>
 
 <button
 	class="text-xs font-medium w-fit translate-y-[2px] px-2 py-0.5 dark:bg-white/5 dark:text-white/60 dark:hover:text-white bg-gray-50 text-black/60 hover:text-black transition rounded-lg"
 	on:click={() => {
-		onClick(id);
+		onClick(attributes.data);
 	}}
 >
 	<span class="line-clamp-1">
-		{id}
+		{attributes.title}
 	</span>
 </button>

+ 7 - 2
src/lib/components/chat/Messages/ResponseMessage.svelte

@@ -716,6 +716,9 @@
 										floatingButtons={message?.done}
 										save={!readOnly}
 										{model}
+										onTaskClick={async (e) => {
+											console.log(e);
+										}}
 										onSourceClick={async (e) => {
 											console.log(e);
 											let sourceButton = document.getElementById(`source-${e}`);
@@ -725,10 +728,12 @@
 												sourceButton.click();
 											} else if (sourcesCollapsible) {
 												// Open sources collapsible so we can click the source button
-												sourcesCollapsible.querySelector("div:first-child").dispatchEvent(new PointerEvent('pointerup', {}))
+												sourcesCollapsible
+													.querySelector('div:first-child')
+													.dispatchEvent(new PointerEvent('pointerup', {}));
 
 												// Wait for next frame to ensure DOM updates
-												await new Promise(resolve => {
+												await new Promise((resolve) => {
 													requestAnimationFrame(() => {
 														requestAnimationFrame(resolve);
 													});

+ 4 - 0
src/lib/components/chat/Settings/Connections.svelte

@@ -128,6 +128,10 @@
 					<div class="my-1.5">
 						<div class="text-xs text-gray-500">
 							{$i18n.t('Connect to your own OpenAI compatible API endpoints.')}
+							<br />
+							{$i18n.t(
+								'CORS must be properly configured by the provider to allow requests from Open WebUI.'
+							)}
 						</div>
 					</div>
 				</div>

+ 1 - 0
src/lib/components/chat/Settings/Connections/Connection.svelte

@@ -21,6 +21,7 @@
 
 <AddConnectionModal
 	edit
+	direct
 	bind:show={showConfigModal}
 	connection={{
 		url,

+ 12 - 8
src/lib/components/chat/Suggestions.svelte

@@ -42,14 +42,18 @@
 	}
 
 	const getFilteredPrompts = (inputValue) => {
-		const newFilteredPrompts = inputValue.trim()
-			? fuse.search(inputValue.trim()).map((result) => result.item)
-			: sortedPrompts;
-
-		// Compare with the oldFilteredPrompts
-		// If there's a difference, update array + version
-		if (!arraysEqual(filteredPrompts, newFilteredPrompts)) {
-			filteredPrompts = newFilteredPrompts;
+		if (inputValue.length > 500) {
+			filteredPrompts = [];
+		} else {
+			const newFilteredPrompts = inputValue.trim()
+				? fuse.search(inputValue.trim()).map((result) => result.item)
+				: sortedPrompts;
+
+			// Compare with the oldFilteredPrompts
+			// If there's a difference, update array + version
+			if (!arraysEqual(filteredPrompts, newFilteredPrompts)) {
+				filteredPrompts = newFilteredPrompts;
+			}
 		}
 	};
 

+ 1 - 1
src/lib/components/common/Collapsible.svelte

@@ -47,7 +47,7 @@
 	export let hide = false;
 </script>
 
-<div id={id} class={className}>
+<div {id} class={className}>
 	{#if title !== null}
 		<!-- svelte-ignore a11y-no-static-element-interactions -->
 		<!-- svelte-ignore a11y-click-events-have-key-events -->

+ 68 - 51
src/lib/components/common/RichTextInput.svelte

@@ -35,6 +35,8 @@
 	export let value = '';
 	export let id = '';
 
+	export let raw = false;
+
 	export let preserveBreaks = false;
 	export let generateAutoCompletion: Function = async () => null;
 	export let autocomplete = false;
@@ -51,10 +53,7 @@
 
 	// Function to find the next template in the document
 	function findNextTemplate(doc, from = 0) {
-		const patterns = [
-			{ start: '[', end: ']' },
-			{ start: '{{', end: '}}' }
-		];
+		const patterns = [{ start: '{{', end: '}}' }];
 
 		let result = null;
 
@@ -137,25 +136,29 @@
 			});
 		}
 
-		async function tryParse(value, attempts = 3, interval = 100) {
-			try {
-				// Try parsing the value
-				return marked.parse(value.replaceAll(`\n<br/>`, `<br/>`), {
-					breaks: false
-				});
-			} catch (error) {
-				// If no attempts remain, fallback to plain text
-				if (attempts <= 1) {
-					return value;
+		let content = value;
+
+		if (!raw) {
+			async function tryParse(value, attempts = 3, interval = 100) {
+				try {
+					// Try parsing the value
+					return marked.parse(value.replaceAll(`\n<br/>`, `<br/>`), {
+						breaks: false
+					});
+				} catch (error) {
+					// If no attempts remain, fallback to plain text
+					if (attempts <= 1) {
+						return value;
+					}
+					// Wait for the interval, then retry
+					await new Promise((resolve) => setTimeout(resolve, interval));
+					return tryParse(value, attempts - 1, interval); // Recursive call
 				}
-				// Wait for the interval, then retry
-				await new Promise((resolve) => setTimeout(resolve, interval));
-				return tryParse(value, attempts - 1, interval); // Recursive call
 			}
-		}
 
-		// Usage example
-		let content = await tryParse(value);
+			// Usage example
+			content = await tryParse(value);
+		}
 
 		editor = new Editor({
 			element: element,
@@ -191,28 +194,33 @@
 			onTransaction: () => {
 				// force re-render so `editor.isActive` works as expected
 				editor = editor;
-				let newValue = turndownService
-					.turndown(
-						editor
-							.getHTML()
-							.replace(/<p><\/p>/g, '<br/>')
-							.replace(/ {2,}/g, (m) => m.replace(/ /g, '\u00a0'))
-					)
-					.replace(/\u00a0/g, ' ');
 
-				if (!preserveBreaks) {
-					newValue = newValue.replace(/<br\/>/g, '');
-				}
+				if (!raw) {
+					let newValue = turndownService
+						.turndown(
+							editor
+								.getHTML()
+								.replace(/<p><\/p>/g, '<br/>')
+								.replace(/ {2,}/g, (m) => m.replace(/ /g, '\u00a0'))
+						)
+						.replace(/\u00a0/g, ' ');
+
+					if (!preserveBreaks) {
+						newValue = newValue.replace(/<br\/>/g, '');
+					}
 
-				if (value !== newValue) {
-					value = newValue;
+					if (value !== newValue) {
+						value = newValue;
 
-					// check if the node is paragraph as well
-					if (editor.isActive('paragraph')) {
-						if (value === '') {
-							editor.commands.clearContent();
+						// check if the node is paragraph as well
+						if (editor.isActive('paragraph')) {
+							if (value === '') {
+								editor.commands.clearContent();
+							}
 						}
 					}
+				} else {
+					value = editor.getHTML();
 				}
 			},
 			editorProps: {
@@ -340,21 +348,30 @@
 	// Update the editor content if the external `value` changes
 	$: if (
 		editor &&
-		value !==
-			turndownService
-				.turndown(
-					(preserveBreaks
-						? editor.getHTML().replace(/<p><\/p>/g, '<br/>')
-						: editor.getHTML()
-					).replace(/ {2,}/g, (m) => m.replace(/ /g, '\u00a0'))
-				)
-				.replace(/\u00a0/g, ' ')
+		(raw
+			? value !== editor.getHTML()
+			: value !==
+				turndownService
+					.turndown(
+						(preserveBreaks
+							? editor.getHTML().replace(/<p><\/p>/g, '<br/>')
+							: editor.getHTML()
+						).replace(/ {2,}/g, (m) => m.replace(/ /g, '\u00a0'))
+					)
+					.replace(/\u00a0/g, ' '))
 	) {
-		editor.commands.setContent(
-			marked.parse(value.replaceAll(`\n<br/>`, `<br/>`), {
-				breaks: false
-			})
-		); // Update editor content
+		if (raw) {
+			editor.commands.setContent(value);
+		} else {
+			preserveBreaks
+				? editor.commands.setContent(value)
+				: editor.commands.setContent(
+						marked.parse(value.replaceAll(`\n<br/>`, `<br/>`), {
+							breaks: false
+						})
+					); // Update editor content
+		}
+
 		selectTemplate();
 	}
 </script>

+ 23 - 0
src/lib/components/icons/Home.svelte

@@ -0,0 +1,23 @@
+<script lang="ts">
+	export let className = 'size-4';
+	export let strokeWidth = '1.5';
+</script>
+
+<svg
+	stroke-width={strokeWidth}
+	stroke="currentColor"
+	class={className}
+	aria-hidden="true"
+	xmlns="http://www.w3.org/2000/svg"
+	fill="none"
+	width="24"
+	height="24"
+	viewBox="0 0 22 22"
+>
+	<path
+		stroke="currentColor"
+		stroke-linecap="round"
+		stroke-linejoin="round"
+		d="m4 12 8-8 8 8M6 10.5V19a1 1 0 0 0 1 1h3v-3a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v3h3a1 1 0 0 0 1-1v-8.5"
+	/>
+</svg>

+ 29 - 2
src/lib/components/layout/Sidebar.svelte

@@ -57,6 +57,7 @@
 	import ChannelModal from './Sidebar/ChannelModal.svelte';
 	import ChannelItem from './Sidebar/ChannelItem.svelte';
 	import PencilSquare from '../icons/PencilSquare.svelte';
+	import Home from '../icons/Home.svelte';
 
 	const BREAKPOINT = 768;
 
@@ -536,10 +537,36 @@
 			</a>
 		</div>
 
+		<!-- {#if $user?.role === 'admin'}
+			<div class="px-1.5 flex justify-center text-gray-800 dark:text-gray-200">
+				<a
+					class="flex-grow flex items-center space-x-3 rounded-lg px-2 py-[7px] hover:bg-gray-100 dark:hover:bg-gray-900 transition"
+					href="/home"
+					on:click={() => {
+						selectedChatId = null;
+						chatId.set('');
+
+						if ($mobile) {
+							showSidebar.set(false);
+						}
+					}}
+					draggable="false"
+				>
+					<div class="self-center">
+						<Home strokeWidth="2" className="size-[1.1rem]" />
+					</div>
+
+					<div class="flex self-center translate-y-[0.5px]">
+						<div class=" self-center font-medium text-sm font-primary">{$i18n.t('Home')}</div>
+					</div>
+				</a>
+			</div>
+		{/if} -->
+
 		{#if $user?.role === 'admin' || $user?.permissions?.workspace?.models || $user?.permissions?.workspace?.knowledge || $user?.permissions?.workspace?.prompts || $user?.permissions?.workspace?.tools}
 			<div class="px-1.5 flex justify-center text-gray-800 dark:text-gray-200">
 				<a
-					class="flex-grow flex space-x-3 rounded-lg px-2 py-[7px] hover:bg-gray-100 dark:hover:bg-gray-900 transition"
+					class="flex-grow flex items-center space-x-3 rounded-lg px-2 py-[7px] hover:bg-gray-100 dark:hover:bg-gray-900 transition"
 					href="/workspace"
 					on:click={() => {
 						selectedChatId = null;
@@ -568,7 +595,7 @@
 						</svg>
 					</div>
 
-					<div class="flex self-center">
+					<div class="flex self-center translate-y-[0.5px]">
 						<div class=" self-center font-medium text-sm font-primary">{$i18n.t('Workspace')}</div>
 					</div>
 				</a>

+ 2 - 2
src/lib/components/playground/Completions.svelte

@@ -6,7 +6,7 @@
 
 	import { WEBUI_BASE_URL } from '$lib/constants';
 	import { WEBUI_NAME, config, user, models, settings, showSidebar } from '$lib/stores';
-	import { generateOpenAIChatCompletion } from '$lib/apis/openai';
+	import { chatCompletion } from '$lib/apis/openai';
 
 	import { splitStream } from '$lib/utils';
 	import Selector from '$lib/components/chat/ModelSelector/Selector.svelte';
@@ -40,7 +40,7 @@
 	const textCompletionHandler = async () => {
 		const model = $models.find((model) => model.id === selectedModelId);
 
-		const [res, controller] = await generateOpenAIChatCompletion(
+		const [res, controller] = await chatCompletion(
 			localStorage.token,
 			{
 				model: model.id,

+ 2 - 1
src/lib/components/playground/Notes.svelte

@@ -42,9 +42,10 @@
 
 		<div class=" flex-1 w-full h-full">
 			<RichTextInput
-				className=" input-prose-sm"
+				className="input-prose-sm"
 				bind:value={content}
 				placeholder={$i18n.t('Write something...')}
+				preserveBreaks={true}
 			/>
 		</div>
 	</div>

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "مفتاح واجهة برمجة تطبيقات البحث الشجاع",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "تجاوز التحقق من SSL للموقع",
+	"Calendar": "",
 	"Call": "",
 	"Call feature is not supported when using Web STT engine": "",
 	"Camera": "",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "مجموعة",
 	"Color": "",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "تأكيد كلمة المرور",
 	"Confirm your action": "",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "اتصالات",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "",
@@ -216,6 +221,7 @@
 	"Copy Link": "أنسخ الرابط",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "تم النسخ إلى الحافظة بنجاح",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "إنشاء نموذج",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "وصف",
 	"Didn't fully follow instructions": "لم أتبع التعليمات بشكل كامل",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "",
 	"Discover a function": "",
 	"Discover a model": "اكتشف نموذجا",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "تم تعيين نموذج التضمين على \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "تمكين مشاركة المجتمع",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "أدخل مفتاح واجهة برمجة تطبيقات البحث الشجاع",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "أدخل معرف محرك PSE من Google",
 	"Enter Image Size (e.g. 512x512)": "(e.g. 512x512) أدخل حجم الصورة ",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "أدخل كود اللغة",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "أدخل عنوان URL لاستعلام Searxng",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "أدخل مفتاح واجهة برمجة تطبيقات Serper",
 	"Enter Serply API Key": "",
 	"Enter Serpstack API Key": "أدخل مفتاح واجهة برمجة تطبيقات Serpstack",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "أخفاء",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "كيف استطيع مساعدتك اليوم؟",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "معاينة JSON",
 	"July": "يوليو",
 	"June": "يونيو",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT تجريبي",
 	"JWT Token": "JWT Token",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "يمكن أن تصدر بعض الأخطاء. لذلك يجب التحقق من المعلومات المهمة",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "نص عادي (.txt)",
 	"Playground": "مكان التجربة",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "حدد مسارا",
 	"Select a pipeline url": "حدد عنوان URL لخط الأنابيب",
 	"Select a tool": "",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "يُرجى إدخال طلبك هنا.",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "سبتمبر",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "مفتاح واجهة برمجة تطبيقات سيربر",
 	"Serply API Key": "",
 	"Serpstack API Key": "مفتاح واجهة برمجة تطبيقات Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "(e.g. Tell me a fun fact) العناون",
 	"Title Auto-Generation": "توليد تلقائي للعنوان",
 	"Title cannot be an empty string.": "العنوان مطلوب",
+	"Title Generation": "",
 	"Title Generation Prompt": "موجه إنشاء العنوان",
 	"TLS": "",
 	"To access the available model names for downloading,": "للوصول إلى أسماء الموديلات المتاحة للتنزيل،",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Смел ключ за API за търсене",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "Изключване на SSL проверката за сайтове",
+	"Calendar": "",
 	"Call": "",
 	"Call feature is not supported when using Web STT engine": "",
 	"Camera": "",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Колекция",
 	"Color": "",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Потвърди Парола",
 	"Confirm your action": "",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Връзки",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "",
@@ -216,6 +221,7 @@
 	"Copy Link": "Копиране на връзка",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "Копирането в клипборда беше успешно!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "Създаване на модел",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "Описание",
 	"Didn't fully follow instructions": "Не следва инструкциите",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "",
 	"Discover a function": "",
 	"Discover a model": "Открийте модел",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Модел за вграждане е настроен на \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Разрешаване на споделяне в общност",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Въведете Brave Search API ключ",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Въведете идентификатор на двигателя на Google PSE",
 	"Enter Image Size (e.g. 512x512)": "Въведете размер на изображението (напр. 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Въведете кодове на езика",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "Въведете URL адреса на заявката на Searxng",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Въведете Serper API ключ",
 	"Enter Serply API Key": "",
 	"Enter Serpstack API Key": "Въведете Serpstack API ключ",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "Скрий",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "Как мога да ви помогна днес?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "JSON Преглед",
 	"July": "Июл",
 	"June": "Июн",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT Expiration",
 	"JWT Token": "JWT Token",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLMs могат да правят грешки. Проверете важните данни.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Plain text (.txt)",
 	"Playground": "Плейграунд",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Изберете тръбопровод",
 	"Select a pipeline url": "Избор на URL адрес на канал",
 	"Select a tool": "",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "Изпращане на съобщение",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "Септември",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Serper API ключ",
 	"Serply API Key": "",
 	"Serpstack API Key": "Serpstack API ключ",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Заглавие (напр. Моля, кажете ми нещо забавно)",
 	"Title Auto-Generation": "Автоматично Генериране на Заглавие",
 	"Title cannot be an empty string.": "Заглавието не може да бъде празно.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Промпт за Генериране на Заглавие",
 	"TLS": "",
 	"To access the available model names for downloading,": "За да получите достъп до наличните имена на модели за изтегляне,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "সাহসী অনুসন্ধান API কী",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "ওয়েবসাইটের জন্য SSL যাচাই বাতিল করুন",
+	"Calendar": "",
 	"Call": "",
 	"Call feature is not supported when using Web STT engine": "",
 	"Camera": "",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "সংগ্রহ",
 	"Color": "",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "পাসওয়ার্ড নিশ্চিত করুন",
 	"Confirm your action": "",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "কানেকশনগুলো",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "",
@@ -216,6 +221,7 @@
 	"Copy Link": "লিংক কপি করুন",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "ক্লিপবোর্ডে কপি করা সফল হয়েছে",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "একটি মডেল তৈরি করুন",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "বিবরণ",
 	"Didn't fully follow instructions": "ইনস্ট্রাকশন সম্পূর্ণ অনুসরণ করা হয়নি",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "",
 	"Discover a function": "",
 	"Discover a model": "একটি মডেল আবিষ্কার করুন",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "ইমেজ ইমেবডিং মডেল সেট করা হয়েছে - \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "সম্প্রদায় শেয়ারকরণ সক্ষম করুন",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "সাহসী অনুসন্ধান API কী লিখুন",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "গুগল পিএসই ইঞ্জিন আইডি লিখুন",
 	"Enter Image Size (e.g. 512x512)": "ছবির মাপ লিখুন (যেমন 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "ল্যাঙ্গুয়েজ কোড লিখুন",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "Searxng ক্যোয়ারী URL লিখুন",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Serper API কী লিখুন",
 	"Enter Serply API Key": "",
 	"Enter Serpstack API Key": "Serpstack API কী লিখুন",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "লুকান",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "আপনাকে আজ কিভাবে সাহায্য করতে পারি?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "JSON প্রিভিউ",
 	"July": "জুলাই",
 	"June": "জুন",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT-র মেয়াদ",
 	"JWT Token": "JWT টোকেন",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLM ভুল করতে পারে। গুরুত্বপূর্ণ তথ্য যাচাই করে নিন।",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "প্লায়েন টেক্সট (.txt)",
 	"Playground": "খেলাঘর",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "একটি পাইপলাইন নির্বাচন করুন",
 	"Select a pipeline url": "একটি পাইপলাইন URL নির্বাচন করুন",
 	"Select a tool": "",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "মেসেজ পাঠান",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "সেপ্টেম্বর",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Serper API Key",
 	"Serply API Key": "",
 	"Serpstack API Key": "Serpstack API Key",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "শিরোনাম (একটি উপস্থিতি বিবরণ জানান)",
 	"Title Auto-Generation": "স্বয়ংক্রিয় শিরোনামগঠন",
 	"Title cannot be an empty string.": "শিরোনাম অবশ্যই একটি পাশাপাশি শব্দ হতে হবে।",
+	"Title Generation": "",
 	"Title Generation Prompt": "শিরোনামগঠন প্রম্পট",
 	"TLS": "",
 	"To access the available model names for downloading,": "ডাউনলোডের জন্য এভেইলএবল মডেলের নামগুলো এক্সেস করতে,",

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

@@ -122,9 +122,11 @@
 	"Beta": "Beta",
 	"Bing Search V7 Endpoint": "Punt de connexió a Bing Search V7",
 	"Bing Search V7 Subscription Key": "Clau de subscripció a Bing Search V7",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Clau API de Brave Search",
 	"By {{name}}": "Per {{name}}",
 	"Bypass SSL verification for Websites": "Desactivar la verificació SSL per a l'accés a Internet",
+	"Calendar": "",
 	"Call": "Trucada",
 	"Call feature is not supported when using Web STT engine": "La funció de trucada no s'admet quan s'utilitza el motor Web STT",
 	"Camera": "Càmera",
@@ -178,6 +180,8 @@
 	"Code execution": "Execució de codi",
 	"Code formatted successfully": "Codi formatat correctament",
 	"Code Interpreter": "Intèrpret de codi",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Col·lecció",
 	"Color": "Color",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Confirmar la contrasenya",
 	"Confirm your action": "Confirma la teva acció",
 	"Confirm your new password": "Confirma la teva nova contrasenya",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Connexions",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "Restringeix l'esforç de raonament dels models de raonament. Només aplicable a models de raonament de proveïdors específics que donen suport a l'esforç de raonament. (Per defecte: mitjà)",
 	"Contact Admin for WebUI Access": "Posat en contacte amb l'administrador per accedir a WebUI",
@@ -216,6 +221,7 @@
 	"Copy Link": "Copiar l'enllaç",
 	"Copy to clipboard": "Copiar al porta-retalls",
 	"Copying to clipboard was successful!": "La còpia al porta-retalls s'ha realitzat correctament",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "Crear",
 	"Create a knowledge base": "Crear una base de coneixement",
 	"Create a model": "Crear un model",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "Descriu la teva base de coneixement i objectius",
 	"Description": "Descripció",
 	"Didn't fully follow instructions": "No s'han seguit les instruccions completament",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "Deshabilitat",
 	"Discover a function": "Descobrir una funció",
 	"Discover a model": "Descobrir un model",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Model d'incrustació configurat a \"{{embedding_model}}\"",
 	"Enable API Key": "Activar la Clau API",
 	"Enable autocomplete generation for chat messages": "Activar la generació automàtica per als missatges del xat",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Activar l'ús compartit amb la comunitat",
 	"Enable Google Drive": "Activar Google Drive",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Activar el bloqueig de memòria (mlock) per evitar que les dades del model s'intercanviïn fora de la memòria RAM. Aquesta opció bloqueja el conjunt de pàgines de treball del model a la memòria RAM, assegurant-se que no s'intercanviaran al disc. Això pot ajudar a mantenir el rendiment evitant errors de pàgina i garantint un accés ràpid a les dades.",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "Introdueix la contrasenya del DN d'aplicació",
 	"Enter Bing Search V7 Endpoint": "Introdueix el punt de connexió de Bing Search V7",
 	"Enter Bing Search V7 Subscription Key": "Introdueix la clau de subscripció de Bing Search V7",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Introdueix la clau API de Brave Search",
 	"Enter certificate path": "Introdueix el camí del certificat",
 	"Enter CFG Scale (e.g. 7.0)": "Entra l'escala CFG (p.ex. 7.0)",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Introdueix l'identificador del motor PSE de Google",
 	"Enter Image Size (e.g. 512x512)": "Introdueix la mida de la imatge (p. ex. 512x512)",
 	"Enter Jina API Key": "Introdueix la clau API de Jina",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "Introdueix la clau API de Kagi Search",
 	"Enter language codes": "Introdueix els codis de llenguatge",
 	"Enter Model ID": "Introdueix l'identificador del model",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "Introdueix el motor SearchApi",
 	"Enter Searxng Query URL": "Introdueix l'URL de consulta de Searxng",
 	"Enter Seed": "Introdueix la llavor",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Introdueix la clau API Serper",
 	"Enter Serply API Key": "Introdueix la clau API Serply",
 	"Enter Serpstack API Key": "Introdueix la clau API Serpstack",
@@ -500,6 +516,7 @@
 	"Hex Color": "Color hexadecimal",
 	"Hex Color - Leave empty for default color": "Color hexadecimal - Deixar buit per a color per defecte",
 	"Hide": "Amaga",
+	"Home": "",
 	"Host": "Servidor",
 	"How can I help you today?": "Com et puc ajudar avui?",
 	"How would you rate this response?": "Com avaluaries aquesta resposta?",
@@ -543,6 +560,8 @@
 	"JSON Preview": "Vista prèvia del document JSON",
 	"July": "Juliol",
 	"June": "Juny",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "Caducitat del JWT",
 	"JWT Token": "Token JWT",
 	"Kagi Search API Key": "Clau API de Kagi Search",
@@ -576,6 +595,7 @@
 	"Listening...": "Escoltant...",
 	"Llama.cpp": "Llama.cpp",
 	"LLMs can make mistakes. Verify important information.": "Els models de llenguatge poden cometre errors. Verifica la informació important.",
+	"Loading Kokoro.js...": "",
 	"Local": "Local",
 	"Local Models": "Models locals",
 	"Lost": "Perdut",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "Assegura't d'exportar un fitxer workflow.json com a format API des de ComfyUI.",
 	"Manage": "Gestionar",
 	"Manage Arena Models": "Gestionar els models de l'Arena",
+	"Manage Direct Connections": "",
 	"Manage Models": "Gestionar els models",
 	"Manage Ollama": "Gestionar Ollama",
 	"Manage Ollama API Connections": "Gestionar les connexions a l'API d'Ollama",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Text pla (.txt)",
 	"Playground": "Zona de jocs",
 	"Please carefully review the following warnings:": "Si us plau, revisa els següents avisos amb cura:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "Si us plau, entra una indicació",
 	"Please fill in all fields.": "Emplena tots els camps, si us plau.",
 	"Please select a model first.": "Si us plau, selecciona un model primer",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Seleccionar una Pipeline",
 	"Select a pipeline url": "Seleccionar l'URL d'una Pipeline",
 	"Select a tool": "Seleccionar una eina",
+	"Select an auth method": "",
 	"Select an Ollama instance": "Seleccionar una instància d'Ollama",
 	"Select Engine": "Seleccionar el motor",
 	"Select Knowledge": "Seleccionar coneixement",
@@ -847,6 +870,8 @@
 	"Send message": "Enviar missatge",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "Envia `stream_options: { include_usage: true }` a la sol·licitud.\nEls proveïdors compatibles retornaran la informació d'ús del token a la resposta quan s'estableixi.",
 	"September": "Setembre",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Clau API de Serper",
 	"Serply API Key": "Clau API de Serply",
 	"Serpstack API Key": "Clau API de Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Títol (p. ex. Digues-me quelcom divertit)",
 	"Title Auto-Generation": "Generació automàtica de títol",
 	"Title cannot be an empty string.": "El títol no pot ser una cadena buida.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Indicació de generació de títol",
 	"TLS": "TLS",
 	"To access the available model names for downloading,": "Per accedir als noms dels models disponibles per descarregar,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "",
+	"Calendar": "",
 	"Call": "",
 	"Call feature is not supported when using Web STT engine": "",
 	"Camera": "",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Koleksyon",
 	"Color": "",
 	"ComfyUI": "",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Kumpirma ang password",
 	"Confirm your action": "",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Mga koneksyon",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "",
@@ -216,6 +221,7 @@
 	"Copy Link": "",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "Ang pagkopya sa clipboard malampuson!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "Deskripsyon",
 	"Didn't fully follow instructions": "",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "",
 	"Discover a function": "",
 	"Discover a model": "",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "",
 	"Enter Image Size (e.g. 512x512)": "Pagsulod sa gidak-on sa hulagway (pananglitan 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "",
 	"Enter Serply API Key": "",
 	"Enter Serpstack API Key": "",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "Tagoa",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "Unsaon nako pagtabang kanimo karon?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "",
 	"July": "",
 	"June": "",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "Pag-expire sa JWT",
 	"JWT Token": "JWT token",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "Ang mga LLM mahimong masayop. ",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "",
 	"Playground": "Dulaanan",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "",
 	"Select a pipeline url": "",
 	"Select a tool": "",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "Magpadala ug mensahe",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "",
 	"Serply API Key": "",
 	"Serpstack API Key": "",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "Awtomatikong paghimo sa titulo",
 	"Title cannot be an empty string.": "",
+	"Title Generation": "",
 	"Title Generation Prompt": "Madasig nga henerasyon sa titulo",
 	"TLS": "",
 	"To access the available model names for downloading,": "Aron ma-access ang mga ngalan sa modelo nga ma-download,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Klíč API pro Brave Search",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "Obcházení ověření SSL pro webové stránky",
+	"Calendar": "",
 	"Call": "Volání",
 	"Call feature is not supported when using Web STT engine": "Funkce pro volání není podporována při použití Web STT engine.",
 	"Camera": "Kamera",
@@ -178,6 +180,8 @@
 	"Code execution": "Provádění kódu",
 	"Code formatted successfully": "Kód byl úspěšně naformátován.",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "",
 	"Color": "Barva",
 	"ComfyUI": "ComfyUI.",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Potvrzení hesla",
 	"Confirm your action": "Potvrďte svoji akci",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Připojení",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "Kontaktujte administrátora pro přístup k webovému rozhraní.",
@@ -216,6 +221,7 @@
 	"Copy Link": "Kopírovat odkaz",
 	"Copy to clipboard": "Kopírovat do schránky",
 	"Copying to clipboard was successful!": "Kopírování do schránky bylo úspěšné!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "Vytvořit",
 	"Create a knowledge base": "Vytvořit knowledge base",
 	"Create a model": "Vytvořte model",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "Popis",
 	"Didn't fully follow instructions": "Nenásledovali jste přesně všechny instrukce.",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "Zakázáno",
 	"Discover a function": "Objevit funkci",
 	"Discover a model": "Objevte model",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Model vkládání nastaven na \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Povolit sdílení komunity",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Zadejte API klíč pro Brave Search",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "Zadejte měřítko CFG (např. 7.0)",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Zadejte ID vyhledávacího mechanismu Google PSE",
 	"Enter Image Size (e.g. 512x512)": "Zadejte velikost obrázku (např. 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Zadejte kódy jazyků",
 	"Enter Model ID": "Zadejte ID modelu",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "Zadejte vyhledávací stroj SearchApi",
 	"Enter Searxng Query URL": "Zadejte URL dotazu Searxng",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Zadejte Serper API klíč",
 	"Enter Serply API Key": "Zadejte API klíč pro Serply",
 	"Enter Serpstack API Key": "Zadejte klíč API pro Serpstack",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "Schovej",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "Jak vám mohu dnes pomoci?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "Náhled JSON",
 	"July": "Červenec",
 	"June": "červen",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "Vypršení JWT",
 	"JWT Token": "JWT Token (JSON Web Token)",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "Poslouchání...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLM mohou dělat chyby. Ověřte si důležité informace.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "Lokální modely",
 	"Lost": "Ztracený",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "Ujistěte se, že exportujete soubor workflow.json ve formátu API z ComfyUI.",
 	"Manage": "Spravovat",
 	"Manage Arena Models": "Správa modelů v Arena",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Čistý text (.txt)",
 	"Playground": "",
 	"Please carefully review the following warnings:": "Prosím, pečlivě si přečtěte následující upozornění:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "Prosím, zadejte zadání.",
 	"Please fill in all fields.": "Prosím, vyplňte všechna pole.",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Vyberte pipeline",
 	"Select a pipeline url": "Vyberte URL adresu kanálu",
 	"Select a tool": "Vyberte nástroj",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "Vyberte engine",
 	"Select Knowledge": "Vybrat znalosti",
@@ -847,6 +870,8 @@
 	"Send message": "Odeslat zprávu",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "Odešle `stream_options: { include_usage: true }` v žádosti. Podporovaní poskytovatelé vrátí informace o využití tokenů v odpovědi, když je tato možnost nastavena.",
 	"September": "Září",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Klíč API pro Serper",
 	"Serply API Key": "Serply API klíč",
 	"Serpstack API Key": "Klíč API pro Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Název (např. Řekni mi zajímavost)",
 	"Title Auto-Generation": "Automatické generování názvu",
 	"Title cannot be an empty string.": "Název nemůže být prázdným řetězcem.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Generování názvu promptu",
 	"TLS": "",
 	"To access the available model names for downloading,": "Pro získání dostupných názvů modelů ke stažení,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Brave Search API nøgle",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "Forbigå SSL verifikation på websider",
+	"Calendar": "",
 	"Call": "Opkald",
 	"Call feature is not supported when using Web STT engine": "Opkaldsfunktion er ikke understøttet for Web STT engine",
 	"Camera": "Kamera",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "Kode formateret korrekt",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Samling",
 	"Color": "",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Bekræft password",
 	"Confirm your action": "Bekræft din handling",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Forbindelser",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "Kontakt din administrator for adgang til WebUI",
@@ -216,6 +221,7 @@
 	"Copy Link": "Kopier link",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "Kopieret til udklipsholder!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "Lav en model",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "Beskrivelse",
 	"Didn't fully follow instructions": "Fulgte ikke instruktioner",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "Inaktiv",
 	"Discover a function": "Find en funktion",
 	"Discover a model": "Find en model",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Embedding model sat til \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Aktiver deling til Community",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Indtast Brave Search API-nøgle",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "Indtast CFG-skala (f.eks. 7.0)",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Indtast Google PSE Engine ID",
 	"Enter Image Size (e.g. 512x512)": "Indtast billedstørrelse (f.eks. 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Indtast sprogkoder",
 	"Enter Model ID": "Indtast model-ID",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "Indtast SearchApi-engine",
 	"Enter Searxng Query URL": "Indtast Searxng-forespørgsels-URL",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Indtast Serper API-nøgle",
 	"Enter Serply API Key": "Indtast Serply API-nøgle",
 	"Enter Serpstack API Key": "Indtast Serpstack API-nøgle",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "Skjul",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "Hvordan kan jeg hjælpe dig i dag?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "JSON-forhåndsvisning",
 	"July": "Juli",
 	"June": "Juni",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT-udløb",
 	"JWT Token": "JWT-token",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "Lytter...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLM'er kan lave fejl. Bekræft vigtige oplysninger.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "Lokale modeller",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "Sørg for at eksportere en workflow.json-fil som API-format fra ComfyUI.",
 	"Manage": "Administrer",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Almindelig tekst (.txt)",
 	"Playground": "Legeplads",
 	"Please carefully review the following warnings:": "Gennemgå omhyggeligt følgende advarsler:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "Udfyld alle felter.",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Vælg en pipeline",
 	"Select a pipeline url": "Vælg en pipeline-URL",
 	"Select a tool": "Vælg et værktøj",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "Vælg engine",
 	"Select Knowledge": "Vælg viden",
@@ -847,6 +870,8 @@
 	"Send message": "Send besked",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "Sender `stream_options: { include_usage: true }` i forespørgslen.\nUnderstøttede udbydere vil returnere tokenforbrugsinformation i svaret, når det er indstillet.",
 	"September": "September",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Serper API-nøgle",
 	"Serply API Key": "Serply API-nøgle",
 	"Serpstack API Key": "Serpstack API-nøgle",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Titel (f.eks. Fortæl mig en sjov kendsgerning)",
 	"Title Auto-Generation": "Automatisk titelgenerering",
 	"Title cannot be an empty string.": "Titel kan ikke være en tom streng.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Prompt til titelgenerering",
 	"TLS": "",
 	"To access the available model names for downloading,": "For at få adgang til de tilgængelige modelnavne til download,",

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

@@ -122,9 +122,11 @@
 	"Beta": "Beta",
 	"Bing Search V7 Endpoint": "Bing Search V7-Endpunkt",
 	"Bing Search V7 Subscription Key": "Bing Search V7-Abonnement-Schlüssel",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Brave Search API-Schlüssel",
 	"By {{name}}": "Von {{name}}",
 	"Bypass SSL verification for Websites": "SSL-Überprüfung für Webseiten umgehen",
+	"Calendar": "",
 	"Call": "Anrufen",
 	"Call feature is not supported when using Web STT engine": "Die Anruffunktion wird nicht unterstützt, wenn die Web-STT-Engine verwendet wird.",
 	"Camera": "Kamera",
@@ -178,6 +180,8 @@
 	"Code execution": "Codeausführung",
 	"Code formatted successfully": "Code erfolgreich formatiert",
 	"Code Interpreter": "Code-Interpreter",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Kollektion",
 	"Color": "Farbe",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Passwort bestätigen",
 	"Confirm your action": "Bestätigen Sie Ihre Aktion.",
 	"Confirm your new password": "Neues Passwort bestätigen",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Verbindungen",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "Beschränkt den Aufwand für das Schlussfolgern bei Schlussfolgerungsmodellen. Nur anwendbar auf Schlussfolgerungsmodelle von spezifischen Anbietern, die den Schlussfolgerungsaufwand unterstützen. (Standard: medium)",
 	"Contact Admin for WebUI Access": "Kontaktieren Sie den Administrator für den Zugriff auf die Weboberfläche",
@@ -216,6 +221,7 @@
 	"Copy Link": "Link kopieren",
 	"Copy to clipboard": "In die Zwischenablage kopieren",
 	"Copying to clipboard was successful!": "Das Kopieren in die Zwischenablage war erfolgreich!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "Erstellen",
 	"Create a knowledge base": "Wissensspeicher erstellen",
 	"Create a model": "Modell erstellen",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "Beschreibe deinen Wissensspeicher und deine Ziele",
 	"Description": "Beschreibung",
 	"Didn't fully follow instructions": "Nicht genau den Answeisungen gefolgt",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "Deaktiviert",
 	"Discover a function": "Entdecken Sie weitere Funktionen",
 	"Discover a model": "Entdecken Sie weitere Modelle",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Embedding-Modell auf \"{{embedding_model}}\" gesetzt",
 	"Enable API Key": "API-Schlüssel aktivieren",
 	"Enable autocomplete generation for chat messages": "Automatische Vervollständigung für Chat-Nachrichten aktivieren",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Community-Freigabe aktivieren",
 	"Enable Google Drive": "Google Drive aktivieren",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Aktiviere Memory Locking (mlock), um zu verhindern, dass Modelldaten aus dem RAM ausgelagert werden. Diese Option sperrt die Arbeitsseiten des Modells im RAM, um sicherzustellen, dass sie nicht auf die Festplatte ausgelagert werden. Dies kann die Leistung verbessern, indem Page Faults vermieden und ein schneller Datenzugriff sichergestellt werden.",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "Geben Sie das Anwendungs-DN-Passwort ein",
 	"Enter Bing Search V7 Endpoint": "Geben Sie den Bing Search V7-Endpunkt ein",
 	"Enter Bing Search V7 Subscription Key": "Geben Sie den Bing Search V7-Abonnement-Schlüssel ein",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Geben Sie den Brave Search API-Schlüssel ein",
 	"Enter certificate path": "Geben Sie den Zertifikatpfad ein",
 	"Enter CFG Scale (e.g. 7.0)": "Geben Sie die CFG-Skala ein (z. B. 7.0)",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Geben Sie die Google PSE-Engine-ID ein",
 	"Enter Image Size (e.g. 512x512)": "Geben Sie die Bildgröße ein (z. B. 512x512)",
 	"Enter Jina API Key": "Geben Sie den Jina-API-Schlüssel ein",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "Geben sie den Kagi Search API-Schlüssel ein",
 	"Enter language codes": "Geben Sie die Sprachcodes ein",
 	"Enter Model ID": "Geben Sie die Modell-ID ein",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "Geben Sie die SearchApi-Engine ein",
 	"Enter Searxng Query URL": "Geben Sie die Searxng-Abfrage-URL ein",
 	"Enter Seed": "Geben Sie den Seed ein",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Geben Sie den Serper-API-Schlüssel ein",
 	"Enter Serply API Key": "Geben Sie den",
 	"Enter Serpstack API Key": "Geben Sie den Serpstack-API-Schlüssel ein",
@@ -500,6 +516,7 @@
 	"Hex Color": "Hex-Farbe",
 	"Hex Color - Leave empty for default color": "Hex-Farbe - Leer lassen für Standardfarbe",
 	"Hide": "Verbergen",
+	"Home": "",
 	"Host": "Host",
 	"How can I help you today?": "Wie kann ich Ihnen heute helfen?",
 	"How would you rate this response?": "Wie würden Sie diese Antwort bewerten?",
@@ -543,6 +560,8 @@
 	"JSON Preview": "JSON-Vorschau",
 	"July": "Juli",
 	"June": "Juni",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT-Ablauf",
 	"JWT Token": "JWT-Token",
 	"Kagi Search API Key": "Kagi Search API-Schlüssel",
@@ -576,6 +595,7 @@
 	"Listening...": "Höre zu...",
 	"Llama.cpp": "Llama.cpp",
 	"LLMs can make mistakes. Verify important information.": "LLMs können Fehler machen. Überprüfe wichtige Informationen.",
+	"Loading Kokoro.js...": "",
 	"Local": "Lokal",
 	"Local Models": "Lokale Modelle",
 	"Lost": "Verloren",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "Stellen Sie sicher, dass sie eine workflow.json-Datei im API-Format von ComfyUI exportieren.",
 	"Manage": "Verwalten",
 	"Manage Arena Models": "Arena-Modelle verwalten",
+	"Manage Direct Connections": "",
 	"Manage Models": "Modelle verwalten",
 	"Manage Ollama": "Ollama verwalten",
 	"Manage Ollama API Connections": "Ollama-API-Verbindungen verwalten",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Nur Text (.txt)",
 	"Playground": "Testumgebung",
 	"Please carefully review the following warnings:": "Bitte überprüfen Sie die folgenden Warnungen sorgfältig:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "Bitte geben Sie einen Prompt ein",
 	"Please fill in all fields.": "Bitte füllen Sie alle Felder aus.",
 	"Please select a model first.": "Bitte wählen Sie zuerst ein Modell aus.",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Wählen Sie eine Pipeline",
 	"Select a pipeline url": "Wählen Sie eine Pipeline-URL",
 	"Select a tool": "Wählen Sie ein Werkzeug",
+	"Select an auth method": "",
 	"Select an Ollama instance": "Wählen Sie eine Ollama-Instanz",
 	"Select Engine": "Engine auswählen",
 	"Select Knowledge": "Wissensdatenbank auswählen",
@@ -847,6 +870,8 @@
 	"Send message": "Nachricht senden",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "Sendet `stream_options: { include_usage: true }` in der Anfrage.\nUnterstützte Anbieter geben Token-Nutzungsinformationen in der Antwort zurück, wenn dies festgelegt ist.",
 	"September": "September",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Serper-API-Schlüssel",
 	"Serply API Key": "Serply-API-Schlüssel",
 	"Serpstack API Key": "Serpstack-API-Schlüssel",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Titel (z. B. Erzähl mir einen lustigen Fakt)",
 	"Title Auto-Generation": "Unterhaltungstitel automatisch generieren",
 	"Title cannot be an empty string.": "Titel darf nicht leer sein.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Prompt für Titelgenerierung",
 	"TLS": "TLS",
 	"To access the available model names for downloading,": "Um auf die verfügbaren Modellnamen zuzugreifen,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "",
+	"Calendar": "",
 	"Call": "",
 	"Call feature is not supported when using Web STT engine": "",
 	"Camera": "",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Collection",
 	"Color": "",
 	"ComfyUI": "",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Confirm Password",
 	"Confirm your action": "",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Connections",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "",
@@ -216,6 +221,7 @@
 	"Copy Link": "",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "Copying to clipboard was success! Very success!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "Description",
 	"Didn't fully follow instructions": "",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "",
 	"Discover a function": "",
 	"Discover a model": "",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "",
 	"Enter Image Size (e.g. 512x512)": "Enter Size of Wow (e.g. 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "",
 	"Enter Serply API Key": "",
 	"Enter Serpstack API Key": "",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "Hide",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "How can I halp u today?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "",
 	"July": "",
 	"June": "",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT Expire",
 	"JWT Token": "JWT Borken",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLMs can make borks. Verify important info.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Plain text (.txt)",
 	"Playground": "Playground",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "",
 	"Select a pipeline url": "",
 	"Select a tool": "",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "Send message very send",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "",
 	"Serply API Key": "",
 	"Serpstack API Key": "",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "Title Auto-Generation much auto-gen",
 	"Title cannot be an empty string.": "",
+	"Title Generation": "",
 	"Title Generation Prompt": "Title Generation Prompt very prompt",
 	"TLS": "",
 	"To access the available model names for downloading,": "To access the available model names for downloading, much access",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "Τέλος Bing Search V7",
 	"Bing Search V7 Subscription Key": "Κλειδί Συνδρομής Bing Search V7",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Κλειδί API Brave Search",
 	"By {{name}}": "Από {{name}}",
 	"Bypass SSL verification for Websites": "Παράκαμψη επαλήθευσης SSL για Ιστότοπους",
+	"Calendar": "",
 	"Call": "Κλήση",
 	"Call feature is not supported when using Web STT engine": "Η λειτουργία κλήσης δεν υποστηρίζεται όταν χρησιμοποιείται η μηχανή Web STT",
 	"Camera": "Κάμερα",
@@ -178,6 +180,8 @@
 	"Code execution": "Εκτέλεση κώδικα",
 	"Code formatted successfully": "Ο κώδικας μορφοποιήθηκε επιτυχώς",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Συλλογή",
 	"Color": "Χρώμα",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Επιβεβαίωση Κωδικού",
 	"Confirm your action": "Επιβεβαιώστε την ενέργειά σας",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Συνδέσεις",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "Επικοινωνήστε με τον Διαχειριστή για Πρόσβαση στο WebUI",
@@ -216,6 +221,7 @@
 	"Copy Link": "Αντιγραφή Συνδέσμου",
 	"Copy to clipboard": "Αντιγραφή στο πρόχειρο",
 	"Copying to clipboard was successful!": "Η αντιγραφή στο πρόχειρο ήταν επιτυχής!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "Δημιουργία",
 	"Create a knowledge base": "Δημιουργία βάσης γνώσης",
 	"Create a model": "Δημιουργία μοντέλου",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "Περιγράψτε τη βάση γνώσης και τους στόχους σας",
 	"Description": "Περιγραφή",
 	"Didn't fully follow instructions": "Δεν ακολούθησε πλήρως τις οδηγίες",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "Απενεργοποιημένο",
 	"Discover a function": "Ανακάλυψη λειτουργίας",
 	"Discover a model": "Ανακάλυψη μοντέλου",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Το μοντέλο ενσωμάτωσης έχει οριστεί σε \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Ενεργοποίηση Κοινοτικής Κοινής Χρήσης",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Ενεργοποίηση Κλείδωσης Μνήμης (mlock) για την αποτροπή της ανταλλαγής δεδομένων του μοντέλου από τη μνήμη RAM. Αυτή η επιλογή κλειδώνει το σύνολο εργασίας των σελίδων του μοντέλου στη μνήμη RAM, διασφαλίζοντας ότι δεν θα ανταλλαχθούν στο δίσκο. Αυτό μπορεί να βοηθήσει στη διατήρηση της απόδοσης αποφεύγοντας σφάλματα σελίδων και διασφαλίζοντας γρήγορη πρόσβαση στα δεδομένα.",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "Εισάγετε Κωδικό DN Εφαρμογής",
 	"Enter Bing Search V7 Endpoint": "Εισάγετε το Τέλος Bing Search V7",
 	"Enter Bing Search V7 Subscription Key": "Εισάγετε το Κλειδί Συνδρομής Bing Search V7",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Εισάγετε το Κλειδί API Brave Search",
 	"Enter certificate path": "Εισάγετε τη διαδρομή πιστοποιητικού",
 	"Enter CFG Scale (e.g. 7.0)": "Εισάγετε το CFG Scale (π.χ. 7.0)",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Εισάγετε το Αναγνωριστικό Μηχανής Google PSE",
 	"Enter Image Size (e.g. 512x512)": "Εισάγετε το Μέγεθος Εικόνας (π.χ. 512x512)",
 	"Enter Jina API Key": "Εισάγετε το Κλειδί API Jina",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Εισάγετε κωδικούς γλώσσας",
 	"Enter Model ID": "Εισάγετε το ID Μοντέλου",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "Εισάγετε τη Μηχανή SearchApi",
 	"Enter Searxng Query URL": "Εισάγετε το URL Ερώτησης Searxng",
 	"Enter Seed": "Εισάγετε το Seed",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Εισάγετε το Κλειδί API Serper",
 	"Enter Serply API Key": "Εισάγετε το Κλειδί API Serply",
 	"Enter Serpstack API Key": "Εισάγετε το Κλειδί API Serpstack",
@@ -500,6 +516,7 @@
 	"Hex Color": "Χρώμα Hex",
 	"Hex Color - Leave empty for default color": "Χρώμα Hex - Αφήστε κενό για προεπιλεγμένο χρώμα",
 	"Hide": "Απόκρυψη",
+	"Home": "",
 	"Host": "Διακομιστής",
 	"How can I help you today?": "Πώς μπορώ να σας βοηθήσω σήμερα;",
 	"How would you rate this response?": "Πώς θα βαθμολογούσατε αυτή την απάντηση;",
@@ -543,6 +560,8 @@
 	"JSON Preview": "Προεπισκόπηση JSON",
 	"July": "Ιούλιος",
 	"June": "Ιούνιος",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "Λήξη JWT",
 	"JWT Token": "Token JWT",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "Ακούγεται...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "Τα LLM μπορούν να κάνουν λάθη. Επαληθεύστε σημαντικές πληροφορίες.",
+	"Loading Kokoro.js...": "",
 	"Local": "Τοπικό",
 	"Local Models": "Τοπικά Μοντέλα",
 	"Lost": "Χαμένος",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "Βεβαιωθείτε ότι εξάγετε ένα αρχείο workflow.json ως μορφή API από το ComfyUI.",
 	"Manage": "Διαχείριση",
 	"Manage Arena Models": "Διαχείριση Μοντέλων Arena",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "Διαχείριση Ollama",
 	"Manage Ollama API Connections": "Διαχείριση Συνδέσεων API Ollama",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Απλό κείμενο (.txt)",
 	"Playground": "Γήπεδο παιχνιδιών",
 	"Please carefully review the following warnings:": "Παρακαλώ αναθεωρήστε προσεκτικά τις ακόλουθες προειδοποιήσεις:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "Παρακαλώ εισάγετε μια προτροπή",
 	"Please fill in all fields.": "Παρακαλώ συμπληρώστε όλα τα πεδία.",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Επιλέξτε ένα pipeline",
 	"Select a pipeline url": "Επιλέξτε ένα pipeline url",
 	"Select a tool": "Επιλέξτε ένα εργαλείο",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "Επιλέξτε Μηχανή",
 	"Select Knowledge": "Επιλέξτε Γνώση",
@@ -847,6 +870,8 @@
 	"Send message": "Αποστολή μηνύματος",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "Στέλνει `stream_options: { include_usage: true }` στο αίτημα.\nΟι υποστηριζόμενοι πάροχοι θα επιστρέψουν πληροφορίες χρήσης token στην απάντηση όταν ρυθμιστεί.",
 	"September": "Σεπτέμβριος",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Κλειδί API Serper",
 	"Serply API Key": "Κλειδί API Serply",
 	"Serpstack API Key": "Κλειδί API Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Τίτλος (π.χ. Πες μου ένα διασκεδαστικό γεγονός)",
 	"Title Auto-Generation": "Αυτόματη Γενιά Τίτλων",
 	"Title cannot be an empty string.": "Ο τίτλος δεν μπορεί να είναι κενή συμβολοσειρά.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Προτροπή Δημιουργίας Τίτλου",
 	"TLS": "TLS",
 	"To access the available model names for downloading,": "Για να αποκτήσετε πρόσβαση στα διαθέσιμα ονόματα μοντέλων για λήψη,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "",
+	"Calendar": "",
 	"Call": "",
 	"Call feature is not supported when using Web STT engine": "",
 	"Camera": "",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "",
 	"Color": "",
 	"ComfyUI": "",
@@ -194,6 +198,7 @@
 	"Confirm Password": "",
 	"Confirm your action": "",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "",
@@ -216,6 +221,7 @@
 	"Copy Link": "",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "",
 	"Didn't fully follow instructions": "",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "",
 	"Discover a function": "",
 	"Discover a model": "",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "",
 	"Enter Image Size (e.g. 512x512)": "",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "",
 	"Enter Serply API Key": "",
 	"Enter Serpstack API Key": "",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "",
 	"July": "",
 	"June": "",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "",
 	"JWT Token": "",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "",
 	"Playground": "",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "",
 	"Select a pipeline url": "",
 	"Select a tool": "",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "",
 	"Serply API Key": "",
 	"Serpstack API Key": "",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "",
 	"Title cannot be an empty string.": "",
+	"Title Generation": "",
 	"Title Generation Prompt": "",
 	"TLS": "",
 	"To access the available model names for downloading,": "",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "",
+	"Calendar": "",
 	"Call": "",
 	"Call feature is not supported when using Web STT engine": "",
 	"Camera": "",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "",
 	"Color": "",
 	"ComfyUI": "",
@@ -194,6 +198,7 @@
 	"Confirm Password": "",
 	"Confirm your action": "",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "",
@@ -216,6 +221,7 @@
 	"Copy Link": "",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "",
 	"Didn't fully follow instructions": "",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "",
 	"Discover a function": "",
 	"Discover a model": "",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "",
 	"Enter Image Size (e.g. 512x512)": "",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "",
 	"Enter Serply API Key": "",
 	"Enter Serpstack API Key": "",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "",
 	"July": "",
 	"June": "",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "",
 	"JWT Token": "",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "",
 	"Playground": "",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "",
 	"Select a pipeline url": "",
 	"Select a tool": "",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "",
 	"Serply API Key": "",
 	"Serpstack API Key": "",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "",
 	"Title cannot be an empty string.": "",
+	"Title Generation": "",
 	"Title Generation Prompt": "",
 	"TLS": "",
 	"To access the available model names for downloading,": "",

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

@@ -122,9 +122,11 @@
 	"Beta": "Beta",
 	"Bing Search V7 Endpoint": "Endpoint de Bing Search V7",
 	"Bing Search V7 Subscription Key": "Clave de suscripción de Bing Search V7",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Clave de API de Brave Search",
 	"By {{name}}": "Por {{name}}",
 	"Bypass SSL verification for Websites": "Desactivar la verificación SSL para sitios web",
+	"Calendar": "",
 	"Call": "Llamada",
 	"Call feature is not supported when using Web STT engine": "La funcionalidad de llamada no puede usarse junto con el motor de STT Web",
 	"Camera": "Cámara",
@@ -178,6 +180,8 @@
 	"Code execution": "Ejecución de código",
 	"Code formatted successfully": "Se ha formateado correctamente el código.",
 	"Code Interpreter": "Interprete de Código",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Colección",
 	"Color": "Color",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Confirmar Contraseña",
 	"Confirm your action": "Confirma tu acción",
 	"Confirm your new password": "Confirmar tu nueva contraseña",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Conexiones",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": " Restringe el esfuerzo en la razonamiento para los modelos de razonamiento. Solo aplicable a los modelos de razonamiento de proveedores específicos que admiten el esfuerzo de razonamiento. (Por defecto: medio)",
 	"Contact Admin for WebUI Access": "Contacta el administrador para obtener acceso al WebUI",
@@ -216,6 +221,7 @@
 	"Copy Link": "Copiar enlace",
 	"Copy to clipboard": "Copiado a portapapeles",
 	"Copying to clipboard was successful!": "¡La copia al portapapeles se ha realizado correctamente!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "Crear",
 	"Create a knowledge base": "Crear base de conocimiento",
 	"Create a model": "Crear un modelo",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "Describe tu base de conocimientos y objetivos",
 	"Description": "Descripción",
 	"Didn't fully follow instructions": "No siguió las instrucciones",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "Desactivado",
 	"Discover a function": "Descubre una función",
 	"Discover a model": "Descubrir un modelo",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Modelo de Embedding configurado a \"{{embedding_model}}\"",
 	"Enable API Key": "Habilitar clave de API",
 	"Enable autocomplete generation for chat messages": "Habilitar generación de autocompletado para mensajes de chat",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Habilitar el uso compartido de la comunidad",
 	"Enable Google Drive": "Habilitar Google Drive",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Habilitar bloqueo de memoria (mlock) para evitar que los datos del modelo se intercambien fuera de la RAM. Esta opción bloquea el conjunto de páginas de trabajo del modelo en la RAM, asegurando que no se intercambiarán fuera del disco. Esto puede ayudar a mantener el rendimiento evitando fallos de página y asegurando un acceso rápido a los datos.",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "Ingrese la contraseña de la DN de la aplicación",
 	"Enter Bing Search V7 Endpoint": "Ingrese el endpoint de Bing Search V7",
 	"Enter Bing Search V7 Subscription Key": "Ingrese la clave de suscripción de Bing Search V7",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Ingresa la clave de API de Brave Search",
 	"Enter certificate path": "Ingrese la ruta del certificado",
 	"Enter CFG Scale (e.g. 7.0)": "Ingresa la escala de CFG (p.ej., 7.0)",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Introduzca el ID del motor PSE de Google",
 	"Enter Image Size (e.g. 512x512)": "Ingrese el tamaño de la imagen (p.ej. 512x512)",
 	"Enter Jina API Key": "Ingrese la clave API de Jina",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "Ingrese la clave API de Kagi Search",
 	"Enter language codes": "Ingrese códigos de idioma",
 	"Enter Model ID": "Ingresa el ID del modelo",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "Ingrese el motor de SearchApi",
 	"Enter Searxng Query URL": "Introduzca la URL de consulta de Searxng",
 	"Enter Seed": "Ingrese la semilla",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Ingrese la clave API de Serper",
 	"Enter Serply API Key": "Ingrese la clave API de Serply",
 	"Enter Serpstack API Key": "Ingrese la clave API de Serpstack",
@@ -500,6 +516,7 @@
 	"Hex Color": "Color Hex",
 	"Hex Color - Leave empty for default color": "Color Hex - Deja vacío para el color predeterminado",
 	"Hide": "Esconder",
+	"Home": "",
 	"Host": "Host",
 	"How can I help you today?": "¿Cómo puedo ayudarte hoy?",
 	"How would you rate this response?": "¿Cómo calificarías esta respuesta?",
@@ -543,6 +560,8 @@
 	"JSON Preview": "Vista previa de JSON",
 	"July": "Julio",
 	"June": "Junio",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "Expiración del JWT",
 	"JWT Token": "Token JWT",
 	"Kagi Search API Key": "Clave API de Kagi Search",
@@ -576,6 +595,7 @@
 	"Listening...": "Escuchando...",
 	"Llama.cpp": "Llama.cpp",
 	"LLMs can make mistakes. Verify important information.": "Los LLM pueden cometer errores. Verifica la información importante.",
+	"Loading Kokoro.js...": "",
 	"Local": "Local",
 	"Local Models": "Modelos locales",
 	"Lost": "Perdido",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "Asegúrese de exportar un archivo workflow.json en formato API desde ComfyUI.",
 	"Manage": "Gestionar",
 	"Manage Arena Models": "Gestionar modelos de Arena",
+	"Manage Direct Connections": "",
 	"Manage Models": "Gestionar modelos",
 	"Manage Ollama": "Gestionar Ollama",
 	"Manage Ollama API Connections": "Gestionar conexiones API de Ollama",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Texto plano (.txt)",
 	"Playground": "Patio de juegos",
 	"Please carefully review the following warnings:": "Por favor revise con cuidado los siguientes avisos:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "Por favor ingrese un prompt",
 	"Please fill in all fields.": "Por favor llene todos los campos.",
 	"Please select a model first.": "Por favor seleccione un modelo primero.",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Selección de una Pipeline",
 	"Select a pipeline url": "Selección de una dirección URL de Pipeline",
 	"Select a tool": "Busca una herramienta",
+	"Select an auth method": "",
 	"Select an Ollama instance": "Seleccionar una instancia de Ollama",
 	"Select Engine": "Selecciona Motor",
 	"Select Knowledge": "Selecciona Conocimiento",
@@ -847,6 +870,8 @@
 	"Send message": "Enviar Mensaje",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "Envia `stream_options: { include_usage: true }` en la solicitud.\nLos proveedores admitidos devolverán información de uso del token en la respuesta cuando se establezca.",
 	"September": "Septiembre",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Clave API de Serper",
 	"Serply API Key": "Clave API de Serply",
 	"Serpstack API Key": "Clave API de Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Título (por ejemplo, cuéntame una curiosidad)",
 	"Title Auto-Generation": "Generación automática de títulos",
 	"Title cannot be an empty string.": "El título no puede ser una cadena vacía.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Prompt de generación de título",
 	"TLS": "TLS",
 	"To access the available model names for downloading,": "Para acceder a los nombres de modelos disponibles para descargar,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "Bing Bilaketa V7 Endpointua",
 	"Bing Search V7 Subscription Key": "Bing Bilaketa V7 Harpidetza Gakoa",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Brave Bilaketa API Gakoa",
 	"By {{name}}": "{{name}}-k",
 	"Bypass SSL verification for Websites": "Saihestu SSL egiaztapena Webguneentzat",
+	"Calendar": "",
 	"Call": "Deia",
 	"Call feature is not supported when using Web STT engine": "Dei funtzioa ez da onartzen Web STT motorra erabiltzean",
 	"Camera": "Kamera",
@@ -178,6 +180,8 @@
 	"Code execution": "Kodearen exekuzioa",
 	"Code formatted successfully": "Kodea ongi formateatu da",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Bilduma",
 	"Color": "Kolorea",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Berretsi Pasahitza",
 	"Confirm your action": "Berretsi zure ekintza",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Konexioak",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "Jarri harremanetan Administratzailearekin WebUI Sarbiderako",
@@ -216,6 +221,7 @@
 	"Copy Link": "Kopiatu Esteka",
 	"Copy to clipboard": "Kopiatu arbelera",
 	"Copying to clipboard was successful!": "Arbelera kopiatzea arrakastatsua izan da!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "Sortu",
 	"Create a knowledge base": "Sortu ezagutza-base bat",
 	"Create a model": "Sortu eredu bat",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "Deskribatu zure ezagutza-basea eta helburuak",
 	"Description": "Deskribapena",
 	"Didn't fully follow instructions": "Ez ditu jarraibideak guztiz jarraitu",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "Desgaituta",
 	"Discover a function": "Aurkitu funtzio bat",
 	"Discover a model": "Aurkitu eredu bat",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Embedding eredua \"{{embedding_model}}\"-ra ezarri da",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Gaitu Komunitatearen Partekatzea",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Gaitu Memoria Blokeatzea (mlock) ereduaren datuak RAM memoriatik kanpo ez trukatzeko. Aukera honek ereduaren lan-orri multzoa RAMean blokatzen du, diskora ez direla trukatuko ziurtatuz. Honek errendimendua mantentzen lagun dezake, orri-hutsegiteak saihestuz eta datuen sarbide azkarra bermatuz.",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "Sartu Aplikazioaren DN Pasahitza",
 	"Enter Bing Search V7 Endpoint": "Sartu Bing Bilaketa V7 Endpointua",
 	"Enter Bing Search V7 Subscription Key": "Sartu Bing Bilaketa V7 Harpidetza Gakoa",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Sartu Brave Bilaketa API Gakoa",
 	"Enter certificate path": "Sartu ziurtagiriaren bidea",
 	"Enter CFG Scale (e.g. 7.0)": "Sartu CFG Eskala (adib. 7.0)",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Sartu Google PSE Motor IDa",
 	"Enter Image Size (e.g. 512x512)": "Sartu Irudi Tamaina (adib. 512x512)",
 	"Enter Jina API Key": "Sartu Jina API Gakoa",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Sartu hizkuntza kodeak",
 	"Enter Model ID": "Sartu Eredu IDa",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "Sartu SearchApi Motorea",
 	"Enter Searxng Query URL": "Sartu Searxng Kontsulta URLa",
 	"Enter Seed": "Sartu Hazia",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Sartu Serper API Gakoa",
 	"Enter Serply API Key": "Sartu Serply API Gakoa",
 	"Enter Serpstack API Key": "Sartu Serpstack API Gakoa",
@@ -500,6 +516,7 @@
 	"Hex Color": "Hex Kolorea",
 	"Hex Color - Leave empty for default color": "Hex Kolorea - Utzi hutsik kolore lehenetsia erabiltzeko",
 	"Hide": "Ezkutatu",
+	"Home": "",
 	"Host": "Ostalaria",
 	"How can I help you today?": "Zertan lagun zaitzaket gaur?",
 	"How would you rate this response?": "Nola baloratuko zenuke erantzun hau?",
@@ -543,6 +560,8 @@
 	"JSON Preview": "JSON Aurrebista",
 	"July": "Uztaila",
 	"June": "Ekaina",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT Iraungitzea",
 	"JWT Token": "JWT Tokena",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "Entzuten...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLMek akatsak egin ditzakete. Egiaztatu informazio garrantzitsua.",
+	"Loading Kokoro.js...": "",
 	"Local": "Lokala",
 	"Local Models": "Modelo lokalak",
 	"Lost": "Galduta",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "Ziurtatu workflow.json fitxategia API formatu gisa esportatzen duzula ComfyUI-tik.",
 	"Manage": "Kudeatu",
 	"Manage Arena Models": "Kudeatu Arena Modeloak",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "Kudeatu Ollama",
 	"Manage Ollama API Connections": "Kudeatu Ollama API Konexioak",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Testu laua (.txt)",
 	"Playground": "Jolaslekua",
 	"Please carefully review the following warnings:": "Mesedez, berrikusi arretaz hurrengo oharrak:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "Mesedez, sartu prompt bat",
 	"Please fill in all fields.": "Mesedez, bete eremu guztiak.",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Hautatu pipeline bat",
 	"Select a pipeline url": "Hautatu pipeline url bat",
 	"Select a tool": "Hautatu tresna bat",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "Hautatu motorra",
 	"Select Knowledge": "Hautatu ezagutza",
@@ -847,6 +870,8 @@
 	"Send message": "Bidali mezua",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "Bidaltzen du `stream_options: { include_usage: true }` eskaeran.\nOnartutako hornitzaileek token erabileraren informazioa itzuliko dute erantzunean ezarrita dagoenean.",
 	"September": "Iraila",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Serper API gakoa",
 	"Serply API Key": "Serply API gakoa",
 	"Serpstack API Key": "Serpstack API gakoa",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Izenburua (adib. Kontatu datu dibertigarri bat)",
 	"Title Auto-Generation": "Izenburuen sorrera automatikoa",
 	"Title cannot be an empty string.": "Izenburua ezin da kate hutsa izan.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Izenburua sortzeko prompta",
 	"TLS": "TLS",
 	"To access the available model names for downloading,": "Deskargatzeko eskuragarri dauden modelo izenak atzitzeko,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "کلید API جستجوی شجاع",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "عبور از تأیید SSL برای وب سایت ها",
+	"Calendar": "",
 	"Call": "",
 	"Call feature is not supported when using Web STT engine": "",
 	"Camera": "دوربین",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "مجموعه",
 	"Color": "",
 	"ComfyUI": "کومیوآی",
@@ -194,6 +198,7 @@
 	"Confirm Password": "تایید رمز عبور",
 	"Confirm your action": "",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "ارتباطات",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "برای دسترسی به WebUI با مدیر تماس بگیرید",
@@ -216,6 +221,7 @@
 	"Copy Link": "کپی لینک",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "کپی کردن در کلیپ بورد با موفقیت انجام شد!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "ایجاد یک مدل",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "توضیحات",
 	"Didn't fully follow instructions": "نمی تواند دستورالعمل را کامل پیگیری کند",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "",
 	"Discover a function": "",
 	"Discover a model": "کشف یک مدل",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "مدل پیدائش را به \"{{embedding_model}}\" تنظیم کنید",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "فعالسازی اشتراک انجمن",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "کلید API جستجوی شجاع را وارد کنید",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "شناسه موتور PSE گوگل را وارد کنید",
 	"Enter Image Size (e.g. 512x512)": "اندازه تصویر را وارد کنید (مثال: 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "کد زبان را وارد کنید",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "نشانی وب پرسوجوی Searxng را وارد کنید",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "کلید API Serper را وارد کنید",
 	"Enter Serply API Key": "",
 	"Enter Serpstack API Key": "کلید API Serpstack را وارد کنید",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "پنهان\u200cسازی",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "امروز چطور می توانم کمک تان کنم؟",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "پیش نمایش JSON",
 	"July": "ژوئن",
 	"June": "جولای",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT انقضای",
 	"JWT Token": "JWT توکن",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "مدل\u200cهای زبانی بزرگ می\u200cتوانند اشتباه کنند. اطلاعات مهم را راستی\u200cآزمایی کنید.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "متن ساده (.txt)",
 	"Playground": "زمین بازی",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "انتخاب یک خط لوله",
 	"Select a pipeline url": "یک ادرس خط لوله را انتخاب کنید",
 	"Select a tool": "انتخاب یک ابقزار",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "انتخاب موتور",
 	"Select Knowledge": "انتخاب دانش",
@@ -847,6 +870,8 @@
 	"Send message": "ارسال پیام",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "سپتامبر",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "کلید API Serper",
 	"Serply API Key": "",
 	"Serpstack API Key": "کلید API Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "عنوان (برای مثال: به من بگوید چیزی که دوست دارید)",
 	"Title Auto-Generation": "تولید خودکار عنوان",
 	"Title cannot be an empty string.": "عنوان نمی تواند یک رشته خالی باشد.",
+	"Title Generation": "",
 	"Title Generation Prompt": "پرامپت تولید عنوان",
 	"TLS": "",
 	"To access the available model names for downloading,": "برای دسترسی به نام مدل های موجود برای دانلود،",

+ 101 - 75
src/lib/i18n/locales/fi-FI/translation.json

@@ -5,7 +5,7 @@
 	"(e.g. `sh webui.sh --api`)": "(esim. `sh webui.sh --api`)",
 	"(latest)": "(uusin)",
 	"{{ models }}": "{{ mallit }}",
-	"{{COUNT}} Replies": "",
+	"{{COUNT}} Replies": "{{COUNT}} vastausta",
 	"{{user}}'s Chats": "{{user}}:n keskustelut",
 	"{{webUIName}} Backend Required": "{{webUIName}}-backend vaaditaan",
 	"*Prompt node ID(s) are required for image generation": "Kuvan luomiseen vaaditaan kehote-solmun ID(t)",
@@ -29,13 +29,13 @@
 	"Add Arena Model": "Lisää Arena-malli",
 	"Add Connection": "Lisää yhteys",
 	"Add Content": "Lisää sisältöä",
-	"Add content here": "",
+	"Add content here": "Lisää sisältöä tähän",
 	"Add custom prompt": "Lisää mukautettu kehote",
 	"Add Files": "Lisää tiedostoja",
 	"Add Group": "Lisää ryhmä",
 	"Add Memory": "Lisää muistia",
 	"Add Model": "Lisää malli",
-	"Add Reaction": "",
+	"Add Reaction": "Lisää reaktio",
 	"Add Tag": "Lisää tagi",
 	"Add Tags": "Lisää tageja",
 	"Add text content": "Lisää tekstisisältöä",
@@ -51,7 +51,7 @@
 	"Advanced Params": "Edistyneet parametrit",
 	"All Documents": "Kaikki asiakirjat",
 	"All models deleted successfully": "Kaikki mallit poistettu onnistuneesti",
-	"Allow Chat Controls": "",
+	"Allow Chat Controls": "Salli keskustelujen hallinta",
 	"Allow Chat Delete": "Salli keskustelujen poisto",
 	"Allow Chat Deletion": "Salli keskustelujen poisto",
 	"Allow Chat Edit": "Salli keskustelujen muokkaus",
@@ -60,21 +60,21 @@
 	"Allow Temporary Chat": "Salli väliaikaiset keskustelut",
 	"Allow User Location": "Salli käyttäjän sijainti",
 	"Allow Voice Interruption in Call": "Salli äänen keskeytys puhelussa",
-	"Allowed Endpoints": "",
+	"Allowed Endpoints": "Hyväksytyt päätepisteet",
 	"Already have an account?": "Onko sinulla jo tili?",
 	"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "Vaihtoehto top_p:lle, jolla pyritään varmistamaan laadun ja monipuolisuuden tasapaino. Parametri p edustaa pienintä todennäköisyyttä, jolla token otetaan huomioon suhteessa todennäköisimpään tokeniin. Esimerkiksi p=0.05 ja todennäköisin token todennäköisyydellä 0.9, arvoltaan alle 0.045 olevat logit suodatetaan pois. (Oletus: 0.0)",
-	"Always": "",
+	"Always": "Aina",
 	"Amazing": "Hämmästyttävä",
 	"an assistant": "avustaja",
-	"Analyzed": "",
-	"Analyzing...": "",
+	"Analyzed": "Analysoitu",
+	"Analyzing...": "Analysoidaan..",
 	"and": "ja",
 	"and {{COUNT}} more": "ja {{COUNT}} muuta",
 	"and create a new shared link.": "ja luo uusi jaettu linkki.",
 	"API Base URL": "APIn perus-URL",
 	"API Key": "API-avain",
 	"API Key created.": "API-avain luotu.",
-	"API Key Endpoint Restrictions": "",
+	"API Key Endpoint Restrictions": "API-avaimen päätepiste rajoitukset",
 	"API keys": "API-avaimet",
 	"Application DN": "Sovelluksen DN",
 	"Application DN Password": "Sovelluksen DN-salasana",
@@ -84,8 +84,8 @@
 	"Archive All Chats": "Arkistoi kaikki keskustelut",
 	"Archived Chats": "Arkistoidut keskustelut",
 	"archived-chat-export": "arkistoitu-keskustelu-vienti",
-	"Are you sure you want to delete this channel?": "",
-	"Are you sure you want to delete this message?": "",
+	"Are you sure you want to delete this channel?": "Haluatko varmasti poistaa tämän kanavan?",
+	"Are you sure you want to delete this message?": "Haluatko varmasti poistaa tämän viestin?",
 	"Are you sure you want to unarchive all archived chats?": "Haluatko varmasti purkaa kaikkien arkistoitujen keskustelujen arkistoinnin?",
 	"Are you sure?": "Oletko varma?",
 	"Arena Models": "Arena-mallit",
@@ -122,19 +122,21 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "Bing Search V7 -päätepisteen osoite",
 	"Bing Search V7 Subscription Key": "Bing Search V7 -tilauskäyttäjäavain",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Brave Search API -avain",
 	"By {{name}}": "Tekijä {{name}}",
 	"Bypass SSL verification for Websites": "Ohita SSL-varmennus verkkosivustoille",
+	"Calendar": "",
 	"Call": "Soitto",
 	"Call feature is not supported when using Web STT engine": "Soittotoimintoa ei tueta käytettäessä web-puheentunnistusmoottoria",
 	"Camera": "Kamera",
 	"Cancel": "Peruuta",
 	"Capabilities": "Ominaisuuksia",
-	"Capture": "",
+	"Capture": "Näyttökuva",
 	"Certificate Path": "Varmennepolku",
 	"Change Password": "Vaihda salasana",
-	"Channel Name": "",
-	"Channels": "",
+	"Channel Name": "Kanavan nimi",
+	"Channels": "Kanavat",
 	"Character": "Hahmo",
 	"Character limit for autocomplete generation input": "Automaattisen täydennyksen syötteen merkkiraja",
 	"Chart new frontiers": "Kartoita uusia rajapintoja",
@@ -163,7 +165,7 @@
 	"Click here to": "Klikkaa tästä",
 	"Click here to download user import template file.": "Lataa käyttäjien tuontipohjatiedosto klikkaamalla tästä.",
 	"Click here to learn more about faster-whisper and see the available models.": "Klikkaa tästä oppiaksesi lisää faster-whisperista ja nähdäksesi saatavilla olevat mallit.",
-	"Click here to see available models.": "",
+	"Click here to see available models.": "Klikkaa tästä nädäksesi saatavilla olevat mallit.",
 	"Click here to select": "Klikkaa tästä valitaksesi",
 	"Click here to select a csv file.": "Klikkaa tästä valitaksesi CSV-tiedosto.",
 	"Click here to select a py file.": "Klikkaa tästä valitaksesi py-tiedosto.",
@@ -172,12 +174,14 @@
 	"Click on the user role button to change a user's role.": "Klikkaa käyttäjän roolipainiketta vaihtaaksesi käyttäjän roolia.",
 	"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Leikepöydälle kirjoitusoikeus evätty. Tarkista selaimesi asetukset ja myönnä tarvittavat käyttöoikeudet.",
 	"Clone": "Kloonaa",
-	"Clone Chat": "",
-	"Clone of {{TITLE}}": "",
+	"Clone Chat": "Kloonaa keskustelu",
+	"Clone of {{TITLE}}": "{{TITLE}} klooni",
 	"Close": "Sulje",
 	"Code execution": "Koodin suorittaminen",
 	"Code formatted successfully": "Koodin muotoilu onnistui",
-	"Code Interpreter": "",
+	"Code Interpreter": "Ohjelmatulkki",
+	"Code Interpreter Engine": "Ohjelmatulkin moottori",
+	"Code Interpreter Prompt Template": "Ohjelmatulkin kehotemalli",
 	"Collection": "Kokoelma",
 	"Color": "Väri",
 	"ComfyUI": "ComfyUI",
@@ -193,7 +197,8 @@
 	"Confirm": "Vahvista",
 	"Confirm Password": "Vahvista salasana",
 	"Confirm your action": "Vahvista toimintasi",
-	"Confirm your new password": "",
+	"Confirm your new password": "Vahvista uusi salasanasi",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Yhteydet",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "Ota yhteyttä ylläpitäjään WebUI-käyttöä varten",
@@ -216,12 +221,13 @@
 	"Copy Link": "Kopioi linkki",
 	"Copy to clipboard": "Kopioi leikepöydälle",
 	"Copying to clipboard was successful!": "Kopioiminen leikepöydälle onnistui!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "Luo",
 	"Create a knowledge base": "Luo tietokanta",
 	"Create a model": "Luo malli",
 	"Create Account": "Luo tili",
 	"Create Admin Account": "Luo ylläpitäjätili",
-	"Create Channel": "",
+	"Create Channel": "Luo kanava",
 	"Create Group": "Luo ryhmä",
 	"Create Knowledge": "Luo tietoa",
 	"Create new key": "Luo uusi avain",
@@ -258,7 +264,7 @@
 	"Delete chat?": "Haluatko varmasti poistaa tämän keskustelun?",
 	"Delete folder?": "Haluatko varmasti poistaa tämän kansion?",
 	"Delete function?": "Haluatko varmasti poistaa tämän toiminnon?",
-	"Delete Message": "",
+	"Delete Message": "Poista viesti",
 	"Delete prompt?": "Haluatko varmasti poistaa tämän kehotteen?",
 	"delete this link": "poista tämä linkki",
 	"Delete tool?": "Haluatko varmasti poistaa tämän työkalun?",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "Kuvaa tietokantasi ja tavoitteesi",
 	"Description": "Kuvaus",
 	"Didn't fully follow instructions": "Ei noudattanut ohjeita täysin",
+	"Direct Connections": "Suorat yhteydet",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Suorat yhteydet mahdollistavat käyttäjien yhdistää omia OpenAI-yhteensopivia API-päätepisteitä.",
+	"Direct Connections settings updated": "Suorien yhteyksien asetukset päivitetty",
 	"Disabled": "Ei käytössä",
 	"Discover a function": "Löydä toiminto",
 	"Discover a model": "Tutustu malliin",
@@ -291,7 +300,7 @@
 	"Documentation": "Dokumentaatio",
 	"Documents": "Asiakirjat",
 	"does not make any external connections, and your data stays securely on your locally hosted server.": "ei tee ulkoisia yhteyksiä, ja tietosi pysyvät turvallisesti paikallisesti isännöidyllä palvelimellasi.",
-	"Domain Filter List": "",
+	"Domain Filter List": "Verkko-osoitteiden suodatuslista",
 	"Don't have an account?": "Eikö sinulla ole tiliä?",
 	"don't install random functions from sources you don't trust.": "älä asenna satunnaisia toimintoja lähteistä, joihin et luota.",
 	"don't install random tools from sources you don't trust.": "älä asenna satunnaisia työkaluja lähteistä, joihin et luota.",
@@ -312,7 +321,7 @@
 	"e.g. Tools for performing various operations": "esim. työkaluja erilaisten toimenpiteiden suorittamiseen",
 	"Edit": "Muokkaa",
 	"Edit Arena Model": "Muokkaa Arena-mallia",
-	"Edit Channel": "",
+	"Edit Channel": "Muokkaa kanavaa",
 	"Edit Connection": "Muokkaa yhteyttä",
 	"Edit Default Permissions": "Muokkaa oletuskäyttöoikeuksia",
 	"Edit Memory": "Muokkaa muistia",
@@ -327,8 +336,9 @@
 	"Embedding model set to \"{{embedding_model}}\"": "\"{{embedding_model}}\" valittu upotusmalliksi",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "Ota automaattinen täydennys käyttöön keskusteluviesteissä",
+	"Enable Code Interpreter": "Ota ohjelmatulkki käyttöön",
 	"Enable Community Sharing": "Ota yhteisön jakaminen käyttöön",
-	"Enable Google Drive": "",
+	"Enable Google Drive": "Salli Google Drive",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Ota Memory Locking (mlock) käyttöön estääksesi mallidatan vaihtamisen pois RAM-muistista. Tämä lukitsee mallin työsivut RAM-muistiin, varmistaen että niitä ei vaihdeta levylle. Tämä voi parantaa suorituskykyä välttämällä sivuvikoja ja varmistamalla nopean tietojen käytön.",
 	"Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "Ota Memory Mapping (mmap) käyttöön ladataksesi mallidataa. Tämä vaihtoehto sallii järjestelmän käyttää levytilaa RAM-laajennuksena käsittelemällä levytiedostoja kuin ne olisivat RAM-muistissa. Tämä voi parantaa mallin suorituskykyä sallimalla nopeamman tietojen käytön. Kuitenkin se ei välttämättä toimi oikein kaikissa järjestelmissä ja voi kuluttaa huomattavasti levytilaa.",
 	"Enable Message Rating": "Ota viestiarviointi käyttöön",
@@ -345,19 +355,23 @@
 	"Enter Application DN Password": "Kirjoita sovelluksen DN-salasana",
 	"Enter Bing Search V7 Endpoint": "Kirjoita Bing Search V7 -päätepisteen osoite",
 	"Enter Bing Search V7 Subscription Key": "Kirjoita Bing Search V7 -tilauskäyttäjäavain",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Kirjoita Brave Search API -avain",
 	"Enter certificate path": "Kirjoita varmennepolku",
 	"Enter CFG Scale (e.g. 7.0)": "Kirjoita CFG-mitta (esim. 7.0)",
 	"Enter Chunk Overlap": "Syötä osien päällekkäisyys",
 	"Enter Chunk Size": "Syötä osien koko",
 	"Enter description": "Kirjoita kuvaus",
-	"Enter domains separated by commas (e.g., example.com,site.org)": "",
+	"Enter domains separated by commas (e.g., example.com,site.org)": "Verkko-osoitteet erotetaan pilkulla (esim. esimerkki.com,sivu.org",
 	"Enter Exa API Key": "",
 	"Enter Github Raw URL": "Kirjoita Github Raw -URL-osoite",
 	"Enter Google PSE API Key": "Kirjoita Google PSE API -avain",
 	"Enter Google PSE Engine Id": "Kirjoita Google PSE -moottorin tunnus",
 	"Enter Image Size (e.g. 512x512)": "Kirjoita kuvan koko (esim. 512x512)",
 	"Enter Jina API Key": "Kirjoita Jina API -avain",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Kirjoita kielikoodit",
 	"Enter Model ID": "Kirjoita mallitunnus",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "Kirjoita SearchApi-moottori",
 	"Enter Searxng Query URL": "Kirjoita Searxng-kyselyn URL-osoite",
 	"Enter Seed": "Kirjoita siemenluku",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Kirjoita Serper API -avain",
 	"Enter Serply API Key": "Kirjoita Serply API -avain",
 	"Enter Serpstack API Key": "Kirjoita Serpstack API -avain",
@@ -382,12 +398,12 @@
 	"Enter stop sequence": "Kirjoita lopetussekvenssi",
 	"Enter system prompt": "Kirjoita järjestelmäkehote",
 	"Enter Tavily API Key": "Kirjoita Tavily API -avain",
-	"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "",
+	"Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "Kirjoita julkinen WebUI verkko-osoitteesi. Verkko-osoitetta käytetään osoitteiden luontiin ilmoituksissa.",
 	"Enter Tika Server URL": "Kirjoita Tika Server URL",
 	"Enter Top K": "Kirjoita Top K",
 	"Enter URL (e.g. http://127.0.0.1:7860/)": "Kirjoita URL-osoite (esim. http://127.0.0.1:7860/)",
 	"Enter URL (e.g. http://localhost:11434)": "Kirjoita URL-osoite (esim. http://localhost:11434)",
-	"Enter your current password": "",
+	"Enter your current password": "Kirjoita nykyinen salasanasi",
 	"Enter Your Email": "Kirjoita sähköpostiosoitteesi",
 	"Enter Your Full Name": "Kirjoita koko nimesi",
 	"Enter your message": "Kirjoita viestisi",
@@ -395,7 +411,7 @@
 	"Enter Your Password": "Kirjoita salasanasi",
 	"Enter Your Role": "Kirjoita roolisi",
 	"Enter Your Username": "Kirjoita käyttäjätunnuksesi",
-	"Enter your webhook URL": "",
+	"Enter your webhook URL": "Kirjoita webhook osoitteesi",
 	"Error": "Virhe",
 	"ERROR": "VIRHE",
 	"Error accessing Google Drive: {{error}}": "",
@@ -408,7 +424,7 @@
 	"Example: ou=users,dc=foo,dc=example": "Esimerkki: ou=käyttäjät,dc=foo,dc=example",
 	"Example: sAMAccountName or uid or userPrincipalName": "Esimerkki: sAMAccountName tai uid tai userPrincipalName",
 	"Exclude": "Jätä pois",
-	"Execute code for analysis": "",
+	"Execute code for analysis": "Suorita koodi analysointia varten",
 	"Experimental": "Kokeellinen",
 	"Explore the cosmos": "Tutki avaruutta",
 	"Export": "Vie",
@@ -426,12 +442,12 @@
 	"External Models": "Ulkoiset mallit",
 	"Failed to add file.": "Tiedoston lisääminen epäonnistui.",
 	"Failed to create API Key.": "API-avaimen luonti epäonnistui.",
-	"Failed to fetch models": "",
+	"Failed to fetch models": "Mallien hakeminen epäonnistui",
 	"Failed to read clipboard contents": "Leikepöydän sisällön lukeminen epäonnistui",
 	"Failed to save models configuration": "Mallien määrityksen tallentaminen epäonnistui",
 	"Failed to update settings": "Asetusten päivittäminen epäonnistui",
 	"Failed to upload file.": "Tiedoston lataaminen epäonnistui.",
-	"Features Permissions": "",
+	"Features Permissions": "Ominaisuuksien käyttöoikeudet",
 	"February": "helmikuu",
 	"Feedback History": "Palautehistoria",
 	"Feedbacks": "Palautteet",
@@ -443,7 +459,7 @@
 	"File not found.": "Tiedostoa ei löytynyt.",
 	"File removed successfully.": "Tiedosto poistettu onnistuneesti.",
 	"File size should not exceed {{maxSize}} MB.": "Tiedoston koko ei saa ylittää {{maxSize}} MB.",
-	"File uploaded successfully": "",
+	"File uploaded successfully": "Tiedosto ladattiin onnistuneesti",
 	"Files": "Tiedostot",
 	"Filter is now globally disabled": "Suodatin on nyt poistettu käytöstä globaalisti",
 	"Filter is now globally enabled": "Suodatin on nyt otettu käyttöön globaalisti",
@@ -476,7 +492,7 @@
 	"Functions imported successfully": "Toiminnot tuotu onnistuneesti",
 	"General": "Yleinen",
 	"General Settings": "Yleiset asetukset",
-	"Generate an image": "",
+	"Generate an image": "Luo kuva",
 	"Generate Image": "Luo kuva",
 	"Generating search query": "Luodaan hakukyselyä",
 	"Get started": "Aloita",
@@ -500,6 +516,7 @@
 	"Hex Color": "Heksadesimaaliväri",
 	"Hex Color - Leave empty for default color": "Heksadesimaaliväri - Jätä tyhjäksi, jos haluat oletusvärin",
 	"Hide": "Piilota",
+	"Home": "",
 	"Host": "Palvelin",
 	"How can I help you today?": "Miten voin auttaa sinua tänään?",
 	"How would you rate this response?": "Kuinka arvioisit tätä vastausta?",
@@ -507,14 +524,14 @@
 	"I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "Vahvistan, että olen lukenut ja ymmärrän toimintani seuraukset. Olen tietoinen mielivaltaisen koodin suorittamiseen liittyvistä riskeistä ja olen varmistanut lähteen luotettavuuden.",
 	"ID": "Tunnus",
 	"Ignite curiosity": "Sytytä uteliaisuus",
-	"Image": "",
-	"Image Compression": "",
-	"Image Generation": "",
+	"Image": "Kuva",
+	"Image Compression": "Kuvan pakkaus",
+	"Image Generation": "Kuvagenerointi",
 	"Image Generation (Experimental)": "Kuvagenerointi (kokeellinen)",
 	"Image Generation Engine": "Kuvagenerointimoottori",
-	"Image Max Compression Size": "",
-	"Image Prompt Generation": "",
-	"Image Prompt Generation Prompt": "",
+	"Image Max Compression Size": "Kuvan enimmäispakkauskoko",
+	"Image Prompt Generation": "Kuvan kehote generointi",
+	"Image Prompt Generation Prompt": "Kuvan generoinnin kehote",
 	"Image Settings": "Kuva-asetukset",
 	"Images": "Kuvat",
 	"Import Chats": "Tuo keskustelut",
@@ -535,7 +552,7 @@
 	"Interface": "Käyttöliittymä",
 	"Invalid file format.": "Virheellinen tiedostomuoto.",
 	"Invalid Tag": "Virheellinen tagi",
-	"is typing...": "",
+	"is typing...": "Kirjoittaa...",
 	"January": "tammikuu",
 	"Jina API Key": "Jina API -avain",
 	"join our Discord for help.": "liity Discordiimme saadaksesi apua.",
@@ -543,6 +560,8 @@
 	"JSON Preview": "JSON-esikatselu",
 	"July": "heinäkuu",
 	"June": "kesäkuu",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT-vanheneminen",
 	"JWT Token": "JWT-token",
 	"Kagi Search API Key": "",
@@ -555,7 +574,7 @@
 	"Knowledge deleted successfully.": "Tietokanta poistettu onnistuneesti.",
 	"Knowledge reset successfully.": "Tietokanta nollattu onnistuneesti.",
 	"Knowledge updated successfully": "Tietokanta päivitetty onnistuneesti",
-	"Kokoro.js (Browser)": "",
+	"Kokoro.js (Browser)": "Kokoro.js (selain)",
 	"Kokoro.js Dtype": "",
 	"Label": "Tunniste",
 	"Landing Page Mode": "Etusivun tila",
@@ -576,6 +595,7 @@
 	"Listening...": "Kuuntelee...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "Kielimallit voivat tehdä virheitä. Tarkista tärkeät tiedot.",
+	"Loading Kokoro.js...": "Ladataan Kokoro.js...",
 	"Local": "Paikallinen",
 	"Local Models": "Paikalliset mallit",
 	"Lost": "Mennyt",
@@ -585,7 +605,8 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "Muista viedä workflow.json-tiedosto API-muodossa ComfyUI:sta.",
 	"Manage": "Hallitse",
 	"Manage Arena Models": "Hallitse Arena-malleja",
-	"Manage Models": "",
+	"Manage Direct Connections": "Hallitse suoria yhteyksiä",
+	"Manage Models": "Hallitse malleja",
 	"Manage Ollama": "Hallitse Ollamaa",
 	"Manage Ollama API Connections": "Hallitse Ollama API -yhteyksiä",
 	"Manage OpenAI API Connections": "Hallitse OpenAI API -yhteyksiä",
@@ -636,11 +657,11 @@
 	"More": "Lisää",
 	"Name": "Nimi",
 	"Name your knowledge base": "Anna tietokannalle nimi",
-	"Native": "",
+	"Native": "Natiivi",
 	"New Chat": "Uusi keskustelu",
-	"New Folder": "",
+	"New Folder": "Uusi kansio",
 	"New Password": "Uusi salasana",
-	"new-channel": "",
+	"new-channel": "uusi-kanava",
 	"No content found": "Sisältöä ei löytynyt",
 	"No content to speak": "Ei puhuttavaa sisältöä",
 	"No distance available": "Etäisyyttä ei saatavilla",
@@ -664,8 +685,8 @@
 	"Not helpful": "Ei hyödyllinen",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Huomautus: Jos asetat vähimmäispistemäärän, haku palauttaa vain sellaiset asiakirjat, joiden pistemäärä on vähintään vähimmäismäärä.",
 	"Notes": "Muistiinpanot",
-	"Notification Sound": "",
-	"Notification Webhook": "",
+	"Notification Sound": "Ilmoitusääni",
+	"Notification Webhook": "Webhook ilmoitus",
 	"Notifications": "Ilmoitukset",
 	"November": "marraskuu",
 	"num_gpu (Ollama)": "num_gpu (Ollama)",
@@ -712,9 +733,9 @@
 	"PDF document (.pdf)": "PDF-asiakirja (.pdf)",
 	"PDF Extract Images (OCR)": "Poimi kuvat PDF:stä (OCR)",
 	"pending": "odottaa",
-	"Permission denied when accessing media devices": "Käyttöoikeus epäitty media-laitteille",
-	"Permission denied when accessing microphone": "Käyttöoikeus epäitty mikrofonille",
-	"Permission denied when accessing microphone: {{error}}": "Käyttöoikeus epäitty mikrofonille: {{error}}",
+	"Permission denied when accessing media devices": "Käyttöoikeus etty media-laitteille",
+	"Permission denied when accessing microphone": "Käyttöoikeus etty mikrofonille",
+	"Permission denied when accessing microphone: {{error}}": "Käyttöoikeus etty mikrofonille: {{error}}",
 	"Permissions": "Käyttöoikeudet",
 	"Personalization": "Personointi",
 	"Pin": "Kiinnitä",
@@ -728,10 +749,11 @@
 	"Plain text (.txt)": "Pelkkä teksti (.txt)",
 	"Playground": "Leikkipaikka",
 	"Please carefully review the following warnings:": "Tarkista huolellisesti seuraavat varoitukset:",
+	"Please do not close the settings page while loading the model.": "Älä sulje asetussivua mallin latautuessa.",
 	"Please enter a prompt": "Kirjoita kehote",
 	"Please fill in all fields.": "Täytä kaikki kentät.",
 	"Please select a model first.": "Valitse ensin malli.",
-	"Please select a model.": "",
+	"Please select a model.": "Valitse malli.",
 	"Please select a reason": "Valitse syy",
 	"Port": "Portti",
 	"Positive attitude": "Positiivinen asenne",
@@ -740,7 +762,7 @@
 	"Previous 30 days": "Edelliset 30 päivää",
 	"Previous 7 days": "Edelliset 7 päivää",
 	"Profile Image": "Profiilikuva",
-	"Prompt": "",
+	"Prompt": "Kehote",
 	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Kehote (esim. Kerro hauska fakta Rooman valtakunnasta)",
 	"Prompt Content": "Kehotteen sisältö",
 	"Prompt created successfully": "Kehote luotu onnistuneesti",
@@ -756,10 +778,10 @@
 	"RAG Template": "RAG-malline",
 	"Rating": "Arviointi",
 	"Re-rank models by topic similarity": "Uudelleenjärjestä mallit aiheyhteyden mukaan",
-	"Read": "",
+	"Read": "Lue",
 	"Read Aloud": "Lue ääneen",
 	"Reasoning Effort": "",
-	"Record voice": "Nauhoita ääni",
+	"Record voice": "Nauhoita ään",
 	"Redirecting you to Open WebUI Community": "Ohjataan sinut OpenWebUI-yhteisöön",
 	"Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative. (Default: 40)": "Vähentää merkityksetöntä sisältöä tuottavan todennäköisyyttä. Korkeampi arvo (esim. 100) antaa monipuolisempia vastauksia, kun taas alhaisempi arvo (esim. 10) on konservatiivisempi. (Oletus: 40)",
 	"Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "Viittaa itseen \"Käyttäjänä\" (esim. \"Käyttäjä opiskelee espanjaa\")",
@@ -773,7 +795,7 @@
 	"Rename": "Nimeä uudelleen",
 	"Reorder Models": "Uudelleenjärjestä malleja",
 	"Repeat Last N": "Toista viimeiset N",
-	"Reply in Thread": "",
+	"Reply in Thread": "Vastauksia ",
 	"Request Mode": "Pyyntötila",
 	"Reranking Model": "Uudelleenpisteytymismalli",
 	"Reranking model disabled": "Uudelleenpisteytymismalli poistettu käytöstä",
@@ -782,7 +804,7 @@
 	"Reset All Models": "Palauta kaikki mallit",
 	"Reset Upload Directory": "Palauta latauspolku",
 	"Reset Vector Storage/Knowledge": "Tyhjennä vektoritallennukset/tietämys",
-	"Reset view": "",
+	"Reset view": "Palauta näkymä",
 	"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Vastausilmoituksia ei voida ottaa käyttöön, koska verkkosivuston käyttöoikeudet on evätty. Myönnä tarvittavat käyttöoikeudet selaimesi asetuksista.",
 	"Response splitting": "Vastauksen jakaminen",
 	"Result": "Tulos",
@@ -814,13 +836,13 @@
 	"Search Knowledge": "Hae tietämystä",
 	"Search Models": "Hae malleja",
 	"Search options": "Hakuvaihtoehdot",
-	"Search Prompts": "Hae kehotteia",
+	"Search Prompts": "Hae kehotteita",
 	"Search Result Count": "Hakutulosten määrä",
-	"Search the internet": "",
+	"Search the internet": "Hae verkosta",
 	"Search Tools": "Hae työkaluja",
 	"SearchApi API Key": "SearchApi API -avain",
 	"SearchApi Engine": "SearchApi-moottori",
-	"Searched {{count}} sites": "",
+	"Searched {{count}} sites": "Etsitty {{count}} sivulta",
 	"Searching \"{{searchQuery}}\"": "Haetaan \"{{searchQuery}}\"",
 	"Searching Knowledge for \"{{searchQuery}}\"": "Haetaan tietämystä \"{{searchQuery}}\"",
 	"Searxng Query URL": "Searxng-kyselyn URL-osoite",
@@ -835,7 +857,8 @@
 	"Select a pipeline": "Valitse putki",
 	"Select a pipeline url": "Valitse putken URL-osoite",
 	"Select a tool": "Valitse työkalu",
-	"Select an Ollama instance": "",
+	"Select an auth method": "Valitse kirjautumistapa",
+	"Select an Ollama instance": "Valitse Ollama instanssi",
 	"Select Engine": "Valitse moottori",
 	"Select Knowledge": "Valitse tietämys",
 	"Select model": "Valitse malli",
@@ -847,6 +870,8 @@
 	"Send message": "Lähetä viesti",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "Lähettää `stream_options: { include_usage: true }` pyynnössä.\nTuetut tarjoajat palauttavat tokenkäyttötiedot vastauksessa, kun se on asetettu.",
 	"September": "syyskuu",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Serper API -avain",
 	"Serply API Key": "Serply API -avain",
 	"Serpstack API Key": "Serpstack API -avain",
@@ -949,8 +974,8 @@
 	"This will delete all models including custom models and cannot be undone.": "Tämä poistaa kaikki mallit, mukaan lukien mukautetut mallit, eikä sitä voi peruuttaa.",
 	"This will reset the knowledge base and sync all files. Do you wish to continue?": "Tämä nollaa tietokannan ja synkronoi kaikki tiedostot. Haluatko jatkaa?",
 	"Thorough explanation": "Perusteellinen selitys",
-	"Thought for {{DURATION}}": "",
-	"Thought for {{DURATION}} seconds": "",
+	"Thought for {{DURATION}}": "Ajatteli {{DURATION}}",
+	"Thought for {{DURATION}} seconds": "Ajatteli {{DURATION}} sekunttia",
 	"Tika": "Tika",
 	"Tika Server URL required.": "Tika Server URL vaaditaan.",
 	"Tiktoken": "Tiktoken",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Otsikko (esim. Kerro hauska fakta)",
 	"Title Auto-Generation": "Otsikon automaattinen luonti",
 	"Title cannot be an empty string.": "Otsikko ei voi olla tyhjä merkkijono.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Otsikon luontikehote",
 	"TLS": "TLS",
 	"To access the available model names for downloading,": "Päästäksesi käsiksi ladattavissa oleviin mallinimiin,",
@@ -987,7 +1013,7 @@
 	"Tools": "Työkalut",
 	"Tools Access": "Työkalujen käyttöoikeudet",
 	"Tools are a function calling system with arbitrary code execution": "Työkalut ovat toimintokutsuihin perustuva järjestelmä, joka sallii mielivaltaisen koodin suorittamisen",
-	"Tools Function Calling Prompt": "",
+	"Tools Function Calling Prompt": "Työkalujen kutsukehote",
 	"Tools have a function calling system that allows arbitrary code execution": "Työkaluilla on toimintokutsuihin perustuva järjestelmä, joka sallii mielivaltaisen koodin suorittamisen",
 	"Tools have a function calling system that allows arbitrary code execution.": "Työkalut sallivat mielivaltaisen koodin suorittamisen toimintokutsuilla.",
 	"Top K": "Top K",
@@ -999,7 +1025,7 @@
 	"TTS Voice": "Puhesynteesiääni",
 	"Type": "Tyyppi",
 	"Type Hugging Face Resolve (Download) URL": "Kirjoita Hugging Face -resolve-latausosoite",
-	"Uh-oh! There was an issue with the response.": "",
+	"Uh-oh! There was an issue with the response.": "Voi ei! Vastauksessa oli ongelma.",
 	"UI": "Käyttöliittymä",
 	"Unarchive All": "Pura kaikkien arkistointi",
 	"Unarchive All Archived Chats": "Pura kaikkien arkistoitujen keskustelujen arkistointi",
@@ -1045,7 +1071,7 @@
 	"variable to have them replaced with clipboard content.": "muuttuja korvataan leikepöydän sisällöllä.",
 	"Version": "Versio",
 	"Version {{selectedVersion}} of {{totalVersions}}": "Versio {{selectedVersion}} / {{totalVersions}}",
-	"View Replies": "",
+	"View Replies": "Näytä vastaukset",
 	"Visibility": "Näkyvyys",
 	"Voice": "Ääni",
 	"Voice Input": "Äänitulolaitteen käyttö",
@@ -1056,18 +1082,18 @@
 	"Web": "Web",
 	"Web API": "Web-API",
 	"Web Loader Settings": "Web Loader -asetukset",
-	"Web Search": "Web-haku",
-	"Web Search Engine": "Web-hakukone",
-	"Web Search in Chat": "",
-	"Web Search Query Generation": "Web-haun kyselytulosten luonti",
+	"Web Search": "Verkkohaku",
+	"Web Search Engine": "Hakukoneet",
+	"Web Search in Chat": "Verkkohaku keskustelussa",
+	"Web Search Query Generation": "Verkkohakukyselyn luonti",
 	"Webhook URL": "Webhook-URL",
 	"WebUI Settings": "WebUI-asetukset",
-	"WebUI URL": "",
+	"WebUI URL": "WebUI-osoite",
 	"WebUI will make requests to \"{{url}}/api/chat\"": "WebUI lähettää pyyntöjä osoitteeseen \"{{url}}/api/chat\"",
 	"WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI lähettää pyyntöjä osoitteeseen \"{{url}}/chat/completions\"",
 	"What are you trying to achieve?": "Mitä yrität saavuttaa?",
-	"What are you working on?": "Mihin olet työskentelemässä?",
-	"What’s New in": "",
+	"What are you working on?": "Mi olet työskentelemässä?",
+	"What’s New in": "Mitä uutta",
 	"When enabled, the model will respond to each chat message in real-time, generating a response as soon as the user sends a message. This mode is useful for live chat applications, but may impact performance on slower hardware.": "Kun käytössä, malli vastaa jokaiseen chatviestiin reaaliajassa, tuottaen vastauksen heti kun käyttäjä lähettää viestin. Tämä tila on hyödyllinen reaaliaikaisissa chat-sovelluksissa, mutta voi vaikuttaa suorituskykyyn hitaammilla laitteistoilla.",
 	"wherever you are": "missä tahansa oletkin",
 	"Whisper (Local)": "Whisper (paikallinen)",
@@ -1077,7 +1103,7 @@
 	"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text. (Default: 0.9)": "Toimii yhdessä top-k:n kanssa. Korkeampi arvo (esim. 0,95) tuottaa monipuolisempaa tekstiä, kun taas alhaisempi arvo (esim. 0,5) tuottaa keskittyneempää ja konservatiivisempaa tekstiä. (Oletus: 0,9)",
 	"Workspace": "Työtila",
 	"Workspace Permissions": "Työtilan käyttöoikeudet",
-	"Write": "",
+	"Write": "Kirjoita",
 	"Write a prompt suggestion (e.g. Who are you?)": "Kirjoita kehotteen ehdotus (esim. Kuka olet?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "Kirjoita 50 sanan yhteenveto, joka tiivistää [aihe tai avainsana].",
 	"Write something...": "Kirjoita jotain...",
@@ -1087,8 +1113,8 @@
 	"You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Voit keskustella enintään {{maxCount}} tiedoston kanssa kerralla.",
 	"You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Voit personoida vuorovaikutustasi LLM-ohjelmien kanssa lisäämällä muistoja 'Hallitse'-painikkeen kautta, jolloin ne ovat hyödyllisempiä ja räätälöityjä sinua varten.",
 	"You cannot upload an empty file.": "Et voi ladata tyhjää tiedostoa.",
-	"You do not have permission to access this feature.": "",
-	"You do not have permission to upload files": "",
+	"You do not have permission to access this feature.": "Sinulla ei ole lupaa tähän ominaisuuteen.",
+	"You do not have permission to upload files": "Sinulla ei ole lupaa ladata tiedostoja",
 	"You do not have permission to upload files.": "Sinulla ei ole lupaa ladata tiedostoja.",
 	"You have no archived conversations.": "Sinulla ei ole arkistoituja keskusteluja.",
 	"You have shared this chat": "Olet jakanut tämän keskustelun",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Clé API Brave Search",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "Bypasser la vérification SSL pour les sites web",
+	"Calendar": "",
 	"Call": "Appeler",
 	"Call feature is not supported when using Web STT engine": "La fonction d'appel n'est pas prise en charge lors de l'utilisation du moteur Web STT",
 	"Camera": "Appareil photo",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "Le code a été formaté avec succès",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Collection",
 	"Color": "",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Confirmer le mot de passe",
 	"Confirm your action": "Confirmez votre action",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Connexions",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "Contacter l'administrateur pour l'accès à l'interface Web",
@@ -216,6 +221,7 @@
 	"Copy Link": "Copier le lien",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "La copie dans le presse-papiers a réussi !",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "Créer un modèle",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "Description",
 	"Didn't fully follow instructions": "N'a pas entièrement respecté les instructions",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "",
 	"Discover a function": "Découvrez une fonction",
 	"Discover a model": "Découvrir un modèle",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Modèle d'encodage défini sur « {{embedding_model}} »",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Activer le partage communautaire",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Entrez la clé API Brave Search",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Entrez l'identifiant du moteur Google PSE",
 	"Enter Image Size (e.g. 512x512)": "Entrez la taille de l'image (par ex. 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Entrez les codes de langue",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "Entrez l'URL de la requête Searxng",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Entrez la clé API Serper",
 	"Enter Serply API Key": "Entrez la clé API Serply",
 	"Enter Serpstack API Key": "Entrez la clé API Serpstack",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "Cacher",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "Comment puis-je vous être utile aujourd'hui ?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "Aperçu JSON",
 	"July": "Juillet",
 	"June": "Juin",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "Expiration du jeton JWT",
 	"JWT Token": "Jeton JWT",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "En train d'écouter...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "Les LLM peuvent faire des erreurs. Vérifiez les informations importantes.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "Modèles locaux",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "Gérer",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Texte simple (.txt)",
 	"Playground": "Aire de jeux",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Sélectionnez un pipeline",
 	"Select a pipeline url": "Sélectionnez l'URL du pipeline",
 	"Select a tool": "Sélectionnez un outil",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "Envoyer un message",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "Septembre",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Clé API Serper",
 	"Serply API Key": "Clé API Serply",
 	"Serpstack API Key": "Clé API Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Titre (par ex. raconte-moi un fait amusant)",
 	"Title Auto-Generation": "Génération automatique de titres",
 	"Title cannot be an empty string.": "Le titre ne peut pas être une chaîne de caractères vide.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Prompt de génération de titre",
 	"TLS": "",
 	"To access the available model names for downloading,": "Pour accéder aux noms des modèles disponibles en téléchargement,",

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

@@ -122,9 +122,11 @@
 	"Beta": "Bêta",
 	"Bing Search V7 Endpoint": "Point de terminaison Bing Search V7",
 	"Bing Search V7 Subscription Key": "Clé d'abonnement Bing Search V7",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Clé API Brave Search",
 	"By {{name}}": "Par {{name}}",
 	"Bypass SSL verification for Websites": "Bypasser la vérification SSL pour les sites web",
+	"Calendar": "",
 	"Call": "Appeler",
 	"Call feature is not supported when using Web STT engine": "La fonction d'appel n'est pas prise en charge lors de l'utilisation du moteur Web STT",
 	"Camera": "Appareil photo",
@@ -178,6 +180,8 @@
 	"Code execution": "Exécution de code",
 	"Code formatted successfully": "Le code a été formaté avec succès",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Collection",
 	"Color": "Couleur",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Confirmer le mot de passe",
 	"Confirm your action": "Confirmer votre action",
 	"Confirm your new password": "Confirmer votre nouveau mot de passe",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Connexions",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "Contraint l'effort de raisonnement pour les modèles de raisonnement. Applicable uniquement aux modèles de raisonnement de fournisseurs spécifiques qui prennent en charge l'effort de raisonnement. (Par défaut : medium)",
 	"Contact Admin for WebUI Access": "Contacter l'administrateur pour obtenir l'accès à WebUI",
@@ -216,6 +221,7 @@
 	"Copy Link": "Copier le lien",
 	"Copy to clipboard": "Copier dans le presse-papiers",
 	"Copying to clipboard was successful!": "La copie dans le presse-papiers a réussi !",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "Créer",
 	"Create a knowledge base": "Créer une base de connaissances",
 	"Create a model": "Créer un modèle",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "Décrivez votre base de connaissances et vos objectifs",
 	"Description": "Description",
 	"Didn't fully follow instructions": "N'a pas entièrement respecté les instructions",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "Désactivé",
 	"Discover a function": "Trouvez une fonction",
 	"Discover a model": "Trouvez un modèle",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Modèle d'embedding défini sur « {{embedding_model}} »",
 	"Enable API Key": "Activer la clé API",
 	"Enable autocomplete generation for chat messages": "Activer la génération des suggestions pour les messages",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Activer le partage communautaire",
 	"Enable Google Drive": "Activer Google Drive",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Activer le verrouillage de la mémoire (mlock) pour empêcher les données du modèle d'être échangées de la RAM. Cette option verrouille l'ensemble de pages de travail du modèle en RAM, garantissant qu'elles ne seront pas échangées vers le disque. Cela peut aider à maintenir les performances en évitant les défauts de page et en assurant un accès rapide aux données.",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "Entrez le mot de passe DN de l'application",
 	"Enter Bing Search V7 Endpoint": "Entrez le point de terminaison Bing Search V7",
 	"Enter Bing Search V7 Subscription Key": "Entrez la clé d'abonnement Bing Search V7",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Entrez la clé API Brave Search",
 	"Enter certificate path": "Entrez le chemin du certificat",
 	"Enter CFG Scale (e.g. 7.0)": "Entrez l'échelle CFG (par ex. 7.0)",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Entrez l'identifiant du moteur Google PSE",
 	"Enter Image Size (e.g. 512x512)": "Entrez la taille de l'image (par ex. 512x512)",
 	"Enter Jina API Key": "Entrez la clé API Jina",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "Entrez la clé API Kagi Search",
 	"Enter language codes": "Entrez les codes de langue",
 	"Enter Model ID": "Entrez l'ID du modèle",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "Entrez le moteur de recherche SearchApi",
 	"Enter Searxng Query URL": "Entrez l'URL de la requête Searxng",
 	"Enter Seed": "Entrez Seed",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Entrez la clé API Serper",
 	"Enter Serply API Key": "Entrez la clé API Serply",
 	"Enter Serpstack API Key": "Entrez la clé API Serpstack",
@@ -500,6 +516,7 @@
 	"Hex Color": "Couleur Hex",
 	"Hex Color - Leave empty for default color": "Couleur Hex - Laissez vide pour la couleur par défaut",
 	"Hide": "Cacher",
+	"Home": "",
 	"Host": "Hôte",
 	"How can I help you today?": "Comment puis-je vous aider aujourd'hui ?",
 	"How would you rate this response?": "Comment évalueriez-vous cette réponse ?",
@@ -543,6 +560,8 @@
 	"JSON Preview": "Aperçu JSON",
 	"July": "Juillet",
 	"June": "Juin",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "Expiration du token JWT",
 	"JWT Token": "Token JWT",
 	"Kagi Search API Key": "Clé API Kagi Search",
@@ -576,6 +595,7 @@
 	"Listening...": "Écoute en cours...",
 	"Llama.cpp": "Llama.cpp",
 	"LLMs can make mistakes. Verify important information.": "Les LLM peuvent faire des erreurs. Vérifiez les informations importantes.",
+	"Loading Kokoro.js...": "",
 	"Local": "Local",
 	"Local Models": "Modèles locaux",
 	"Lost": "Perdu",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "Veillez à exporter un fichier workflow.json au format API depuis ComfyUI.",
 	"Manage": "Gérer",
 	"Manage Arena Models": "Gérer les modèles d'arène",
+	"Manage Direct Connections": "",
 	"Manage Models": "Gérer les modèles",
 	"Manage Ollama": "Gérer Ollama",
 	"Manage Ollama API Connections": "Gérer les connexions API Ollama",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Texte simple (.txt)",
 	"Playground": "Playground",
 	"Please carefully review the following warnings:": "Veuillez lire attentivement les avertissements suivants :",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "Veuillez saisir un prompt",
 	"Please fill in all fields.": "Veuillez remplir tous les champs.",
 	"Please select a model first.": "Veuillez d'abord sélectionner un modèle.",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Sélectionnez un pipeline",
 	"Select a pipeline url": "Sélectionnez l'URL du pipeline",
 	"Select a tool": "Sélectionnez un outil",
+	"Select an auth method": "",
 	"Select an Ollama instance": "Sélectionnez une instance Ollama",
 	"Select Engine": "Sélectionnez le moteur",
 	"Select Knowledge": "Sélectionnez une connaissance",
@@ -847,6 +870,8 @@
 	"Send message": "Envoyer un message",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "Envoie `stream_options: { include_usage: true }` dans la requête.\nLes fournisseurs pris en charge renverront des informations sur l'utilisation des tokens dans la réponse lorsque cette option est activée.",
 	"September": "Septembre",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Clé API Serper",
 	"Serply API Key": "Clé API Serply",
 	"Serpstack API Key": "Clé API Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Titre (par ex. raconte-moi un fait amusant)",
 	"Title Auto-Generation": "Génération automatique des titres",
 	"Title cannot be an empty string.": "Le titre ne peut pas être une chaîne de caractères vide.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Prompt de génération de titre",
 	"TLS": "TLS",
 	"To access the available model names for downloading,": "Pour accéder aux noms des modèles disponibles,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "מפתח API של חיפוש אמיץ",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "עקוף אימות SSL עבור אתרים",
+	"Calendar": "",
 	"Call": "",
 	"Call feature is not supported when using Web STT engine": "",
 	"Camera": "",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "אוסף",
 	"Color": "",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "אשר סיסמה",
 	"Confirm your action": "",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "חיבורים",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "",
@@ -216,6 +221,7 @@
 	"Copy Link": "העתק קישור",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "ההעתקה ללוח הייתה מוצלחת!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "יצירת מודל",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "תיאור",
 	"Didn't fully follow instructions": "לא עקב אחרי ההוראות באופן מלא",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "",
 	"Discover a function": "",
 	"Discover a model": "גלה מודל",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "מודל ההטמעה הוגדר ל-\"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "הפיכת שיתוף קהילה לזמין",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "הזן מפתח API של חיפוש אמיץ",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "הזן את מזהה מנוע PSE של Google",
 	"Enter Image Size (e.g. 512x512)": "הזן גודל תמונה (למשל 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "הזן קודי שפה",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "הזן כתובת URL של שאילתת Searxng",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "הזן מפתח API של Serper",
 	"Enter Serply API Key": "",
 	"Enter Serpstack API Key": "הזן מפתח API של Serpstack",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "הסתר",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "כיצד אוכל לעזור לך היום?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "תצוגה מקדימה של JSON",
 	"July": "יולי",
 	"June": "יוני",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "תפוגת JWT",
 	"JWT Token": "אסימון JWT",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "מודלים בשפה טבעית יכולים לטעות. אמת מידע חשוב.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "טקסט פשוט (.txt)",
 	"Playground": "אזור משחקים",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "בחר קו צינור",
 	"Select a pipeline url": "בחר כתובת URL של קו צינור",
 	"Select a tool": "",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "שלח הודעה",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "ספטמבר",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "מפתח Serper API",
 	"Serply API Key": "",
 	"Serpstack API Key": "מפתח API של Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "שם (לדוגמה: תרגום)",
 	"Title Auto-Generation": "יצירת שם אוטומטית",
 	"Title cannot be an empty string.": "שם לא יכול להיות מחרוזת ריקה.",
+	"Title Generation": "",
 	"Title Generation Prompt": "שאלה ליצירת שם",
 	"TLS": "",
 	"To access the available model names for downloading,": "כדי לגשת לשמות הדגמים הזמינים להורדה,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Brave सर्च एपीआई कुंजी",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "वेबसाइटों के लिए SSL सुनिश्चिती को छोड़ें",
+	"Calendar": "",
 	"Call": "",
 	"Call feature is not supported when using Web STT engine": "",
 	"Camera": "",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "संग्रह",
 	"Color": "",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "पासवर्ड की पुष्टि कीजिये",
 	"Confirm your action": "",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "सम्बन्ध",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "",
@@ -216,6 +221,7 @@
 	"Copy Link": "लिंक को कॉपी करें",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "क्लिपबोर्ड पर कॉपी बनाना सफल रहा!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "एक मॉडल बनाएं",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "विवरण",
 	"Didn't fully follow instructions": "निर्देशों का पूरी तरह से पालन नहीं किया",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "",
 	"Discover a function": "",
 	"Discover a model": "एक मॉडल की खोज करें",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "एम्बेडिंग मॉडल को \"{{embedding_model}}\" पर सेट किया गया",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "समुदाय साझाकरण सक्षम करें",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Brave सर्च एपीआई कुंजी डालें",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Google PSE इंजन आईडी दर्ज करें",
 	"Enter Image Size (e.g. 512x512)": "छवि का आकार दर्ज करें (उदा. 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "भाषा कोड दर्ज करें",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "Searxng क्वेरी URL दर्ज करें",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Serper API कुंजी दर्ज करें",
 	"Enter Serply API Key": "",
 	"Enter Serpstack API Key": "सर्पस्टैक एपीआई कुंजी दर्ज करें",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "छुपाएं",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "आज मैं आपकी कैसे मदद कर सकता हूँ?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "JSON पूर्वावलोकन",
 	"July": "जुलाई",
 	"June": "जुन",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT समाप्ति",
 	"JWT Token": "जट टोकन",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "एलएलएम गलतियाँ कर सकते हैं। महत्वपूर्ण जानकारी सत्यापित करें.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "सादा पाठ (.txt)",
 	"Playground": "कार्यक्षेत्र",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "एक पाइपलाइन का चयन करें",
 	"Select a pipeline url": "एक पाइपलाइन url चुनें",
 	"Select a tool": "",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "मेसेज भेजें",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "सितंबर",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Serper API कुंजी",
 	"Serply API Key": "",
 	"Serpstack API Key": "सर्पस्टैक एपीआई कुंजी",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "शीर्षक (उदा. मुझे एक मज़ेदार तथ्य बताएं)",
 	"Title Auto-Generation": "शीर्षक ऑटो-जेनरेशन",
 	"Title cannot be an empty string.": "शीर्षक नहीं खाली पाठ हो सकता है.",
+	"Title Generation": "",
 	"Title Generation Prompt": "शीर्षक जनरेशन प्रॉम्प्ट",
 	"TLS": "",
 	"To access the available model names for downloading,": "डाउनलोड करने के लिए उपलब्ध मॉडल नामों तक पहुंचने के लिए,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Brave tražilica - API ključ",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "Zaobiđi SSL provjeru za web stranice",
+	"Calendar": "",
 	"Call": "Poziv",
 	"Call feature is not supported when using Web STT engine": "Značajka poziva nije podržana kada se koristi Web STT mehanizam",
 	"Camera": "Kamera",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Kolekcija",
 	"Color": "",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Potvrdite lozinku",
 	"Confirm your action": "",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Povezivanja",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "Kontaktirajte admina za WebUI pristup",
@@ -216,6 +221,7 @@
 	"Copy Link": "Kopiraj vezu",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "Kopiranje u međuspremnik je uspješno!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "Izradite model",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "Opis",
 	"Didn't fully follow instructions": "Nije u potpunosti slijedio upute",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "",
 	"Discover a function": "",
 	"Discover a model": "Otkrijte model",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Embedding model postavljen na \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Omogući zajedničko korištenje zajednice",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Unesite Brave Search API ključ",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Unesite ID Google PSE motora",
 	"Enter Image Size (e.g. 512x512)": "Unesite veličinu slike (npr. 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Unesite kodove jezika",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "Unesite URL upita Searxng",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Unesite Serper API ključ",
 	"Enter Serply API Key": "Unesite Serply API ključ",
 	"Enter Serpstack API Key": "Unesite Serpstack API ključ",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "Sakrij",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "Kako vam mogu pomoći danas?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "JSON pretpregled",
 	"July": "Srpanj",
 	"June": "Lipanj",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "Isticanje JWT-a",
 	"JWT Token": "JWT token",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "Slušam...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLM-ovi mogu pogriješiti. Provjerite važne informacije.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "Lokalni modeli",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "Upravljaj",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Običan tekst (.txt)",
 	"Playground": "Igralište",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Odabir kanala",
 	"Select a pipeline url": "Odabir URL-a kanala",
 	"Select a tool": "",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "Pošalji poruku",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "Rujan",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Serper API ključ",
 	"Serply API Key": "Serply API ključ",
 	"Serpstack API Key": "Serpstack API API ključ",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Naslov (npr. Reci mi zanimljivost)",
 	"Title Auto-Generation": "Automatsko generiranje naslova",
 	"Title cannot be an empty string.": "Naslov ne može biti prazni niz.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Prompt za generiranje naslova",
 	"TLS": "",
 	"To access the available model names for downloading,": "Za pristup dostupnim nazivima modela za preuzimanje,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Brave Search API kulcs",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "SSL ellenőrzés kihagyása weboldalakhoz",
+	"Calendar": "",
 	"Call": "Hívás",
 	"Call feature is not supported when using Web STT engine": "A hívás funkció nem támogatott Web STT motor használatakor",
 	"Camera": "Kamera",
@@ -178,6 +180,8 @@
 	"Code execution": "Kód végrehajtás",
 	"Code formatted successfully": "Kód sikeresen formázva",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Gyűjtemény",
 	"Color": "",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Jelszó megerősítése",
 	"Confirm your action": "Erősítsd meg a műveletet",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Kapcsolatok",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "Lépj kapcsolatba az adminnal a WebUI hozzáférésért",
@@ -216,6 +221,7 @@
 	"Copy Link": "Link másolása",
 	"Copy to clipboard": "Másolás a vágólapra",
 	"Copying to clipboard was successful!": "Sikeres másolás a vágólapra!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "Modell létrehozása",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "Leírás",
 	"Didn't fully follow instructions": "Nem követte teljesen az utasításokat",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "Letiltva",
 	"Discover a function": "Funkció felfedezése",
 	"Discover a model": "Modell felfedezése",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Beágyazási modell beállítva: \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Közösségi megosztás engedélyezése",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Add meg a Brave Search API kulcsot",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "Add meg a CFG skálát (pl. 7.0)",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Add meg a Google PSE motor azonosítót",
 	"Enter Image Size (e.g. 512x512)": "Add meg a kép méretet (pl. 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Add meg a nyelvi kódokat",
 	"Enter Model ID": "Add meg a modell azonosítót",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "Add meg a SearchApi motort",
 	"Enter Searxng Query URL": "Add meg a Searxng lekérdezési URL-t",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Add meg a Serper API kulcsot",
 	"Enter Serply API Key": "Add meg a Serply API kulcsot",
 	"Enter Serpstack API Key": "Add meg a Serpstack API kulcsot",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "Elrejtés",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "Hogyan segíthetek ma?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "JSON előnézet",
 	"July": "Július",
 	"June": "Június",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT lejárat",
 	"JWT Token": "JWT token",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "Hallgatás...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "Az LLM-ek hibázhatnak. Ellenőrizze a fontos információkat.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "Helyi modellek",
 	"Lost": "Elveszett",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "Győződjön meg róla, hogy exportál egy workflow.json fájlt API formátumban a ComfyUI-ból.",
 	"Manage": "Kezelés",
 	"Manage Arena Models": "Arena modellek kezelése",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Egyszerű szöveg (.txt)",
 	"Playground": "Játszótér",
 	"Please carefully review the following warnings:": "Kérjük, gondosan tekintse át a következő figyelmeztetéseket:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "Kérjük, adjon meg egy promptot",
 	"Please fill in all fields.": "Kérjük, töltse ki az összes mezőt.",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Válasszon egy folyamatot",
 	"Select a pipeline url": "Válasszon egy folyamat URL-t",
 	"Select a tool": "Válasszon egy eszközt",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "Motor kiválasztása",
 	"Select Knowledge": "Tudásbázis kiválasztása",
@@ -847,6 +870,8 @@
 	"Send message": "Üzenet küldése",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "A kérésben elküldi a `stream_options: { include_usage: true }` opciót.\nA támogatott szolgáltatók token használati információt küldenek vissza a válaszban, ha be van állítva.",
 	"September": "Szeptember",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Serper API kulcs",
 	"Serply API Key": "Serply API kulcs",
 	"Serpstack API Key": "Serpstack API kulcs",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Cím (pl. Mondj egy érdekes tényt)",
 	"Title Auto-Generation": "Cím automatikus generálása",
 	"Title cannot be an empty string.": "A cím nem lehet üres karakterlánc.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Cím generálási prompt",
 	"TLS": "",
 	"To access the available model names for downloading,": "A letölthető modellek nevének eléréséhez,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Kunci API Pencarian Berani",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "Lewati verifikasi SSL untuk Situs Web",
+	"Calendar": "",
 	"Call": "Panggilan",
 	"Call feature is not supported when using Web STT engine": "Fitur panggilan tidak didukung saat menggunakan mesin Web STT",
 	"Camera": "Kamera",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "Kode berhasil diformat",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Koleksi",
 	"Color": "",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Konfirmasi Kata Sandi",
 	"Confirm your action": "Konfirmasi tindakan Anda",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Koneksi",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "Hubungi Admin untuk Akses WebUI",
@@ -216,6 +221,7 @@
 	"Copy Link": "Salin Tautan",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "Penyalinan ke papan klip berhasil!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "Buat model",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "Deskripsi",
 	"Didn't fully follow instructions": "Tidak sepenuhnya mengikuti instruksi",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "",
 	"Discover a function": "Menemukan sebuah fungsi",
 	"Discover a model": "Menemukan sebuah model",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Model penyematan diatur ke \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Aktifkan Berbagi Komunitas",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Masukkan Kunci API Pencarian Berani",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Masukkan Id Mesin Google PSE",
 	"Enter Image Size (e.g. 512x512)": "Masukkan Ukuran Gambar (mis. 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Masukkan kode bahasa",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "Masukkan URL Kueri Searxng",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Masukkan Kunci API Serper",
 	"Enter Serply API Key": "Masukkan Kunci API Serply",
 	"Enter Serpstack API Key": "Masukkan Kunci API Serpstack",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "Sembunyikan",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "Ada yang bisa saya bantu hari ini?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "Pratinjau JSON",
 	"July": "Juli",
 	"June": "Juni",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "Kedaluwarsa JWT",
 	"JWT Token": "Token JWT",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "Mendengarkan",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLM dapat membuat kesalahan. Verifikasi informasi penting.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "Model Lokal",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "Mengelola",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Teks biasa (.txt)",
 	"Playground": "Taman bermain",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Pilih saluran pipa",
 	"Select a pipeline url": "Pilih url saluran pipa",
 	"Select a tool": "Pilih alat",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "Kirim pesan",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "September",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Kunci API Serper",
 	"Serply API Key": "Kunci API Serply",
 	"Serpstack API Key": "Kunci API Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Judul (misalnya, Ceritakan sebuah fakta menarik)",
 	"Title Auto-Generation": "Pembuatan Judul Secara Otomatis",
 	"Title cannot be an empty string.": "Judul tidak boleh berupa string kosong.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Perintah Pembuatan Judul",
 	"TLS": "",
 	"To access the available model names for downloading,": "Untuk mengakses nama model yang tersedia untuk diunduh,",

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

@@ -122,9 +122,11 @@
 	"Beta": "Béite",
 	"Bing Search V7 Endpoint": "Cuardach Bing V7 Críochphointe",
 	"Bing Search V7 Subscription Key": "Eochair Síntiúis Bing Cuardach V7",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Eochair API Cuardaigh Brave",
 	"By {{name}}": "Le {{name}}",
 	"Bypass SSL verification for Websites": "Seachbhachtar fíorú SSL do Láithreáin",
+	"Calendar": "",
 	"Call": "Glaoigh",
 	"Call feature is not supported when using Web STT engine": "Ní thacaítear le gné glaonna agus inneall Web STT á úsáid",
 	"Camera": "Ceamara",
@@ -178,6 +180,8 @@
 	"Code execution": "Cód a fhorghníomhú",
 	"Code formatted successfully": "Cód formáidithe go rathúil",
 	"Code Interpreter": "Ateangaire Cód",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Bailiúchán",
 	"Color": "Dath",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Deimhnigh Pasfhocal",
 	"Confirm your action": "Deimhnigh do ghníomh",
 	"Confirm your new password": "Deimhnigh do phasfhocal nua",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Naisc",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "Srianann iarracht ar réasúnaíocht a dhéanamh ar shamhlacha réasúnaíochta. Ní bhaineann ach le samhlacha réasúnaíochta ó sholáthraithe sonracha a thacaíonn le hiarracht réasúnaíochta. (Réamhshocrú: meánach)",
 	"Contact Admin for WebUI Access": "Déan teagmháil le Riarachán le haghaidh Rochtana WebUI",
@@ -216,6 +221,7 @@
 	"Copy Link": "Cóipeáil Nasc",
 	"Copy to clipboard": "Cóipeáil chuig an ngearrthaisce",
 	"Copying to clipboard was successful!": "D'éirigh le cóipeáil chuig an ngearrthaisce!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "Cruthaigh",
 	"Create a knowledge base": "Cruthaigh bonn eolais",
 	"Create a model": "Cruthaigh múnla",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "Déan cur síos ar do bhunachar eolais agus do chuspóirí",
 	"Description": "Cur síos",
 	"Didn't fully follow instructions": "Níor lean sé treoracha go hiomlán",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "Díchumasaithe",
 	"Discover a function": "Faigh amach feidhm",
 	"Discover a model": "Faigh amach múnla",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Samhail leabaithe atá socraithe go \"{{embedding_model}}\"",
 	"Enable API Key": "Cumasaigh Eochair API",
 	"Enable autocomplete generation for chat messages": "Cumasaigh giniúint uathchríochnaithe le haghaidh teachtaireachtaí comhrá",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Cumasaigh Comhroinnt Pobail",
 	"Enable Google Drive": "Cumasaigh Google Drive",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Cumasaigh Glasáil Cuimhne (mlock) chun sonraí samhaltaithe a chosc ó RAM. Glasálann an rogha seo sraith oibre leathanaigh an mhúnla isteach i RAM, ag cinntiú nach ndéanfar iad a mhalartú go diosca. Is féidir leis seo cabhrú le feidhmíocht a choinneáil trí lochtanna leathanaigh a sheachaint agus rochtain tapa ar shonraí a chinntiú.",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "Iontráil Feidhmchlár DN Pasfhocal",
 	"Enter Bing Search V7 Endpoint": "Cuir isteach Cuardach Bing V7 Críochphointe",
 	"Enter Bing Search V7 Subscription Key": "Cuir isteach Eochair Síntiúis Bing Cuardach V7",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Cuir isteach Eochair API Brave Cuardach",
 	"Enter certificate path": "Cuir isteach cosán an teastais",
 	"Enter CFG Scale (e.g. 7.0)": "Cuir isteach Scála CFG (m.sh. 7.0)",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Cuir isteach ID Inneall Google PSE",
 	"Enter Image Size (e.g. 512x512)": "Iontráil Méid Íomhá (m.sh. 512x512)",
 	"Enter Jina API Key": "Cuir isteach Eochair API Jina",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "Cuir isteach Eochair Kagi Search API",
 	"Enter language codes": "Cuir isteach cóid teanga",
 	"Enter Model ID": "Iontráil ID Mhúnla",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "Cuir isteach Inneall SearchAPI",
 	"Enter Searxng Query URL": "Cuir isteach URL Ceist Searxng",
 	"Enter Seed": "Cuir isteach Síl",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Cuir isteach Eochair API Serper",
 	"Enter Serply API Key": "Cuir isteach Eochair API Serply",
 	"Enter Serpstack API Key": "Cuir isteach Eochair API Serpstack",
@@ -500,6 +516,7 @@
 	"Hex Color": "Dath Heics",
 	"Hex Color - Leave empty for default color": "Dath Heics - Fág folamh don dath réamhshocraithe",
 	"Hide": "Folaigh",
+	"Home": "",
 	"Host": "Óstach",
 	"How can I help you today?": "Conas is féidir liom cabhrú leat inniu?",
 	"How would you rate this response?": "Cad é mar a mheasfá an freagra seo?",
@@ -543,6 +560,8 @@
 	"JSON Preview": "Réamhamharc JSON",
 	"July": "Lúil",
 	"June": "Meitheamh",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "Éag JWT",
 	"JWT Token": "Comhartha JWT",
 	"Kagi Search API Key": "Eochair API Chuardaigh Kagi",
@@ -576,6 +595,7 @@
 	"Listening...": "Éisteacht...",
 	"Llama.cpp": "Llama.cpp",
 	"LLMs can make mistakes. Verify important information.": "Is féidir le LLManna botúin a dhéanamh. Fíoraigh faisnéis thábhachtach.",
+	"Loading Kokoro.js...": "",
 	"Local": "Áitiúil",
 	"Local Models": "Múnlaí Áitiúla",
 	"Lost": "Cailleadh",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "Déan cinnte comhad workflow.json a onnmhairiú mar fhormáid API ó ComfyUI.",
 	"Manage": "Bainistiú",
 	"Manage Arena Models": "Bainistigh Múnlaí Airéine",
+	"Manage Direct Connections": "",
 	"Manage Models": "Samhlacha a bhainistiú",
 	"Manage Ollama": "Bainistigh Ollama",
 	"Manage Ollama API Connections": "Bainistigh Naisc API Ollama",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Téacs simplí (.txt)",
 	"Playground": "Clós súgartha",
 	"Please carefully review the following warnings:": "Déan athbhreithniú cúramach ar na rabhaidh seo a leanas le do thoil:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "Cuir isteach leid",
 	"Please fill in all fields.": "Líon isteach gach réimse le do thoil.",
 	"Please select a model first.": "Roghnaigh munla ar dtús le do thoil.",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Roghnaigh píblíne",
 	"Select a pipeline url": "Roghnaigh url píblíne",
 	"Select a tool": "Roghnaigh uirlis",
+	"Select an auth method": "",
 	"Select an Ollama instance": "Roghnaigh sampla Olama",
 	"Select Engine": "Roghnaigh Inneall",
 	"Select Knowledge": "Roghnaigh Eolais",
@@ -847,6 +870,8 @@
 	"Send message": "Seol teachtaireacht",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "Seolann `stream_options: { include_usage: true }` san iarratas.\nTabharfaidh soláthraithe a fhaigheann tacaíocht faisnéis úsáide chomharthaí ar ais sa fhreagra nuair a bheidh sé socraithe.",
 	"September": "Meán Fómhair",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Serper API Eochair",
 	"Serply API Key": "Eochair API Serply",
 	"Serpstack API Key": "Eochair API Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Teideal (m.sh. inis dom fíric spraíúil)",
 	"Title Auto-Generation": "Teideal Auto-Generation",
 	"Title cannot be an empty string.": "Ní féidir leis an teideal a bheith ina teaghrán folamh.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Leid Giniúint Teideal",
 	"TLS": "TLS",
 	"To access the available model names for downloading,": "Chun teacht ar na hainmneacha múnla atá ar fáil le híoslódáil,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Chiave API di ricerca Brave",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "Aggira la verifica SSL per i siti web",
+	"Calendar": "",
 	"Call": "",
 	"Call feature is not supported when using Web STT engine": "",
 	"Camera": "",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Collezione",
 	"Color": "",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Conferma password",
 	"Confirm your action": "",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Connessioni",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "",
@@ -216,6 +221,7 @@
 	"Copy Link": "Copia link",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "Copia negli appunti riuscita!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "Creare un modello",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "Descrizione",
 	"Didn't fully follow instructions": "Non ha seguito completamente le istruzioni",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "",
 	"Discover a function": "",
 	"Discover a model": "Scopri un modello",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Modello di embedding impostato su \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Abilita la condivisione della community",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Inserisci la chiave API di Brave Search",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Inserisci l'ID motore PSE di Google",
 	"Enter Image Size (e.g. 512x512)": "Inserisci la dimensione dell'immagine (ad esempio 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Inserisci i codici lingua",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "Immettere l'URL della query Searxng",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Inserisci la chiave API Serper",
 	"Enter Serply API Key": "",
 	"Enter Serpstack API Key": "Inserisci la chiave API Serpstack",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "Nascondi",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "Come posso aiutarti oggi?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "Anteprima JSON",
 	"July": "Luglio",
 	"June": "Giugno",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "Scadenza JWT",
 	"JWT Token": "Token JWT",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "Gli LLM possono commettere errori. Verifica le informazioni importanti.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Testo normale (.txt)",
 	"Playground": "Terreno di gioco",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Selezionare una tubazione",
 	"Select a pipeline url": "Selezionare l'URL di una pipeline",
 	"Select a tool": "",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "Invia messaggio",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "Settembre",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Chiave API Serper",
 	"Serply API Key": "",
 	"Serpstack API Key": "Chiave API Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Titolo (ad esempio Dimmi un fatto divertente)",
 	"Title Auto-Generation": "Generazione automatica del titolo",
 	"Title cannot be an empty string.": "Il titolo non può essere una stringa vuota.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Prompt di generazione del titolo",
 	"TLS": "",
 	"To access the available model names for downloading,": "Per accedere ai nomi dei modelli disponibili per il download,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Brave Search APIキー",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "SSL 検証をバイパスする",
+	"Calendar": "",
 	"Call": "コール",
 	"Call feature is not supported when using Web STT engine": "",
 	"Camera": "カメラ",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "コードフォーマットに成功しました",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "コレクション",
 	"Color": "",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "パスワードの確認",
 	"Confirm your action": "あなたのアクションの確認",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "接続",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "WEBUIへの接続について管理者に問い合わせ下さい。",
@@ -216,6 +221,7 @@
 	"Copy Link": "リンクをコピー",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "クリップボードへのコピーが成功しました!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "モデルを作成する",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "説明",
 	"Didn't fully follow instructions": "説明に沿って操作していませんでした",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "無効",
 	"Discover a function": "Functionを探す",
 	"Discover a model": "モデルを探す",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "埋め込みモデルを\"{{embedding_model}}\"に設定しました",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "コミュニティ共有を有効にする",
 	"Enable Google Drive": "Google Driveの有効化",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Brave Search APIキーの入力",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "CFGスケースを入力してください (例: 7.0)",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Google PSE エンジン ID を入力します。",
 	"Enter Image Size (e.g. 512x512)": "画像サイズを入力してください (例: 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "言語コードを入力してください",
 	"Enter Model ID": "モデルIDを入力してください。",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "SearchApi Engineを入力してください。",
 	"Enter Searxng Query URL": "SearxngクエリURLを入力",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Serper APIキーの入力",
 	"Enter Serply API Key": "Serply API Keyを入力してください。",
 	"Enter Serpstack API Key": "Serpstack APIキーの入力",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "非表示",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "今日はどのようにお手伝いしましょうか?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "JSON プレビュー",
 	"July": "7月",
 	"June": "6月",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT 有効期限",
 	"JWT Token": "JWT トークン",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLM は間違いを犯す可能性があります。重要な情報を検証してください。",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "ローカルモデル",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "管理",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "プレーンテキスト (.txt)",
 	"Playground": "プレイグラウンド",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "パイプラインの選択",
 	"Select a pipeline url": "パイプラインの URL を選択する",
 	"Select a tool": "ツールの選択",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "エンジンの選択",
 	"Select Knowledge": "ナレッジベースの選択",
@@ -847,6 +870,8 @@
 	"Send message": "メッセージを送信",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "9月",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Serper APIキー",
 	"Serply API Key": "",
 	"Serpstack API Key": "Serpstack APIキー",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "タイトル (例: 楽しい事を教えて)",
 	"Title Auto-Generation": "タイトル自動生成",
 	"Title cannot be an empty string.": "タイトルは空文字列にできません。",
+	"Title Generation": "",
 	"Title Generation Prompt": "タイトル生成プロンプト",
 	"TLS": "",
 	"To access the available model names for downloading,": "ダウンロード可能なモデル名にアクセスするには、",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Brave Search API გასაღები",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "SSL-ის ვერიფიკაციის გააუქმება ვებსაიტებზე",
+	"Calendar": "",
 	"Call": "",
 	"Call feature is not supported when using Web STT engine": "",
 	"Camera": "",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "ნაკრები",
 	"Color": "",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "პაროლის დამოწმება",
 	"Confirm your action": "",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "კავშირები",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "",
@@ -216,6 +221,7 @@
 	"Copy Link": "კოპირება",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "კლავიატურაზე კოპირება წარმატებით დასრულდა",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "შექმენით მოდელი",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "აღწერა",
 	"Didn't fully follow instructions": "ვერ ყველა ინფორმაციისთვის ვერ ხელახლა ჩაწერე",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "",
 	"Discover a function": "",
 	"Discover a model": "გაიგეთ მოდელი",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "ჩასმის ძირითადი პროგრამა ჩართულია \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "საზოგადოების გაზიარების ჩართვა",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "შეიყვანეთ Brave Search API გასაღები",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "შეიყვანეთ Google PSE ძრავის ID",
 	"Enter Image Size (e.g. 512x512)": "შეიყვანეთ სურათის ზომა (მაგ. 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "შეიყვანეთ ენის კოდი",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "შეიყვანეთ Searxng Query URL",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "შეიყვანეთ Serper API Key",
 	"Enter Serply API Key": "",
 	"Enter Serpstack API Key": "შეიყვანეთ Serpstack API Key",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "დამალვა",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "როგორ შემიძლია დაგეხმარო დღეს?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "JSON გადახედვა",
 	"July": "ივნისი",
 	"June": "ივლა",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT-ის ვადა",
 	"JWT Token": "JWT ტოკენი",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "შესაძლოა LLM-ებმა შეცდომები დაუშვან. გადაამოწმეთ მნიშვნელოვანი ინფორმაცია.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "ტექსტი (.txt)",
 	"Playground": "სათამაშო მოედანი",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "აირჩიეთ მილსადენი",
 	"Select a pipeline url": "აირჩიეთ მილსადენის url",
 	"Select a tool": "",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "შეტყობინების გაგზავნა",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "სექტემბერი",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Serper API Key",
 	"Serply API Key": "",
 	"Serpstack API Key": "Serpstack API Key",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "სათაური (მაგ. გაიხსნე რაღაც ხარისხი)",
 	"Title Auto-Generation": "სათაურის ავტო-გენერაცია",
 	"Title cannot be an empty string.": "სათაური ცარიელი ველი ვერ უნდა იყოს.",
+	"Title Generation": "",
 	"Title Generation Prompt": "სათაურის გენერაციის მოთხოვნა ",
 	"TLS": "",
 	"To access the available model names for downloading,": "ჩამოტვირთვისთვის ხელმისაწვდომი მოდელების სახელებზე წვდომისთვის",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "Bing Search V7 엔드포인트",
 	"Bing Search V7 Subscription Key": "Bing Search V7 구독 키",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Brave Search API 키",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "웹 사이트에 대한 SSL 검증 무시: ",
+	"Calendar": "",
 	"Call": "음성 기능",
 	"Call feature is not supported when using Web STT engine": "웹 STT 엔진 사용 시, 음성 기능은 지원되지 않습니다.",
 	"Camera": "카메라",
@@ -178,6 +180,8 @@
 	"Code execution": "코드 실행",
 	"Code formatted successfully": "성공적으로 코드가 생성되었습니다",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "컬렉션",
 	"Color": "",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "비밀번호 확인",
 	"Confirm your action": "액션 확인",
 	"Confirm your new password": "새로운 비밀번호를 한 번 더 입력해 주세요",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "연결",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "WebUI 접속을 위해서는 관리자에게 연락에 연락하십시오",
@@ -216,6 +221,7 @@
 	"Copy Link": "링크 복사",
 	"Copy to clipboard": "클립보드에 복사",
 	"Copying to clipboard was successful!": "성공적으로 클립보드에 복사되었습니다!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "생성",
 	"Create a knowledge base": "지식 기반 생성",
 	"Create a model": "모델 생성",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "지식 기반에 대한 설명과 목적을 입력하세요",
 	"Description": "설명",
 	"Didn't fully follow instructions": "완전히 지침을 따르지 않음",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "제한됨",
 	"Discover a function": "함수 검색",
 	"Discover a model": "모델 검색",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "임베딩 모델을 \"{{embedding_model}}\"로 설정함",
 	"Enable API Key": "API 키 활성화",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "커뮤니티 공유 활성화",
 	"Enable Google Drive": "Google Drive 활성화",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "Bing Search V7 엔드포인트 입력",
 	"Enter Bing Search V7 Subscription Key": "Bing Search V7 구독 키 입력",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Brave Search API Key 입력",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "CFG Scale 입력 (예: 7.0)",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Google PSE 엔진 ID 입력",
 	"Enter Image Size (e.g. 512x512)": "이미지 크기 입력(예: 512x512)",
 	"Enter Jina API Key": "Jina API 키 입력",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "Kagi Search API 키 입력",
 	"Enter language codes": "언어 코드 입력",
 	"Enter Model ID": "모델 ID 입력",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "SearchApi 엔진 입력",
 	"Enter Searxng Query URL": "Searxng 쿼리 URL 입력",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Serper API 키 입력",
 	"Enter Serply API Key": "Serply API 키 입력",
 	"Enter Serpstack API Key": "Serpstack API 키 입력",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "숨기기",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "오늘 어떻게 도와드릴까요?",
 	"How would you rate this response?": "이 응답을 어떻게 평가하시겠어요?",
@@ -543,6 +560,8 @@
 	"JSON Preview": "JSON 미리 보기",
 	"July": "7월",
 	"June": "6월",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT 만료",
 	"JWT Token": "JWT 토큰",
 	"Kagi Search API Key": "Kagi Search API 키",
@@ -576,6 +595,7 @@
 	"Listening...": "듣는 중...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLM에 오류가 있을 수 있습니다. 중요한 정보는 확인이 필요합니다.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "로컬 모델",
 	"Lost": "패배",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "꼭 workflow.json 파일을 ComfyUI의 API 형식대로 내보내세요",
 	"Manage": "관리",
 	"Manage Arena Models": "아레나 모델 관리",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "Ollama API 연결 관리",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "일반 텍스트(.txt)",
 	"Playground": "놀이터",
 	"Please carefully review the following warnings:": "다음 주의를 조심히 확인해주십시오",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "프롬프트를 입력해주세요",
 	"Please fill in all fields.": "모두 빈칸없이 채워주세요",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "파이프라인 선택",
 	"Select a pipeline url": "파이프라인 URL 선택",
 	"Select a tool": "도구 선택",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "엔진 선택",
 	"Select Knowledge": "지식 기반 선택",
@@ -847,6 +870,8 @@
 	"Send message": "메시지 보내기",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "'stream_options: { include_usage: true }' 요청 보내기 \n지원되는 제공자가 토큰 사용 정보를 응답할 예정입니다",
 	"September": "9월",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Serper API 키",
 	"Serply API Key": "Serply API 키",
 	"Serpstack API Key": "Serpstack API 키",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "제목 (예: 재미있는 사실을 알려주세요)",
 	"Title Auto-Generation": "제목 자동 생성",
 	"Title cannot be an empty string.": "제목은 빈 문자열일 수 없습니다.",
+	"Title Generation": "",
 	"Title Generation Prompt": "제목 생성 프롬프트",
 	"TLS": "",
 	"To access the available model names for downloading,": "다운로드 가능한 모델명을 확인하려면,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Brave Search API raktas",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "Išvengti SSL patikros puslapiams",
+	"Calendar": "",
 	"Call": "Skambinti",
 	"Call feature is not supported when using Web STT engine": "Skambučio funkcionalumas neleidžiamas naudojant Web STT variklį",
 	"Camera": "Kamera",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "Kodas suformatuotas sėkmingai",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Kolekcija",
 	"Color": "",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Patvirtinkite slaptažodį",
 	"Confirm your action": "Patvirtinkite veiksmą",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Ryšiai",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "Susisiekite su administratoriumi dėl prieigos",
@@ -216,6 +221,7 @@
 	"Copy Link": "Kopijuoti nuorodą",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "La copie dans le presse-papiers a réussi !",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "Sukurti modelį",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "Aprašymas",
 	"Didn't fully follow instructions": "Pilnai nesekė instrukcijų",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "Išjungta",
 	"Discover a function": "Atrasti funkciją",
 	"Discover a model": "Atrasti modelį",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Embedding modelis nustatytas kaip\"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Leisti dalinimąsi su bendruomene",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Įveskite Bravo Search API raktą",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Įveskite Google PSE variklio ID",
 	"Enter Image Size (e.g. 512x512)": "Įveskite paveiksliuko dydį (pvz. 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Įveskite kalbos kodus",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "Įveskite Searxng Query nuorodą",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Įveskite Serper API raktą",
 	"Enter Serply API Key": "Įveskite Serply API raktą",
 	"Enter Serpstack API Key": "Įveskite Serpstack API raktą",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "Paslėpti",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "Kuo galėčiau Jums padėti ?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "JSON peržiūra",
 	"July": "liepa",
 	"June": "birželis",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT išėjimas iš galiojimo",
 	"JWT Token": "JWT žetonas",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "Klausoma...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "Dideli kalbos modeliai gali klysti. Patikrinkite atsakymų teisingumą.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "Lokalūs modeliai",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "Tvarkyti",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Grynas tekstas (.txt)",
 	"Playground": "Eksperimentavimo erdvė",
 	"Please carefully review the following warnings:": "Peržiūrėkite šiuos perspėjimus:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Pasirinkite procesą",
 	"Select a pipeline url": "Pasirinkite proceso nuorodą",
 	"Select a tool": "Pasirinkite įrankį",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "Siųsti žinutę",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "rugsėjis",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Serper API raktas",
 	"Serply API Key": "Serply API raktas",
 	"Serpstack API Key": "Serpstach API raktas",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Pavadinimas",
 	"Title Auto-Generation": "Automatinis pavadinimų generavimas",
 	"Title cannot be an empty string.": "Pavadinimas negali būti tuščias",
+	"Title Generation": "",
 	"Title Generation Prompt": "Pavadinimo generavimo užklausa",
 	"TLS": "",
 	"To access the available model names for downloading,": "Tam, kad prieiti prie galimų parsisiųsti modelių",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Kunci API Carian Brave",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "Pintas pengesahan SSL untuk Laman Web",
+	"Calendar": "",
 	"Call": "Hubungi",
 	"Call feature is not supported when using Web STT engine": "Ciri panggilan tidak disokong apabila menggunakan enjin Web STT",
 	"Camera": "Kamera",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "Kod berjaya diformatkan",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Koleksi",
 	"Color": "",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Sahkan kata laluan",
 	"Confirm your action": "Sahkan tindakan anda",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Sambungan",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "Hubungi admin untuk akses WebUI",
@@ -216,6 +221,7 @@
 	"Copy Link": "Salin Pautan",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "Menyalin ke papan klip berjaya!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "Cipta model",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "Penerangan",
 	"Didn't fully follow instructions": "Tidak mengikut arahan sepenuhnya",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "Dilumpuhkan",
 	"Discover a function": "Temui fungsi",
 	"Discover a model": "Temui model",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Model Benamkan ditetapkan kepada \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Benarkan Perkongsian Komuniti",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Masukkan Kekunci API carian Brave",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Masukkan Id Enjin Google PSE",
 	"Enter Image Size (e.g. 512x512)": "Masukkan Saiz Imej (cth 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Masukkan kod bahasa",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "Masukkan URL 'Searxng Query'",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Masukkan Kunci API Serper",
 	"Enter Serply API Key": "Masukkan Kunci API Serply",
 	"Enter Serpstack API Key": "Masukkan Kunci API Serpstack",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "Sembunyi",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "Bagaimana saya boleh membantu anda hari ini?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "Pratonton JSON",
 	"July": "Julai",
 	"June": "Jun",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "Tempoh Tamat JWT",
 	"JWT Token": "Token JWT",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "Mendengar...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLM boleh membuat kesilapan. Sahkan maklumat penting",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "Model Tempatan",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "Urus",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Teks biasa (.txt)",
 	"Playground": "Taman Permainan",
 	"Please carefully review the following warnings:": "Sila semak dengan teliti amaran berikut:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Pilih 'pipeline'",
 	"Select a pipeline url": "Pilih url 'pipeline'",
 	"Select a tool": "Pilih alat",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "Hantar pesanan",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "September",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Kunci API Serper",
 	"Serply API Key": "Kunci API Serply",
 	"Serpstack API Key": "Kunci API Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Tajuk (cth Beritahu saya fakta yang menyeronokkan)",
 	"Title Auto-Generation": "Penjanaan Auto Tajuk",
 	"Title cannot be an empty string.": "Tajuk tidak boleh menjadi rentetan kosong",
+	"Title Generation": "",
 	"Title Generation Prompt": "Gesaan Penjanaan Tajuk",
 	"TLS": "",
 	"To access the available model names for downloading,": "Untuk mengakses nama model yang tersedia untuk dimuat turun,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "Endepunkt for Bing Search V7",
 	"Bing Search V7 Subscription Key": "Abonnementsnøkkel for Bing Search V7",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "API-nøkkel for Brave Search",
 	"By {{name}}": "Etter {{name}}",
 	"Bypass SSL verification for Websites": "Omgå SSL-verifisering for nettsteder",
+	"Calendar": "",
 	"Call": "Ring",
 	"Call feature is not supported when using Web STT engine": "Ringefunksjonen støttes ikke når du bruker Web STT-motoren",
 	"Camera": "Kamera",
@@ -178,6 +180,8 @@
 	"Code execution": "Kodekjøring",
 	"Code formatted successfully": "Koden er formatert",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Samling",
 	"Color": "Farge",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Bekreft passordet",
 	"Confirm your action": "Bekreft handlingen",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Tilkoblinger",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "Kontakt administrator for å få tilgang til WebUI",
@@ -216,6 +221,7 @@
 	"Copy Link": "Kopier lenke",
 	"Copy to clipboard": "Kopier til utklippstavle",
 	"Copying to clipboard was successful!": "Kopiert til utklippstavlen!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "Opprett",
 	"Create a knowledge base": "Opprett en kunnskapsbase",
 	"Create a model": "Opprett en modell",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "Beskriv kunnskapsbasen din og målene dine",
 	"Description": "Beskrivelse",
 	"Didn't fully follow instructions": "Fulgte ikke instruksjonene fullstendig",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "Deaktivert",
 	"Discover a function": "Oppdag en funksjon",
 	"Discover a model": "Oppdag en modell",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Innbyggingsmodell angitt til \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "Aktiver automatisk utfylling av chatmeldinger",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Aktiver deling i fellesskap",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Aktiver Memory Locking (mlock) for å forhindre at modelldata byttes ut av RAM. Dette alternativet låser modellens arbeidssett med sider i RAM-minnet, slik at de ikke byttes ut til disk. Dette kan bidra til å opprettholde ytelsen ved å unngå sidefeil og sikre rask datatilgang.",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "Angi applikasjonens DN-passord",
 	"Enter Bing Search V7 Endpoint": "Angi endepunkt for Bing Search V7",
 	"Enter Bing Search V7 Subscription Key": "Angi abonnementsnøkkel for Bing Search V7",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Angi API-nøkkel for Brave Search",
 	"Enter certificate path": "Angi sertifikatets bane",
 	"Enter CFG Scale (e.g. 7.0)": "Angi CFG-skala (f.eks. 7,0)",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Angi motor-ID for Google PSE",
 	"Enter Image Size (e.g. 512x512)": "Angi bildestørrelse (f.eks. 512x512)",
 	"Enter Jina API Key": "Angi API-nøkkel for Jina",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Angi språkkoder",
 	"Enter Model ID": "Angi modellens ID",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "Angi motor for SearchApi",
 	"Enter Searxng Query URL": "Angi spørrings-URL for Searxng",
 	"Enter Seed": "Angi Seed",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Angi API-nøkkel for Serper",
 	"Enter Serply API Key": "Angi API-nøkkel for Serply",
 	"Enter Serpstack API Key": "Angi API-nøkkel for Serpstack",
@@ -500,6 +516,7 @@
 	"Hex Color": "Hex-farge",
 	"Hex Color - Leave empty for default color": "Hex-farge – la stå tom for standard farge",
 	"Hide": "Skjul",
+	"Home": "",
 	"Host": "Host",
 	"How can I help you today?": "Hva kan jeg hjelpe deg med i dag?",
 	"How would you rate this response?": "Hvordan vurderer du dette svaret?",
@@ -543,6 +560,8 @@
 	"JSON Preview": "Forhåndsvisning av JSON",
 	"July": "juli",
 	"June": "juni",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT-utløp",
 	"JWT Token": "JWT-token",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "Lytter ...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "Språkmodeller kan gjøre feil. Kontroller viktige opplysninger.",
+	"Loading Kokoro.js...": "",
 	"Local": "Lokal",
 	"Local Models": "Lokale modeller",
 	"Lost": "Tapt",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "Sørg for å eksportere en workflow.json-fil i API-formatet fra ComfyUI.",
 	"Manage": "Administrer",
 	"Manage Arena Models": "Behandle Arena-modeller",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "Behandle Ollama",
 	"Manage Ollama API Connections": "Behandle API-tilkoblinger for Ollama",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Ren tekst (.txt)",
 	"Playground": "Lekeplass",
 	"Please carefully review the following warnings:": "Les gjennom følgende advarsler grundig:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "Angi en ledetekst",
 	"Please fill in all fields.": "Fyll i alle felter",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Velg en pipeline",
 	"Select a pipeline url": "Velg en pipeline-URL",
 	"Select a tool": "Velg et verktøy",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "Velg motor",
 	"Select Knowledge": "Velg kunnskap",
@@ -847,6 +870,8 @@
 	"Send message": "Send melding",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "Sender `stream_options: { include_usage: true }` i forespørselen.\nStøttede leverandører returnerer informasjon i svaret om bruk av token når denne parameteren er angitt.",
 	"September": "september",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "API-nøkkel for Serper",
 	"Serply API Key": "API-nøkkel for Serply",
 	"Serpstack API Key": "API-nøkkel for Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Tittel (f.eks. Fortell meg noe morsomt)",
 	"Title Auto-Generation": "Automatisk tittelgenerering",
 	"Title cannot be an empty string.": "Tittel kan ikke være en tom streng.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Ledetekst for tittelgenerering",
 	"TLS": "TLS",
 	"To access the available model names for downloading,": "Hvis du vil ha tilgang til modellnavn tilgjengelige for nedlasting,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "Bing Search V7 Endpoint",
 	"Bing Search V7 Subscription Key": "Bing Search V7 Subscription Key",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Brave Search API-sleutel",
 	"By {{name}}": "Op {{name}}",
 	"Bypass SSL verification for Websites": "SSL-verificatie omzeilen voor websites",
+	"Calendar": "",
 	"Call": "Oproep",
 	"Call feature is not supported when using Web STT engine": "Belfunctie wordt niet ondersteund bij gebruik van de Web STT engine",
 	"Camera": "Camera",
@@ -178,6 +180,8 @@
 	"Code execution": "Code uitvoeren",
 	"Code formatted successfully": "Code succesvol geformateerd",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Verzameling",
 	"Color": "Kleur",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Bevestig wachtwoord",
 	"Confirm your action": "Bevestig uw actie",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Verbindingen",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "Neem contact op met de beheerder voor WebUI-toegang",
@@ -216,6 +221,7 @@
 	"Copy Link": "Kopieer link",
 	"Copy to clipboard": "Kopier naar klembord",
 	"Copying to clipboard was successful!": "Kopiëren naar klembord was succesvol!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "Aanmaken",
 	"Create a knowledge base": "Maak een kennisbasis aan",
 	"Create a model": "Een model maken",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "Beschrijf je kennisbasis en doelstellingen",
 	"Description": "Beschrijving",
 	"Didn't fully follow instructions": "Heeft niet alle instructies gevolgt",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "Uitgeschakeld",
 	"Discover a function": "Ontdek een functie",
 	"Discover a model": "Ontdek een model",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Embedding model ingesteld op \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Delen via de community inschakelen",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Schakel Memory Locking (mlock) in om te voorkomen dat modelgegevens uit het RAM worden verwisseld. Deze optie vergrendelt de werkset pagina's van het model in het RAM, zodat ze niet naar de schijf worden uitgewisseld. Dit kan helpen om de prestaties op peil te houden door paginafouten te voorkomen en snelle gegevenstoegang te garanderen.",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "Voer applicatie-DN wachtwoord in",
 	"Enter Bing Search V7 Endpoint": "Voer Bing Search V7 Endpoint in",
 	"Enter Bing Search V7 Subscription Key": "Voer Bing Search V7 abonnementscode in",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Voer de Brave Search API-sleutel in",
 	"Enter certificate path": "Voer certificaatpad in",
 	"Enter CFG Scale (e.g. 7.0)": "Voer CFG schaal in (bv. 7.0)",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Voer Google PSE Engine-ID in",
 	"Enter Image Size (e.g. 512x512)": "Voeg afbeelding formaat toe (Bijv. 512x512)",
 	"Enter Jina API Key": "Voer Jina API-sleutel in",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Voeg taal codes toe",
 	"Enter Model ID": "Voer model-ID in",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "Voer SearchApi-Engine in",
 	"Enter Searxng Query URL": "Voer de URL van de Searxng-query in",
 	"Enter Seed": "Voer Seed in",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Voer de Serper API-sleutel in",
 	"Enter Serply API Key": "Voer Serply API-sleutel in",
 	"Enter Serpstack API Key": "Voer de Serpstack API-sleutel in",
@@ -500,6 +516,7 @@
 	"Hex Color": "Hex-kleur",
 	"Hex Color - Leave empty for default color": "Hex-kleur - laat leeg voor standaardkleur",
 	"Hide": "Verberg",
+	"Home": "",
 	"Host": "Host",
 	"How can I help you today?": "Hoe kan ik je vandaag helpen?",
 	"How would you rate this response?": "Hoe zou je dit antwoord beoordelen?",
@@ -543,6 +560,8 @@
 	"JSON Preview": "JSON-voorbeeld",
 	"July": "Juli",
 	"June": "Juni",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT Expiration",
 	"JWT Token": "JWT Token",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "Aan het luisteren...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLMs kunnen fouten maken. Verifieer belangrijke informatie.",
+	"Loading Kokoro.js...": "",
 	"Local": "Lokaal",
 	"Local Models": "Lokale modellen",
 	"Lost": "Verloren",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "Zorg ervoor dat je een workflow.json-bestand als API-formaat exporteert vanuit ComfyUI.",
 	"Manage": "Beheren",
 	"Manage Arena Models": "Beheer srenamodellen",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "Beheer Ollama",
 	"Manage Ollama API Connections": "Beheer Ollama API-verbindingen",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Platte tekst (.txt)",
 	"Playground": "Speeltuin",
 	"Please carefully review the following warnings:": "Beoordeel de volgende waarschuwingen nauwkeurig:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "Voer een prompt in",
 	"Please fill in all fields.": "Voer alle velden in",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Selecteer een pijplijn",
 	"Select a pipeline url": "Selecteer een pijplijn-URL",
 	"Select a tool": "Selecteer een tool",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "Selecteer Engine",
 	"Select Knowledge": "Selecteer kennis",
@@ -847,6 +870,8 @@
 	"Send message": "Stuur bericht",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "Stuurt `stream_options: { include_usage: true }` in het verzoek. \nOndersteunde providers zullen informatie over tokengebruik in het antwoord terugsturen als dit aan staat.",
 	"September": "September",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Serper API-sleutel",
 	"Serply API Key": "Serply API-sleutel",
 	"Serpstack API Key": "Serpstack API-sleutel",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Titel (bv. Vertel me een leuke gebeurtenis)",
 	"Title Auto-Generation": "Titel Auto-Generatie",
 	"Title cannot be an empty string.": "Titel kan niet leeg zijn.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Titel Generatie Prompt",
 	"TLS": "TLS",
 	"To access the available model names for downloading,": "Om de beschikbare modelnamen voor downloaden te openen,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "ਬਹਾਦਰ ਖੋਜ API ਕੁੰਜੀ",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "ਵੈਬਸਾਈਟਾਂ ਲਈ SSL ਪ੍ਰਮਾਣਿਕਤਾ ਨੂੰ ਬਾਈਪਾਸ ਕਰੋ",
+	"Calendar": "",
 	"Call": "",
 	"Call feature is not supported when using Web STT engine": "",
 	"Camera": "",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "ਸੰਗ੍ਰਹਿ",
 	"Color": "",
 	"ComfyUI": "ਕੰਫੀਯੂਆਈ",
@@ -194,6 +198,7 @@
 	"Confirm Password": "ਪਾਸਵਰਡ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ",
 	"Confirm your action": "",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "ਕਨੈਕਸ਼ਨ",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "",
@@ -216,6 +221,7 @@
 	"Copy Link": "ਲਿੰਕ ਕਾਪੀ ਕਰੋ",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਕਰਨਾ ਸਫਲ ਰਿਹਾ!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "ਇੱਕ ਮਾਡਲ ਬਣਾਓ",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "ਵਰਣਨਾ",
 	"Didn't fully follow instructions": "ਹਦਾਇਤਾਂ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਫਾਲੋ ਨਹੀਂ ਕੀਤਾ",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "",
 	"Discover a function": "",
 	"Discover a model": "ਇੱਕ ਮਾਡਲ ਲੱਭੋ",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "ਐਮਬੈੱਡਿੰਗ ਮਾਡਲ ਨੂੰ \"{{embedding_model}}\" 'ਤੇ ਸੈੱਟ ਕੀਤਾ ਗਿਆ",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "ਕਮਿਊਨਿਟੀ ਸ਼ੇਅਰਿੰਗ ਨੂੰ ਸਮਰੱਥ ਕਰੋ",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "ਬਹਾਦਰ ਖੋਜ API ਕੁੰਜੀ ਦਾਖਲ ਕਰੋ",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Google PSE ਇੰਜਣ ID ਦਾਖਲ ਕਰੋ",
 	"Enter Image Size (e.g. 512x512)": "ਚਿੱਤਰ ਆਕਾਰ ਦਰਜ ਕਰੋ (ਉਦਾਹਰਣ ਲਈ 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "ਭਾਸ਼ਾ ਕੋਡ ਦਰਜ ਕਰੋ",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "Searxng Query URL ਦਾਖਲ ਕਰੋ",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Serper API ਕੁੰਜੀ ਦਾਖਲ ਕਰੋ",
 	"Enter Serply API Key": "",
 	"Enter Serpstack API Key": "Serpstack API ਕੁੰਜੀ ਦਾਖਲ ਕਰੋ",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "ਲੁਕਾਓ",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "ਮੈਂ ਅੱਜ ਤੁਹਾਡੀ ਕਿਵੇਂ ਮਦਦ ਕਰ ਸਕਦਾ ਹਾਂ?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "JSON ਪੂਰਵ-ਦਰਸ਼ਨ",
 	"July": "ਜੁਲਾਈ",
 	"June": "ਜੂਨ",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT ਮਿਆਦ ਖਤਮ",
 	"JWT Token": "JWT ਟੋਕਨ",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLMs ਗਲਤੀਆਂ ਕਰ ਸਕਦੇ ਹਨ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ।",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "ਸਧਾਰਨ ਪਾਠ (.txt)",
 	"Playground": "ਖੇਡ ਦਾ ਮੈਦਾਨ",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "ਪਾਈਪਲਾਈਨ ਚੁਣੋ",
 	"Select a pipeline url": "ਪਾਈਪਲਾਈਨ URL ਚੁਣੋ",
 	"Select a tool": "",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "ਸੁਨੇਹਾ ਭੇਜੋ",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "ਸਤੰਬਰ",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Serper API ਕੁੰਜੀ",
 	"Serply API Key": "",
 	"Serpstack API Key": "Serpstack API ਕੁੰਜੀ",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "ਸਿਰਲੇਖ (ਉਦਾਹਰਣ ਲਈ ਮੈਨੂੰ ਇੱਕ ਮਜ਼ੇਦਾਰ ਤੱਥ ਦੱਸੋ)",
 	"Title Auto-Generation": "ਸਿਰਲੇਖ ਆਟੋ-ਜਨਰੇਸ਼ਨ",
 	"Title cannot be an empty string.": "ਸਿਰਲੇਖ ਖਾਲੀ ਸਤਰ ਨਹੀਂ ਹੋ ਸਕਦਾ।",
+	"Title Generation": "",
 	"Title Generation Prompt": "ਸਿਰਲੇਖ ਜਨਰੇਸ਼ਨ ਪ੍ਰੰਪਟ",
 	"TLS": "",
 	"To access the available model names for downloading,": "ਡਾਊਨਲੋਡ ਕਰਨ ਲਈ ਉਪਲਬਧ ਮਾਡਲ ਨਾਮਾਂ ਤੱਕ ਪਹੁੰਚਣ ਲਈ,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Klucz API wyszukiwania Brave",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "Pomiń weryfikację SSL dla stron webowych",
+	"Calendar": "",
 	"Call": "",
 	"Call feature is not supported when using Web STT engine": "",
 	"Camera": "",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Kolekcja",
 	"Color": "",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Potwierdź hasło",
 	"Confirm your action": "",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Połączenia",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "",
@@ -216,6 +221,7 @@
 	"Copy Link": "Kopiuj link",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "Kopiowanie do schowka zakończone powodzeniem!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "Tworzenie modelu",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "Opis",
 	"Didn't fully follow instructions": "Nie postępował zgodnie z instrukcjami",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "",
 	"Discover a function": "",
 	"Discover a model": "Odkryj model",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Model osadzania ustawiono na \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Włączanie udostępniania społecznościowego",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Wprowadź klucz API Brave Search",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Wprowadź identyfikator aparatu Google PSE",
 	"Enter Image Size (e.g. 512x512)": "Wprowadź rozmiar obrazu (np. 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Wprowadź kody języków",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "Wprowadź adres URL zapytania Searxng",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Wprowadź klucz API Serper",
 	"Enter Serply API Key": "",
 	"Enter Serpstack API Key": "Wprowadź klucz API Serpstack",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "Ukryj",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "Jak mogę Ci dzisiaj pomóc?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "JSON (wersja zapoznawcza)",
 	"July": "Lipiec",
 	"June": "Czerwiec",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "Wygaśnięcie JWT",
 	"JWT Token": "Token JWT",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLMy mogą popełniać błędy. Zweryfikuj ważne informacje.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Zwykły tekst (.txt)",
 	"Playground": "Plac zabaw",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Wybieranie potoku",
 	"Select a pipeline url": "Wybieranie adresu URL potoku",
 	"Select a tool": "",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "Wyślij wiadomość",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "Wrzesień",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Klucz API Serper",
 	"Serply API Key": "",
 	"Serpstack API Key": "Klucz API Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Tytuł (np. Powiedz mi jakiś zabawny fakt)",
 	"Title Auto-Generation": "Automatyczne generowanie tytułu",
 	"Title cannot be an empty string.": "Tytuł nie może być pusty",
+	"Title Generation": "",
 	"Title Generation Prompt": "Prompt generowania tytułu",
 	"TLS": "",
 	"To access the available model names for downloading,": "Aby uzyskać dostęp do dostępnych nazw modeli do pobrania,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Chave API do Brave Search",
 	"By {{name}}": "Por {{name}}",
 	"Bypass SSL verification for Websites": "Ignorar verificação SSL para Sites",
+	"Calendar": "",
 	"Call": "Chamada",
 	"Call feature is not supported when using Web STT engine": "O recurso de chamada não é suportado ao usar o mecanismo Web STT",
 	"Camera": "Câmera",
@@ -178,6 +180,8 @@
 	"Code execution": "Execução de código",
 	"Code formatted successfully": "Código formatado com sucesso",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Coleção",
 	"Color": "Cor",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Confirmar Senha",
 	"Confirm your action": "Confirme sua ação",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Conexões",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "Contate o Admin para Acesso ao WebUI",
@@ -216,6 +221,7 @@
 	"Copy Link": "Copiar Link",
 	"Copy to clipboard": "Copiar para a área de transferência",
 	"Copying to clipboard was successful!": "Cópia para a área de transferência bem-sucedida!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "Criar",
 	"Create a knowledge base": "Criar uma base de conhecimento",
 	"Create a model": "Criar um modelo",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "Descreva sua base de conhecimento e objetivos",
 	"Description": "Descrição",
 	"Didn't fully follow instructions": "Não seguiu completamente as instruções",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "Desativado",
 	"Discover a function": "Descubra uma função",
 	"Discover a model": "Descubra um modelo",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Modelo de embedding definido para \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Ativar Compartilhamento com a Comunidade",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Habilite o bloqueio de memória (mlock) para evitar que os dados do modelo sejam transferidos da RAM para a área de troca (swap). Essa opção bloqueia o conjunto de páginas em uso pelo modelo na RAM, garantindo que elas não sejam transferidas para o disco. Isso pode ajudar a manter o desempenho, evitando falhas de página e garantindo acesso rápido aos dados.",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "Digite a Senha do DN da Aplicação",
 	"Enter Bing Search V7 Endpoint": "Digite o Endpoint do Bing Search V7",
 	"Enter Bing Search V7 Subscription Key": "Digite a Chave de Assinatura do Bing Search V7",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Digite a Chave API do Brave Search",
 	"Enter certificate path": "Digite o caminho do certificado",
 	"Enter CFG Scale (e.g. 7.0)": "Digite a escala de CFG (por exemplo, 7.0)",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Digite o ID do Motor do Google PSE",
 	"Enter Image Size (e.g. 512x512)": "Digite o Tamanho da Imagem (por exemplo, 512x512)",
 	"Enter Jina API Key": "Digite a Chave API Jina",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Digite os códigos de idioma",
 	"Enter Model ID": "Digite o ID do modelo",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "Digite o Motor do SearchApi",
 	"Enter Searxng Query URL": "Digite a URL de Consulta do Searxng",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Digite a Chave API do Serper",
 	"Enter Serply API Key": "Digite a Chave API do Serply",
 	"Enter Serpstack API Key": "Digite a Chave API do Serpstack",
@@ -500,6 +516,7 @@
 	"Hex Color": "Cor hexadecimal",
 	"Hex Color - Leave empty for default color": "Cor Hexadecimal - Deixe em branco para a cor padrão",
 	"Hide": "Ocultar",
+	"Home": "",
 	"Host": "Servidor",
 	"How can I help you today?": "Como posso ajudar você hoje?",
 	"How would you rate this response?": "Como você avalia essa resposta?",
@@ -543,6 +560,8 @@
 	"JSON Preview": "Pré-visualização JSON",
 	"July": "Julho",
 	"June": "Junho",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "Expiração do JWT",
 	"JWT Token": "Token JWT",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "Escutando...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLMs podem cometer erros. Verifique informações importantes.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "Modelos Locais",
 	"Lost": "Perdeu",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "Certifique-se de exportar um arquivo workflow.json como o formato API do ComfyUI.",
 	"Manage": "Gerenciar",
 	"Manage Arena Models": "Gerenciar Arena de Modelos",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "Gerenciar Ollama",
 	"Manage Ollama API Connections": "Gerenciar Conexões Ollama API",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Texto simples (.txt)",
 	"Playground": "Playground",
 	"Please carefully review the following warnings:": "Por favor, revise cuidadosamente os seguintes avisos:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "Por favor, digite um prompt",
 	"Please fill in all fields.": "Por favor, preencha todos os campos.",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Selecione um pipeline",
 	"Select a pipeline url": "Selecione uma URL de pipeline",
 	"Select a tool": "Selecione uma ferramenta",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "Selecionar Motor",
 	"Select Knowledge": "Selecionar Conhecimento",
@@ -847,6 +870,8 @@
 	"Send message": "Enviar mensagem",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "Envia `stream_options: { include_usage: true }` na solicitação. Provedores compatíveis retornarão informações sobre o uso de tokens na resposta quando configurado.",
 	"September": "Setembro",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Chave da API Serper",
 	"Serply API Key": "Chave da API Serply",
 	"Serpstack API Key": "Chave da API Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Título (por exemplo, Conte-me um fato divertido)",
 	"Title Auto-Generation": "Geração Automática de Título",
 	"Title cannot be an empty string.": "O Título não pode ser uma string vazia.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Prompt de Geração de Título",
 	"TLS": "",
 	"To access the available model names for downloading,": "Para acessar os nomes de modelos disponíveis para download,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Chave da API de Pesquisa Brave",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "Ignorar verificação SSL para sites",
+	"Calendar": "",
 	"Call": "Chamar",
 	"Call feature is not supported when using Web STT engine": "A funcionalide de Chamar não é suportada quando usa um motor Web STT",
 	"Camera": "Camera",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Coleção",
 	"Color": "",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Confirmar Senha",
 	"Confirm your action": "",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Conexões",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "Contatar Admin para acesso ao WebUI",
@@ -216,6 +221,7 @@
 	"Copy Link": "Copiar link",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "Cópia para a área de transferência bem-sucedida!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "Criar um modelo",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "Descrição",
 	"Didn't fully follow instructions": "Não seguiu instruções com precisão",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "",
 	"Discover a function": "",
 	"Discover a model": "Descubra um modelo",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Modelo de Embedding definido como \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Active a Partilha da Comunidade",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Escreva a chave da API do Brave Search",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Escreva o ID do mecanismo PSE do Google",
 	"Enter Image Size (e.g. 512x512)": "Escreva o Tamanho da Imagem (por exemplo, 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Escreva os códigos de idioma",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "Escreva o URL da Pesquisa Searxng",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Escreva a chave da API Serper",
 	"Enter Serply API Key": "",
 	"Enter Serpstack API Key": "Escreva a chave da API Serpstack",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "Ocultar",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "Como posso ajudá-lo hoje?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "Pré-visualização JSON",
 	"July": "Julho",
 	"June": "Junho",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "Expiração JWT",
 	"JWT Token": "Token JWT",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "A escutar...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLMs podem cometer erros. Verifique informações importantes.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "Modelos Locais",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "Gerir",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Texto sem formatação (.txt)",
 	"Playground": "Recreio",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Selecione um pipeline",
 	"Select a pipeline url": "Selecione um URL de pipeline",
 	"Select a tool": "",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "Enviar mensagem",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "Setembro",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Chave API Serper",
 	"Serply API Key": "",
 	"Serpstack API Key": "Chave da API Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Título (ex.: Diz-me um facto divertido)",
 	"Title Auto-Generation": "Geração Automática de Título",
 	"Title cannot be an empty string.": "Título não pode ser uma string vazia.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Prompt de Geração de Título",
 	"TLS": "",
 	"To access the available model names for downloading,": "Para aceder aos nomes de modelo disponíveis para descarregar,",

+ 80 - 54
src/lib/i18n/locales/ro-RO/translation.json

@@ -23,51 +23,51 @@
 	"Activate this command by typing \"/{{COMMAND}}\" to chat input.": "",
 	"Active Users": "Utilizatori activi",
 	"Add": "Adaugă",
-	"Add a model ID": "",
+	"Add a model ID": "Adaugă un ID de model",
 	"Add a short description about what this model does": "Adaugă o scurtă descriere despre ce face acest model",
 	"Add a tag": "Adaugă o etichetă",
 	"Add Arena Model": "Adaugă Modelul Arena",
-	"Add Connection": "",
+	"Add Connection": "Adaugă conexiune",
 	"Add Content": "Adăugați conținut",
 	"Add content here": "Adăugați conținut aici",
 	"Add custom prompt": "Adaugă prompt personalizat",
-	"Add Files": "Adaugă Fișiere",
-	"Add Group": "",
-	"Add Memory": "Adaugă Memorie",
-	"Add Model": "Adaugă Model",
-	"Add Reaction": "",
-	"Add Tag": "Adaugă Etichetă",
-	"Add Tags": "Adaugă Etichete",
+	"Add Files": "Adaugă fișiere",
+	"Add Group": "Adaugă grup",
+	"Add Memory": "Adaugă memorie",
+	"Add Model": "Adaugă model",
+	"Add Reaction": "Adaugă reacție",
+	"Add Tag": "Adaugă etichetă",
+	"Add Tags": "Adaugă etichete",
 	"Add text content": "Adăugați conținut textual",
-	"Add User": "Adaugă Utilizator",
-	"Add User Group": "",
+	"Add User": "Adaugă utilizator",
+	"Add User Group": "Adaugă grup de utilizatori",
 	"Adjusting these settings will apply changes universally to all users.": "Ajustarea acestor setări va aplica modificările universal pentru toți utilizatorii.",
 	"admin": "administrator",
 	"Admin": "Administrator",
-	"Admin Panel": "Panoul de Administrare",
-	"Admin Settings": "Setări de Administrator",
+	"Admin Panel": "Panoul de administrare",
+	"Admin Settings": "Setări pentru administrator",
 	"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Administratorii au acces la toate instrumentele în orice moment; utilizatorii au nevoie de instrumente asignate pe model în spațiul de lucru.",
-	"Advanced Parameters": "Parametri Avansați",
-	"Advanced Params": "Parametri Avansați",
-	"All Documents": "Toate Documentele",
-	"All models deleted successfully": "",
-	"Allow Chat Controls": "",
-	"Allow Chat Delete": "",
-	"Allow Chat Deletion": "Permite Ștergerea Conversațiilor",
-	"Allow Chat Edit": "",
-	"Allow File Upload": "",
+	"Advanced Parameters": "Parametri avansați",
+	"Advanced Params": "Parametri avansați",
+	"All Documents": "Toate documentele",
+	"All models deleted successfully": "Toate modelele au fost șterse cu succes",
+	"Allow Chat Controls": "Permite controalele chat-ului",
+	"Allow Chat Delete": "Permite ștergerea chat-ului",
+	"Allow Chat Deletion": "Permite ștergerea conversațiilor",
+	"Allow Chat Edit": "Permite editarea chat-ului",
+	"Allow File Upload": "Permite încărcarea fișierelor",
 	"Allow non-local voices": "Permite voci non-locale",
-	"Allow Temporary Chat": "Permite Chat Temporar",
-	"Allow User Location": "Permite Localizarea Utilizatorului",
-	"Allow Voice Interruption in Call": "Permite Întreruperea Vocii în Apel",
+	"Allow Temporary Chat": "Permite chat temporar",
+	"Allow User Location": "Permite localizarea utilizatorului",
+	"Allow Voice Interruption in Call": "Permite intreruperea vocii în apel",
 	"Allowed Endpoints": "",
 	"Already have an account?": "Deja ai un cont?",
 	"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
-	"Always": "",
-	"Amazing": "",
+	"Always": "Întotdeauna",
+	"Amazing": "Uimitor",
 	"an assistant": "un asistent",
-	"Analyzed": "",
-	"Analyzing...": "",
+	"Analyzed": "Analizat",
+	"Analyzing...": "Se analizează...",
 	"and": "și",
 	"and {{COUNT}} more": "și {{COUNT}} mai multe",
 	"and create a new shared link.": "și creează un nou link partajat.",
@@ -84,9 +84,9 @@
 	"Archive All Chats": "Arhivează Toate Conversațiile",
 	"Archived Chats": "Conversații Arhivate",
 	"archived-chat-export": "",
-	"Are you sure you want to delete this channel?": "",
-	"Are you sure you want to delete this message?": "",
-	"Are you sure you want to unarchive all archived chats?": "",
+	"Are you sure you want to delete this channel?": "Ești sigur că vrei să ștergi acest canal?",
+	"Are you sure you want to delete this message?": "Ești sigur că vrei să ștergi acest mesaj?",
+	"Are you sure you want to unarchive all archived chats?": "Ești sigur că vrei să dezarhivezi toate conversațiile arhivate?",
 	"Are you sure?": "Ești sigur?",
 	"Arena Models": "Arena Models",
 	"Artifacts": "Artefacte",
@@ -98,7 +98,7 @@
 	"Attribute for Username": "",
 	"Audio": "Audio",
 	"August": "August",
-	"Authenticate": "",
+	"Authenticate": "Autentificare",
 	"Auto-Copy Response to Clipboard": "Copiere Automată a Răspunsului în Clipboard",
 	"Auto-playback response": "Redare automată a răspunsului",
 	"Autocomplete Generation": "",
@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Cheie API Brave Search",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "Ocolește verificarea SSL pentru site-uri web",
+	"Calendar": "",
 	"Call": "Apel",
 	"Call feature is not supported when using Web STT engine": "Funcția de apel nu este suportată când se utilizează motorul Web STT",
 	"Camera": "Cameră",
@@ -154,11 +156,11 @@
 	"Chunk Overlap": "Suprapunere Bloc",
 	"Chunk Params": "Parametri Bloc",
 	"Chunk Size": "Dimensiune Bloc",
-	"Ciphers": "",
+	"Ciphers": "Cifruri",
 	"Citation": "Citație",
 	"Clear memory": "Șterge memoria",
-	"click here": "",
-	"Click here for filter guides.": "",
+	"click here": "apasă aici.",
+	"Click here for filter guides.": "Apasă aici pentru ghidul de filtrare.",
 	"Click here for help.": "Apasă aici pentru ajutor.",
 	"Click here to": "Apasă aici pentru",
 	"Click here to download user import template file.": "Apasă aici pentru a descărca fișierul șablon de import utilizator.",
@@ -172,14 +174,16 @@
 	"Click on the user role button to change a user's role.": "Apasă pe butonul rolului utilizatorului pentru a schimba rolul unui utilizator.",
 	"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "Permisiunea de scriere în clipboard a fost refuzată. Vă rugăm să verificați setările browserului pentru a acorda accesul necesar.",
 	"Clone": "Clonează",
-	"Clone Chat": "",
+	"Clone Chat": "Clonează chat",
 	"Clone of {{TITLE}}": "",
 	"Close": "Închide",
 	"Code execution": "Executarea codului",
 	"Code formatted successfully": "Cod formatat cu succes",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Colecție",
-	"Color": "",
+	"Color": "Culoare",
 	"ComfyUI": "ComfyUI",
 	"ComfyUI API Key": "",
 	"ComfyUI Base URL": "URL De Bază ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Confirmă Parola",
 	"Confirm your action": "Confirmă acțiunea ta",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Conexiuni",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "Contactează administratorul pentru acces WebUI",
@@ -216,6 +221,7 @@
 	"Copy Link": "Copiază Link",
 	"Copy to clipboard": "Copiază în clipboard",
 	"Copying to clipboard was successful!": "Copierea în clipboard a fost realizată cu succes!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "Creează un model",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "Descriere",
 	"Didn't fully follow instructions": "Nu a urmat complet instrucțiunile",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "Dezactivat",
 	"Discover a function": "Descoperă o funcție",
 	"Discover a model": "Descoperă un model",
@@ -312,12 +321,12 @@
 	"e.g. Tools for performing various operations": "",
 	"Edit": "Editează",
 	"Edit Arena Model": "Editați Modelul Arena",
-	"Edit Channel": "",
-	"Edit Connection": "",
-	"Edit Default Permissions": "",
+	"Edit Channel": "Editează canalul",
+	"Edit Connection": "Editează conexiunea",
+	"Edit Default Permissions": "Editează permisiunile implicite",
 	"Edit Memory": "Editează Memorie",
 	"Edit User": "Editează Utilizator",
-	"Edit User Group": "",
+	"Edit User Group": "Editează grupul de utilizatori",
 	"ElevenLabs": "ElevenLabs",
 	"Email": "Email",
 	"Embark on adventures": "",
@@ -325,10 +334,11 @@
 	"Embedding Model": "Model de Încapsulare",
 	"Embedding Model Engine": "Motor de Model de Încapsulare",
 	"Embedding model set to \"{{embedding_model}}\"": "Modelul de încapsulare setat la \"{{embedding_model}}\"",
-	"Enable API Key": "",
-	"Enable autocomplete generation for chat messages": "",
+	"Enable API Key": "Activează cheia API",
+	"Enable autocomplete generation for chat messages": "Activează generarea automată pentru mesajele de chat",
+	"Enable Code Interpreter": "Activează interpretul de cod",
 	"Enable Community Sharing": "Activează Partajarea Comunitară",
-	"Enable Google Drive": "",
+	"Enable Google Drive": "Activează Google Drive",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
 	"Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "",
 	"Enable Message Rating": "Activează Evaluarea Mesajelor",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Introduceți Cheia API Brave Search",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "Introduceți Scara CFG (de ex. 7.0)",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Introduceți ID-ul Motorului Google PSE",
 	"Enter Image Size (e.g. 512x512)": "Introduceți Dimensiunea Imaginii (de ex. 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Introduceți codurile limbilor",
 	"Enter Model ID": "Introdu codul modelului",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "Introduceți motorul SearchApi",
 	"Enter Searxng Query URL": "Introduceți URL-ul Interogării Searxng",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Introduceți Cheia API Serper",
 	"Enter Serply API Key": "Introduceți Cheia API Serply",
 	"Enter Serpstack API Key": "Introduceți Cheia API Serpstack",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "Ascunde",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "Cum te pot ajuta astăzi?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "Previzualizare JSON",
 	"July": "Iulie",
 	"June": "Iunie",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "Expirarea JWT",
 	"JWT Token": "Token JWT",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "Ascult...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLM-urile pot face greșeli. Verificați informațiile importante.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "Modele Locale",
 	"Lost": "Pierdut",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "Asigură-te că exporți un fișier {{workflow.json}} în format API din {{ComfyUI}}.",
 	"Manage": "Gestionează",
 	"Manage Arena Models": "Gestionați Modelele Arena",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Text simplu (.txt)",
 	"Playground": "Teren de Joacă",
 	"Please carefully review the following warnings:": "Vă rugăm să revizuiți cu atenție următoarele avertismente:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "Te rog să introduci un mesaj",
 	"Please fill in all fields.": "Vă rugăm să completați toate câmpurile.",
 	"Please select a model first.": "",
@@ -756,7 +778,7 @@
 	"RAG Template": "Șablon RAG",
 	"Rating": "Evaluare",
 	"Re-rank models by topic similarity": "Reordonează modelele în funcție de similaritatea tematică",
-	"Read": "",
+	"Read": "Citește",
 	"Read Aloud": "Citește cu Voce Tare",
 	"Reasoning Effort": "",
 	"Record voice": "Înregistrează vocea",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Selectează o conductă",
 	"Select a pipeline url": "Selectează un URL de conductă",
 	"Select a tool": "Selectează un instrument",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "Selectează motorul",
 	"Select Knowledge": "Selectarea cunoștințelor (Knowledge Selection) este un proces esențial în multiple domenii, incluzând inteligența artificială și învățarea automată. Aceasta presupune alegerea corectă a informațiilor sau datelor relevante dintr-un set mai mare pentru a le utiliza în analize, modele sau sisteme specifice. De exemplu, în învățarea automată, selectarea caracteristicilor este un aspect al selectării cunoștințelor și implică alegerea celor mai relevante date de intrare care contribuie la îmbunătățirea preciziei modelului.",
@@ -847,6 +870,8 @@
 	"Send message": "Trimite mesajul",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "Trimite `stream_options: { include_usage: true }` în cerere. Furnizorii care suportă această opțiune vor returna informații despre utilizarea token-urilor în răspuns când este setată.",
 	"September": "Septembrie",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Cheie API Serper",
 	"Serply API Key": "Cheie API Serply",
 	"Serpstack API Key": "Cheie API Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Titlu (de ex. Spune-mi un fapt amuzant)",
 	"Title Auto-Generation": "Generare Automată a Titlului",
 	"Title cannot be an empty string.": "Titlul nu poate fi un șir gol.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Prompt de Generare a Titlului",
 	"TLS": "",
 	"To access the available model names for downloading,": "Pentru a accesa numele modelelor disponibile pentru descărcare,",
@@ -999,14 +1025,14 @@
 	"TTS Voice": "Voce TTS",
 	"Type": "Tip",
 	"Type Hugging Face Resolve (Download) URL": "Introduceți URL-ul de Rezolvare (Descărcare) Hugging Face",
-	"Uh-oh! There was an issue with the response.": "",
+	"Uh-oh! There was an issue with the response.": "Oh, nu! A apărut o problemă cu răspunsul.",
 	"UI": "Interfață Utilizator",
-	"Unarchive All": "",
-	"Unarchive All Archived Chats": "",
-	"Unarchive Chat": "",
+	"Unarchive All": "Dezarhivează tot",
+	"Unarchive All Archived Chats": "Dezarhivează toate conversațiile arhivate",
+	"Unarchive Chat": "Dezarhivează conversația",
 	"Unlock mysteries": "",
 	"Unpin": "Anulează Fixarea",
-	"Unravel secrets": "",
+	"Unravel secrets": "Dezvăluie secretele",
 	"Untagged": "Netichetat",
 	"Update": "Actualizează",
 	"Update and Copy Link": "Actualizează și Copiază Link-ul",
@@ -1045,8 +1071,8 @@
 	"variable to have them replaced with clipboard content.": "variabilă pentru a fi înlocuite cu conținutul clipboard-ului.",
 	"Version": "Versiune",
 	"Version {{selectedVersion}} of {{totalVersions}}": "Versiunea {{selectedVersion}} din {{totalVersions}}",
-	"View Replies": "",
-	"Visibility": "",
+	"View Replies": "Vezi răspunsurile",
+	"Visibility": "Vizibilitate",
 	"Voice": "Voce",
 	"Voice Input": "Intrare vocală",
 	"Warning": "Avertisment",
@@ -1077,7 +1103,7 @@
 	"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text. (Default: 0.9)": "",
 	"Workspace": "Spațiu de Lucru",
 	"Workspace Permissions": "",
-	"Write": "",
+	"Write": "Scrie",
 	"Write a prompt suggestion (e.g. Who are you?)": "Scrieți o sugestie de prompt (de ex. Cine ești?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "Scrieți un rezumat în 50 de cuvinte care rezumă [subiect sau cuvânt cheie].",
 	"Write something...": "Scrie ceva...",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "Конечная точка поиска Bing V7",
 	"Bing Search V7 Subscription Key": "Ключ API Bing Search V7",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Ключ API поиска Brave",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "Обход проверки SSL для веб-сайтов",
+	"Calendar": "",
 	"Call": "Вызов",
 	"Call feature is not supported when using Web STT engine": "Функция вызова не поддерживается при использовании Web STT (распознавание речи) движка",
 	"Camera": "Камера",
@@ -178,6 +180,8 @@
 	"Code execution": "Выполнение кода",
 	"Code formatted successfully": "Код успешно отформатирован",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Коллекция",
 	"Color": "Цвет",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Подтвердите пароль",
 	"Confirm your action": "Подтвердите свое действие",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Соединение",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "Обратитесь к администратору для получения доступа к WebUI",
@@ -216,6 +221,7 @@
 	"Copy Link": "Копировать ссылку",
 	"Copy to clipboard": "Скопировать в буфер обмена",
 	"Copying to clipboard was successful!": "Копирование в буфер обмена прошло успешно!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "Создать",
 	"Create a knowledge base": "Создайте базу знаний",
 	"Create a model": "Создание модели",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "Опишите свою базу знаний и цели",
 	"Description": "Описание",
 	"Didn't fully follow instructions": "Не полностью следует инструкциям",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "Отключено",
 	"Discover a function": "Найти функцию",
 	"Discover a model": "Найти модель",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Модель встраивания установлена в \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "Включить генерацию автозаполнения для сообщений чата",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Включить совместное использование",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Включите блокировку памяти (mlock), чтобы предотвратить выгрузку данных модели из ОЗУ. Эта опция блокирует рабочий набор страниц модели в оперативной памяти, гарантируя, что они не будут выгружены на диск. Это может помочь поддерживать производительность, избегая ошибок страниц и обеспечивая быстрый доступ к данным.",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Введите ключ API поиска Brave",
 	"Enter certificate path": "Введите путь к сертификату",
 	"Enter CFG Scale (e.g. 7.0)": "Введите CFG Scale (например, 7.0)",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Введите Id движка Google PSE",
 	"Enter Image Size (e.g. 512x512)": "Введите размер изображения (например, 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Введите коды языков",
 	"Enter Model ID": "Введите ID модели",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "Введите SearchApi движок",
 	"Enter Searxng Query URL": "Введите URL-адрес запроса Searxng",
 	"Enter Seed": "Введите Seed",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Введите ключ API Serper",
 	"Enter Serply API Key": "Введите ключ API Serply",
 	"Enter Serpstack API Key": "Введите ключ API Serpstack",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "Скрыть",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "Чем я могу помочь вам сегодня?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "Предварительный просмотр JSON",
 	"July": "Июль",
 	"June": "Июнь",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "Истечение срока JWT",
 	"JWT Token": "Токен JWT",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "Слушаю...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLMs могут допускать ошибки. Проверяйте важную информацию.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "Локальные модели",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "Убедитесь, что экспортируете файл workflow.json в формате API из ComfyUI.",
 	"Manage": "Управлять",
 	"Manage Arena Models": "Управление Ареной Моделей",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "Управление Ollama",
 	"Manage Ollama API Connections": "Управление соединениями API Ollama",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Текст в формате .txt",
 	"Playground": "Песочница",
 	"Please carefully review the following warnings:": "Пожалуйста, внимательно ознакомьтесь со следующими предупреждениями:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "Пожалуйста, введите подсказку",
 	"Please fill in all fields.": "Пожалуйста, заполните все поля.",
 	"Please select a model first.": "Пожалуйста, сначала выберите модель.",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Выберите конвейер",
 	"Select a pipeline url": "Выберите URL-адрес конвейера",
 	"Select a tool": "Выберите инструмент",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "Выберите движок",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "Отправить сообщение",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "Отправляет в запросе \"stream_options: { include_usage: true }\".\nПоддерживаемые провайдеры будут возвращать информацию об использовании токена в ответе, когда это будет установлено.",
 	"September": "Сентябрь",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Ключ API Serper",
 	"Serply API Key": "Ключ API Serply",
 	"Serpstack API Key": "Ключ API Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Заголовок (например, Расскажи мне интересный факт)",
 	"Title Auto-Generation": "Автогенерация заголовка",
 	"Title cannot be an empty string.": "Заголовок не может быть пустой строкой.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Промпт для генерации заголовка",
 	"TLS": "",
 	"To access the available model names for downloading,": "Чтобы получить доступ к доступным для загрузки именам моделей,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "API kľúč pre Brave Search",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "Obísť overenie SSL pre webové stránky",
+	"Calendar": "",
 	"Call": "Volanie",
 	"Call feature is not supported when using Web STT engine": "Funkcia volania nie je podporovaná pri použití Web STT engine.",
 	"Camera": "Kamera",
@@ -178,6 +180,8 @@
 	"Code execution": "Vykonávanie kódu",
 	"Code formatted successfully": "Kód bol úspešne naformátovaný.",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "",
 	"Color": "Farba",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Potvrdenie hesla",
 	"Confirm your action": "Potvrďte svoju akciu",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Pripojenia",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "Kontaktujte administrátora pre prístup k webovému rozhraniu.",
@@ -216,6 +221,7 @@
 	"Copy Link": "Kopírovať odkaz",
 	"Copy to clipboard": "Kopírovať do schránky",
 	"Copying to clipboard was successful!": "Kopírovanie do schránky bolo úspešné!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "Vytvoriť",
 	"Create a knowledge base": "Vytvoriť knowledge base",
 	"Create a model": "Vytvoriť model",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "Popis",
 	"Didn't fully follow instructions": "Nenasledovali ste presne všetky inštrukcie.",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "Zakázané",
 	"Discover a function": "Objaviť funkciu",
 	"Discover a model": "Objaviť model",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Model vkladania nastavený na \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Povoliť zdieľanie komunity",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Zadajte API kľúč pre Brave Search",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "Zadajte mierku CFG (napr. 7.0)",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Zadajte ID vyhľadávacieho mechanizmu Google PSE",
 	"Enter Image Size (e.g. 512x512)": "Zadajte veľkosť obrázka (napr. 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Zadajte kódy jazykov",
 	"Enter Model ID": "Zadajte ID modelu",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "Zadajte vyhľadávací engine SearchApi",
 	"Enter Searxng Query URL": "Zadajte URL dopytu Searxng",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Zadajte Serper API kľúč",
 	"Enter Serply API Key": "Zadajte API kľúč pre Serply",
 	"Enter Serpstack API Key": "Zadajte kľúč API pre Serpstack",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "Skryť",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "Ako vám môžem dnes pomôcť?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "Náhľad JSON",
 	"July": "Júl",
 	"June": "Jún",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "Vypršanie platnosti JWT (JSON Web Token)",
 	"JWT Token": "JWT Token (JSON Web Token)",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "Počúvanie...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLM môžu robiť chyby. Overte si dôležité informácie.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "Lokálne modely",
 	"Lost": "Stratený",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "Uistite sa, že exportujete súbor workflow.json vo formáte API z ComfyUI.",
 	"Manage": "Spravovať",
 	"Manage Arena Models": "Správa modelov v Arena",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Čistý text (.txt)",
 	"Playground": "",
 	"Please carefully review the following warnings:": "Prosím, pozorne si prečítajte nasledujúce upozornenia:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "Prosím, zadajte zadanie.",
 	"Please fill in all fields.": "Prosím, vyplňte všetky polia.",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Vyberte pipeline",
 	"Select a pipeline url": "Vyberte URL adresu kanála",
 	"Select a tool": "Vyberte nástroj",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "Vyberte engine",
 	"Select Knowledge": "Vybrať znalosti",
@@ -847,6 +870,8 @@
 	"Send message": "Odoslať správu",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "Odošle `stream_options: { include_usage: true }` v žiadosti. Podporovaní poskytovatelia vrátia informácie o využití tokenov v odpovedi, keď je táto možnosť nastavená.",
 	"September": "September",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Kľúč API pre Serper",
 	"Serply API Key": "Serply API kľúč",
 	"Serpstack API Key": "Kľúč API pre Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Názov (napr. Povedz mi zaujímavosť)",
 	"Title Auto-Generation": "Automatické generovanie názvu",
 	"Title cannot be an empty string.": "Názov nemôže byť prázdny reťazec.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Generovanie názvu promptu",
 	"TLS": "",
 	"To access the available model names for downloading,": "Pre získanie dostupných názvov modelov na stiahnutie,",

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

@@ -122,9 +122,11 @@
 	"Beta": "Бета",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Апи кључ за храбру претрагу",
 	"By {{name}}": "Од {{name}}",
 	"Bypass SSL verification for Websites": "Заобиђи SSL потврђивање за веб странице",
+	"Calendar": "",
 	"Call": "Позив",
 	"Call feature is not supported when using Web STT engine": "",
 	"Camera": "Камера",
@@ -178,6 +180,8 @@
 	"Code execution": "Извршавање кода",
 	"Code formatted successfully": "Код форматиран успешно",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Колекција",
 	"Color": "Боја",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Потврди лозинку",
 	"Confirm your action": "Потврди радњу",
 	"Confirm your new password": "Потврди нову лозинку",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Везе",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "Пишите админима за приступ на WebUI",
@@ -216,6 +221,7 @@
 	"Copy Link": "Копирај везу",
 	"Copy to clipboard": "Копирај у оставу",
 	"Copying to clipboard was successful!": "Успешно копирање у оставу!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "Направи",
 	"Create a knowledge base": "Направи базу знања",
 	"Create a model": "Креирање модела",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "Опишите вашу базу знања и циљеве",
 	"Description": "Опис",
 	"Didn't fully follow instructions": "Упутства нису праћена у потпуности",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "Онемогућено",
 	"Discover a function": "Откријте функцију",
 	"Discover a model": "Откријте модел",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Модел уградње подешен на \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Омогући дељење заједнице",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Унесите БРАВЕ Сеарцх АПИ кључ",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Унесите Гоогле ПСЕ ИД машине",
 	"Enter Image Size (e.g. 512x512)": "Унесите величину слике (нпр. 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Унесите кодове језика",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "Унесите УРЛ адресу Сеарxнг упита",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Унесите Серпер АПИ кључ",
 	"Enter Serply API Key": "",
 	"Enter Serpstack API Key": "Унесите Серпстацк АПИ кључ",
@@ -500,6 +516,7 @@
 	"Hex Color": "Хекс боја",
 	"Hex Color - Leave empty for default color": "Хекс боја (празно за подразумевано)",
 	"Hide": "Сакриј",
+	"Home": "",
 	"Host": "Домаћин",
 	"How can I help you today?": "Како могу да вам помогнем данас?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "ЈСОН Преглед",
 	"July": "Јул",
 	"June": "Јун",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "Истек JWT-а",
 	"JWT Token": "JWT жетон",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "Слушам...",
 	"Llama.cpp": "Llama.cpp",
 	"LLMs can make mistakes. Verify important information.": "ВЈМ-ови (LLM-ови) могу правити грешке. Проверите важне податке.",
+	"Loading Kokoro.js...": "",
 	"Local": "Локално",
 	"Local Models": "Локални модели",
 	"Lost": "Пораза",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "Управљај",
 	"Manage Arena Models": "Управљај моделима арене",
+	"Manage Direct Connections": "",
 	"Manage Models": "Управљај моделима",
 	"Manage Ollama": "Управљај Ollama-ом",
 	"Manage Ollama API Connections": "Управљај Ollama АПИ везама",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Обичан текст (.txt)",
 	"Playground": "Игралиште",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Избор цевовода",
 	"Select a pipeline url": "Избор урл адресе цевовода",
 	"Select a tool": "Изабери алат",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "Изабери мотор",
 	"Select Knowledge": "Изабери знање",
@@ -847,6 +870,8 @@
 	"Send message": "Пошаљи поруку",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "Септембар",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Серпер АПИ кључ",
 	"Serply API Key": "",
 	"Serpstack API Key": "Серпстацк АПИ кључ",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Наслов (нпр. „реци ми занимљивост“)",
 	"Title Auto-Generation": "Самостално стварање наслова",
 	"Title cannot be an empty string.": "Наслов не може бити празан низ.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Упит за стварање наслова",
 	"TLS": "ТЛС",
 	"To access the available model names for downloading,": "Да бисте приступили доступним именима модела за преузимање,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "API-nyckel för Brave Search",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "Kringgå SSL-verifiering för webbplatser",
+	"Calendar": "",
 	"Call": "Samtal",
 	"Call feature is not supported when using Web STT engine": "Samtalsfunktionen är inte kompatibel med Web Tal-till-text motor",
 	"Camera": "Kamera",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Samling",
 	"Color": "",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Bekräfta lösenord",
 	"Confirm your action": "",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Anslutningar",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "Kontakta administratören för att få åtkomst till WebUI",
@@ -216,6 +221,7 @@
 	"Copy Link": "Kopiera länk",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "Kopiering till urklipp lyckades!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "Skapa en modell",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "Beskrivning",
 	"Didn't fully follow instructions": "Följde inte instruktionerna",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "",
 	"Discover a function": "",
 	"Discover a model": "Upptäck en modell",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Inbäddningsmodell inställd på \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Aktivera community-delning",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Ange API-nyckel för Brave Search",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Ange Google PSE Engine Id",
 	"Enter Image Size (e.g. 512x512)": "Ange bildstorlek (t.ex. 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Skriv språkkoder",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "Ange Searxng Query URL",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Ange Serper API-nyckel",
 	"Enter Serply API Key": "Ange Serply API-nyckel",
 	"Enter Serpstack API Key": "Ange Serpstack API-nyckel",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "Dölj",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "Hur kan jag hjälpa dig idag?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "Förhandsversion av JSON",
 	"July": "juli",
 	"June": "juni",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT-utgångsdatum",
 	"JWT Token": "JWT-token",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "Lyssnar...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLM:er kan göra misstag. Granska viktig information.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "Lokala modeller",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "Hantera",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Text (.txt)",
 	"Playground": "Lekplats",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Välj en rörledning",
 	"Select a pipeline url": "Välj en URL för rörledningen",
 	"Select a tool": "",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "Skicka meddelande",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "september",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Serper API-nyckel",
 	"Serply API Key": "Serply API-nyckel",
 	"Serpstack API Key": "Serpstack API-nyckel",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Titel (t.ex. Berätta en kuriosa)",
 	"Title Auto-Generation": "Automatisk generering av titel",
 	"Title cannot be an empty string.": "Titeln får inte vara en tom sträng.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Instruktion för titelgenerering",
 	"TLS": "",
 	"To access the available model names for downloading,": "För att komma åt de tillgängliga modellnamnen för nedladdning,",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "คีย์ API ของ Brave Search",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "ข้ามการตรวจสอบ SSL สำหรับเว็บไซต์",
+	"Calendar": "",
 	"Call": "โทร",
 	"Call feature is not supported when using Web STT engine": "ไม่รองรับฟีเจอร์การโทรเมื่อใช้เครื่องยนต์ Web STT",
 	"Camera": "กล้อง",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "จัดรูปแบบโค้ดสำเร็จแล้ว",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "คอลเลคชัน",
 	"Color": "",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "ยืนยันรหัสผ่าน",
 	"Confirm your action": "ยืนยันการดำเนินการของคุณ",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "การเชื่อมต่อ",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "ติดต่อผู้ดูแลระบบสำหรับการเข้าถึง WebUI",
@@ -216,6 +221,7 @@
 	"Copy Link": "คัดลอกลิงก์",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "คัดลอกไปยังคลิปบอร์ดสำเร็จแล้ว!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "สร้างโมเดล",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "คำอธิบาย",
 	"Didn't fully follow instructions": "ไม่ได้ปฏิบัติตามคำแนะนำทั้งหมด",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "ปิดใช้งาน",
 	"Discover a function": "ค้นหาฟังก์ชัน",
 	"Discover a model": "ค้นหาโมเดล",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "ตั้งค่าโมเดลการฝังเป็น \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "เปิดใช้งานการแชร์ในชุมชน",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "ใส่คีย์ API ของ Brave Search",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "ใส่รหัสเครื่องยนต์ของ Google PSE",
 	"Enter Image Size (e.g. 512x512)": "ใส่ขนาดภาพ (เช่น 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "ใส่รหัสภาษา",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "ใส URL การค้นหาของ Searxng",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "ใส่คีย์ API ของ Serper",
 	"Enter Serply API Key": "ใส่คีย์ API ของ Serply",
 	"Enter Serpstack API Key": "ใส่คีย์ API ของ Serpstack",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "ซ่อน",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "วันนี้ฉันจะช่วยอะไรคุณได้บ้าง?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "ดูตัวอย่าง JSON",
 	"July": "กรกฎาคม",
 	"June": "มิถุนายน",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "การหมดอายุของ JWT",
 	"JWT Token": "โทเค็น JWT",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "กำลังฟัง...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLMs สามารถทำผิดพลาดได้ ตรวจสอบข้อมูลสำคัญ",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "โมเดลท้องถิ่น",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "จัดการ",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "ไฟล์ข้อความ (.txt)",
 	"Playground": "สนามทดสอบ",
 	"Please carefully review the following warnings:": "โปรดตรวจสอบคำเตือนต่อไปนี้อย่างละเอียด:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "เลือกไปป์ไลน์",
 	"Select a pipeline url": "เลือก URL ไปป์ไลน์",
 	"Select a tool": "เลือกเครื่องมือ",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "ส่งข้อความ",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "กันยายน",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "คีย์ API ของ Serper",
 	"Serply API Key": "คีย์ API ของ Serply",
 	"Serpstack API Key": "คีย์ API ของ Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "ชื่อเรื่อง (เช่น บอกข้อเท็จจริงที่น่าสนุก)",
 	"Title Auto-Generation": "การสร้างชื่ออัตโนมัติ",
 	"Title cannot be an empty string.": "ชื่อเรื่องไม่สามารถเป็นสตริงว่างได้",
+	"Title Generation": "",
 	"Title Generation Prompt": "พรอมต์การสร้างชื่อเรื่อง",
 	"TLS": "",
 	"To access the available model names for downloading,": "ในการเข้าถึงชื่อโมเดลที่มีให้ดาวน์โหลด",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "",
+	"Calendar": "",
 	"Call": "",
 	"Call feature is not supported when using Web STT engine": "",
 	"Camera": "",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "",
 	"Color": "",
 	"ComfyUI": "",
@@ -194,6 +198,7 @@
 	"Confirm Password": "",
 	"Confirm your action": "",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "",
@@ -216,6 +221,7 @@
 	"Copy Link": "",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "",
 	"Didn't fully follow instructions": "",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "",
 	"Discover a function": "",
 	"Discover a model": "",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "",
 	"Enter Image Size (e.g. 512x512)": "",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "",
 	"Enter Serply API Key": "",
 	"Enter Serpstack API Key": "",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "",
 	"July": "",
 	"June": "",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "",
 	"JWT Token": "",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "",
 	"Manage": "",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "",
 	"Playground": "",
 	"Please carefully review the following warnings:": "",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "",
 	"Select a pipeline url": "",
 	"Select a tool": "",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "",
 	"Serply API Key": "",
 	"Serpstack API Key": "",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "",
 	"Title Auto-Generation": "",
 	"Title cannot be an empty string.": "",
+	"Title Generation": "",
 	"Title Generation Prompt": "",
 	"TLS": "",
 	"To access the available model names for downloading,": "",

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

@@ -122,9 +122,11 @@
 	"Beta": "Beta",
 	"Bing Search V7 Endpoint": "Bing Arama V7 Uç Noktası",
 	"Bing Search V7 Subscription Key": "Bing Arama V7 Abonelik Anahtarı",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Brave Search API Anahtarı",
 	"By {{name}}": "{{name}} Tarafından",
 	"Bypass SSL verification for Websites": "Web Siteleri için SSL doğrulamasını atlayın",
+	"Calendar": "",
 	"Call": "Arama",
 	"Call feature is not supported when using Web STT engine": "Web STT motoru kullanılırken arama özelliği desteklenmiyor",
 	"Camera": "Kamera",
@@ -178,6 +180,8 @@
 	"Code execution": "Kod yürütme",
 	"Code formatted successfully": "Kod başarıyla biçimlendirildi",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Koleksiyon",
 	"Color": "Renk",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Parolayı Onayla",
 	"Confirm your action": "İşleminizi onaylayın",
 	"Confirm your new password": "Yeni parolanızı onaylayın",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Bağlantılar",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "WebUI Erişimi için Yöneticiyle İletişime Geçin",
@@ -216,6 +221,7 @@
 	"Copy Link": "Bağlantıyı Kopyala",
 	"Copy to clipboard": "Panoya kopyala",
 	"Copying to clipboard was successful!": "Panoya kopyalama başarılı!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "Oluştur",
 	"Create a knowledge base": "Bir bilgi tabanı oluştur",
 	"Create a model": "Bir model oluştur",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "Bilgi tabanınızı ve hedeflerinizi açıklayın",
 	"Description": "Açıklama",
 	"Didn't fully follow instructions": "Talimatları tam olarak takip etmedi",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "Devre Dışı",
 	"Discover a function": "Bir fonksiyon keşfedin",
 	"Discover a model": "Bir model keşfedin",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Gömme modeli \"{{embedding_model}}\" olarak ayarlandı",
 	"Enable API Key": "API Anahtarını Etkinleştir",
 	"Enable autocomplete generation for chat messages": "Sohbet mesajları için otomatik tamamlama üretimini etkinleştir",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Topluluk Paylaşımını Etkinleştir",
 	"Enable Google Drive": "Google Drive'ı Etkinleştir",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "Uygulama DN Parolasını Girin",
 	"Enter Bing Search V7 Endpoint": "Bing Arama V7 Uç Noktasını Girin",
 	"Enter Bing Search V7 Subscription Key": "Bing Arama V7 Abonelik Anahtarını Girin",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Brave Search API Anahtarını Girin",
 	"Enter certificate path": "Sertifika yolunu girin",
 	"Enter CFG Scale (e.g. 7.0)": "CFG Ölçeğini Girin (örn. 7.0)",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Google PSE Engine Id'sini Girin",
 	"Enter Image Size (e.g. 512x512)": "Görüntü Boyutunu Girin (örn. 512x512)",
 	"Enter Jina API Key": "Jina API Anahtarını Girin",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "Kagi Search API Anahtarını Girin",
 	"Enter language codes": "Dil kodlarını girin",
 	"Enter Model ID": "Model ID'sini Girin",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "Arama-API Motorunu Girin",
 	"Enter Searxng Query URL": "Searxng Sorgu URL'sini girin",
 	"Enter Seed": " Tohum(seed) Girin",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Serper API Anahtarını Girin",
 	"Enter Serply API Key": "Serply API Anahtarını Girin",
 	"Enter Serpstack API Key": "Serpstack API Anahtarını Girin",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "Gizle",
+	"Home": "",
 	"Host": "Ana bilgisayar",
 	"How can I help you today?": "Bugün size nasıl yardımcı olabilirim?",
 	"How would you rate this response?": "Bu yanıtı nasıl değerlendirirsiniz?",
@@ -543,6 +560,8 @@
 	"JSON Preview": "JSON Önizlemesi",
 	"July": "Temmuz",
 	"June": "Haziran",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT Bitişi",
 	"JWT Token": "JWT Token",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "Dinleniyor...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "LLM'ler hata yapabilir. Önemli bilgileri doğrulayın.",
+	"Loading Kokoro.js...": "",
 	"Local": "Yerel",
 	"Local Models": "Yerel Modeller",
 	"Lost": "Kayıp",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "ComfyUI'dan API formatında bir workflow.json dosyası olarak dışa aktardığınızdan emin olun.",
 	"Manage": "Yönet",
 	"Manage Arena Models": "Arena Modellerini Yönet",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "Ollama'yı Yönet",
 	"Manage Ollama API Connections": "Ollama API Bağlantılarını Yönet",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Düz metin (.txt)",
 	"Playground": "Oyun Alanı",
 	"Please carefully review the following warnings:": "Lütfen aşağıdaki uyarıları dikkatlice inceleyin:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "Lütfen bir prompt girin",
 	"Please fill in all fields.": "Lütfen tüm alanları doldurun.",
 	"Please select a model first.": "Lütfen önce bir model seçin.",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Bir pipeline seç",
 	"Select a pipeline url": "Bir pipeline URL'si seç",
 	"Select a tool": "Bir araç seç",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "Motor Seç",
 	"Select Knowledge": "Bilgi Seç",
@@ -847,6 +870,8 @@
 	"Send message": "Mesaj gönder",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "İsteğe `stream_options: { include_usage: true }` gönderir.\nDesteklenen sağlayıcılar, ayarlandığında yanıtta token kullanım bilgilerini döndürecektir.",
 	"September": "Eylül",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Serper API Anahtarı",
 	"Serply API Key": "Serply API Anahtarı",
 	"Serpstack API Key": "Serpstack API Anahtarı",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Başlık (e.g. Bana ilginç bir bilgi ver)",
 	"Title Auto-Generation": "Otomatik Başlık Oluşturma",
 	"Title cannot be an empty string.": "Başlık boş bir dize olamaz.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Başlık Oluşturma Promptu",
 	"TLS": "TLS",
 	"To access the available model names for downloading,": "İndirilebilir mevcut model adlarına erişmek için,",

+ 35 - 9
src/lib/i18n/locales/uk-UA/translation.json

@@ -122,9 +122,11 @@
 	"Beta": "Beta",
 	"Bing Search V7 Endpoint": "Точка доступу Bing Search V7",
 	"Bing Search V7 Subscription Key": "Ключ підписки Bing Search V7",
+	"Bocha Search API Key": "Ключ API пошуку Bocha",
 	"Brave Search API Key": "Ключ API пошуку Brave",
 	"By {{name}}": "Від {{name}}",
 	"Bypass SSL verification for Websites": "Обхід SSL-перевірки для веб-сайтів",
+	"Calendar": "",
 	"Call": "Виклик",
 	"Call feature is not supported when using Web STT engine": "Функція виклику не підтримується при використанні Web STT (розпізнавання мовлення) рушія",
 	"Camera": "Камера",
@@ -163,7 +165,7 @@
 	"Click here to": "Натисніть тут, щоб",
 	"Click here to download user import template file.": "Натисніть тут, щоб завантажити файл шаблону імпорту користувача.",
 	"Click here to learn more about faster-whisper and see the available models.": "Натисніть тут, щоб дізнатися більше про faster-whisper та переглянути доступні моделі.",
-	"Click here to see available models.": "",
+	"Click here to see available models.": "Натисніть тут, щоб переглянути доступні моделі.",
 	"Click here to select": "Натисніть тут, щоб обрати",
 	"Click here to select a csv file.": "Натисніть тут, щоб обрати csv-файл.",
 	"Click here to select a py file.": "Натисніть тут, щоб обрати py-файл.",
@@ -178,6 +180,8 @@
 	"Code execution": "Виконання коду",
 	"Code formatted successfully": "Код успішно відформатовано",
 	"Code Interpreter": "Інтерпретатор коду",
+	"Code Interpreter Engine": "Двигун інтерпретатора коду",
+	"Code Interpreter Prompt Template": "Шаблон запиту інтерпретатора коду",
 	"Collection": "Колекція",
 	"Color": "Колір",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Підтвердіть пароль",
 	"Confirm your action": "Підтвердіть свою дію",
 	"Confirm your new password": "Підтвердіть свій новий пароль",
+	"Connect to your own OpenAI compatible API endpoints.": "Підключіться до своїх власних API-ендпоінтів, сумісних з OpenAI.",
 	"Connections": "З'єднання",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "Обмежує зусилля на міркування для моделей міркування. Застосовується лише до моделей від певних постачальників, які підтримують зусилля на міркування. (За замовчуванням: середній)",
 	"Contact Admin for WebUI Access": "Зверніться до адміна для отримання доступу до WebUI",
@@ -216,6 +221,7 @@
 	"Copy Link": "Копіювати посилання",
 	"Copy to clipboard": "Копіювати в буфер обміну",
 	"Copying to clipboard was successful!": "Копіювання в буфер обміну виконано успішно!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "CORS має бути правильно налаштований постачальником, щоб дозволити запити з Open WebUI.",
 	"Create": "Створити",
 	"Create a knowledge base": "Створити базу знань",
 	"Create a model": "Створити модель",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "Опишіть вашу базу знань та цілі",
 	"Description": "Опис",
 	"Didn't fully follow instructions": "Не повністю дотримувалися інструкцій",
+	"Direct Connections": "Прямі з'єднання",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Прямі з'єднання дозволяють користувачам підключатися до своїх власних API-кінцевих точок, сумісних з OpenAI.",
+	"Direct Connections settings updated": "Налаштування прямих з'єднань оновлено",
 	"Disabled": "Вимкнено",
 	"Discover a function": "Знайдіть функцію",
 	"Discover a model": "Знайдіть модель",
@@ -291,7 +300,7 @@
 	"Documentation": "Документація",
 	"Documents": "Документи",
 	"does not make any external connections, and your data stays securely on your locally hosted server.": "не встановлює жодних зовнішніх з'єднань, і ваші дані залишаються в безпеці на вашому локальному сервері.",
-	"Domain Filter List": "",
+	"Domain Filter List": "Список фільтрів доменів",
 	"Don't have an account?": "Немає облікового запису?",
 	"don't install random functions from sources you don't trust.": "не встановлюйте випадкові функції з джерел, яким ви не довіряєте.",
 	"don't install random tools from sources you don't trust.": "не встановлюйте випадкові інструменти з джерел, яким ви не довіряєте.",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Встановлена модель вбудовування \"{{embedding_model}}\"",
 	"Enable API Key": "Увімкнути ключ API",
 	"Enable autocomplete generation for chat messages": "Увімкнути генерацію автозаповнення для повідомлень чату",
+	"Enable Code Interpreter": "Увімкнути інтерпретатор коду",
 	"Enable Community Sharing": "Увімкнути спільний доступ",
 	"Enable Google Drive": "Увімкнути Google Drive",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Увімкнути блокування пам'яті (mlock), щоб запобігти виведенню даних моделі з оперативної пам'яті. Цей параметр блокує робочий набір сторінок моделі в оперативній пам'яті, гарантуючи, що вони не будуть виведені на диск. Це може допомогти підтримувати продуктивність, уникати помилок сторінок та забезпечувати швидкий доступ до даних.",
@@ -345,19 +355,23 @@
 	"Enter Application DN Password": "Введіть пароль DN застосунку",
 	"Enter Bing Search V7 Endpoint": "Введіть точку доступу Bing Search V7",
 	"Enter Bing Search V7 Subscription Key": "Введіть ключ підписки Bing Search V7",
+	"Enter Bocha Search API Key": "Введіть ключ API Bocha Search",
 	"Enter Brave Search API Key": "Введіть ключ API для пошуку Brave",
 	"Enter certificate path": "Введіть шлях до сертифіката",
 	"Enter CFG Scale (e.g. 7.0)": "Введіть масштаб CFG (напр., 7.0)",
 	"Enter Chunk Overlap": "Введіть перекриття фрагменту",
 	"Enter Chunk Size": "Введіть розмір фрагменту",
 	"Enter description": "Введіть опис",
-	"Enter domains separated by commas (e.g., example.com,site.org)": "",
+	"Enter domains separated by commas (e.g., example.com,site.org)": "Введіть домени, розділені комами (наприклад, example.com, site.org)",
 	"Enter Exa API Key": "Введіть ключ API Exa",
 	"Enter Github Raw URL": "Введіть Raw URL-адресу Github",
 	"Enter Google PSE API Key": "Введіть ключ API Google PSE",
 	"Enter Google PSE Engine Id": "Введіть Google PSE Engine Id",
 	"Enter Image Size (e.g. 512x512)": "Введіть розмір зображення (напр., 512x512)",
 	"Enter Jina API Key": "Введіть ключ API Jina",
+	"Enter Jupyter Password": "Введіть пароль Jupyter",
+	"Enter Jupyter Token": "Введіть токен Jupyter",
+	"Enter Jupyter URL": "Введіть URL Jupyter",
 	"Enter Kagi Search API Key": "Введіть ключ API Kagi Search",
 	"Enter language codes": "Введіть мовні коди",
 	"Enter Model ID": "Введіть ID моделі",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "Введіть SearchApi рушія",
 	"Enter Searxng Query URL": "Введіть URL-адресу запиту Searxng",
 	"Enter Seed": "Введіть насіння",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Введіть ключ API Serper",
 	"Enter Serply API Key": "Введіть ключ API Serply",
 	"Enter Serpstack API Key": "Введіть ключ API Serpstack",
@@ -500,6 +516,7 @@
 	"Hex Color": "Шістнадцятковий колір",
 	"Hex Color - Leave empty for default color": "Шістнадцятковий колір — залиште порожнім для кольору за замовчуванням",
 	"Hide": "Приховати",
+	"Home": "",
 	"Host": "Хост",
 	"How can I help you today?": "Чим я можу допомогти вам сьогодні?",
 	"How would you rate this response?": "Як би ви оцінили цю відповідь?",
@@ -543,6 +560,8 @@
 	"JSON Preview": "Перегляд JSON",
 	"July": "Липень",
 	"June": "Червень",
+	"Jupyter Auth": "Аутентифікація Jupyter",
+	"Jupyter URL": "Jupyter URL",
 	"JWT Expiration": "Термін дії JWT",
 	"JWT Token": "Токен JWT",
 	"Kagi Search API Key": "Kagi Search API ключ",
@@ -555,8 +574,8 @@
 	"Knowledge deleted successfully.": "Знання успішно видалено.",
 	"Knowledge reset successfully.": "Знання успішно скинуто.",
 	"Knowledge updated successfully": "Знання успішно оновлено",
-	"Kokoro.js (Browser)": "",
-	"Kokoro.js Dtype": "",
+	"Kokoro.js (Browser)": "Kokoro.js (Браузер)",
+	"Kokoro.js Dtype": "Kokoro.js Dtype",
 	"Label": "Мітка",
 	"Landing Page Mode": "Режим головної сторінки",
 	"Language": "Мова",
@@ -571,11 +590,12 @@
 	"Leave empty to include all models from \"{{URL}}/models\" endpoint": "Залиште порожнім, щоб включити всі моделі з кінцевої точки \"{{URL}}/models\"",
 	"Leave empty to include all models or select specific models": "Залиште порожнім, щоб включити всі моделі, або виберіть конкретні моделі.",
 	"Leave empty to use the default prompt, or enter a custom prompt": "Залиште порожнім для використання стандартного запиту, або введіть власний запит",
-	"Leave model field empty to use the default model.": "",
+	"Leave model field empty to use the default model.": "Залиште поле моделі порожнім, щоб використовувати модель за замовчуванням.",
 	"Light": "Світла",
 	"Listening...": "Слухаю...",
 	"Llama.cpp": "Llama.cpp",
 	"LLMs can make mistakes. Verify important information.": "LLMs можуть помилятися. Перевірте важливу інформацію.",
+	"Loading Kokoro.js...": "Завантаження Kokoro.js...",
 	"Local": "Локальний",
 	"Local Models": "Локальні моделі",
 	"Lost": "Втрачене",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "Обов'язково експортуйте файл workflow.json у форматі API з ComfyUI.",
 	"Manage": "Керувати",
 	"Manage Arena Models": "Керувати моделями Arena",
+	"Manage Direct Connections": "Керування прямими з'єднаннями",
 	"Manage Models": "Керувати моделями",
 	"Manage Ollama": "Керувати Ollama",
 	"Manage Ollama API Connections": "Керувати з'єднаннями Ollama API",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Простий текст (.txt)",
 	"Playground": "Майданчик",
 	"Please carefully review the following warnings:": "Будь ласка, уважно ознайомтеся з наступними попередженнями:",
+	"Please do not close the settings page while loading the model.": "Будь ласка, не закривайте сторінку налаштувань під час завантаження моделі.",
 	"Please enter a prompt": "Будь ласка, введіть підказку",
 	"Please fill in all fields.": "Будь ласка, заповніть всі поля.",
 	"Please select a model first.": "Будь ласка, спочатку виберіть модель.",
@@ -823,7 +845,7 @@
 	"Searched {{count}} sites": "Шукалося {{count}} сайтів",
 	"Searching \"{{searchQuery}}\"": "Шукаю \"{{searchQuery}}\"",
 	"Searching Knowledge for \"{{searchQuery}}\"": "Пошук знань для \"{{searchQuery}}\"",
-	"Searxng Query URL": "URL-адреса запиту Searxng",
+	"Searxng Query URL": "Searxng Query URL",
 	"See readme.md for instructions": "Див. readme.md для інструкцій",
 	"See what's new": "Подивіться, що нового",
 	"Seed": "Сід",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Оберіть конвеєр",
 	"Select a pipeline url": "Оберіть адресу конвеєра",
 	"Select a tool": "Оберіть інструмент",
+	"Select an auth method": "Оберіть метод аутентифікації.",
 	"Select an Ollama instance": "Виберіть екземпляр Ollama",
 	"Select Engine": "Виберіть двигун",
 	"Select Knowledge": "Вибрати знання",
@@ -847,6 +870,8 @@
 	"Send message": "Надіслати повідомлення",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "Відправляє `stream_options: { include_usage: true }` у запиті.\nПідтримувані постачальники повернуть інформацію про використання токену у відповіді, якщо вона встановлена.",
 	"September": "Вересень",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Ключ API Serper",
 	"Serply API Key": "Ключ API Serply",
 	"Serpstack API Key": "Ключ API Serpstack",
@@ -950,7 +975,7 @@
 	"This will reset the knowledge base and sync all files. Do you wish to continue?": "Це скине базу знань і синхронізує всі файли. Ви бажаєте продовжити?",
 	"Thorough explanation": "Детальне пояснення",
 	"Thought for {{DURATION}}": "Думка для {{DURATION}}",
-	"Thought for {{DURATION}} seconds": "",
+	"Thought for {{DURATION}} seconds": "Думав протягом {{DURATION}} секунд.",
 	"Tika": "Tika",
 	"Tika Server URL required.": "Потрібна URL-адреса сервера Tika.",
 	"Tiktoken": "Tiktoken",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Заголовок (напр., Розкажіть мені цікавий факт)",
 	"Title Auto-Generation": "Автогенерація заголовків",
 	"Title cannot be an empty string.": "Заголовок не може бути порожнім рядком.",
+	"Title Generation": "",
 	"Title Generation Prompt": "Промт для генерування заголовків",
 	"TLS": "TLS",
 	"To access the available model names for downloading,": "Щоб отримати доступ до назв доступних для завантаження моделей,",
@@ -1060,7 +1086,7 @@
 	"Web Search Engine": "Веб-пошукова система",
 	"Web Search in Chat": "Пошук в інтернеті в чаті",
 	"Web Search Query Generation": "Генерація запиту для пошуку в мережі",
-	"Webhook URL": "URL веб-запиту",
+	"Webhook URL": "Webhook URL",
 	"WebUI Settings": "Налаштування WebUI",
 	"WebUI URL": "WebUI URL",
 	"WebUI will make requests to \"{{url}}/api/chat\"": "WebUI надсилатиме запити до \"{{url}}/api/chat\"",

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

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "بریو سرچ API کلید",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "ویب سائٹس کے لیے SSL تصدیق کو نظر انداز کریں",
+	"Calendar": "",
 	"Call": "کال کریں",
 	"Call feature is not supported when using Web STT engine": "کال کی خصوصیت ویب STT انجن استعمال کرتے وقت معاونت یافتہ نہیں ہے",
 	"Camera": "کیمرہ",
@@ -178,6 +180,8 @@
 	"Code execution": "کوڈ کا نفاذ",
 	"Code formatted successfully": "کوڈ کامیابی سے فارمیٹ ہو گیا",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "کلیکشن",
 	"Color": "",
 	"ComfyUI": "کومفی یو آئی",
@@ -194,6 +198,7 @@
 	"Confirm Password": "پاس ورڈ کی توثیق کریں",
 	"Confirm your action": "اپنی کارروائی کی تصدیق کریں",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "کنکشنز",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "ویب یو آئی رسائی کے لیے ایڈمن سے رابطہ کریں",
@@ -216,6 +221,7 @@
 	"Copy Link": "لنک کاپی کریں",
 	"Copy to clipboard": "کلپ بورڈ پر کاپی کریں",
 	"Copying to clipboard was successful!": "کلپ بورڈ میں کاپی کامیاب ہوئی!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "ماڈل بنائیں",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "تفصیل",
 	"Didn't fully follow instructions": "ہدایات کو مکمل طور پر نہیں سمجھا",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "غیر فعال",
 	"Discover a function": "ایک فنکشن دریافت کریں",
 	"Discover a model": "ایک ماڈل دریافت کریں",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "ایمبیڈنگ ماڈل \"{{embedding_model}}\" پر سیٹ کیا گیا ہے",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "کمیونٹی شیئرنگ فعال کریں",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "بریو سرچ API کلید درج کریں",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "CFG اسکیل درج کریں (مثلاً 7.0)",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "گوگل پی ایس ای انجن آئی ڈی درج کریں",
 	"Enter Image Size (e.g. 512x512)": "تصویر کا سائز درج کریں (مثال: 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "زبان کے کوڈ درج کریں",
 	"Enter Model ID": "ماڈل آئی ڈی درج کریں",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "تلاش انجن درج کریں",
 	"Enter Searxng Query URL": "سیرنگ استفسار یو آر ایل درج کریں",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "سرپر API کلید داخل کریں",
 	"Enter Serply API Key": "سیرپلی API کلید درج کریں",
 	"Enter Serpstack API Key": "سرپ اسٹیک API کلید درج کریں",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "چھپائیں",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "میں آج آپ کی کس طرح مدد کر سکتا ہوں؟",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "JSON پیش منظر",
 	"July": "جولائی",
 	"June": "جون",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT کی میعاد ختم ہونا",
 	"JWT Token": "JWT ٹوکن",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "سن رہے ہیں...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "ایل ایل ایم غلطیاں کر سکتے ہیں اہم معلومات کی تصدیق کریں",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "مقامی ماڈلز",
 	"Lost": "گم شدہ",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "یقینی بنائیں کہ ComfyUI سے workflow.json فائل کو API فارمیٹ میں ایکسپورٹ کریں",
 	"Manage": "مینیج کریں",
 	"Manage Arena Models": "ایرینا ماڈلز کا نظم کریں",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "سادہ متن (.txt)",
 	"Playground": "کھیل کا میدان",
 	"Please carefully review the following warnings:": "براہ کرم درج ذیل انتباہات کو احتیاط سے پڑھیں:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "براہ کرم ایک پرامپٹ درج کریں",
 	"Please fill in all fields.": "براہ کرم تمام فیلڈز مکمل کریں",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "ایک پائپ لائن منتخب کریں",
 	"Select a pipeline url": "پائپ لائن یو آر ایل منتخب کریں",
 	"Select a tool": "ایک ٹول منتخب کریں",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "انجن منتخب کریں",
 	"Select Knowledge": "علم منتخب کریں",
@@ -847,6 +870,8 @@
 	"Send message": "پیغام بھیجیں",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "درخواست میں `stream_options: { include_usage: true }` بھیجتا ہے\nمعاون فراہم کنندگان، جب سیٹ کیا جاتا ہے تو، جواب میں ٹوکن کے استعمال کی معلومات واپس کر دیں گے",
 	"September": "ستمبر",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "سرپر API کلید",
 	"Serply API Key": "سرپلی API کی کلید",
 	"Serpstack API Key": "سرپ اسٹیک اے پی آئی کلید",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "عنوان (مثال کے طور پر، مجھے ایک دلچسپ حقیقت بتائیں)",
 	"Title Auto-Generation": "خودکار عنوان تخلیق",
 	"Title cannot be an empty string.": "عنوان خالی اسٹرنگ نہیں ہو سکتا",
+	"Title Generation": "",
 	"Title Generation Prompt": "سرخی بنانے کی ہدایت",
 	"TLS": "",
 	"To access the available model names for downloading,": "ڈاؤن لوڈ کرنے کے لئے دستیاب ماڈل کے ناموں تک رسائی حاصل کرنے کے لئے،",

+ 26 - 0
src/lib/i18n/locales/vi-VN/translation.json

@@ -122,9 +122,11 @@
 	"Beta": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Khóa API tìm kiếm dũng cảm",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "Bỏ qua xác thực SSL cho các trang web",
+	"Calendar": "",
 	"Call": "Gọi",
 	"Call feature is not supported when using Web STT engine": "Tính năng gọi điện không được hỗ trợ khi sử dụng công cụ Web STT",
 	"Camera": "",
@@ -178,6 +180,8 @@
 	"Code execution": "",
 	"Code formatted successfully": "Mã được định dạng thành công",
 	"Code Interpreter": "",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "Tổng hợp mọi tài liệu",
 	"Color": "",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "Xác nhận Mật khẩu",
 	"Confirm your action": "Xác nhận hành động của bạn",
 	"Confirm your new password": "",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "Kết nối",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "",
 	"Contact Admin for WebUI Access": "Liên hệ với Quản trị viên để được cấp quyền truy cập",
@@ -216,6 +221,7 @@
 	"Copy Link": "Sao chép link",
 	"Copy to clipboard": "",
 	"Copying to clipboard was successful!": "Sao chép vào clipboard thành công!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "",
 	"Create a knowledge base": "",
 	"Create a model": "Tạo model",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "",
 	"Description": "Mô tả",
 	"Didn't fully follow instructions": "Không tuân theo chỉ dẫn một cách đầy đủ",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "Đã tắt",
 	"Discover a function": "Khám phá function",
 	"Discover a model": "Khám phá model",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "Mô hình embedding đã được thiết lập thành \"{{embedding_model}}\"",
 	"Enable API Key": "",
 	"Enable autocomplete generation for chat messages": "",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "Cho phép Chia sẻ Cộng đồng",
 	"Enable Google Drive": "",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "Nhập API key cho Brave Search",
 	"Enter certificate path": "",
 	"Enter CFG Scale (e.g. 7.0)": "",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "Nhập Google PSE Engine Id",
 	"Enter Image Size (e.g. 512x512)": "Nhập Kích thước ảnh (vd: 512x512)",
 	"Enter Jina API Key": "",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "",
 	"Enter language codes": "Nhập mã ngôn ngữ",
 	"Enter Model ID": "",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "",
 	"Enter Searxng Query URL": "Nhập Query URL cho Searxng",
 	"Enter Seed": "",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "Nhập Serper API Key",
 	"Enter Serply API Key": "Nhập Serply API Key",
 	"Enter Serpstack API Key": "Nhập Serpstack API Key",
@@ -500,6 +516,7 @@
 	"Hex Color": "",
 	"Hex Color - Leave empty for default color": "",
 	"Hide": "Ẩn",
+	"Home": "",
 	"Host": "",
 	"How can I help you today?": "Tôi có thể giúp gì cho bạn hôm nay?",
 	"How would you rate this response?": "",
@@ -543,6 +560,8 @@
 	"JSON Preview": "Xem trước JSON",
 	"July": "Tháng 7",
 	"June": "Tháng 6",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT Hết hạn",
 	"JWT Token": "Token JWT",
 	"Kagi Search API Key": "",
@@ -576,6 +595,7 @@
 	"Listening...": "Đang nghe...",
 	"Llama.cpp": "",
 	"LLMs can make mistakes. Verify important information.": "Hệ thống có thể tạo ra nội dung không chính xác hoặc sai. Hãy kiểm chứng kỹ lưỡng thông tin trước khi tiếp nhận và sử dụng.",
+	"Loading Kokoro.js...": "",
 	"Local": "",
 	"Local Models": "",
 	"Lost": "",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "Đảm bảo xuất tệp Workflow.json đúng format API của ComfyUI.",
 	"Manage": "Quản lý",
 	"Manage Arena Models": "",
+	"Manage Direct Connections": "",
 	"Manage Models": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "Văn bản thô (.txt)",
 	"Playground": "Thử nghiệm (Playground)",
 	"Please carefully review the following warnings:": "Vui lòng xem xét cẩn thận các cảnh báo sau:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "",
 	"Please fill in all fields.": "",
 	"Please select a model first.": "",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "Chọn một quy trình",
 	"Select a pipeline url": "Chọn url quy trình",
 	"Select a tool": "Chọn tool",
+	"Select an auth method": "",
 	"Select an Ollama instance": "",
 	"Select Engine": "Chọn Engine",
 	"Select Knowledge": "",
@@ -847,6 +870,8 @@
 	"Send message": "Gửi yêu cầu",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "",
 	"September": "Tháng 9",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Khóa API Serper",
 	"Serply API Key": "",
 	"Serpstack API Key": "Khóa API Serpstack",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "Tiêu đề (ví dụ: Hãy kể cho tôi một sự thật thú vị về...)",
 	"Title Auto-Generation": "Tự động Tạo Tiêu đề",
 	"Title cannot be an empty string.": "Tiêu đề không được phép bỏ trống",
+	"Title Generation": "",
 	"Title Generation Prompt": "Prompt tạo tiêu đề",
 	"TLS": "",
 	"To access the available model names for downloading,": "Để truy cập các tên mô hình có sẵn để tải xuống,",

+ 34 - 10
src/lib/i18n/locales/zh-CN/translation.json

@@ -122,9 +122,11 @@
 	"Beta": "Beta",
 	"Bing Search V7 Endpoint": "Bing 搜索 V7 Endpoint",
 	"Bing Search V7 Subscription Key": "Bing 搜索 V7 订阅密钥",
+	"Bocha Search API Key": "Bocha Search API 密钥",
 	"Brave Search API Key": "Brave Search API 密钥",
 	"By {{name}}": "由 {{name}} 提供",
 	"Bypass SSL verification for Websites": "绕过网站的 SSL 验证",
+	"Calendar": "日历",
 	"Call": "呼叫",
 	"Call feature is not supported when using Web STT engine": "使用 Web 语音转文字引擎时不支持呼叫功能。",
 	"Camera": "摄像头",
@@ -163,7 +165,7 @@
 	"Click here to": "点击",
 	"Click here to download user import template file.": "点击此处下载用户导入所需的模板文件。",
 	"Click here to learn more about faster-whisper and see the available models.": "点击此处了解更多关于faster-whisper的信息,并查看可用的模型。",
-	"Click here to see available models.": "",
+	"Click here to see available models.": "单击此处查看可用型号。",
 	"Click here to select": "点击这里选择",
 	"Click here to select a csv file.": "点击此处选择 csv 文件。",
 	"Click here to select a py file.": "点击此处选择 py 文件。",
@@ -178,6 +180,8 @@
 	"Code execution": "代码执行",
 	"Code formatted successfully": "代码格式化成功",
 	"Code Interpreter": "代码解释器",
+	"Code Interpreter Engine": "代码解释引擎",
+	"Code Interpreter Prompt Template": "代码解释器提示模板",
 	"Collection": "文件集",
 	"Color": "颜色",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "确认密码",
 	"Confirm your action": "确定吗?",
 	"Confirm your new password": "确认新密码",
+	"Connect to your own OpenAI compatible API endpoints.": "连接到您自己的 OpenAI 兼容 API 端点。",
 	"Connections": "外部连接",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "限制推理模型的推理努力。仅适用于支持推理努力的特定提供商的推理模型。(默认值:中等)",
 	"Contact Admin for WebUI Access": "请联系管理员以获取访问权限",
@@ -216,6 +221,7 @@
 	"Copy Link": "复制链接",
 	"Copy to clipboard": "复制到剪贴板",
 	"Copying to clipboard was successful!": "成功复制到剪贴板!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "提供商必须正确配置 CORS 以允许来自 Open WebUI 的请求。",
 	"Create": "创建",
 	"Create a knowledge base": "创建知识库",
 	"Create a model": "创建一个模型",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "描述您的知识库和目标",
 	"Description": "描述",
 	"Didn't fully follow instructions": "没有完全遵照指示",
+	"Direct Connections": "直接连接",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "直接连接允许用户连接到他们自己的与 OpenAI 兼容的 API 端点。",
+	"Direct Connections settings updated": "直接连接设置已更新",
 	"Disabled": "禁用",
 	"Discover a function": "发现更多函数",
 	"Discover a model": "发现更多模型",
@@ -291,7 +300,7 @@
 	"Documentation": "帮助文档",
 	"Documents": "文档",
 	"does not make any external connections, and your data stays securely on your locally hosted server.": "不会与外部建立任何连接,您的数据会安全地存储在本地托管的服务器上。",
-	"Domain Filter List": "",
+	"Domain Filter List": "域名过滤列表",
 	"Don't have an account?": "没有账号?",
 	"don't install random functions from sources you don't trust.": "切勿随意从不完全可信的来源安装函数。",
 	"don't install random tools from sources you don't trust.": "切勿随意从不完全可信的来源安装工具。",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "语义向量模型设置为 \"{{embedding_model}}\"",
 	"Enable API Key": "启用 API 密钥",
 	"Enable autocomplete generation for chat messages": "启用聊天消息的输入框内容猜测补全",
+	"Enable Code Interpreter": "启用代码解释器",
 	"Enable Community Sharing": "启用分享至社区",
 	"Enable Google Drive": "启用 Google 云端硬盘",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "启用内存锁定(mlock)以防止模型数据被交换出RAM。此选项将模型的工作集页面锁定在RAM中,确保它们不会被交换到磁盘。这可以通过避免页面错误和确保快速数据访问来帮助维持性能。",
@@ -345,25 +355,28 @@
 	"Enter Application DN Password": "输入 Application DN 密码",
 	"Enter Bing Search V7 Endpoint": "输入 Bing Search V7 端点",
 	"Enter Bing Search V7 Subscription Key": "输入 Bing Search V7 订阅密钥",
+	"Enter Bocha Search API Key": "输入 Bocha Search API 密钥",
 	"Enter Brave Search API Key": "输入 Brave Search API 密钥",
 	"Enter certificate path": "输入证书路径",
 	"Enter CFG Scale (e.g. 7.0)": "输入 CFG Scale (例如:7.0)",
 	"Enter Chunk Overlap": "输入块重叠 (Chunk Overlap)",
 	"Enter Chunk Size": "输入块大小 (Chunk Size)",
 	"Enter description": "输入简介描述",
-	"Enter domains separated by commas (e.g., example.com,site.org)": "",
+	"Enter domains separated by commas (e.g., example.com,site.org)": "输入以逗号分隔的域名(例如:example.com,site.org)",
 	"Enter Exa API Key": "输入 Exa API 密钥",
 	"Enter Github Raw URL": "输入 Github Raw 地址",
 	"Enter Google PSE API Key": "输入 Google PSE API 密钥",
 	"Enter Google PSE Engine Id": "输入 Google PSE 引擎 ID",
 	"Enter Image Size (e.g. 512x512)": "输入图像分辨率 (例如:512x512)",
 	"Enter Jina API Key": "输入 Jina API 密钥",
+	"Enter Jupyter Password": "输入 Jupyter 密码",
+	"Enter Jupyter Token": "输入 Jupyter Token",
+	"Enter Jupyter URL": "输入 Jupyter URL",
 	"Enter Kagi Search API Key": "输入 Kagi Search API 密钥",
 	"Enter language codes": "输入语言代码",
 	"Enter Model ID": "输入模型 ID",
 	"Enter model tag (e.g. {{modelTag}})": "输入模型标签 (例如:{{modelTag}})",
 	"Enter Mojeek Search API Key": "输入 Mojeek Search API 密钥",
-	"Enter Bocha Search API Key": "输入 Bocha Search API 密钥",
 	"Enter Number of Steps (e.g. 50)": "输入步骤数 (Steps) (例如:50)",
 	"Enter proxy URL (e.g. https://user:password@host:port)": "输入代理 URL (例如:https://用户名:密码@主机名:端口)",
 	"Enter reasoning effort": "设置推理努力",
@@ -374,6 +387,8 @@
 	"Enter SearchApi Engine": "输入 SearchApi 引擎",
 	"Enter Searxng Query URL": "输入 Searxng 查询地址",
 	"Enter Seed": "输入 Seed",
+	"Enter SerpApi API Key": "输入 SerpApi API 密钥",
+	"Enter SerpApi Engine": "输入 SerpApi 引擎",
 	"Enter Serper API Key": "输入 Serper API 密钥",
 	"Enter Serply API Key": "输入 Serply API 密钥",
 	"Enter Serpstack API Key": "输入 Serpstack API 密钥",
@@ -501,6 +516,7 @@
 	"Hex Color": "十六进制颜色代码",
 	"Hex Color - Leave empty for default color": "十六进制颜色代码 - 留空使用默认颜色",
 	"Hide": "隐藏",
+	"Home": "主页",
 	"Host": "主机",
 	"How can I help you today?": "有什么我能帮您的吗?",
 	"How would you rate this response?": "您如何评价这个回应?",
@@ -544,6 +560,8 @@
 	"JSON Preview": "JSON 预览",
 	"July": "七月",
 	"June": "六月",
+	"Jupyter Auth": "Jupyter Auth",
+	"Jupyter URL": "Jupyter URL",
 	"JWT Expiration": "JWT 过期",
 	"JWT Token": "JWT 令牌",
 	"Kagi Search API Key": "Kagi 搜索 API 密钥",
@@ -556,8 +574,8 @@
 	"Knowledge deleted successfully.": "知识成功删除",
 	"Knowledge reset successfully.": "知识成功重置",
 	"Knowledge updated successfully": "知识成功更新",
-	"Kokoro.js (Browser)": "",
-	"Kokoro.js Dtype": "",
+	"Kokoro.js (Browser)": "Kokoro.js (Browser)",
+	"Kokoro.js Dtype": "Kokoro.js Dtype",
 	"Label": "标签",
 	"Landing Page Mode": "默认主页样式",
 	"Language": "语言",
@@ -572,11 +590,12 @@
 	"Leave empty to include all models from \"{{URL}}/models\" endpoint": "留空表示包含所有来自 \"{{URL}}/models\" 的模型",
 	"Leave empty to include all models or select specific models": "留空表示包含所有模型或请选择模型",
 	"Leave empty to use the default prompt, or enter a custom prompt": "留空以使用默认提示词,或输入自定义提示词。",
-	"Leave model field empty to use the default model.": "",
+	"Leave model field empty to use the default model.": "将模型字段留空以使用默认模型。",
 	"Light": "浅色",
 	"Listening...": "正在倾听...",
 	"Llama.cpp": "Llama.cpp",
 	"LLMs can make mistakes. Verify important information.": "大语言模型可能会生成误导性错误信息,请对关键信息加以验证。",
+	"Loading Kokoro.js...": "载入 Kokoro.js...",
 	"Local": "本地",
 	"Local Models": "本地模型",
 	"Lost": "落败",
@@ -586,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "确保从 ComfyUI 导出 API 格式的 workflow.json 文件。",
 	"Manage": "管理",
 	"Manage Arena Models": "管理竞技场模型",
+	"Manage Direct Connections": "管理直接连接",
 	"Manage Models": "管理模型",
 	"Manage Ollama": "管理 Ollama",
 	"Manage Ollama API Connections": "管理Ollama API连接",
@@ -633,7 +653,6 @@
 	"Models Access": "访问模型列表",
 	"Models configuration saved successfully": "模型配置保存成功",
 	"Mojeek Search API Key": "Mojeek Search API 密钥",
-	"Bocha Search API Key": "Bocha Search API 密钥",
 	"more": "更多",
 	"More": "更多",
 	"Name": "名称",
@@ -730,7 +749,8 @@
 	"Plain text (.txt)": "TXT 文档 (.txt)",
 	"Playground": "AI 对话游乐场",
 	"Please carefully review the following warnings:": "请仔细阅读以下警告信息:",
-	"Please enter a prompt": "请输出一个 prompt",
+	"Please do not close the settings page while loading the model.": "加载模型时请不要关闭设置页面。",
+	"Please enter a prompt": "请输出一个 Prompt",
 	"Please fill in all fields.": "请填写所有字段。",
 	"Please select a model first.": "请先选择一个模型。",
 	"Please select a model.": "请选择一个模型。",
@@ -837,6 +857,7 @@
 	"Select a pipeline": "选择一个管道",
 	"Select a pipeline url": "选择一个管道 URL",
 	"Select a tool": "选择一个工具",
+	"Select an auth method": "选择身份验证方法",
 	"Select an Ollama instance": "选择一个 Ollama 实例。",
 	"Select Engine": "选择引擎",
 	"Select Knowledge": "选择知识",
@@ -849,6 +870,8 @@
 	"Send message": "发送消息",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "在请求中发送 `stream_options: { include_usage: true }`。设置后,支持的供应商会在响应中返回 Token 使用信息。",
 	"September": "九月",
+	"SerpApi API Key": "SerpApi API 密钥",
+	"SerpApi Engine": "SerpApi 引擎",
 	"Serper API Key": "Serper API 密钥",
 	"Serply API Key": "Serply API 密钥",
 	"Serpstack API Key": "Serpstack API 密钥",
@@ -961,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "标题(例如 给我讲一个有趣的事实)",
 	"Title Auto-Generation": "自动生成标题",
 	"Title cannot be an empty string.": "标题不能为空。",
+	"Title Generation": "标题生成",
 	"Title Generation Prompt": "用于自动生成标题的提示词",
 	"TLS": "TLS",
 	"To access the available model names for downloading,": "要访问可下载的模型名称,",
@@ -1060,7 +1084,7 @@
 	"Web Loader Settings": "网页爬取设置",
 	"Web Search": "联网搜索",
 	"Web Search Engine": "联网搜索引擎",
-	"Web Search in Chat": "",
+	"Web Search in Chat": "聊天中的网页搜索",
 	"Web Search Query Generation": "网页搜索关键词生成",
 	"Webhook URL": "Webhook URL",
 	"WebUI Settings": "WebUI 设置",

+ 26 - 0
src/lib/i18n/locales/zh-TW/translation.json

@@ -122,9 +122,11 @@
 	"Beta": "測試",
 	"Bing Search V7 Endpoint": "Bing 搜尋 V7 端點",
 	"Bing Search V7 Subscription Key": "Bing 搜尋 V7 訂閱金鑰",
+	"Bocha Search API Key": "",
 	"Brave Search API Key": "Brave 搜尋 API 金鑰",
 	"By {{name}}": "由 {{name}} 製作",
 	"Bypass SSL verification for Websites": "略過網站的 SSL 驗證",
+	"Calendar": "",
 	"Call": "通話",
 	"Call feature is not supported when using Web STT engine": "使用網頁語音辨識 (Web STT) 引擎時不支援通話功能",
 	"Camera": "相機",
@@ -178,6 +180,8 @@
 	"Code execution": "程式碼執行",
 	"Code formatted successfully": "程式碼格式化成功",
 	"Code Interpreter": "程式碼解釋器",
+	"Code Interpreter Engine": "",
+	"Code Interpreter Prompt Template": "",
 	"Collection": "收藏",
 	"Color": "顏色",
 	"ComfyUI": "ComfyUI",
@@ -194,6 +198,7 @@
 	"Confirm Password": "確認密碼",
 	"Confirm your action": "確認您的操作",
 	"Confirm your new password": "確認您的新密碼",
+	"Connect to your own OpenAI compatible API endpoints.": "",
 	"Connections": "連線",
 	"Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort. (Default: medium)": "限制用於推理模型的推理程度 。僅適用於特定供應商提供的、支援推理程度設定的推理模型。(預設:中等)",
 	"Contact Admin for WebUI Access": "請聯絡管理員以取得 WebUI 存取權限",
@@ -216,6 +221,7 @@
 	"Copy Link": "複製連結",
 	"Copy to clipboard": "複製到剪貼簿",
 	"Copying to clipboard was successful!": "成功複製到剪貼簿!",
+	"CORS must be properly configured by the provider to allow requests from Open WebUI.": "",
 	"Create": "建立",
 	"Create a knowledge base": "建立知識",
 	"Create a model": "建立模型",
@@ -269,6 +275,9 @@
 	"Describe your knowledge base and objectives": "描述您的知識庫和目標",
 	"Description": "描述",
 	"Didn't fully follow instructions": "未完全遵循指示",
+	"Direct Connections": "",
+	"Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "",
+	"Direct Connections settings updated": "",
 	"Disabled": "已停用",
 	"Discover a function": "發掘函式",
 	"Discover a model": "發掘模型",
@@ -327,6 +336,7 @@
 	"Embedding model set to \"{{embedding_model}}\"": "嵌入模型已設定為 \"{{embedding_model}}\"",
 	"Enable API Key": "啟用 API 金鑰",
 	"Enable autocomplete generation for chat messages": "啟用聊天訊息的自動完成生成",
+	"Enable Code Interpreter": "",
 	"Enable Community Sharing": "啟用社群分享",
 	"Enable Google Drive": "啟用 Google Drive",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "啟用記憶體鎖定(mlock)以防止模型資料被換出 RAM。此選項會將模型的工作頁面集鎖定在 RAM 中,確保它們不會被換出到磁碟。這可以透過避免頁面錯誤和確保快速資料存取來維持效能。",
@@ -345,6 +355,7 @@
 	"Enter Application DN Password": "輸入應用程式 DN 密碼",
 	"Enter Bing Search V7 Endpoint": "輸入 Bing 搜尋 V7 端點",
 	"Enter Bing Search V7 Subscription Key": "輸入 Bing 搜尋 V7 訂閱金鑰",
+	"Enter Bocha Search API Key": "",
 	"Enter Brave Search API Key": "輸入 Brave 搜尋 API 金鑰",
 	"Enter certificate path": "輸入憑證路徑",
 	"Enter CFG Scale (e.g. 7.0)": "輸入 CFG 比例(例如:7.0)",
@@ -358,6 +369,9 @@
 	"Enter Google PSE Engine Id": "輸入 Google PSE 引擎 ID",
 	"Enter Image Size (e.g. 512x512)": "輸入圖片大小(例如:512x512)",
 	"Enter Jina API Key": "輸入 Jina API 金鑰",
+	"Enter Jupyter Password": "",
+	"Enter Jupyter Token": "",
+	"Enter Jupyter URL": "",
 	"Enter Kagi Search API Key": "輸入 Kagi 搜尋 API 金鑰",
 	"Enter language codes": "輸入語言代碼",
 	"Enter Model ID": "輸入模型 ID",
@@ -373,6 +387,8 @@
 	"Enter SearchApi Engine": "輸入 SearchApi 引擎",
 	"Enter Searxng Query URL": "輸入 SearXNG 查詢 URL",
 	"Enter Seed": "輸入種子值",
+	"Enter SerpApi API Key": "",
+	"Enter SerpApi Engine": "",
 	"Enter Serper API Key": "輸入 Serper API 金鑰",
 	"Enter Serply API Key": "輸入 Serply API 金鑰",
 	"Enter Serpstack API Key": "輸入 Serpstack API 金鑰",
@@ -500,6 +516,7 @@
 	"Hex Color": "Hex 顔色",
 	"Hex Color - Leave empty for default color": "Hex 顔色 —— 留空以使用預設顔色",
 	"Hide": "隱藏",
+	"Home": "",
 	"Host": "主機",
 	"How can I help you today?": "今天我能為您做些什麼?",
 	"How would you rate this response?": "您如何評價此回應?",
@@ -543,6 +560,8 @@
 	"JSON Preview": "JSON 預覽",
 	"July": "7 月",
 	"June": "6 月",
+	"Jupyter Auth": "",
+	"Jupyter URL": "",
 	"JWT Expiration": "JWT 過期時間",
 	"JWT Token": "JWT Token",
 	"Kagi Search API Key": "Kagi 搜尋 API 金鑰",
@@ -576,6 +595,7 @@
 	"Listening...": "正在聆聽...",
 	"Llama.cpp": "Llama.cpp",
 	"LLMs can make mistakes. Verify important information.": "大型語言模型可能會出錯。請驗證重要資訊。",
+	"Loading Kokoro.js...": "",
 	"Local": "本機",
 	"Local Models": "本機模型",
 	"Lost": "已遺失",
@@ -585,6 +605,7 @@
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "請確保從 ComfyUI 匯出 workflow.json 檔案為 API 格式。",
 	"Manage": "管理",
 	"Manage Arena Models": "管理競技模型",
+	"Manage Direct Connections": "",
 	"Manage Models": "管理模型",
 	"Manage Ollama": "管理 Ollama",
 	"Manage Ollama API Connections": "管理 Ollama API 連線",
@@ -728,6 +749,7 @@
 	"Plain text (.txt)": "純文字 (.txt)",
 	"Playground": "遊樂場",
 	"Please carefully review the following warnings:": "請仔細閱讀以下警告:",
+	"Please do not close the settings page while loading the model.": "",
 	"Please enter a prompt": "請輸入提示詞",
 	"Please fill in all fields.": "請填寫所有欄位。",
 	"Please select a model first.": "請先選擇型號。",
@@ -835,6 +857,7 @@
 	"Select a pipeline": "選擇管線",
 	"Select a pipeline url": "選擇管線 URL",
 	"Select a tool": "選擇工具",
+	"Select an auth method": "",
 	"Select an Ollama instance": "選擇一個 Ollama 實例",
 	"Select Engine": "選擇引擎",
 	"Select Knowledge": "選擇知識庫",
@@ -847,6 +870,8 @@
 	"Send message": "傳送訊息",
 	"Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "在請求中傳送 `stream_options: { include_usage: true }`。\n設定後,支援的提供者將在回應中回傳權杖使用資訊。",
 	"September": "9 月",
+	"SerpApi API Key": "",
+	"SerpApi Engine": "",
 	"Serper API Key": "Serper API 金鑰",
 	"Serply API Key": "Serply API 金鑰",
 	"Serpstack API Key": "Serpstack API 金鑰",
@@ -959,6 +984,7 @@
 	"Title (e.g. Tell me a fun fact)": "標題(例如:告訴我一個有趣的事實)",
 	"Title Auto-Generation": "自動產生標題",
 	"Title cannot be an empty string.": "標題不能是空字串。",
+	"Title Generation": "",
 	"Title Generation Prompt": "自動產生標題的提示詞",
 	"TLS": "TLS",
 	"To access the available model names for downloading,": "若要存取可供下載的模型名稱,",

+ 3 - 6
src/lib/utils/index.ts

@@ -55,15 +55,12 @@ export const replaceTokens = (content, sourceIds, char, user) => {
 
 	// Remove sourceIds from the content and replace them with <source_id>...</source_id>
 	if (Array.isArray(sourceIds)) {
-		sourceIds.forEach((sourceId) => {
-			// Escape special characters in the sourceId
-			const escapedSourceId = escapeRegExp(sourceId);
-
+		sourceIds.forEach((sourceId, idx) => {
 			// Create a token based on the exact `[sourceId]` string
-			const sourceToken = `\\[${escapedSourceId}\\]`; // Escape special characters for RegExp
+			const sourceToken = `\\[${idx}\\]`; // Escape special characters for RegExp
 			const sourceRegex = new RegExp(sourceToken, 'g'); // Match all occurrences of [sourceId]
 
-			content = content.replace(sourceRegex, `<source_id data="${sourceId}" />`);
+			content = content.replace(sourceRegex, `<source_id data="${idx}" title="${sourceId}" />`);
 		});
 	}
 

+ 65 - 0
src/routes/(app)/home/+layout.svelte

@@ -0,0 +1,65 @@
+<script lang="ts">
+	import { onMount, getContext } from 'svelte';
+	import { WEBUI_NAME, showSidebar, functions } from '$lib/stores';
+	import MenuLines from '$lib/components/icons/MenuLines.svelte';
+	import { page } from '$app/stores';
+
+	const i18n = getContext('i18n');
+
+	onMount(async () => {});
+</script>
+
+<svelte:head>
+	<title>
+		{$i18n.t('Home')} | {$WEBUI_NAME}
+	</title>
+</svelte:head>
+
+<div
+	class=" flex flex-col w-full h-screen max-h-[100dvh] transition-width duration-200 ease-in-out {$showSidebar
+		? 'md:max-w-[calc(100%-260px)]'
+		: ''} max-w-full"
+>
+	<nav class="   px-2.5 pt-1 backdrop-blur-xl w-full drag-region">
+		<div class=" flex items-center">
+			<div class="{$showSidebar ? 'md:hidden' : ''} flex flex-none items-center self-end">
+				<button
+					id="sidebar-toggle-button"
+					class="cursor-pointer p-1.5 flex rounded-xl hover:bg-gray-100 dark:hover:bg-gray-850 transition"
+					on:click={() => {
+						showSidebar.set(!$showSidebar);
+					}}
+					aria-label="Toggle Sidebar"
+				>
+					<div class=" m-auto self-center">
+						<MenuLines />
+					</div>
+				</button>
+			</div>
+
+			<div class=" flex w-full">
+				<div
+					class="flex gap-1 scrollbar-none overflow-x-auto w-fit text-center text-sm font-medium rounded-full bg-transparent pt-1"
+				>
+					<a
+						class="min-w-fit rounded-full p-1.5 {$page.url.pathname.includes('/home/notes')
+							? ''
+							: 'text-gray-300 dark:text-gray-600 hover:text-gray-700 dark:hover:text-white'} transition"
+						href="/playground/notes">{$i18n.t('Notes')}</a
+					>
+
+					<a
+						class="min-w-fit rounded-full p-1.5 {$page.url.pathname.includes('/playground/calendar')
+							? ''
+							: 'text-gray-300 dark:text-gray-600 hover:text-gray-700 dark:hover:text-white'} transition"
+						href="/playground/completions">{$i18n.t('Calendar')}</a
+					>
+				</div>
+			</div>
+		</div>
+	</nav>
+
+	<div class=" flex-1 max-h-full overflow-y-auto">
+		<slot />
+	</div>
+</div>

+ 0 - 0
src/routes/(app)/home/+page.svelte


+ 89 - 1
src/routes/+layout.svelte

@@ -45,6 +45,7 @@
 	import { getAllTags, getChatList } from '$lib/apis/chats';
 	import NotificationToast from '$lib/components/NotificationToast.svelte';
 	import AppSidebar from '$lib/components/app/AppSidebar.svelte';
+	import { chatCompletion } from '$lib/apis/openai';
 
 	setContext('i18n', i18n);
 
@@ -251,10 +252,97 @@
 			} else if (type === 'chat:tags') {
 				tags.set(await getAllTags(localStorage.token));
 			}
-		} else {
+		} else if (data?.session_id === $socket.id) {
 			if (type === 'execute:python') {
 				console.log('execute:python', data);
 				executePythonAsWorker(data.id, data.code, cb);
+			} else if (type === 'request:chat:completion') {
+				console.log(data, $socket.id);
+				const { session_id, channel, form_data, model } = data;
+
+				try {
+					const directConnections = $settings?.directConnections ?? {};
+
+					if (directConnections) {
+						const urlIdx = model?.urlIdx;
+
+						const OPENAI_API_URL = directConnections.OPENAI_API_BASE_URLS[urlIdx];
+						const OPENAI_API_KEY = directConnections.OPENAI_API_KEYS[urlIdx];
+						const API_CONFIG = directConnections.OPENAI_API_CONFIGS[urlIdx];
+
+						try {
+							if (API_CONFIG?.prefix_id) {
+								const prefixId = API_CONFIG.prefix_id;
+								form_data['model'] = form_data['model'].replace(`${prefixId}.`, ``);
+							}
+
+							const [res, controller] = await chatCompletion(
+								OPENAI_API_KEY,
+								form_data,
+								OPENAI_API_URL
+							);
+
+							if (res) {
+								// raise if the response is not ok
+								if (!res.ok) {
+									throw await res.json();
+								}
+
+								if (form_data?.stream ?? false) {
+									cb({
+										status: true
+									});
+									console.log({ status: true });
+
+									// res will either be SSE or JSON
+									const reader = res.body.getReader();
+									const decoder = new TextDecoder();
+
+									const processStream = async () => {
+										while (true) {
+											// Read data chunks from the response stream
+											const { done, value } = await reader.read();
+											if (done) {
+												break;
+											}
+
+											// Decode the received chunk
+											const chunk = decoder.decode(value, { stream: true });
+
+											// Process lines within the chunk
+											const lines = chunk.split('\n').filter((line) => line.trim() !== '');
+
+											for (const line of lines) {
+												console.log(line);
+												$socket?.emit(channel, line);
+											}
+										}
+									};
+
+									// Process the stream in the background
+									await processStream();
+								} else {
+									const data = await res.json();
+									cb(data);
+								}
+							} else {
+								throw new Error('An error occurred while fetching the completion');
+							}
+						} catch (error) {
+							console.error('chatCompletion', error);
+							cb(error);
+						}
+					}
+				} catch (error) {
+					console.error('chatCompletion', error);
+					cb(error);
+				} finally {
+					$socket.emit(channel, {
+						done: true
+					});
+				}
+			} else {
+				console.log('chatEventHandler', event);
 			}
 		}
 	};