소스 검색

Merge pull request #7562 from open-webui/dev

0.4.8
Timothy Jaeryang Baek 4 달 전
부모
커밋
29a2719595
35개의 변경된 파일587개의 추가작업 그리고 494개의 파일을 삭제
  1. 15 0
      CHANGELOG.md
  2. 4 3
      backend/open_webui/apps/ollama/main.py
  3. 2 1
      backend/open_webui/apps/openai/main.py
  4. 2 2
      backend/open_webui/apps/retrieval/main.py
  5. 1 1
      backend/open_webui/config.py
  6. 3 0
      backend/open_webui/env.py
  7. 3 2
      backend/open_webui/main.py
  8. 6 5
      package-lock.json
  9. 1 1
      package.json
  10. 5 4
      src/app.css
  11. 6 3
      src/app.html
  12. 4 4
      src/lib/components/admin/Settings/Models.svelte
  13. 108 107
      src/lib/components/chat/MessageInput.svelte
  14. 1 1
      src/lib/components/chat/MessageInput/Commands.svelte
  15. 1 1
      src/lib/components/chat/MessageInput/Commands/Knowledge.svelte
  16. 1 1
      src/lib/components/chat/MessageInput/Commands/Models.svelte
  17. 1 1
      src/lib/components/chat/MessageInput/Commands/Prompts.svelte
  18. 1 1
      src/lib/components/chat/Messages/Markdown/MarkdownTokens.svelte
  19. 3 1
      src/lib/components/common/Banner.svelte
  20. 16 6
      src/lib/components/common/RichTextInput.svelte
  21. 47 16
      src/lib/components/common/RichTextInput/AutoCompletion.js
  22. 1 1
      src/lib/components/workspace/Knowledge/KnowledgeBase/AddTextContentModal.svelte
  23. 11 11
      src/lib/i18n/locales/ca-ES/translation.json
  24. 83 83
      src/lib/i18n/locales/cs-CZ/translation.json
  25. 201 201
      src/lib/i18n/locales/ru-RU/translation.json
  26. 23 23
      src/lib/i18n/locales/zh-CN/translation.json
  27. 13 13
      src/lib/i18n/locales/zh-TW/translation.json
  28. BIN
      static/favicon/apple-touch-icon.png
  29. BIN
      static/favicon/favicon-96x96.png
  30. BIN
      static/favicon/favicon.ico
  31. 0 0
      static/favicon/favicon.svg
  32. 21 0
      static/favicon/site.webmanifest
  33. BIN
      static/favicon/web-app-manifest-192x192.png
  34. BIN
      static/favicon/web-app-manifest-512x512.png
  35. 3 1
      tailwind.config.js

+ 15 - 0
CHANGELOG.md

@@ -5,6 +5,21 @@ 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/),
 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).
 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 
 
+## [0.4.8] - 2024-12-07
+
+### Added
+
+- **🔓 Bypass Model Access Control**: Introduced the 'BYPASS_MODEL_ACCESS_CONTROL' environment variable. Easily bypass model access controls for user roles when access control isn't required, simplifying workflows for trusted environments.
+- **📝 Markdown in Banners**: Now supports markdown for banners, enabling richer, more visually engaging announcements.
+- **🌐 Internationalization Updates**: Enhanced translations across multiple languages, further improving accessibility and global user experience.
+- **🎨 Styling Enhancements**: General UI style refinements for a cleaner and more polished interface.
+- **📋 Rich Text Reliability**: Improved the reliability and stability of rich text input across chats for smoother interactions.
+
+### Fixed
+
+- **💡 Tailwind Build Issue**: Resolved a breaking bug caused by Tailwind, ensuring smoother builds and overall system reliability.
+- **📚 Knowledge Collection Query Fix**: Addressed API endpoint issues with querying knowledge collections, ensuring accurate and reliable information retrieval.
+
 ## [0.4.7] - 2024-12-01
 ## [0.4.7] - 2024-12-01
 
 
 ### Added
 ### Added

+ 4 - 3
backend/open_webui/apps/ollama/main.py

@@ -24,6 +24,7 @@ from open_webui.config import (
 from open_webui.env import (
 from open_webui.env import (
     AIOHTTP_CLIENT_TIMEOUT,
     AIOHTTP_CLIENT_TIMEOUT,
     AIOHTTP_CLIENT_TIMEOUT_OPENAI_MODEL_LIST,
     AIOHTTP_CLIENT_TIMEOUT_OPENAI_MODEL_LIST,
+    BYPASS_MODEL_ACCESS_CONTROL,
 )
 )
 
 
 
 
@@ -359,7 +360,7 @@ async def get_ollama_tags(
                 detail=error_detail,
                 detail=error_detail,
             )
             )
 
 
-    if user.role == "user":
+    if user.role == "user" and not BYPASS_MODEL_ACCESS_CONTROL:
         # Filter models based on user access control
         # Filter models based on user access control
         filtered_models = []
         filtered_models = []
         for model in models.get("models", []):
         for model in models.get("models", []):
@@ -1067,7 +1068,7 @@ async def generate_openai_chat_completion(
             payload = apply_model_system_prompt_to_body(params, payload, user)
             payload = apply_model_system_prompt_to_body(params, payload, user)
 
 
         # Check if user has access to the model
         # Check if user has access to the model
-        if user.role == "user":
+        if user.role == "user" and not BYPASS_MODEL_ACCESS_CONTROL:
             if not (
             if not (
                 user.id == model_info.user_id
                 user.id == model_info.user_id
                 or has_access(
                 or has_access(
@@ -1156,7 +1157,7 @@ async def get_openai_models(
                 detail=error_detail,
                 detail=error_detail,
             )
             )
 
 
-    if user.role == "user":
+    if user.role == "user" and not BYPASS_MODEL_ACCESS_CONTROL:
         # Filter models based on user access control
         # Filter models based on user access control
         filtered_models = []
         filtered_models = []
         for model in models:
         for model in models:

+ 2 - 1
backend/open_webui/apps/openai/main.py

@@ -24,6 +24,7 @@ from open_webui.env import (
     AIOHTTP_CLIENT_TIMEOUT,
     AIOHTTP_CLIENT_TIMEOUT,
     AIOHTTP_CLIENT_TIMEOUT_OPENAI_MODEL_LIST,
     AIOHTTP_CLIENT_TIMEOUT_OPENAI_MODEL_LIST,
     ENABLE_FORWARD_USER_INFO_HEADERS,
     ENABLE_FORWARD_USER_INFO_HEADERS,
+    BYPASS_MODEL_ACCESS_CONTROL,
 )
 )
 
 
 from open_webui.constants import ERROR_MESSAGES
 from open_webui.constants import ERROR_MESSAGES
@@ -422,7 +423,7 @@ async def get_models(url_idx: Optional[int] = None, user=Depends(get_verified_us
                 error_detail = f"Unexpected error: {str(e)}"
                 error_detail = f"Unexpected error: {str(e)}"
                 raise HTTPException(status_code=500, detail=error_detail)
                 raise HTTPException(status_code=500, detail=error_detail)
 
 
-    if user.role == "user":
+    if user.role == "user" and not BYPASS_MODEL_ACCESS_CONTROL:
         # Filter models based on user access control
         # Filter models based on user access control
         filtered_models = []
         filtered_models = []
         for model in models.get("data", []):
         for model in models.get("data", []):

+ 2 - 2
backend/open_webui/apps/retrieval/main.py

@@ -1399,7 +1399,7 @@ def query_collection_handler(
         if app.state.config.ENABLE_RAG_HYBRID_SEARCH:
         if app.state.config.ENABLE_RAG_HYBRID_SEARCH:
             return query_collection_with_hybrid_search(
             return query_collection_with_hybrid_search(
                 collection_names=form_data.collection_names,
                 collection_names=form_data.collection_names,
-                query=form_data.query,
+                queries=[form_data.query],
                 embedding_function=app.state.EMBEDDING_FUNCTION,
                 embedding_function=app.state.EMBEDDING_FUNCTION,
                 k=form_data.k if form_data.k else app.state.config.TOP_K,
                 k=form_data.k if form_data.k else app.state.config.TOP_K,
                 reranking_function=app.state.sentence_transformer_rf,
                 reranking_function=app.state.sentence_transformer_rf,
@@ -1410,7 +1410,7 @@ def query_collection_handler(
         else:
         else:
             return query_collection(
             return query_collection(
                 collection_names=form_data.collection_names,
                 collection_names=form_data.collection_names,
-                query=form_data.query,
+                queries=[form_data.query],
                 embedding_function=app.state.EMBEDDING_FUNCTION,
                 embedding_function=app.state.EMBEDDING_FUNCTION,
                 k=form_data.k if form_data.k else app.state.config.TOP_K,
                 k=form_data.k if form_data.k else app.state.config.TOP_K,
             )
             )

+ 1 - 1
backend/open_webui/config.py

@@ -702,6 +702,7 @@ ENABLE_LOGIN_FORM = PersistentConfig(
     os.environ.get("ENABLE_LOGIN_FORM", "True").lower() == "true",
     os.environ.get("ENABLE_LOGIN_FORM", "True").lower() == "true",
 )
 )
 
 
+
 DEFAULT_LOCALE = PersistentConfig(
 DEFAULT_LOCALE = PersistentConfig(
     "DEFAULT_LOCALE",
     "DEFAULT_LOCALE",
     "ui.default_locale",
     "ui.default_locale",
@@ -758,7 +759,6 @@ DEFAULT_USER_ROLE = PersistentConfig(
     os.getenv("DEFAULT_USER_ROLE", "pending"),
     os.getenv("DEFAULT_USER_ROLE", "pending"),
 )
 )
 
 
-
 USER_PERMISSIONS_WORKSPACE_MODELS_ACCESS = (
 USER_PERMISSIONS_WORKSPACE_MODELS_ACCESS = (
     os.environ.get("USER_PERMISSIONS_WORKSPACE_MODELS_ACCESS", "False").lower()
     os.environ.get("USER_PERMISSIONS_WORKSPACE_MODELS_ACCESS", "False").lower()
     == "true"
     == "true"

+ 3 - 0
backend/open_webui/env.py

@@ -329,6 +329,9 @@ WEBUI_AUTH_TRUSTED_EMAIL_HEADER = os.environ.get(
 )
 )
 WEBUI_AUTH_TRUSTED_NAME_HEADER = os.environ.get("WEBUI_AUTH_TRUSTED_NAME_HEADER", None)
 WEBUI_AUTH_TRUSTED_NAME_HEADER = os.environ.get("WEBUI_AUTH_TRUSTED_NAME_HEADER", None)
 
 
+BYPASS_MODEL_ACCESS_CONTROL = (
+    os.environ.get("BYPASS_MODEL_ACCESS_CONTROL", "False").lower() == "true"
+)
 
 
 ####################################
 ####################################
 # WEBUI_SECRET_KEY
 # WEBUI_SECRET_KEY

+ 3 - 2
backend/open_webui/main.py

@@ -112,6 +112,7 @@ from open_webui.env import (
     WEBUI_SESSION_COOKIE_SAME_SITE,
     WEBUI_SESSION_COOKIE_SAME_SITE,
     WEBUI_SESSION_COOKIE_SECURE,
     WEBUI_SESSION_COOKIE_SECURE,
     WEBUI_URL,
     WEBUI_URL,
+    BYPASS_MODEL_ACCESS_CONTROL,
     RESET_CONFIG_ON_START,
     RESET_CONFIG_ON_START,
     OFFLINE_MODE,
     OFFLINE_MODE,
 )
 )
@@ -621,7 +622,7 @@ class ChatCompletionMiddleware(BaseHTTPMiddleware):
             )
             )
 
 
         model_info = Models.get_model_by_id(model["id"])
         model_info = Models.get_model_by_id(model["id"])
-        if user.role == "user":
+        if user.role == "user" and not BYPASS_MODEL_ACCESS_CONTROL:
             if model.get("arena"):
             if model.get("arena"):
                 if not has_access(
                 if not has_access(
                     user.id,
                     user.id,
@@ -1224,7 +1225,7 @@ async def get_models(user=Depends(get_verified_user)):
         )
         )
 
 
     # Filter out models that the user does not have access to
     # Filter out models that the user does not have access to
-    if user.role == "user":
+    if user.role == "user" and not BYPASS_MODEL_ACCESS_CONTROL:
         filtered_models = []
         filtered_models = []
         for model in models:
         for model in models:
             if model.get("arena"):
             if model.get("arena"):

+ 6 - 5
package-lock.json

@@ -1,12 +1,12 @@
 {
 {
 	"name": "open-webui",
 	"name": "open-webui",
-	"version": "0.4.7",
+	"version": "0.4.8",
 	"lockfileVersion": 3,
 	"lockfileVersion": 3,
 	"requires": true,
 	"requires": true,
 	"packages": {
 	"packages": {
 		"": {
 		"": {
 			"name": "open-webui",
 			"name": "open-webui",
-			"version": "0.4.7",
+			"version": "0.4.8",
 			"dependencies": {
 			"dependencies": {
 				"@codemirror/lang-javascript": "^6.2.2",
 				"@codemirror/lang-javascript": "^6.2.2",
 				"@codemirror/lang-python": "^6.1.6",
 				"@codemirror/lang-python": "^6.1.6",
@@ -2249,10 +2249,11 @@
 			}
 			}
 		},
 		},
 		"node_modules/@sveltejs/adapter-static": {
 		"node_modules/@sveltejs/adapter-static": {
-			"version": "3.0.2",
-			"resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.2.tgz",
-			"integrity": "sha512-/EBFydZDwfwFfFEuF1vzUseBoRziwKP7AoHAwv+Ot3M084sE/HTVBHf9mCmXfdM9ijprY5YEugZjleflncX5fQ==",
+			"version": "3.0.6",
+			"resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.6.tgz",
+			"integrity": "sha512-MGJcesnJWj7FxDcB/GbrdYD3q24Uk0PIL4QIX149ku+hlJuj//nxUbb0HxUTpjkecWfHjVveSUnUaQWnPRXlpg==",
 			"dev": true,
 			"dev": true,
+			"license": "MIT",
 			"peerDependencies": {
 			"peerDependencies": {
 				"@sveltejs/kit": "^2.0.0"
 				"@sveltejs/kit": "^2.0.0"
 			}
 			}

+ 1 - 1
package.json

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

+ 5 - 4
src/app.css

@@ -45,15 +45,15 @@ math {
 }
 }
 
 
 .input-prose {
 .input-prose {
-	@apply prose dark:prose-invert prose-headings:font-semibold prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line;
+	@apply prose dark:prose-invert prose-headings:font-semibold prose-hr:my-4 prose-hr:border-gray-100 prose-hr:dark:border-gray-800 prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line;
 }
 }
 
 
 .input-prose-sm {
 .input-prose-sm {
-	@apply prose dark:prose-invert prose-headings:font-semibold prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line text-sm;
+	@apply prose dark:prose-invert prose-headings:font-semibold prose-hr:my-4 prose-hr:border-gray-100 prose-hr:dark:border-gray-800 prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line text-sm;
 }
 }
 
 
 .markdown-prose {
 .markdown-prose {
-	@apply prose dark:prose-invert prose-headings:font-semibold prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line;
+	@apply prose dark:prose-invert prose-headings:font-semibold prose-hr:my-4 prose-p:my-0 prose-img:my-1 prose-headings:my-1 prose-pre:my-0 prose-table:my-0 prose-blockquote:my-0 prose-ul:-my-0 prose-ol:-my-0 prose-li:-my-0 whitespace-pre-line;
 }
 }
 
 
 .markdown a {
 .markdown a {
@@ -211,7 +211,8 @@ input[type='number'] {
 	float: left;
 	float: left;
 	color: #adb5bd;
 	color: #adb5bd;
 	pointer-events: none;
 	pointer-events: none;
-	height: 0;
+
+	@apply line-clamp-1 absolute;
 }
 }
 
 
 .ai-autocompletion::after {
 .ai-autocompletion::after {

+ 6 - 3
src/app.html

@@ -2,9 +2,12 @@
 <html lang="en">
 <html lang="en">
 	<head>
 	<head>
 		<meta charset="utf-8" />
 		<meta charset="utf-8" />
-		<link rel="icon" href="%sveltekit.assets%/favicon.png" />
-		<link rel="apple-touch-icon" href="%sveltekit.assets%/favicon.png" />
-		<link rel="manifest" href="%sveltekit.assets%/manifest.json" crossorigin="use-credentials" />
+		<link rel="icon" type="image/png" href="/favicon/favicon-96x96.png" sizes="96x96" />
+		<link rel="icon" type="image/svg+xml" href="/favicon/favicon.svg" />
+		<link rel="shortcut icon" href="/favicon/favicon.ico" />
+		<link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png" />
+		<meta name="apple-mobile-web-app-title" content="Open WebUI" />
+		<link rel="manifest" href="/favicon/site.webmanifest" />
 		<meta
 		<meta
 			name="viewport"
 			name="viewport"
 			content="width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=cover"
 			content="width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=cover"

+ 4 - 4
src/lib/components/admin/Settings/Models.svelte

@@ -44,10 +44,10 @@
 		filteredModels = models
 		filteredModels = models
 			.filter((m) => searchValue === '' || m.name.toLowerCase().includes(searchValue.toLowerCase()))
 			.filter((m) => searchValue === '' || m.name.toLowerCase().includes(searchValue.toLowerCase()))
 			.sort((a, b) => {
 			.sort((a, b) => {
-				// Check if either model is inactive and push them to the bottom
-				if ((a.is_active ?? true) !== (b.is_active ?? true)) {
-					return (b.is_active ?? true) - (a.is_active ?? true);
-				}
+				// // Check if either model is inactive and push them to the bottom
+				// if ((a.is_active ?? true) !== (b.is_active ?? true)) {
+				// 	return (b.is_active ?? true) - (a.is_active ?? true);
+				// }
 				// If both models' active states are the same, sort alphabetically
 				// If both models' active states are the same, sort alphabetically
 				return a.name.localeCompare(b.name);
 				return a.name.localeCompare(b.name);
 			});
 			});

+ 108 - 107
src/lib/components/chat/MessageInput.svelte

@@ -271,7 +271,7 @@
 
 
 {#if loaded}
 {#if loaded}
 	<div class="w-full font-primary">
 	<div class="w-full font-primary">
-		<div class=" -mb-0.5 mx-auto inset-x-0 bg-transparent flex justify-center">
+		<div class=" mx-auto inset-x-0 bg-transparent flex justify-center">
 			<div class="flex flex-col px-3 max-w-6xl w-full">
 			<div class="flex flex-col px-3 max-w-6xl w-full">
 				<div class="relative">
 				<div class="relative">
 					{#if autoScroll === false && history?.currentId}
 					{#if autoScroll === false && history?.currentId}
@@ -305,7 +305,7 @@
 				<div class="w-full relative">
 				<div class="w-full relative">
 					{#if atSelectedModel !== undefined || selectedToolIds.length > 0 || webSearchEnabled}
 					{#if atSelectedModel !== undefined || selectedToolIds.length > 0 || webSearchEnabled}
 						<div
 						<div
-							class="px-4 pb-0.5 pt-1.5 text-left w-full flex flex-col absolute bottom-0 left-0 right-0 bg-gradient-to-t from-white dark:from-gray-900 z-10"
+							class="px-3 pb-0.5 pt-1.5 text-left w-full flex flex-col absolute bottom-0 left-0 right-0 bg-gradient-to-t from-white dark:from-gray-900 z-10"
 						>
 						>
 							{#if selectedToolIds.length > 0}
 							{#if selectedToolIds.length > 0}
 								<div class="flex items-center justify-between w-full">
 								<div class="flex items-center justify-between w-full">
@@ -462,7 +462,7 @@
 							}}
 							}}
 						>
 						>
 							<div
 							<div
-								class="flex-1 flex flex-col relative w-full rounded-3xl px-1.5 bg-gray-50 dark:bg-gray-400/5 dark:text-gray-100"
+								class="flex-1 flex flex-col relative w-full rounded-3xl px-1 bg-gray-50 dark:bg-gray-400/5 dark:text-gray-100"
 								dir={$settings?.chatDirection ?? 'LTR'}
 								dir={$settings?.chatDirection ?? 'LTR'}
 							>
 							>
 								{#if files.length > 0}
 								{#if files.length > 0}
@@ -547,7 +547,7 @@
 								{/if}
 								{/if}
 
 
 								<div class=" flex">
 								<div class=" flex">
-									<div class=" ml-0.5 self-end mb-1.5 flex space-x-1">
+									<div class="ml-1 self-end mb-1.5 flex space-x-1">
 										<InputMenu
 										<InputMenu
 											bind:webSearchEnabled
 											bind:webSearchEnabled
 											bind:selectedToolIds
 											bind:selectedToolIds
@@ -562,18 +562,18 @@
 											}}
 											}}
 										>
 										>
 											<button
 											<button
-												class="bg-transparent hover:bg-gray-100 text-gray-800 dark:text-white dark:hover:bg-gray-800 transition rounded-full p-2 outline-none focus:outline-none"
+												class="bg-transparent hover:bg-white/80 text-gray-800 dark:text-white dark:hover:bg-gray-800 transition rounded-full p-2 outline-none focus:outline-none"
 												type="button"
 												type="button"
 												aria-label="More"
 												aria-label="More"
 											>
 											>
 												<svg
 												<svg
 													xmlns="http://www.w3.org/2000/svg"
 													xmlns="http://www.w3.org/2000/svg"
-													viewBox="0 0 16 16"
+													viewBox="0 0 20 20"
 													fill="currentColor"
 													fill="currentColor"
 													class="size-5"
 													class="size-5"
 												>
 												>
 													<path
 													<path
-														d="M8.75 3.75a.75.75 0 0 0-1.5 0v3.5h-3.5a.75.75 0 0 0 0 1.5h3.5v3.5a.75.75 0 0 0 1.5 0v-3.5h3.5a.75.75 0 0 0 0-1.5h-3.5v-3.5Z"
+														d="M10.75 4.75a.75.75 0 0 0-1.5 0v4.5h-4.5a.75.75 0 0 0 0 1.5h4.5v4.5a.75.75 0 0 0 1.5 0v-4.5h4.5a.75.75 0 0 0 0-1.5h-4.5v-4.5Z"
 													/>
 													/>
 												</svg>
 												</svg>
 											</button>
 											</button>
@@ -967,12 +967,12 @@
 										/>
 										/>
 									{/if}
 									{/if}
 
 
-									<div class="self-end mb-2 flex space-x-1 mr-1">
+									<div class="self-end mb-1.5 flex space-x-1 mr-1">
 										{#if !history?.currentId || history.messages[history.currentId]?.done == true}
 										{#if !history?.currentId || history.messages[history.currentId]?.done == true}
 											<Tooltip content={$i18n.t('Record voice')}>
 											<Tooltip content={$i18n.t('Record voice')}>
 												<button
 												<button
 													id="voice-input-button"
 													id="voice-input-button"
-													class=" text-gray-600 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-850 transition rounded-full p-1.5 mr-0.5 self-center"
+													class=" text-gray-600 dark:text-gray-300 hover:text-gray-700 dark:hover:text-gray-200 transition rounded-full p-1.5 mr-0.5 self-center"
 													type="button"
 													type="button"
 													on:click={async () => {
 													on:click={async () => {
 														try {
 														try {
@@ -1016,112 +1016,113 @@
 												</button>
 												</button>
 											</Tooltip>
 											</Tooltip>
 										{/if}
 										{/if}
-									</div>
-								</div>
-							</div>
-							<div class="flex items-end w-10">
-								{#if !history.currentId || history.messages[history.currentId]?.done == true}
-									{#if prompt === ''}
-										<div class=" flex items-center mb-1">
-											<Tooltip content={$i18n.t('Call')}>
-												<button
-													class=" text-gray-600 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-850 transition rounded-full p-2 self-center"
-													type="button"
-													on:click={async () => {
-														if (selectedModels.length > 1) {
-															toast.error($i18n.t('Select only one model to call'));
 
 
-															return;
-														}
+										{#if !history.currentId || history.messages[history.currentId]?.done == true}
+											{#if prompt === ''}
+												<div class=" flex items-center">
+													<Tooltip content={$i18n.t('Call')}>
+														<button
+															class=" bg-black text-white hover:bg-gray-900 dark:bg-white dark:text-black dark:hover:bg-gray-100 transition rounded-full p-2 self-center"
+															type="button"
+															on:click={async () => {
+																if (selectedModels.length > 1) {
+																	toast.error($i18n.t('Select only one model to call'));
 
 
-														if ($config.audio.stt.engine === 'web') {
-															toast.error(
-																$i18n.t('Call feature is not supported when using Web STT engine')
-															);
+																	return;
+																}
 
 
-															return;
-														}
-														// check if user has access to getUserMedia
-														try {
-															let stream = await navigator.mediaDevices.getUserMedia({
-																audio: true
-															});
-															// If the user grants the permission, proceed to show the call overlay
+																if ($config.audio.stt.engine === 'web') {
+																	toast.error(
+																		$i18n.t(
+																			'Call feature is not supported when using Web STT engine'
+																		)
+																	);
 
 
-															if (stream) {
-																const tracks = stream.getTracks();
-																tracks.forEach((track) => track.stop());
-															}
+																	return;
+																}
+																// check if user has access to getUserMedia
+																try {
+																	let stream = await navigator.mediaDevices.getUserMedia({
+																		audio: true
+																	});
+																	// If the user grants the permission, proceed to show the call overlay
 
 
-															stream = null;
+																	if (stream) {
+																		const tracks = stream.getTracks();
+																		tracks.forEach((track) => track.stop());
+																	}
 
 
-															showCallOverlay.set(true);
-															showControls.set(true);
-														} catch (err) {
-															// If the user denies the permission or an error occurs, show an error message
-															toast.error(
-																$i18n.t('Permission denied when accessing media devices')
-															);
-														}
-													}}
-													aria-label="Call"
-												>
-													<Headphone className="size-6" />
-												</button>
-											</Tooltip>
-										</div>
-									{:else}
-										<div class=" flex items-center mb-1">
-											<Tooltip content={$i18n.t('Send message')}>
-												<button
-													id="send-message-button"
-													class="{prompt !== ''
-														? 'bg-black text-white hover:bg-gray-900 dark:bg-white dark:text-black dark:hover:bg-gray-100 '
-														: 'text-white bg-gray-200 dark:text-gray-900 dark:bg-gray-700 disabled'} transition rounded-full p-1.5 m-0.5 self-center"
-													type="submit"
-													disabled={prompt === ''}
-												>
-													<svg
-														xmlns="http://www.w3.org/2000/svg"
-														viewBox="0 0 16 16"
-														fill="currentColor"
-														class="size-6"
+																	stream = null;
+
+																	showCallOverlay.set(true);
+																	showControls.set(true);
+																} catch (err) {
+																	// If the user denies the permission or an error occurs, show an error message
+																	toast.error(
+																		$i18n.t('Permission denied when accessing media devices')
+																	);
+																}
+															}}
+															aria-label="Call"
+														>
+															<Headphone className="size-5" />
+														</button>
+													</Tooltip>
+												</div>
+											{:else}
+												<div class=" flex items-center">
+													<Tooltip content={$i18n.t('Send message')}>
+														<button
+															id="send-message-button"
+															class="{prompt !== ''
+																? 'bg-black text-white hover:bg-gray-900 dark:bg-white dark:text-black dark:hover:bg-gray-100 '
+																: 'text-white bg-gray-200 dark:text-gray-900 dark:bg-gray-700 disabled'} transition rounded-full p-1.5 self-center"
+															type="submit"
+															disabled={prompt === ''}
+														>
+															<svg
+																xmlns="http://www.w3.org/2000/svg"
+																viewBox="0 0 16 16"
+																fill="currentColor"
+																class="size-6"
+															>
+																<path
+																	fill-rule="evenodd"
+																	d="M8 14a.75.75 0 0 1-.75-.75V4.56L4.03 7.78a.75.75 0 0 1-1.06-1.06l4.5-4.5a.75.75 0 0 1 1.06 0l4.5 4.5a.75.75 0 0 1-1.06 1.06L8.75 4.56v8.69A.75.75 0 0 1 8 14Z"
+																	clip-rule="evenodd"
+																/>
+															</svg>
+														</button>
+													</Tooltip>
+												</div>
+											{/if}
+										{:else}
+											<div class=" flex items-center">
+												<Tooltip content={$i18n.t('Stop')}>
+													<button
+														class="bg-white hover:bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-800 transition rounded-full p-1.5"
+														on:click={() => {
+															stopResponse();
+														}}
 													>
 													>
-														<path
-															fill-rule="evenodd"
-															d="M8 14a.75.75 0 0 1-.75-.75V4.56L4.03 7.78a.75.75 0 0 1-1.06-1.06l4.5-4.5a.75.75 0 0 1 1.06 0l4.5 4.5a.75.75 0 0 1-1.06 1.06L8.75 4.56v8.69A.75.75 0 0 1 8 14Z"
-															clip-rule="evenodd"
-														/>
-													</svg>
-												</button>
-											</Tooltip>
-										</div>
-									{/if}
-								{:else}
-									<div class=" flex items-center mb-1.5">
-										<Tooltip content={$i18n.t('Stop')}>
-											<button
-												class="bg-white hover:bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-white dark:hover:bg-gray-800 transition rounded-full p-1.5"
-												on:click={() => {
-													stopResponse();
-												}}
-											>
-												<svg
-													xmlns="http://www.w3.org/2000/svg"
-													viewBox="0 0 24 24"
-													fill="currentColor"
-													class="size-6"
-												>
-													<path
-														fill-rule="evenodd"
-														d="M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zm6-2.438c0-.724.588-1.312 1.313-1.312h4.874c.725 0 1.313.588 1.313 1.313v4.874c0 .725-.588 1.313-1.313 1.313H9.564a1.312 1.312 0 01-1.313-1.313V9.564z"
-														clip-rule="evenodd"
-													/>
-												</svg>
-											</button>
-										</Tooltip>
+														<svg
+															xmlns="http://www.w3.org/2000/svg"
+															viewBox="0 0 24 24"
+															fill="currentColor"
+															class="size-6"
+														>
+															<path
+																fill-rule="evenodd"
+																d="M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12zm6-2.438c0-.724.588-1.312 1.313-1.312h4.874c.725 0 1.313.588 1.313 1.313v4.874c0 .725-.588 1.313-1.313 1.313H9.564a1.312 1.312 0 01-1.313-1.313V9.564z"
+																clip-rule="evenodd"
+															/>
+														</svg>
+													</button>
+												</Tooltip>
+											</div>
+										{/if}
 									</div>
 									</div>
-								{/if}
+								</div>
 							</div>
 							</div>
 						</form>
 						</form>
 					{/if}
 					{/if}

+ 1 - 1
src/lib/components/chat/MessageInput/Commands.svelte

@@ -106,7 +106,7 @@
 	{:else}
 	{:else}
 		<div
 		<div
 			id="commands-container"
 			id="commands-container"
-			class="pl-3 pr-14 mb-3 text-left w-full absolute bottom-0 left-0 right-0 z-10"
+			class="px-2 mb-2 text-left w-full absolute bottom-0 left-0 right-0 z-10"
 		>
 		>
 			<div class="flex w-full rounded-xl border border-gray-50 dark:border-gray-850">
 			<div class="flex w-full rounded-xl border border-gray-50 dark:border-gray-850">
 				<div
 				<div

+ 1 - 1
src/lib/components/chat/MessageInput/Commands/Knowledge.svelte

@@ -159,7 +159,7 @@
 {#if filteredItems.length > 0 || prompt.split(' ')?.at(0)?.substring(1).startsWith('http')}
 {#if filteredItems.length > 0 || prompt.split(' ')?.at(0)?.substring(1).startsWith('http')}
 	<div
 	<div
 		id="commands-container"
 		id="commands-container"
-		class="pl-3 pr-14 mb-3 text-left w-full absolute bottom-0 left-0 right-0 z-10"
+		class="px-2 mb-2 text-left w-full absolute bottom-0 left-0 right-0 z-10"
 	>
 	>
 		<div class="flex w-full rounded-xl border border-gray-50 dark:border-gray-850">
 		<div class="flex w-full rounded-xl border border-gray-50 dark:border-gray-850">
 			<div
 			<div

+ 1 - 1
src/lib/components/chat/MessageInput/Commands/Models.svelte

@@ -68,7 +68,7 @@
 {#if filteredItems.length > 0}
 {#if filteredItems.length > 0}
 	<div
 	<div
 		id="commands-container"
 		id="commands-container"
-		class="pl-3 pr-14 mb-3 text-left w-full absolute bottom-0 left-0 right-0 z-10"
+		class="px-2 mb-2 text-left w-full absolute bottom-0 left-0 right-0 z-10"
 	>
 	>
 		<div class="flex w-full rounded-xl border border-gray-50 dark:border-gray-850">
 		<div class="flex w-full rounded-xl border border-gray-50 dark:border-gray-850">
 			<div
 			<div

+ 1 - 1
src/lib/components/chat/MessageInput/Commands/Prompts.svelte

@@ -137,7 +137,7 @@
 {#if filteredPrompts.length > 0}
 {#if filteredPrompts.length > 0}
 	<div
 	<div
 		id="commands-container"
 		id="commands-container"
-		class="pl-3 pr-14 mb-3 text-left w-full absolute bottom-0 left-0 right-0 z-10"
+		class="px-2 mb-2 text-left w-full absolute bottom-0 left-0 right-0 z-10"
 	>
 	>
 		<div class="flex w-full rounded-xl border border-gray-50 dark:border-gray-850">
 		<div class="flex w-full rounded-xl border border-gray-50 dark:border-gray-850">
 			<div
 			<div

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

@@ -60,7 +60,7 @@
 <!-- {JSON.stringify(tokens)} -->
 <!-- {JSON.stringify(tokens)} -->
 {#each tokens as token, tokenIdx (tokenIdx)}
 {#each tokens as token, tokenIdx (tokenIdx)}
 	{#if token.type === 'hr'}
 	{#if token.type === 'hr'}
-		<hr />
+		<hr class=" border-gray-50 dark:border-gray-850" />
 	{:else if token.type === 'heading'}
 	{:else if token.type === 'heading'}
 		<svelte:element this={headerComponent(token.depth)}>
 		<svelte:element this={headerComponent(token.depth)}>
 			<MarkdownInlineTokens id={`${id}-${tokenIdx}-h`} tokens={token.tokens} {onSourceClick} />
 			<MarkdownInlineTokens id={`${id}-${tokenIdx}-h`} tokens={token.tokens} {onSourceClick} />

+ 3 - 1
src/lib/components/common/Banner.svelte

@@ -2,6 +2,8 @@
 	import type { Banner } from '$lib/types';
 	import type { Banner } from '$lib/types';
 	import { onMount, createEventDispatcher } from 'svelte';
 	import { onMount, createEventDispatcher } from 'svelte';
 	import { fade } from 'svelte/transition';
 	import { fade } from 'svelte/transition';
+	import DOMPurify from 'dompurify';
+	import { marked } from 'marked';
 
 
 	const dispatch = createEventDispatcher();
 	const dispatch = createEventDispatcher();
 
 
@@ -81,7 +83,7 @@
 				</div>
 				</div>
 
 
 				<div class="flex-1 text-xs text-gray-700 dark:text-white">
 				<div class="flex-1 text-xs text-gray-700 dark:text-white">
-					{banner.content}
+					{@html marked.parse(DOMPurify.sanitize(banner.content))}
 				</div>
 				</div>
 			</div>
 			</div>
 
 

+ 16 - 6
src/lib/components/common/RichTextInput.svelte

@@ -191,9 +191,14 @@
 			onTransaction: () => {
 			onTransaction: () => {
 				// force re-render so `editor.isActive` works as expected
 				// force re-render so `editor.isActive` works as expected
 				editor = editor;
 				editor = editor;
-				const newValue = turndownService.turndown(
-					preserveBreaks ? editor.getHTML().replace(/<p><\/p>/g, '<br/>') : editor.getHTML()
-				);
+				const newValue = turndownService
+					.turndown(
+						(preserveBreaks
+							? editor.getHTML().replace(/<p><\/p>/g, '<br/>')
+							: editor.getHTML()
+						).replace(/ {2,}/g, (m) => m.replace(/ /g, '\u00a0'))
+					)
+					.replace(/\u00a0/g, ' ');
 
 
 				if (value !== newValue) {
 				if (value !== newValue) {
 					value = newValue;
 					value = newValue;
@@ -332,9 +337,14 @@
 	$: if (
 	$: if (
 		editor &&
 		editor &&
 		value !==
 		value !==
-			turndownService.turndown(
-				preserveBreaks ? editor.getHTML().replace(/<p><\/p>/g, '<br/>') : editor.getHTML()
-			)
+			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(
 		editor.commands.setContent(
 			marked.parse(value.replaceAll(`\n<br/>`, `<br/>`), {
 			marked.parse(value.replaceAll(`\n<br/>`, `<br/>`), {

+ 47 - 16
src/lib/components/common/RichTextInput/AutoCompletion.js

@@ -136,12 +136,16 @@ export const AIAutocompletion = Extension.create({
 
 
 									debounceTimer = setTimeout(() => {
 									debounceTimer = setTimeout(() => {
 										const newState = view.state;
 										const newState = view.state;
+										const newSelection = newState.selection;
 										const newNode = newState.doc.nodeAt(currentPos);
 										const newNode = newState.doc.nodeAt(currentPos);
 
 
-										const currentIsAtEnd =
-											newState.selection.$head.pos === newState.selection.$head.end();
 										// Check if the node still exists and is still a paragraph
 										// Check if the node still exists and is still a paragraph
-										if (newNode && newNode.type.name === 'paragraph' && currentIsAtEnd) {
+										if (
+											newNode &&
+											newNode.type.name === 'paragraph' &&
+											newSelection.$head.pos === newSelection.$head.end() &&
+											newSelection.$head.pos === currentPos + newNode.nodeSize - 1
+										) {
 											const prompt = newNode.textContent;
 											const prompt = newNode.textContent;
 
 
 											if (prompt.trim() !== '') {
 											if (prompt.trim() !== '') {
@@ -212,29 +216,56 @@ export const AIAutocompletion = Extension.create({
 							return false;
 							return false;
 						},
 						},
 						// Add mousedown behavior
 						// Add mousedown behavior
+						// mouseup: (view, event) => {
+						// 	const { state, dispatch } = view;
+						// 	const { selection } = state;
+						// 	const { $head } = selection;
+						// 	const node = $head.parent;
+
+						// 	// Reset debounce timer on mouse click
+						// 	clearTimeout(debounceTimer);
+
+						// 	// If a suggestion exists and the cursor moves, remove the suggestion
+						// 	if (
+						// 		node.type.name === 'paragraph' &&
+						// 		node.attrs['data-suggestion'] &&
+						// 		view.state.selection.$head.pos !== view.state.selection.$head.end()
+						// 	) {
+						// 		dispatch(
+						// 			state.tr.setNodeMarkup($head.before(), null, {
+						// 				...node.attrs,
+						// 				class: null,
+						// 				'data-prompt': null,
+						// 				'data-suggestion': null
+						// 			})
+						// 		);
+						// 	}
+
+						// 	return false;
+						// }
 						mouseup: (view, event) => {
 						mouseup: (view, event) => {
 							const { state, dispatch } = view;
 							const { state, dispatch } = view;
-							const { selection } = state;
-							const { $head } = selection;
-							const node = $head.parent;
 
 
 							// Reset debounce timer on mouse click
 							// Reset debounce timer on mouse click
 							clearTimeout(debounceTimer);
 							clearTimeout(debounceTimer);
 
 
-							// If a suggestion exists and the cursor moves, remove the suggestion
-							if (
-								node.type.name === 'paragraph' &&
-								node.attrs['data-suggestion'] &&
-								view.state.selection.$head.pos !== view.state.selection.$head.end()
-							) {
-								dispatch(
-									state.tr.setNodeMarkup($head.before(), null, {
+							// Iterate over all nodes in the document
+							const tr = state.tr;
+							state.doc.descendants((node, pos) => {
+								if (node.type.name === 'paragraph' && node.attrs['data-suggestion']) {
+									// Remove suggestion from this paragraph
+									tr.setNodeMarkup(pos, null, {
 										...node.attrs,
 										...node.attrs,
 										class: null,
 										class: null,
 										'data-prompt': null,
 										'data-prompt': null,
 										'data-suggestion': null
 										'data-suggestion': null
-									})
-								);
+									});
+								}
+							});
+
+							// Apply the transaction if any changes were made
+							if (tr.docChanged) {
+								dispatch(tr);
 							}
 							}
 
 
 							return false;
 							return false;

+ 1 - 1
src/lib/components/workspace/Knowledge/KnowledgeBase/AddTextContentModal.svelte

@@ -81,7 +81,7 @@
 			>
 			>
 				<div class="">
 				<div class="">
 					{#if voiceInput}
 					{#if voiceInput}
-						<div class=" max-w-full w-64">
+						<div class=" max-w-full w-full">
 							<VoiceRecording
 							<VoiceRecording
 								bind:recording={voiceInput}
 								bind:recording={voiceInput}
 								className="p-1"
 								className="p-1"

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

@@ -1,5 +1,5 @@
 {
 {
-	"-1 for no limit, or a positive integer for a specific limit": "",
+	"-1 for no limit, or a positive integer for a specific limit": "-1 per a cap límit, o un nombre positiu per a un límit específic",
 	"'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' o '-1' perquè no caduqui mai.",
 	"'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' o '-1' perquè no caduqui mai.",
 	"(e.g. `sh webui.sh --api --api-auth username_password`)": "(p. ex. `sh webui.sh --api --api-auth username_password`)",
 	"(e.g. `sh webui.sh --api --api-auth username_password`)": "(p. ex. `sh webui.sh --api --api-auth username_password`)",
 	"(e.g. `sh webui.sh --api`)": "(p. ex. `sh webui.sh --api`)",
 	"(e.g. `sh webui.sh --api`)": "(p. ex. `sh webui.sh --api`)",
@@ -91,8 +91,8 @@
 	"Authenticate": "Autenticar",
 	"Authenticate": "Autenticar",
 	"Auto-Copy Response to Clipboard": "Copiar la resposta automàticament al porta-retalls",
 	"Auto-Copy Response to Clipboard": "Copiar la resposta automàticament al porta-retalls",
 	"Auto-playback response": "Reproduir la resposta automàticament",
 	"Auto-playback response": "Reproduir la resposta automàticament",
-	"Autocomplete Generation": "",
-	"Autocomplete Generation Input Max Length": "",
+	"Autocomplete Generation": "Generació automàtica",
+	"Autocomplete Generation Input Max Length": "Entrada màxima de la generació automàtica",
 	"Automatic1111": "Automatic1111",
 	"Automatic1111": "Automatic1111",
 	"AUTOMATIC1111 Api Auth String": "Cadena d'autenticació de l'API d'AUTOMATIC1111",
 	"AUTOMATIC1111 Api Auth String": "Cadena d'autenticació de l'API d'AUTOMATIC1111",
 	"AUTOMATIC1111 Base URL": "URL Base d'AUTOMATIC1111",
 	"AUTOMATIC1111 Base URL": "URL Base d'AUTOMATIC1111",
@@ -122,7 +122,7 @@
 	"Certificate Path": "Camí del certificat",
 	"Certificate Path": "Camí del certificat",
 	"Change Password": "Canviar la contrasenya",
 	"Change Password": "Canviar la contrasenya",
 	"Character": "Personatge",
 	"Character": "Personatge",
-	"Character limit for autocomplete generation input": "",
+	"Character limit for autocomplete generation input": "Límit de caràcters per a l'entrada de generació automàtica",
 	"Chart new frontiers": "Traça noves fronteres",
 	"Chart new frontiers": "Traça noves fronteres",
 	"Chat": "Xat",
 	"Chat": "Xat",
 	"Chat Background Image": "Imatge de fons del xat",
 	"Chat Background Image": "Imatge de fons del xat",
@@ -301,7 +301,7 @@
 	"Embedding Model Engine": "Motor de model d'incrustació",
 	"Embedding Model Engine": "Motor de model d'incrustació",
 	"Embedding model set to \"{{embedding_model}}\"": "Model d'incrustació configurat a \"{{embedding_model}}\"",
 	"Embedding model set to \"{{embedding_model}}\"": "Model d'incrustació configurat a \"{{embedding_model}}\"",
 	"Enable API Key Auth": "Activar l'autenticació amb clau API",
 	"Enable API Key Auth": "Activar l'autenticació amb clau API",
-	"Enable autocomplete generation for chat messages": "",
+	"Enable autocomplete generation for chat messages": "Activar la generació automàtica per als missatges del xat",
 	"Enable Community Sharing": "Activar l'ús compartit amb la comunitat",
 	"Enable Community Sharing": "Activar l'ús compartit amb la comunitat",
 	"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.",
 	"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.",
 	"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.": "Activar l'assignació de memòria (mmap) per carregar les dades del model. Aquesta opció permet que el sistema utilitzi l'emmagatzematge en disc com a extensió de la memòria RAM tractant els fitxers de disc com si estiguessin a la memòria RAM. Això pot millorar el rendiment del model permetent un accés més ràpid a les dades. Tanmateix, és possible que no funcioni correctament amb tots els sistemes i pot consumir una quantitat important d'espai en disc.",
 	"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.": "Activar l'assignació de memòria (mmap) per carregar les dades del model. Aquesta opció permet que el sistema utilitzi l'emmagatzematge en disc com a extensió de la memòria RAM tractant els fitxers de disc com si estiguessin a la memòria RAM. Això pot millorar el rendiment del model permetent un accés més ràpid a les dades. Tanmateix, és possible que no funcioni correctament amb tots els sistemes i pot consumir una quantitat important d'espai en disc.",
@@ -335,7 +335,7 @@
 	"Enter model tag (e.g. {{modelTag}})": "Introdueix l'etiqueta del model (p. ex. {{modelTag}})",
 	"Enter model tag (e.g. {{modelTag}})": "Introdueix l'etiqueta del model (p. ex. {{modelTag}})",
 	"Enter Mojeek Search API Key": "Introdueix la clau API de Mojeek Search",
 	"Enter Mojeek Search API Key": "Introdueix la clau API de Mojeek Search",
 	"Enter Number of Steps (e.g. 50)": "Introdueix el nombre de passos (p. ex. 50)",
 	"Enter Number of Steps (e.g. 50)": "Introdueix el nombre de passos (p. ex. 50)",
-	"Enter proxy URL (e.g. https://user:password@host:port)": "",
+	"Enter proxy URL (e.g. https://user:password@host:port)": "Entra l'URL (p. ex. https://user:password@host:port)",
 	"Enter Sampler (e.g. Euler a)": "Introdueix el mostrejador (p.ex. Euler a)",
 	"Enter Sampler (e.g. Euler a)": "Introdueix el mostrejador (p.ex. Euler a)",
 	"Enter Scheduler (e.g. Karras)": "Entra el programador (p.ex. Karras)",
 	"Enter Scheduler (e.g. Karras)": "Entra el programador (p.ex. Karras)",
 	"Enter Score": "Introdueix la puntuació",
 	"Enter Score": "Introdueix la puntuació",
@@ -672,7 +672,7 @@
 	"Please carefully review the following warnings:": "Si us plau, revisa els següents avisos amb cura:",
 	"Please carefully review the following warnings:": "Si us plau, revisa els següents avisos amb cura:",
 	"Please enter a prompt": "Si us plau, entra una indicació",
 	"Please enter a prompt": "Si us plau, entra una indicació",
 	"Please fill in all fields.": "Emplena tots els camps, si us plau.",
 	"Please fill in all fields.": "Emplena tots els camps, si us plau.",
-	"Please select a model first.": "",
+	"Please select a model first.": "Si us plau, selecciona un model primer",
 	"Please select a reason": "Si us plau, selecciona una raó",
 	"Please select a reason": "Si us plau, selecciona una raó",
 	"Port": "Port",
 	"Port": "Port",
 	"Positive attitude": "Actitud positiva",
 	"Positive attitude": "Actitud positiva",
@@ -688,7 +688,7 @@
 	"Prompt updated successfully": "Indicació actualitzada correctament",
 	"Prompt updated successfully": "Indicació actualitzada correctament",
 	"Prompts": "Indicacions",
 	"Prompts": "Indicacions",
 	"Prompts Access": "Accés a les indicacions",
 	"Prompts Access": "Accés a les indicacions",
-	"Proxy URL": "",
+	"Proxy URL": "URL del proxy",
 	"Pull \"{{searchValue}}\" from Ollama.com": "Obtenir \"{{searchValue}}\" de Ollama.com",
 	"Pull \"{{searchValue}}\" from Ollama.com": "Obtenir \"{{searchValue}}\" de Ollama.com",
 	"Pull a model from Ollama.com": "Obtenir un model d'Ollama.com",
 	"Pull a model from Ollama.com": "Obtenir un model d'Ollama.com",
 	"Query Generation Prompt": "Indicació per a generació de consulta",
 	"Query Generation Prompt": "Indicació per a generació de consulta",
@@ -722,7 +722,7 @@
 	"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Les notifications de resposta no es poden activar perquè els permisos del lloc web han estat rebutjats. Comprova les preferències del navegador per donar l'accés necessari.",
 	"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "Les notifications de resposta no es poden activar perquè els permisos del lloc web han estat rebutjats. Comprova les preferències del navegador per donar l'accés necessari.",
 	"Response splitting": "Divisió de la resposta",
 	"Response splitting": "Divisió de la resposta",
 	"Result": "Resultat",
 	"Result": "Resultat",
-	"Retrieval Query Generation": "",
+	"Retrieval Query Generation": "Generació de consultes Retrieval",
 	"Rich Text Input for Chat": "Entrada de text ric per al xat",
 	"Rich Text Input for Chat": "Entrada de text ric per al xat",
 	"RK": "RK",
 	"RK": "RK",
 	"Role": "Rol",
 	"Role": "Rol",
@@ -845,7 +845,7 @@
 	"System": "Sistema",
 	"System": "Sistema",
 	"System Instructions": "Instruccions de sistema",
 	"System Instructions": "Instruccions de sistema",
 	"System Prompt": "Indicació del Sistema",
 	"System Prompt": "Indicació del Sistema",
-	"Tags Generation": "",
+	"Tags Generation": "Generació d'etiquetes",
 	"Tags Generation Prompt": "Indicació per a la generació d'etiquetes",
 	"Tags Generation Prompt": "Indicació per a la generació d'etiquetes",
 	"Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting. (default: 1)": "El mostreig sense cua s'utilitza per reduir l'impacte de tokens menys probables de la sortida. Un valor més alt (p. ex., 2,0) reduirà més l'impacte, mentre que un valor d'1,0 desactiva aquesta configuració. (per defecte: 1)",
 	"Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting. (default: 1)": "El mostreig sense cua s'utilitza per reduir l'impacte de tokens menys probables de la sortida. Un valor més alt (p. ex., 2,0) reduirà més l'impacte, mentre que un valor d'1,0 desactiva aquesta configuració. (per defecte: 1)",
 	"Tap to interrupt": "Prem per interrompre",
 	"Tap to interrupt": "Prem per interrompre",
@@ -988,7 +988,7 @@
 	"Web Loader Settings": "Preferències del carregador web",
 	"Web Loader Settings": "Preferències del carregador web",
 	"Web Search": "Cerca la web",
 	"Web Search": "Cerca la web",
 	"Web Search Engine": "Motor de cerca de la web",
 	"Web Search Engine": "Motor de cerca de la web",
-	"Web Search Query Generation": "",
+	"Web Search Query Generation": "Generació de consultes per a la cerca de la web",
 	"Webhook URL": "URL del webhook",
 	"Webhook URL": "URL del webhook",
 	"WebUI Settings": "Preferències de WebUI",
 	"WebUI Settings": "Preferències de WebUI",
 	"WebUI will make requests to \"{{url}}/api/chat\"": "WebUI farà peticions a \"{{url}}/api/chat\"",
 	"WebUI will make requests to \"{{url}}/api/chat\"": "WebUI farà peticions a \"{{url}}/api/chat\"",

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

@@ -6,54 +6,54 @@
 	"(latest)": "Nejnovější",
 	"(latest)": "Nejnovější",
 	"{{ models }}": "{{ models }}",
 	"{{ models }}": "{{ models }}",
 	"{{user}}'s Chats": "{{user}}'s konverzace",
 	"{{user}}'s Chats": "{{user}}'s konverzace",
-	"{{webUIName}} Backend Required": "Požadováno {{webUIName}} Backend",
-	"*Prompt node ID(s) are required for image generation": "*ID (ID) uzlu pro generování obrázků jsou vyžadována.",
+	"{{webUIName}} Backend Required": "Požadován {{webUIName}} Backend",
+	"*Prompt node ID(s) are required for image generation": "*Jsou vyžadovány IDs pro prompt node pro generování obrázků",
 	"A new version (v{{LATEST_VERSION}}) is now available.": "Nová verze (v{{LATEST_VERSION}}) je nyní k dispozici.",
 	"A new version (v{{LATEST_VERSION}}) is now available.": "Nová verze (v{{LATEST_VERSION}}) je nyní k dispozici.",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Model úloh se používá při provádění úloh, jako je generování názvů pro chaty a vyhledávací dotazy na webu.",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Model úloh se používá při provádění úloh, jako je generování názvů pro chaty a vyhledávací dotazy na webu.",
 	"a user": "uživatel",
 	"a user": "uživatel",
 	"About": "O programu",
 	"About": "O programu",
-	"Access": "",
+	"Access": "Přístup",
 	"Access Control": "",
 	"Access Control": "",
-	"Accessible to all users": "",
+	"Accessible to all users": "Přístupné pro všecny uživatele",
 	"Account": "Účet",
 	"Account": "Účet",
 	"Account Activation Pending": "Čeká na aktivaci účtu",
 	"Account Activation Pending": "Čeká na aktivaci účtu",
 	"Accurate information": "Přesné informace",
 	"Accurate information": "Přesné informace",
 	"Actions": "Akce",
 	"Actions": "Akce",
-	"Activate this command by typing \"/{{COMMAND}}\" to chat input.": "",
+	"Activate this command by typing \"/{{COMMAND}}\" to chat input.": "Aktivujte tenhle příkaz napsáním \"/{{COMMAND}}\" do chat inputu",
 	"Active Users": "Aktivní uživatelé",
 	"Active Users": "Aktivní uživatelé",
 	"Add": "Přidat",
 	"Add": "Přidat",
-	"Add a model ID": "",
+	"Add a model ID": "Přidat ID modelu",
 	"Add a short description about what this model does": "Přidejte krátký popis toho, co tento model dělá.",
 	"Add a short description about what this model does": "Přidejte krátký popis toho, co tento model dělá.",
 	"Add a tag": "Přidat štítek",
 	"Add a tag": "Přidat štítek",
-	"Add Arena Model": "Přidat model Arena",
-	"Add Connection": "",
+	"Add Arena Model": "Přidat Arena model",
+	"Add Connection": "Přidat připojení",
 	"Add Content": "Přidat obsah",
 	"Add Content": "Přidat obsah",
 	"Add content here": "Přidat obsah zde",
 	"Add content here": "Přidat obsah zde",
-	"Add custom prompt": "Přidání vlastního výzvy",
+	"Add custom prompt": "Přidání vlastního promptu",
 	"Add Files": "Přidat soubory",
 	"Add Files": "Přidat soubory",
-	"Add Group": "",
-	"Add Memory": "Přidání paměti",
+	"Add Group": "Přidat skupinu",
+	"Add Memory": "Přidat paměť",
 	"Add Model": "Přidat model",
 	"Add Model": "Přidat model",
 	"Add Tag": "Přidat štítek",
 	"Add Tag": "Přidat štítek",
-	"Add Tags": "Přidat značky",
+	"Add Tags": "Přidat štítky",
 	"Add text content": "Přidejte textový obsah",
 	"Add text content": "Přidejte textový obsah",
 	"Add User": "Přidat uživatele",
 	"Add User": "Přidat uživatele",
-	"Add User Group": "",
+	"Add User Group": "Přidatg skupinu uživatelů",
 	"Adjusting these settings will apply changes universally to all users.": "Úprava těchto nastavení se projeví univerzálně u všech uživatelů.",
 	"Adjusting these settings will apply changes universally to all users.": "Úprava těchto nastavení se projeví univerzálně u všech uživatelů.",
-	"admin": "Správce",
-	"Admin": "Ahoj! Jak ti mohu pomoci?",
-	"Admin Panel": "Administrační panel",
-	"Admin Settings": "Nastavení administrátora",
+	"admin": "amin",
+	"Admin": "Admin",
+	"Admin Panel": "Adminis panel",
+	"Admin Settings": "Nastavení admina",
 	"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Administrátoři mají přístup ke všem nástrojům kdykoliv; uživatelé potřebují mít nástroje přiřazené podle modelu ve workspace.",
 	"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Administrátoři mají přístup ke všem nástrojům kdykoliv; uživatelé potřebují mít nástroje přiřazené podle modelu ve workspace.",
 	"Advanced Parameters": "Pokročilé parametry",
 	"Advanced Parameters": "Pokročilé parametry",
 	"Advanced Params": "Pokročilé parametry",
 	"Advanced Params": "Pokročilé parametry",
 	"All chats": "Všechny chaty",
 	"All chats": "Všechny chaty",
 	"All Documents": "Všechny dokumenty",
 	"All Documents": "Všechny dokumenty",
-	"All models deleted successfully": "",
-	"Allow Chat Delete": "",
+	"All models deleted successfully": "Všechny modely úspěšně odstráněny",
+	"Allow Chat Delete": "Povolit odstranění chatu",
 	"Allow Chat Deletion": "Povolit odstranění chatu",
 	"Allow Chat Deletion": "Povolit odstranění chatu",
-	"Allow Chat Edit": "",
-	"Allow File Upload": "",
+	"Allow Chat Edit": "Povolit úpravu chatu",
+	"Allow File Upload": "Povolit nahrávat soubory",
 	"Allow non-local voices": "Povolit ne-místní hlasy",
 	"Allow non-local voices": "Povolit ne-místní hlasy",
 	"Allow Temporary Chat": "Povolit dočasný chat",
 	"Allow Temporary Chat": "Povolit dočasný chat",
 	"Allow User Location": "Povolit uživatelskou polohu",
 	"Allow User Location": "Povolit uživatelskou polohu",
@@ -63,7 +63,7 @@
 	"Amazing": "",
 	"Amazing": "",
 	"an assistant": "asistent",
 	"an assistant": "asistent",
 	"and": "a",
 	"and": "a",
-	"and {{COUNT}} more": "a {{COUNT}} dalších",
+	"and {{COUNT}} more": "a {{COUNT}} další/ch",
 	"and create a new shared link.": "a vytvořit nový sdílený odkaz.",
 	"and create a new shared link.": "a vytvořit nový sdílený odkaz.",
 	"API Base URL": "Základní URL adresa API",
 	"API Base URL": "Základní URL adresa API",
 	"API Key": "Klíč API",
 	"API Key": "Klíč API",
@@ -78,8 +78,8 @@
 	"Archived Chats": "Archivované chaty",
 	"Archived Chats": "Archivované chaty",
 	"archived-chat-export": "",
 	"archived-chat-export": "",
 	"Are you sure you want to unarchive all archived chats?": "",
 	"Are you sure you want to unarchive all archived chats?": "",
-	"Are you sure?": "Ano, jsem si jistý.",
-	"Arena Models": "Modely Arena",
+	"Are you sure?": "Jste si jistý?",
+	"Arena Models": "Arena modely",
 	"Artifacts": "Artefakty",
 	"Artifacts": "Artefakty",
 	"Ask a question": "Zeptejte se na otázku",
 	"Ask a question": "Zeptejte se na otázku",
 	"Assistant": "Ano, jak vám mohu pomoci?",
 	"Assistant": "Ano, jak vám mohu pomoci?",
@@ -88,7 +88,7 @@
 	"Attribute for Username": "",
 	"Attribute for Username": "",
 	"Audio": "Zvuk",
 	"Audio": "Zvuk",
 	"August": "Srpen",
 	"August": "Srpen",
-	"Authenticate": "",
+	"Authenticate": "Autentikace",
 	"Auto-Copy Response to Clipboard": "Automatické kopírování odpovědi do schránky",
 	"Auto-Copy Response to Clipboard": "Automatické kopírování odpovědi do schránky",
 	"Auto-playback response": "Automatická odpověď při přehrávání",
 	"Auto-playback response": "Automatická odpověď při přehrávání",
 	"Autocomplete Generation": "",
 	"Autocomplete Generation": "",
@@ -105,10 +105,10 @@
 	"Back": "Zpět",
 	"Back": "Zpět",
 	"Bad Response": "Špatná odezva",
 	"Bad Response": "Špatná odezva",
 	"Banners": "Bannery",
 	"Banners": "Bannery",
-	"Base Model (From)": "Základní model (Z)",
-	"Batch Size (num_batch)": "Velikost dávky (num_batch)",
+	"Base Model (From)": "Základní model (z)",
+	"Batch Size (num_batch)": "Batch size (num_batch)",
 	"before": "před",
 	"before": "před",
-	"Being lazy": "Být líný",
+	"Being lazy": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Endpoint": "",
 	"Bing Search V7 Subscription Key": "",
 	"Bing Search V7 Subscription Key": "",
 	"Brave Search API Key": "Klíč API pro Brave Search",
 	"Brave Search API Key": "Klíč API pro Brave Search",
@@ -117,10 +117,10 @@
 	"Call": "Volání",
 	"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.",
 	"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",
 	"Camera": "Kamera",
-	"Cancel": "Zrušit.",
+	"Cancel": "Zrušit",
 	"Capabilities": "Schopnosti",
 	"Capabilities": "Schopnosti",
 	"Certificate Path": "",
 	"Certificate Path": "",
-	"Change Password": "Změna hesla",
+	"Change Password": "Změnit heslo",
 	"Character": "Znak",
 	"Character": "Znak",
 	"Character limit for autocomplete generation input": "",
 	"Character limit for autocomplete generation input": "",
 	"Chart new frontiers": "",
 	"Chart new frontiers": "",
@@ -137,9 +137,9 @@
 	"Check for updates": "Zkontrolovat aktualizace",
 	"Check for updates": "Zkontrolovat aktualizace",
 	"Checking for updates...": "Kontrola aktualizací...",
 	"Checking for updates...": "Kontrola aktualizací...",
 	"Choose a model before saving...": "Vyberte model před uložením...",
 	"Choose a model before saving...": "Vyberte model před uložením...",
-	"Chunk Overlap": "Překrytí bloků",
-	"Chunk Params": "Parametry chunků",
-	"Chunk Size": "Velikost bloku",
+	"Chunk Overlap": "",
+	"Chunk Params": "",
+	"Chunk Size": "",
 	"Ciphers": "",
 	"Ciphers": "",
 	"Citation": "Odkaz",
 	"Citation": "Odkaz",
 	"Clear memory": "Vymazat paměť",
 	"Clear memory": "Vymazat paměť",
@@ -160,8 +160,8 @@
 	"Close": "Zavřít",
 	"Close": "Zavřít",
 	"Code execution": "Provádění kódu",
 	"Code execution": "Provádění kódu",
 	"Code formatted successfully": "Kód byl úspěšně naformátován.",
 	"Code formatted successfully": "Kód byl úspěšně naformátován.",
-	"Collection": "Sbírka",
-	"Color": "",
+	"Collection": "",
+	"Color": "Barva",
 	"ComfyUI": "ComfyUI.",
 	"ComfyUI": "ComfyUI.",
 	"ComfyUI Base URL": "Základní URL ComfyUI",
 	"ComfyUI Base URL": "Základní URL ComfyUI",
 	"ComfyUI Base URL is required.": "Je vyžadována základní URL pro ComfyUI.",
 	"ComfyUI Base URL is required.": "Je vyžadována základní URL pro ComfyUI.",
@@ -170,8 +170,8 @@
 	"Command": "Příkaz",
 	"Command": "Příkaz",
 	"Completions": "Doplnění",
 	"Completions": "Doplnění",
 	"Concurrent Requests": "Současné požadavky",
 	"Concurrent Requests": "Současné požadavky",
-	"Configure": "",
-	"Configure Models": "",
+	"Configure": "Konfigurovat",
+	"Configure Models": "Konfigurovat modely",
 	"Confirm": "Potvrdit",
 	"Confirm": "Potvrdit",
 	"Confirm Password": "Potvrzení hesla",
 	"Confirm Password": "Potvrzení hesla",
 	"Confirm your action": "Potvrďte svoji akci",
 	"Confirm your action": "Potvrďte svoji akci",
@@ -196,13 +196,13 @@
 	"Copy Link": "Kopírovat odkaz",
 	"Copy Link": "Kopírovat odkaz",
 	"Copy to clipboard": "Kopírovat do schránky",
 	"Copy to clipboard": "Kopírovat do schránky",
 	"Copying to clipboard was successful!": "Kopírování do schránky bylo úspěšné!",
 	"Copying to clipboard was successful!": "Kopírování do schránky bylo úspěšné!",
-	"Create": "",
-	"Create a knowledge base": "",
+	"Create": "Vytvořit",
+	"Create a knowledge base": "Vytvořit knowledge base",
 	"Create a model": "Vytvořte model",
 	"Create a model": "Vytvořte model",
 	"Create Account": "Vytvořit účet",
 	"Create Account": "Vytvořit účet",
-	"Create Admin Account": "",
-	"Create Group": "",
-	"Create Knowledge": "Vytvořit znalosti",
+	"Create Admin Account": "Vytvořit admin účet",
+	"Create Group": "Vytvořit skupinu",
+	"Create Knowledge": "Vytvořit knowledge",
 	"Create new key": "Vytvořit nový klíč",
 	"Create new key": "Vytvořit nový klíč",
 	"Create new secret key": "Vytvořte nový tajný klíč",
 	"Create new secret key": "Vytvořte nový tajný klíč",
 	"Created at": "Vytvořeno dne",
 	"Created at": "Vytvořeno dne",
@@ -220,9 +220,9 @@
 	"Default (SentenceTransformers)": "Výchozí (SentenceTransformers)",
 	"Default (SentenceTransformers)": "Výchozí (SentenceTransformers)",
 	"Default Model": "Výchozí model",
 	"Default Model": "Výchozí model",
 	"Default model updated": "Výchozí model aktualizován.",
 	"Default model updated": "Výchozí model aktualizován.",
-	"Default Models": "",
-	"Default permissions": "",
-	"Default permissions updated successfully": "",
+	"Default Models": "Výchozí modely",
+	"Default permissions": "Výchozí povolení",
+	"Default permissions updated successfully": "Výchozí povolení úspěšne aktualizovány",
 	"Default Prompt Suggestions": "Výchozí návrhy promptů",
 	"Default Prompt Suggestions": "Výchozí návrhy promptů",
 	"Default to 389 or 636 if TLS is enabled": "",
 	"Default to 389 or 636 if TLS is enabled": "",
 	"Default to ALL": "",
 	"Default to ALL": "",
@@ -236,7 +236,7 @@
 	"Delete chat?": "Smazat konverzaci?",
 	"Delete chat?": "Smazat konverzaci?",
 	"Delete folder?": "Smazat složku?",
 	"Delete folder?": "Smazat složku?",
 	"Delete function?": "Funkce pro odstranění?",
 	"Delete function?": "Funkce pro odstranění?",
-	"Delete prompt?": "Smazat výzvu?",
+	"Delete prompt?": "Smazat prompt?",
 	"delete this link": "smazat tento odkaz",
 	"delete this link": "smazat tento odkaz",
 	"Delete tool?": "Odstranit nástroj?",
 	"Delete tool?": "Odstranit nástroj?",
 	"Delete User": "Smazat uživatele",
 	"Delete User": "Smazat uživatele",
@@ -249,11 +249,11 @@
 	"Disabled": "Zakázáno",
 	"Disabled": "Zakázáno",
 	"Discover a function": "Objevit funkci",
 	"Discover a function": "Objevit funkci",
 	"Discover a model": "Objevte model",
 	"Discover a model": "Objevte model",
-	"Discover a prompt": "Objevte výzvu",
+	"Discover a prompt": "Objevte prompt",
 	"Discover a tool": "Objevte nástroj",
 	"Discover a tool": "Objevte nástroj",
 	"Discover wonders": "",
 	"Discover wonders": "",
 	"Discover, download, and explore custom functions": "Objevujte, stahujte a zkoumejte vlastní funkce",
 	"Discover, download, and explore custom functions": "Objevujte, stahujte a zkoumejte vlastní funkce",
-	"Discover, download, and explore custom prompts": "Objevte, stáhněte a prozkoumejte vlastní výzvy.",
+	"Discover, download, and explore custom prompts": "Objevte, stáhněte a prozkoumejte vlastní prompty.",
 	"Discover, download, and explore custom tools": "Objevujte, stahujte a prozkoumávejte vlastní nástroje",
 	"Discover, download, and explore custom tools": "Objevujte, stahujte a prozkoumávejte vlastní nástroje",
 	"Discover, download, and explore model presets": "Objevte, stáhněte a prozkoumejte přednastavení modelů",
 	"Discover, download, and explore model presets": "Objevte, stáhněte a prozkoumejte přednastavení modelů",
 	"Dismissible": "Odstranitelné",
 	"Dismissible": "Odstranitelné",
@@ -296,9 +296,9 @@
 	"ElevenLabs": "ElevenLabs",
 	"ElevenLabs": "ElevenLabs",
 	"Email": "E-mail",
 	"Email": "E-mail",
 	"Embark on adventures": "",
 	"Embark on adventures": "",
-	"Embedding Batch Size": "Velikost dávky pro vkládání",
+	"Embedding Batch Size": "",
 	"Embedding Model": "Vkládací model (Embedding Model)",
 	"Embedding Model": "Vkládací model (Embedding Model)",
-	"Embedding Model Engine": "Model zabudovaný motor",
+	"Embedding Model Engine": "",
 	"Embedding model set to \"{{embedding_model}}\"": "Model vkládání nastaven na \"{{embedding_model}}\"",
 	"Embedding model set to \"{{embedding_model}}\"": "Model vkládání nastaven na \"{{embedding_model}}\"",
 	"Enable API Key Auth": "",
 	"Enable API Key Auth": "",
 	"Enable autocomplete generation for chat messages": "",
 	"Enable autocomplete generation for chat messages": "",
@@ -350,7 +350,7 @@
 	"Enter server label": "",
 	"Enter server label": "",
 	"Enter server port": "",
 	"Enter server port": "",
 	"Enter stop sequence": "Zadejte ukončovací sekvenci",
 	"Enter stop sequence": "Zadejte ukončovací sekvenci",
-	"Enter system prompt": "Vložte systémovou výzvu",
+	"Enter system prompt": "Vložte systémový prompt",
 	"Enter Tavily API Key": "Zadejte API klíč Tavily",
 	"Enter Tavily API Key": "Zadejte API klíč Tavily",
 	"Enter Tika Server URL": "Zadejte URL serveru Tika",
 	"Enter Tika Server URL": "Zadejte URL serveru Tika",
 	"Enter Top K": "Zadejte horní K",
 	"Enter Top K": "Zadejte horní K",
@@ -381,7 +381,7 @@
 	"Export Functions": "Exportovat funkce",
 	"Export Functions": "Exportovat funkce",
 	"Export Models": "Export modelů",
 	"Export Models": "Export modelů",
 	"Export Presets": "",
 	"Export Presets": "",
-	"Export Prompts": "Exportovat výzvy",
+	"Export Prompts": "Exportovat prompty",
 	"Export to CSV": "",
 	"Export to CSV": "",
 	"Export Tools": "Exportní nástroje",
 	"Export Tools": "Exportní nástroje",
 	"External Models": "Externí modely",
 	"External Models": "Externí modely",
@@ -532,7 +532,7 @@
 	"Manage Ollama": "",
 	"Manage Ollama": "",
 	"Manage Ollama API Connections": "",
 	"Manage Ollama API Connections": "",
 	"Manage OpenAI API Connections": "",
 	"Manage OpenAI API Connections": "",
-	"Manage Pipelines": "Správa potrubí",
+	"Manage Pipelines": "Správa pipelines",
 	"March": "Březen",
 	"March": "Březen",
 	"Max Tokens (num_predict)": "Maximální počet tokenů (num_predict)",
 	"Max Tokens (num_predict)": "Maximální počet tokenů (num_predict)",
 	"Max Upload Count": "Maximální počet nahrání",
 	"Max Upload Count": "Maximální počet nahrání",
@@ -662,13 +662,13 @@
 	"Pin": "Kolík",
 	"Pin": "Kolík",
 	"Pinned": "Připnuto",
 	"Pinned": "Připnuto",
 	"Pioneer insights": "",
 	"Pioneer insights": "",
-	"Pipeline deleted successfully": "Potrubí bylo úspěšně odstraněno.",
+	"Pipeline deleted successfully": "Pipeline byla úspěšně odstraněna",
 	"Pipeline downloaded successfully": "Kanál byl úspěšně stažen",
 	"Pipeline downloaded successfully": "Kanál byl úspěšně stažen",
-	"Pipelines": "Potrubí (Pipelines)",
+	"Pipelines": "",
 	"Pipelines Not Detected": "Přenosové kanály nebyly detekovány",
 	"Pipelines Not Detected": "Přenosové kanály nebyly detekovány",
-	"Pipelines Valves": "Potrubní ventily",
+	"Pipelines Valves": "",
 	"Plain text (.txt)": "Čistý text (.txt)",
 	"Plain text (.txt)": "Čistý text (.txt)",
-	"Playground": "Hřiště",
+	"Playground": "",
 	"Please carefully review the following warnings:": "Prosím, pečlivě si přečtěte následující upozornění:",
 	"Please carefully review the following warnings:": "Prosím, pečlivě si přečtěte následující upozornění:",
 	"Please enter a prompt": "Prosím, zadejte zadání.",
 	"Please enter a prompt": "Prosím, zadejte zadání.",
 	"Please fill in all fields.": "Prosím, vyplňte všechna pole.",
 	"Please fill in all fields.": "Prosím, vyplňte všechna pole.",
@@ -681,12 +681,12 @@
 	"Previous 30 days": "Předchozích 30 dnů",
 	"Previous 30 days": "Předchozích 30 dnů",
 	"Previous 7 days": "Předchozích 7 dní",
 	"Previous 7 days": "Předchozích 7 dní",
 	"Profile Image": "Profilový obrázek",
 	"Profile Image": "Profilový obrázek",
-	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Výzva (např. Řekni mi zábavný fakt o Římské říši)",
-	"Prompt Content": "Obsah výzvy",
+	"Prompt (e.g. Tell me a fun fact about the Roman Empire)": "Prompt (např. Řekni mi zábavný fakt o Římské říši)",
+	"Prompt Content": "Obsah promptu",
 	"Prompt created successfully": "",
 	"Prompt created successfully": "",
 	"Prompt suggestions": "Návrhy výzev",
 	"Prompt suggestions": "Návrhy výzev",
 	"Prompt updated successfully": "",
 	"Prompt updated successfully": "",
-	"Prompts": "Výzvy",
+	"Prompts": "Prompty",
 	"Prompts Access": "",
 	"Prompts Access": "",
 	"Proxy URL": "",
 	"Proxy URL": "",
 	"Pull \"{{searchValue}}\" from Ollama.com": "Stáhněte \"{{searchValue}}\" z Ollama.com",
 	"Pull \"{{searchValue}}\" from Ollama.com": "Stáhněte \"{{searchValue}}\" z Ollama.com",
@@ -767,14 +767,14 @@
 	"See what's new": "Podívejte se, co je nového",
 	"See what's new": "Podívejte se, co je nového",
 	"Seed": "Semínko",
 	"Seed": "Semínko",
 	"Select a base model": "Vyberte základní model",
 	"Select a base model": "Vyberte základní model",
-	"Select a engine": "Vyberte motor",
+	"Select a engine": "Vyberte engine",
 	"Select a function": "Vyberte funkci",
 	"Select a function": "Vyberte funkci",
 	"Select a group": "",
 	"Select a group": "",
 	"Select a model": "Vyberte model",
 	"Select a model": "Vyberte model",
-	"Select a pipeline": "Vyberte si potrubí (pipeline)",
+	"Select a pipeline": "Vyberte pipeline",
 	"Select a pipeline url": "Vyberte URL adresu kanálu",
 	"Select a pipeline url": "Vyberte URL adresu kanálu",
 	"Select a tool": "Vyberte nástroj",
 	"Select a tool": "Vyberte nástroj",
-	"Select Engine": "Vyberte motor",
+	"Select Engine": "Vyberte engine",
 	"Select Knowledge": "Vybrat znalosti",
 	"Select Knowledge": "Vybrat znalosti",
 	"Select model": "Vyberte model",
 	"Select model": "Vyberte model",
 	"Select only one model to call": "Vyberte pouze jeden model, který chcete použít",
 	"Select only one model to call": "Vyberte pouze jeden model, který chcete použít",
@@ -844,21 +844,21 @@
 	"Support this plugin:": "Podpořte tento plugin:",
 	"Support this plugin:": "Podpořte tento plugin:",
 	"Sync directory": "Synchronizovat adresář",
 	"Sync directory": "Synchronizovat adresář",
 	"System": "System",
 	"System": "System",
-	"System Instructions": "Pokyny systému",
-	"System Prompt": "Systémová výzva",
+	"System Instructions": "",
+	"System Prompt": "Systémový prompt",
 	"Tags Generation": "",
 	"Tags Generation": "",
-	"Tags Generation Prompt": "Výzva pro generování značek",
+	"Tags Generation Prompt": "Prompt pro generování značek",
 	"Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting. (default: 1)": "",
 	"Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting. (default: 1)": "",
 	"Tap to interrupt": "Klepněte pro přerušení",
 	"Tap to interrupt": "Klepněte pro přerušení",
 	"Tavily API Key": "Klíč API pro Tavily",
 	"Tavily API Key": "Klíč API pro Tavily",
 	"Tell us more:": "Řekněte nám více.",
 	"Tell us more:": "Řekněte nám více.",
-	"Temperature": "Teplota",
+	"Temperature": "",
 	"Template": "Šablona",
 	"Template": "Šablona",
 	"Temporary Chat": "Dočasný chat",
 	"Temporary Chat": "Dočasný chat",
 	"Text Splitter": "Rozdělovač textu",
 	"Text Splitter": "Rozdělovač textu",
 	"Text-to-Speech Engine": "Stroj pro převod textu na řeč",
 	"Text-to-Speech Engine": "Stroj pro převod textu na řeč",
 	"Tfs Z": "Tfs Z",
 	"Tfs Z": "Tfs Z",
-	"Thanks for your feedback!": "Děkuji za vaši zpětnou vazbu!",
+	"Thanks for your feedback!": "Děkujeme za vaši zpětnou vazbu!",
 	"The Application Account DN you bind with for search": "",
 	"The Application Account DN you bind with for search": "",
 	"The base to search for users": "",
 	"The base to search for users": "",
 	"The batch size determines how many text requests are processed together at once. A higher batch size can increase the performance and speed of the model, but it also requires more memory.  (Default: 512)": "",
 	"The batch size determines how many text requests are processed together at once. A higher batch size can increase the performance and speed of the model, but it also requires more memory.  (Default: 512)": "",
@@ -879,7 +879,7 @@
 	"This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.  (Default: 128)": "",
 	"This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.  (Default: 128)": "",
 	"This option will delete all existing files in the collection and replace them with newly uploaded files.": "Tato volba odstraní všechny existující soubory ve sbírce a nahradí je nově nahranými soubory.",
 	"This option will delete all existing files in the collection and replace them with newly uploaded files.": "Tato volba odstraní všechny existující soubory ve sbírce a nahradí je nově nahranými soubory.",
 	"This response was generated by \"{{model}}\"": "Tato odpověď byla vygenerována pomocí \"{{model}}\"",
 	"This response was generated by \"{{model}}\"": "Tato odpověď byla vygenerována pomocí \"{{model}}\"",
-	"This will delete": "Tím se odstraní",
+	"This will delete": "Tohle odstraní",
 	"This will delete <strong>{{NAME}}</strong> and <strong>all its contents</strong>.": "Tímto dojde k odstranění <strong>{{NAME}}</strong> a <strong>všech jeho obsahů</strong>.",
 	"This will delete <strong>{{NAME}}</strong> and <strong>all its contents</strong>.": "Tímto dojde k odstranění <strong>{{NAME}}</strong> a <strong>všech jeho obsahů</strong>.",
 	"This will delete all models including custom models": "",
 	"This will delete all models including custom models": "",
 	"This will delete all models including custom models and cannot be undone.": "",
 	"This will delete all models including custom models and cannot be undone.": "",
@@ -893,16 +893,16 @@
 	"Title (e.g. Tell me a fun fact)": "Název (např. Řekni mi zajímavost)",
 	"Title (e.g. Tell me a fun fact)": "Název (např. Řekni mi zajímavost)",
 	"Title Auto-Generation": "Automatické generování názvu",
 	"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 cannot be an empty string.": "Název nemůže být prázdným řetězcem.",
-	"Title Generation Prompt": "Generování názvu výzvy",
+	"Title Generation Prompt": "Generování názvu promptu",
 	"TLS": "",
 	"TLS": "",
 	"To access the available model names for downloading,": "Pro získání dostupných názvů modelů ke stažení,",
 	"To access the available model names for downloading,": "Pro získání dostupných názvů modelů ke stažení,",
 	"To access the GGUF models available for downloading,": "Pro přístup k modelům GGUF dostupným pro stažení,",
 	"To access the GGUF models available for downloading,": "Pro přístup k modelům GGUF dostupným pro stažení,",
 	"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Pro přístup k WebUI se prosím obraťte na administrátora. Administrátoři mohou spravovat stavy uživatelů z Admin Panelu.",
 	"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Pro přístup k WebUI se prosím obraťte na administrátora. Administrátoři mohou spravovat stavy uživatelů z Admin Panelu.",
-	"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Chcete-li zde připojit znalostní databázi, nejprve ji přidejte do pracovního prostoru \"Knowledge\".",
+	"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Chcete-li zde připojit znalostní databázi, nejprve ji přidejte do workspace \"Knowledge\".",
 	"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Aby byla chráněna vaše soukromí, z vaší zpětné vazby jsou sdílena pouze hodnocení, ID modelů, značky a metadata – vaše chatové záznamy zůstávají soukromé a nejsou zahrnuty.",
 	"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "Aby byla chráněna vaše soukromí, z vaší zpětné vazby jsou sdílena pouze hodnocení, ID modelů, značky a metadata – vaše chatové záznamy zůstávají soukromé a nejsou zahrnuty.",
 	"To select actions here, add them to the \"Functions\" workspace first.": "Chcete-li zde vybrat akce, nejprve je přidejte do pracovní plochy \"Functions\".",
 	"To select actions here, add them to the \"Functions\" workspace first.": "Chcete-li zde vybrat akce, nejprve je přidejte do pracovní plochy \"Functions\".",
-	"To select filters here, add them to the \"Functions\" workspace first.": "Chcete-li zde vybrat filtry, nejprve je přidejte do pracovního prostoru „Functions“.",
-	"To select toolkits here, add them to the \"Tools\" workspace first.": "Chcete-li zde vybrat nástroje, přidejte je nejprve do pracovního prostoru \"Tools\".",
+	"To select filters here, add them to the \"Functions\" workspace first.": "Chcete-li zde vybrat filtry, nejprve je přidejte do workspace „Functions“.",
+	"To select toolkits here, add them to the \"Tools\" workspace first.": "Chcete-li zde vybrat nástroje, přidejte je nejprve do workspace \"Tools\".",
 	"Toast notifications for new updates": "Oznámení ve formě toastů pro nové aktualizace",
 	"Toast notifications for new updates": "Oznámení ve formě toastů pro nové aktualizace",
 	"Today": "Dnes",
 	"Today": "Dnes",
 	"Toggle settings": "Přepnout nastavení",
 	"Toggle settings": "Přepnout nastavení",
@@ -913,7 +913,7 @@
 	"Tool created successfully": "Nástroj byl úspěšně vytvořen.",
 	"Tool created successfully": "Nástroj byl úspěšně vytvořen.",
 	"Tool deleted successfully": "Nástroj byl úspěšně smazán.",
 	"Tool deleted successfully": "Nástroj byl úspěšně smazán.",
 	"Tool Description": "",
 	"Tool Description": "",
-	"Tool ID": "",
+	"Tool ID": "ID nástroje",
 	"Tool imported successfully": "Nástroj byl úspěšně importován",
 	"Tool imported successfully": "Nástroj byl úspěšně importován",
 	"Tool Name": "",
 	"Tool Name": "",
 	"Tool updated successfully": "Nástroj byl úspěšně aktualizován.",
 	"Tool updated successfully": "Nástroj byl úspěšně aktualizován.",
@@ -933,7 +933,7 @@
 	"Type Hugging Face Resolve (Download) URL": "Zadejte URL pro úspěšné stažení z Hugging Face.",
 	"Type Hugging Face Resolve (Download) URL": "Zadejte URL pro úspěšné stažení z Hugging Face.",
 	"Uh-oh! There was an issue connecting to {{provider}}.": "Jejda! Došlo k problému s připojením k poskytovateli {{provider}}.",
 	"Uh-oh! There was an issue connecting to {{provider}}.": "Jejda! Došlo k problému s připojením k poskytovateli {{provider}}.",
 	"UI": "UI",
 	"UI": "UI",
-	"Unarchive All": "",
+	"Unarchive All": "Odarchivovat všechny",
 	"Unarchive All Archived Chats": "",
 	"Unarchive All Archived Chats": "",
 	"Unarchive Chat": "",
 	"Unarchive Chat": "",
 	"Unlock mysteries": "",
 	"Unlock mysteries": "",
@@ -952,7 +952,7 @@
 	"Upload directory": "Nahrát adresář",
 	"Upload directory": "Nahrát adresář",
 	"Upload files": "Nahrát soubory",
 	"Upload files": "Nahrát soubory",
 	"Upload Files": "Nahrát soubory",
 	"Upload Files": "Nahrát soubory",
-	"Upload Pipeline": "Nahrát potrubí",
+	"Upload Pipeline": "Nahrát pipeline",
 	"Upload Progress": "Průběh nahrávání",
 	"Upload Progress": "Průběh nahrávání",
 	"URL": "",
 	"URL": "",
 	"URL Mode": "Režim URL",
 	"URL Mode": "Režim URL",
@@ -965,7 +965,7 @@
 	"user": "uživatel",
 	"user": "uživatel",
 	"User": "Uživatel",
 	"User": "Uživatel",
 	"User location successfully retrieved.": "Umístění uživatele bylo úspěšně získáno.",
 	"User location successfully retrieved.": "Umístění uživatele bylo úspěšně získáno.",
-	"Username": "",
+	"Username": "Uživatelské jméno",
 	"Users": "Uživatelé",
 	"Users": "Uživatelé",
 	"Using the default arena model with all models. Click the plus button to add custom models.": "Použití výchozího modelu arény se všemi modely. Kliknutím na tlačítko plus přidejte vlastní modely.",
 	"Using the default arena model with all models. Click the plus button to add custom models.": "Použití výchozího modelu arény se všemi modely. Kliknutím na tlačítko plus přidejte vlastní modely.",
 	"Utilize": "Využít",
 	"Utilize": "Využít",
@@ -977,7 +977,7 @@
 	"variable to have them replaced with clipboard content.": "proměnnou, aby byl jejich obsah nahrazen obsahem schránky.",
 	"variable to have them replaced with clipboard content.": "proměnnou, aby byl jejich obsah nahrazen obsahem schránky.",
 	"Version": "Verze",
 	"Version": "Verze",
 	"Version {{selectedVersion}} of {{totalVersions}}": "Verze {{selectedVersion}} z {{totalVersions}}",
 	"Version {{selectedVersion}} of {{totalVersions}}": "Verze {{selectedVersion}} z {{totalVersions}}",
-	"Visibility": "",
+	"Visibility": "Viditelnost",
 	"Voice": "Hlas",
 	"Voice": "Hlas",
 	"Voice Input": "Hlasový vstup",
 	"Voice Input": "Hlasový vstup",
 	"Warning": "Varování",
 	"Warning": "Varování",
@@ -998,17 +998,17 @@
 	"What are you working on?": "",
 	"What are you working on?": "",
 	"What’s New in": "Co je nového v",
 	"What’s New in": "Co je nového v",
 	"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.": "",
 	"When enabled, the model will respond to each chat message in real-time, generating a response as soon as the user sends a message. This mode is useful for live chat applications, but may impact performance on slower hardware.": "",
-	"wherever you are": "",
+	"wherever you are": "kdekoliv jste",
 	"Whisper (Local)": "Whisper (Lokálně)",
 	"Whisper (Local)": "Whisper (Lokálně)",
-	"Why?": "",
+	"Why?": "Proč?",
 	"Widescreen Mode": "Režim širokoúhlého zobrazení",
 	"Widescreen Mode": "Režim širokoúhlého zobrazení",
 	"Won": "Vyhrál",
 	"Won": "Vyhrál",
 	"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)": "",
 	"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": "Pracovní prostor",
+	"Workspace": "",
 	"Workspace Permissions": "",
 	"Workspace Permissions": "",
 	"Write a prompt suggestion (e.g. Who are you?)": "Navrhněte dotaz (např. Kdo jsi?)",
 	"Write a prompt suggestion (e.g. Who are you?)": "Navrhněte dotaz (např. Kdo jsi?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "Napište shrnutí na 50 slov, které shrnuje [téma nebo klíčové slovo].",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "Napište shrnutí na 50 slov, které shrnuje [téma nebo klíčové slovo].",
-	"Write something...": "Napiš něco...",
+	"Write something...": "Napište něco...",
 	"Write your model template content here": "",
 	"Write your model template content here": "",
 	"Yesterday": "Včera",
 	"Yesterday": "Včera",
 	"You": "Vy",
 	"You": "Vy",
@@ -1023,5 +1023,5 @@
 	"Your account status is currently pending activation.": "Stav vašeho účtu je nyní čekající na aktivaci.",
 	"Your account status is currently pending activation.": "Stav vašeho účtu je nyní čekající na aktivaci.",
 	"Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.": "Váš celý příspěvek půjde přímo vývojáři pluginu; Open WebUI si nebere žádné procento. Vybraná platforma pro financování však může mít vlastní poplatky.",
 	"Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.": "Váš celý příspěvek půjde přímo vývojáři pluginu; Open WebUI si nebere žádné procento. Vybraná platforma pro financování však může mít vlastní poplatky.",
 	"Youtube": "YouTube",
 	"Youtube": "YouTube",
-	"Youtube Loader Settings": "Nastavení Stahovače YouTube"
+	"Youtube Loader Settings": "Nastavení YouTube loaderu"
 }
 }

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

@@ -1,5 +1,5 @@
 {
 {
-	"-1 for no limit, or a positive integer for a specific limit": "",
+	"-1 for no limit, or a positive integer for a specific limit": "-1 для отсутствия ограничений или положительное целое число для определенного ограничения.",
 	"'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' или '-1' чтобы был без срока годности.",
 	"'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' или '-1' чтобы был без срока годности.",
 	"(e.g. `sh webui.sh --api --api-auth username_password`)": "(например, `sh webui.sh --api --api-auth username_password`)",
 	"(e.g. `sh webui.sh --api --api-auth username_password`)": "(например, `sh webui.sh --api --api-auth username_password`)",
 	"(e.g. `sh webui.sh --api`)": "(например, `sh webui.sh --api`)",
 	"(e.g. `sh webui.sh --api`)": "(например, `sh webui.sh --api`)",
@@ -12,33 +12,33 @@
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Модель задач используется при выполнении таких задач, как генерация заголовков для чатов и поисковых запросов в Интернете",
 	"A task model is used when performing tasks such as generating titles for chats and web search queries": "Модель задач используется при выполнении таких задач, как генерация заголовков для чатов и поисковых запросов в Интернете",
 	"a user": "пользователь",
 	"a user": "пользователь",
 	"About": "О программе",
 	"About": "О программе",
-	"Access": "",
-	"Access Control": "",
-	"Accessible to all users": "",
+	"Access": "Доступ",
+	"Access Control": "Контроль доступа",
+	"Accessible to all users": "Доступно всем пользователям",
 	"Account": "Учетная запись",
 	"Account": "Учетная запись",
 	"Account Activation Pending": "Ожидание активации учетной записи",
 	"Account Activation Pending": "Ожидание активации учетной записи",
 	"Accurate information": "Точная информация",
 	"Accurate information": "Точная информация",
 	"Actions": "Действия",
 	"Actions": "Действия",
-	"Activate this command by typing \"/{{COMMAND}}\" to chat input.": "",
+	"Activate this command by typing \"/{{COMMAND}}\" to chat input.": "Активируйте эту команду, набрав \"/{{COMMAND}}\" для ввода в чате.",
 	"Active Users": "Активные пользователи",
 	"Active Users": "Активные пользователи",
 	"Add": "Добавить",
 	"Add": "Добавить",
-	"Add a model ID": "",
+	"Add a model ID": "Добавить ID модели",
 	"Add a short description about what this model does": "Добавьте краткое описание того, что делает эта модель",
 	"Add a short description about what this model does": "Добавьте краткое описание того, что делает эта модель",
 	"Add a tag": "Добавьте тег",
 	"Add a tag": "Добавьте тег",
-	"Add Arena Model": "",
-	"Add Connection": "",
-	"Add Content": "",
-	"Add content here": "",
+	"Add Arena Model": "Добавить модель арены",
+	"Add Connection": "Добавить соединение",
+	"Add Content": "Добавить контент",
+	"Add content here": "Добавить контент сюда",
 	"Add custom prompt": "Добавьте пользовательский промпт",
 	"Add custom prompt": "Добавьте пользовательский промпт",
 	"Add Files": "Добавить файлы",
 	"Add Files": "Добавить файлы",
-	"Add Group": "",
+	"Add Group": "Добавить группу",
 	"Add Memory": "Добавить воспоминание",
 	"Add Memory": "Добавить воспоминание",
 	"Add Model": "Добавить модель",
 	"Add Model": "Добавить модель",
 	"Add Tag": "Добавить тег",
 	"Add Tag": "Добавить тег",
 	"Add Tags": "Добавить теги",
 	"Add Tags": "Добавить теги",
 	"Add text content": "",
 	"Add text content": "",
 	"Add User": "Добавить пользователя",
 	"Add User": "Добавить пользователя",
-	"Add User Group": "",
+	"Add User Group": "Добавить группу пользователей",
 	"Adjusting these settings will apply changes universally to all users.": "Изменения в этих настройках будут применены для всех пользователей.",
 	"Adjusting these settings will apply changes universally to all users.": "Изменения в этих настройках будут применены для всех пользователей.",
 	"admin": "админ",
 	"admin": "админ",
 	"Admin": "Админ",
 	"Admin": "Админ",
@@ -47,20 +47,20 @@
 	"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Администраторы всегда имеют доступ ко всем инструментам; пользователям нужны инструменты, назначенные для каждой модели в рабочем пространстве.",
 	"Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "Администраторы всегда имеют доступ ко всем инструментам; пользователям нужны инструменты, назначенные для каждой модели в рабочем пространстве.",
 	"Advanced Parameters": "Расширенные Параметры",
 	"Advanced Parameters": "Расширенные Параметры",
 	"Advanced Params": "Расширенные параметры",
 	"Advanced Params": "Расширенные параметры",
-	"All chats": "",
+	"All chats": "Все чаты",
 	"All Documents": "Все документы",
 	"All Documents": "Все документы",
-	"All models deleted successfully": "",
-	"Allow Chat Delete": "",
+	"All models deleted successfully": "Все модели успешно удалены",
+	"Allow Chat Delete": "Разрешить удаление чата",
 	"Allow Chat Deletion": "Разрешить удаление чата",
 	"Allow Chat Deletion": "Разрешить удаление чата",
-	"Allow Chat Edit": "",
-	"Allow File Upload": "",
+	"Allow Chat Edit": "Разрешить редактирование чата",
+	"Allow File Upload": "Разрешить загрузку файлов",
 	"Allow non-local voices": "Разрешить не локальные голоса",
 	"Allow non-local voices": "Разрешить не локальные голоса",
 	"Allow Temporary Chat": "Разрешить временные чаты",
 	"Allow Temporary Chat": "Разрешить временные чаты",
 	"Allow User Location": "Разрешить доступ к местоположению пользователя",
 	"Allow User Location": "Разрешить доступ к местоположению пользователя",
 	"Allow Voice Interruption in Call": "Разрешить прерывание голоса во время вызова",
 	"Allow Voice Interruption in Call": "Разрешить прерывание голоса во время вызова",
 	"Already have an account?": "У вас уже есть учетная запись?",
 	"Already have an account?": "У вас уже есть учетная запись?",
 	"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "",
 	"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)": "",
-	"Amazing": "",
+	"Amazing": "Удивительный",
 	"an assistant": "ассистент",
 	"an assistant": "ассистент",
 	"and": "и",
 	"and": "и",
 	"and {{COUNT}} more": "",
 	"and {{COUNT}} more": "",
@@ -69,30 +69,30 @@
 	"API Key": "Ключ API",
 	"API Key": "Ключ API",
 	"API Key created.": "Ключ API создан.",
 	"API Key created.": "Ключ API создан.",
 	"API keys": "Ключи API",
 	"API keys": "Ключи API",
-	"Application DN": "",
-	"Application DN Password": "",
-	"applies to all users with the \"user\" role": "",
+	"Application DN": "DN приложения",
+	"Application DN Password": "DN-пароль приложения",
+	"applies to all users with the \"user\" role": "применяется ко всем пользователям с ролью «пользователь»",
 	"April": "Апрель",
 	"April": "Апрель",
 	"Archive": "Архив",
 	"Archive": "Архив",
 	"Archive All Chats": "Архивировать все чаты",
 	"Archive All Chats": "Архивировать все чаты",
 	"Archived Chats": "Архив чатов",
 	"Archived Chats": "Архив чатов",
 	"archived-chat-export": "",
 	"archived-chat-export": "",
-	"Are you sure you want to unarchive all archived chats?": "",
+	"Are you sure you want to unarchive all archived chats?": "Вы уверены, что хотите разархивировать все заархивированные чаты?",
 	"Are you sure?": "Вы уверены?",
 	"Are you sure?": "Вы уверены?",
-	"Arena Models": "",
-	"Artifacts": "",
-	"Ask a question": "",
-	"Assistant": "",
+	"Arena Models": "Модели арены",
+	"Artifacts": "Артефакты",
+	"Ask a question": "Задать вопрос",
+	"Assistant": "Ассистент",
 	"Attach file": "Прикрепить файл",
 	"Attach file": "Прикрепить файл",
 	"Attention to detail": "Внимание к деталям",
 	"Attention to detail": "Внимание к деталям",
-	"Attribute for Username": "",
+	"Attribute for Username": "Атрибут для имени пользователя",
 	"Audio": "Аудио",
 	"Audio": "Аудио",
 	"August": "Август",
 	"August": "Август",
-	"Authenticate": "",
+	"Authenticate": "Аутентификация",
 	"Auto-Copy Response to Clipboard": "Автоматическое копирование ответа в буфер обмена",
 	"Auto-Copy Response to Clipboard": "Автоматическое копирование ответа в буфер обмена",
 	"Auto-playback response": "Автоматическое воспроизведение ответа",
 	"Auto-playback response": "Автоматическое воспроизведение ответа",
-	"Autocomplete Generation": "",
-	"Autocomplete Generation Input Max Length": "",
+	"Autocomplete Generation": "Генерация автозаполнения",
+	"Autocomplete Generation Input Max Length": "Максимальная длина входных данных автозаполнения",
 	"Automatic1111": "Automatic1111",
 	"Automatic1111": "Automatic1111",
 	"AUTOMATIC1111 Api Auth String": "строка авторизации API AUTOMATIC1111",
 	"AUTOMATIC1111 Api Auth String": "строка авторизации API AUTOMATIC1111",
 	"AUTOMATIC1111 Base URL": "Базовый URL адрес AUTOMATIC1111",
 	"AUTOMATIC1111 Base URL": "Базовый URL адрес AUTOMATIC1111",
@@ -109,8 +109,8 @@
 	"Batch Size (num_batch)": "Размер партии (num_batch)",
 	"Batch Size (num_batch)": "Размер партии (num_batch)",
 	"before": "до",
 	"before": "до",
 	"Being lazy": "Лениво",
 	"Being lazy": "Лениво",
-	"Bing Search V7 Endpoint": "",
-	"Bing Search V7 Subscription Key": "",
+	"Bing Search V7 Endpoint": "Конечная точка поиска Bing V7",
+	"Bing Search V7 Subscription Key": "Ключ API Bing Search V7",
 	"Brave Search API Key": "Ключ API поиска Brave",
 	"Brave Search API Key": "Ключ API поиска Brave",
 	"By {{name}}": "",
 	"By {{name}}": "",
 	"Bypass SSL verification for Websites": "Обход проверки SSL для веб-сайтов",
 	"Bypass SSL verification for Websites": "Обход проверки SSL для веб-сайтов",
@@ -122,16 +122,16 @@
 	"Certificate Path": "",
 	"Certificate Path": "",
 	"Change Password": "Изменить пароль",
 	"Change Password": "Изменить пароль",
 	"Character": "",
 	"Character": "",
-	"Character limit for autocomplete generation input": "",
-	"Chart new frontiers": "",
+	"Character limit for autocomplete generation input": "Ограничение количества символов для ввода при генерации автозаполнения",
+	"Chart new frontiers": "Наметьте новые границы",
 	"Chat": "Чат",
 	"Chat": "Чат",
 	"Chat Background Image": "Фоновое изображение чата",
 	"Chat Background Image": "Фоновое изображение чата",
 	"Chat Bubble UI": "Bubble UI чат",
 	"Chat Bubble UI": "Bubble UI чат",
 	"Chat Controls": "Управление чатом",
 	"Chat Controls": "Управление чатом",
 	"Chat direction": "Направление чата",
 	"Chat direction": "Направление чата",
 	"Chat Overview": "Обзор чата",
 	"Chat Overview": "Обзор чата",
-	"Chat Permissions": "",
-	"Chat Tags Auto-Generation": "",
+	"Chat Permissions": "Разрешения для чата",
+	"Chat Tags Auto-Generation": "Автогенерация тегов чата",
 	"Chats": "Чаты",
 	"Chats": "Чаты",
 	"Check Again": "Перепроверьте ещё раз",
 	"Check Again": "Перепроверьте ещё раз",
 	"Check for updates": "Проверить обновления",
 	"Check for updates": "Проверить обновления",
@@ -140,11 +140,11 @@
 	"Chunk Overlap": "Перекрытие фрагментов",
 	"Chunk Overlap": "Перекрытие фрагментов",
 	"Chunk Params": "Параметры фрагментов",
 	"Chunk Params": "Параметры фрагментов",
 	"Chunk Size": "Размер фрагмента",
 	"Chunk Size": "Размер фрагмента",
-	"Ciphers": "",
+	"Ciphers": "Шифры",
 	"Citation": "Цитирование",
 	"Citation": "Цитирование",
 	"Clear memory": "Очистить воспоминания",
 	"Clear memory": "Очистить воспоминания",
-	"click here": "",
-	"Click here for filter guides.": "",
+	"click here": "кликните сюда",
+	"Click here for filter guides.": "Нажмите здесь, чтобы просмотреть руководства по фильтрам.",
 	"Click here for help.": "Нажмите здесь для получения помощи.",
 	"Click here for help.": "Нажмите здесь для получения помощи.",
 	"Click here to": "Нажмите здесь, чтобы",
 	"Click here to": "Нажмите здесь, чтобы",
 	"Click here to download user import template file.": "Нажмите здесь, чтобы загрузить файл шаблона импорта пользователя",
 	"Click here to download user import template file.": "Нажмите здесь, чтобы загрузить файл шаблона импорта пользователя",
@@ -158,20 +158,20 @@
 	"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "В разрешении на запись в буфер обмена отказано. Пожалуйста, проверьте настройки своего браузера, чтобы предоставить необходимый доступ.",
 	"Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "В разрешении на запись в буфер обмена отказано. Пожалуйста, проверьте настройки своего браузера, чтобы предоставить необходимый доступ.",
 	"Clone": "Клонировать",
 	"Clone": "Клонировать",
 	"Close": "Закрыть",
 	"Close": "Закрыть",
-	"Code execution": "",
+	"Code execution": "Выполнение кода",
 	"Code formatted successfully": "Код успешно отформатирован",
 	"Code formatted successfully": "Код успешно отформатирован",
 	"Collection": "Коллекция",
 	"Collection": "Коллекция",
-	"Color": "",
+	"Color": "Цвет",
 	"ComfyUI": "ComfyUI",
 	"ComfyUI": "ComfyUI",
 	"ComfyUI Base URL": "Базовый адрес URL ComfyUI",
 	"ComfyUI Base URL": "Базовый адрес URL ComfyUI",
 	"ComfyUI Base URL is required.": "Необходим базовый адрес URL ComfyUI.",
 	"ComfyUI Base URL is required.": "Необходим базовый адрес URL ComfyUI.",
 	"ComfyUI Workflow": "ComfyUI Workflow",
 	"ComfyUI Workflow": "ComfyUI Workflow",
 	"ComfyUI Workflow Nodes": "Узлы ComfyUI Workflow",
 	"ComfyUI Workflow Nodes": "Узлы ComfyUI Workflow",
 	"Command": "Команда",
 	"Command": "Команда",
-	"Completions": "",
+	"Completions": "Завершения",
 	"Concurrent Requests": "Одновременные запросы",
 	"Concurrent Requests": "Одновременные запросы",
-	"Configure": "",
-	"Configure Models": "",
+	"Configure": "Настроить",
+	"Configure Models": "Настройка моделей",
 	"Confirm": "Подтвердить",
 	"Confirm": "Подтвердить",
 	"Confirm Password": "Подтвердите пароль",
 	"Confirm Password": "Подтвердите пароль",
 	"Confirm your action": "Подтвердите свое действие",
 	"Confirm your action": "Подтвердите свое действие",
@@ -182,11 +182,11 @@
 	"Context Length": "Длина контекста",
 	"Context Length": "Длина контекста",
 	"Continue Response": "Продолжить ответ",
 	"Continue Response": "Продолжить ответ",
 	"Continue with {{provider}}": "Продолжить с {{provider}}",
 	"Continue with {{provider}}": "Продолжить с {{provider}}",
-	"Continue with Email": "",
-	"Continue with LDAP": "",
+	"Continue with Email": "Продолжить с Email",
+	"Continue with LDAP": "Продолжить с LDAP",
 	"Control how message text is split for TTS requests. 'Punctuation' splits into sentences, 'paragraphs' splits into paragraphs, and 'none' keeps the message as a single string.": "Управляйте разделением текста сообщения для запросов TTS. 'Пунктуация' разделяет на предложения, 'абзацы' - разделяет на абзацы, а 'нет' сохраняет сообщение в виде одной строки.",
 	"Control how message text is split for TTS requests. 'Punctuation' splits into sentences, 'paragraphs' splits into paragraphs, and 'none' keeps the message as a single string.": "Управляйте разделением текста сообщения для запросов TTS. 'Пунктуация' разделяет на предложения, 'абзацы' - разделяет на абзацы, а 'нет' сохраняет сообщение в виде одной строки.",
 	"Controls": "Управление",
 	"Controls": "Управление",
-	"Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text. (Default: 5.0)": "",
+	"Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text. (Default: 5.0)": "Управляет балансом между согласованностью и разнообразием выходных данных. Меньшее значение приведет к более сфокусированному и связному тексту. (По умолчанию: 5.0)",
 	"Copied": "Скопировано",
 	"Copied": "Скопировано",
 	"Copied shared chat URL to clipboard!": "Копирование в буфер обмена выполнено успешно!",
 	"Copied shared chat URL to clipboard!": "Копирование в буфер обмена выполнено успешно!",
 	"Copied to clipboard": "Скопировано в буфер обмена",
 	"Copied to clipboard": "Скопировано в буфер обмена",
@@ -194,15 +194,15 @@
 	"Copy last code block": "Копировать последний блок кода",
 	"Copy last code block": "Копировать последний блок кода",
 	"Copy last response": "Копировать последний ответ",
 	"Copy last response": "Копировать последний ответ",
 	"Copy Link": "Копировать ссылку",
 	"Copy Link": "Копировать ссылку",
-	"Copy to clipboard": "",
+	"Copy to clipboard": "Скопировать в буфер обмена",
 	"Copying to clipboard was successful!": "Копирование в буфер обмена прошло успешно!",
 	"Copying to clipboard was successful!": "Копирование в буфер обмена прошло успешно!",
-	"Create": "",
-	"Create a knowledge base": "",
+	"Create": "Создать",
+	"Create a knowledge base": "Создайте базу знаний",
 	"Create a model": "Создание модели",
 	"Create a model": "Создание модели",
 	"Create Account": "Создать аккаунт",
 	"Create Account": "Создать аккаунт",
-	"Create Admin Account": "",
-	"Create Group": "",
-	"Create Knowledge": "",
+	"Create Admin Account": "Создать Аккаунт Администратора",
+	"Create Group": "Создать Группу",
+	"Create Knowledge": "Создать Знания",
 	"Create new key": "Создать новый ключ",
 	"Create new key": "Создать новый ключ",
 	"Create new secret key": "Создать новый секретный ключ",
 	"Create new secret key": "Создать новый секретный ключ",
 	"Created at": "Создано",
 	"Created at": "Создано",
@@ -220,30 +220,30 @@
 	"Default (SentenceTransformers)": "По умолчанию (SentenceTransformers)",
 	"Default (SentenceTransformers)": "По умолчанию (SentenceTransformers)",
 	"Default Model": "Модель по умолчанию",
 	"Default Model": "Модель по умолчанию",
 	"Default model updated": "Модель по умолчанию обновлена",
 	"Default model updated": "Модель по умолчанию обновлена",
-	"Default Models": "",
-	"Default permissions": "",
-	"Default permissions updated successfully": "",
+	"Default Models": "Модели по умолчанию",
+	"Default permissions": "Разрешения по умолчанию",
+	"Default permissions updated successfully": "Разрешения по умолчанию успешно обновлены.",
 	"Default Prompt Suggestions": "Предложения промптов по умолчанию",
 	"Default Prompt Suggestions": "Предложения промптов по умолчанию",
-	"Default to 389 or 636 if TLS is enabled": "",
-	"Default to ALL": "",
+	"Default to 389 or 636 if TLS is enabled": "По умолчанию 389 или 636, если TLS включен.",
+	"Default to ALL": "По умолчанию ВСЕ",
 	"Default User Role": "Роль пользователя по умолчанию",
 	"Default User Role": "Роль пользователя по умолчанию",
 	"Delete": "Удалить",
 	"Delete": "Удалить",
 	"Delete a model": "Удалить модель",
 	"Delete a model": "Удалить модель",
-	"Delete All Chats": "Удалить все чаты",
-	"Delete All Models": "",
+	"Delete All Chats": "Удалить ВСЕ Чаты",
+	"Delete All Models": "Удалить ВСЕ Модели",
 	"Delete chat": "Удалить чат",
 	"Delete chat": "Удалить чат",
-	"Delete Chat": "Удалить чат",
+	"Delete Chat": "Удалить Чат",
 	"Delete chat?": "Удалить чат?",
 	"Delete chat?": "Удалить чат?",
-	"Delete folder?": "",
+	"Delete folder?": "Удалить папку?",
 	"Delete function?": "Удалить функцию?",
 	"Delete function?": "Удалить функцию?",
 	"Delete prompt?": "Удалить промпт?",
 	"Delete prompt?": "Удалить промпт?",
 	"delete this link": "удалить эту ссылку",
 	"delete this link": "удалить эту ссылку",
 	"Delete tool?": "Удалить этот инструмент?",
 	"Delete tool?": "Удалить этот инструмент?",
-	"Delete User": "Удалить пользователя",
+	"Delete User": "Удалить Пользователя",
 	"Deleted {{deleteModelTag}}": "Удалено {{deleteModelTag}}",
 	"Deleted {{deleteModelTag}}": "Удалено {{deleteModelTag}}",
 	"Deleted {{name}}": "Удалено {{name}}",
 	"Deleted {{name}}": "Удалено {{name}}",
 	"Deleted User": "",
 	"Deleted User": "",
-	"Describe your knowledge base and objectives": "",
+	"Describe your knowledge base and objectives": "Опишите свою базу знаний и цели",
 	"Description": "Описание",
 	"Description": "Описание",
 	"Didn't fully follow instructions": "Не полностью следует инструкциям",
 	"Didn't fully follow instructions": "Не полностью следует инструкциям",
 	"Disabled": "Отключено",
 	"Disabled": "Отключено",
@@ -251,17 +251,17 @@
 	"Discover a model": "Найти модель",
 	"Discover a model": "Найти модель",
 	"Discover a prompt": "Найти промпт",
 	"Discover a prompt": "Найти промпт",
 	"Discover a tool": "Найти инструмент",
 	"Discover a tool": "Найти инструмент",
-	"Discover wonders": "",
+	"Discover wonders": "Откройте для себя чудеса",
 	"Discover, download, and explore custom functions": "Находите, загружайте и исследуйте пользовательские функции",
 	"Discover, download, and explore custom functions": "Находите, загружайте и исследуйте пользовательские функции",
 	"Discover, download, and explore custom prompts": "Находите, загружайте и исследуйте пользовательские промпты",
 	"Discover, download, and explore custom prompts": "Находите, загружайте и исследуйте пользовательские промпты",
 	"Discover, download, and explore custom tools": "Находите, загружайте и исследуйте пользовательские инструменты",
 	"Discover, download, and explore custom tools": "Находите, загружайте и исследуйте пользовательские инструменты",
 	"Discover, download, and explore model presets": "Находите, загружайте и исследуйте пользовательские предустановки моделей",
 	"Discover, download, and explore model presets": "Находите, загружайте и исследуйте пользовательские предустановки моделей",
 	"Dismissible": "Можно отклонить",
 	"Dismissible": "Можно отклонить",
-	"Display": "",
+	"Display": "Отображать",
 	"Display Emoji in Call": "Отображать эмодзи в вызовах",
 	"Display Emoji in Call": "Отображать эмодзи в вызовах",
 	"Display the username instead of You in the Chat": "Отображать имя пользователя вместо 'Вы' в чате",
 	"Display the username instead of You in the Chat": "Отображать имя пользователя вместо 'Вы' в чате",
-	"Displays citations in the response": "",
-	"Dive into knowledge": "",
+	"Displays citations in the response": "Отображает цитаты в ответе",
+	"Dive into knowledge": "Погрузитесь в знания",
 	"Do not install functions from sources you do not fully trust.": "Не устанавливайте функции из источников, которым вы не полностью доверяете.",
 	"Do not install functions from sources you do not fully trust.": "Не устанавливайте функции из источников, которым вы не полностью доверяете.",
 	"Do not install tools from sources you do not fully trust.": "Не устанавливайте инструменты из источников, которым вы не полностью доверяете.",
 	"Do not install tools from sources you do not fully trust.": "Не устанавливайте инструменты из источников, которым вы не полностью доверяете.",
 	"Document": "Документ",
 	"Document": "Документ",
@@ -276,8 +276,8 @@
 	"Download": "Загрузить",
 	"Download": "Загрузить",
 	"Download canceled": "Загрузка отменена",
 	"Download canceled": "Загрузка отменена",
 	"Download Database": "Загрузить базу данных",
 	"Download Database": "Загрузить базу данных",
-	"Drag and drop a file to upload or select a file to view": "",
-	"Draw": "",
+	"Drag and drop a file to upload or select a file to view": "Перетащите файл для загрузки или выберите файл для просмотра.",
+	"Draw": "Рисовать",
 	"Drop any files here to add to the conversation": "Перетащите сюда файлы, чтобы добавить их в разговор",
 	"Drop any files here to add to the conversation": "Перетащите сюда файлы, чтобы добавить их в разговор",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "например, '30s','10m'. Допустимые единицы времени: 's', 'm', 'h'.",
 	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "например, '30s','10m'. Допустимые единицы времени: 's', 'm', 'h'.",
 	"e.g. A filter to remove profanity from text": "",
 	"e.g. A filter to remove profanity from text": "",
@@ -287,24 +287,24 @@
 	"e.g. my_tools": "",
 	"e.g. my_tools": "",
 	"e.g. Tools for performing various operations": "",
 	"e.g. Tools for performing various operations": "",
 	"Edit": "Редактировать",
 	"Edit": "Редактировать",
-	"Edit Arena Model": "",
-	"Edit Connection": "",
-	"Edit Default Permissions": "",
+	"Edit Arena Model": "Изменить модель арены",
+	"Edit Connection": "Изменить соединение",
+	"Edit Default Permissions": "Изменить разрешения по умолчанию",
 	"Edit Memory": "Редактировать воспоминание",
 	"Edit Memory": "Редактировать воспоминание",
 	"Edit User": "Редактировать пользователя",
 	"Edit User": "Редактировать пользователя",
-	"Edit User Group": "",
+	"Edit User Group": "Редактировать Пользовательскую Группу",
 	"ElevenLabs": "ElevenLabs",
 	"ElevenLabs": "ElevenLabs",
 	"Email": "Электронная почта",
 	"Email": "Электронная почта",
-	"Embark on adventures": "",
+	"Embark on adventures": "Отправляйтесь в приключения",
 	"Embedding Batch Size": "Размер пакета для встраивания",
 	"Embedding Batch Size": "Размер пакета для встраивания",
 	"Embedding Model": "Модель встраивания",
 	"Embedding Model": "Модель встраивания",
 	"Embedding Model Engine": "Движок модели встраивания",
 	"Embedding Model Engine": "Движок модели встраивания",
 	"Embedding model set to \"{{embedding_model}}\"": "Модель встраивания установлена в \"{{embedding_model}}\"",
 	"Embedding model set to \"{{embedding_model}}\"": "Модель встраивания установлена в \"{{embedding_model}}\"",
-	"Enable API Key Auth": "",
-	"Enable autocomplete generation for chat messages": "",
+	"Enable API Key Auth": "Включить аутентификацию по API Ключу",
+	"Enable autocomplete generation for chat messages": "Включить генерацию автозаполнения для сообщений чата",
 	"Enable Community Sharing": "Включить совместное использование",
 	"Enable Community Sharing": "Включить совместное использование",
-	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "",
-	"Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "",
+	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "Включите блокировку памяти (mlock), чтобы предотвратить выгрузку данных модели из ОЗУ. Эта опция блокирует рабочий набор страниц модели в оперативной памяти, гарантируя, что они не будут выгружены на диск. Это может помочь поддерживать производительность, избегая ошибок страниц и обеспечивая быстрый доступ к данным.",
+	"Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "Включите отображение памяти (mmap), чтобы загрузить данные модели. Эта опция позволяет системе использовать дисковое хранилище в качестве расширения оперативной памяти, обрабатывая дисковые файлы так, как если бы они находились в оперативной памяти. Это может улучшить производительность модели за счет более быстрого доступа к данным. Однако он может работать некорректно со всеми системами и занимать значительный объем дискового пространства.",
 	"Enable Message Rating": "Разрешить оценку ответов",
 	"Enable Message Rating": "Разрешить оценку ответов",
 	"Enable Mirostat sampling for controlling perplexity. (Default: 0, 0 = Disabled, 1 = Mirostat, 2 = Mirostat 2.0)": "",
 	"Enable Mirostat sampling for controlling perplexity. (Default: 0, 0 = Disabled, 1 = Mirostat, 2 = Mirostat 2.0)": "",
 	"Enable New Sign Ups": "Разрешить новые регистрации",
 	"Enable New Sign Ups": "Разрешить новые регистрации",
@@ -320,11 +320,11 @@
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Endpoint": "",
 	"Enter Bing Search V7 Subscription Key": "",
 	"Enter Bing Search V7 Subscription Key": "",
 	"Enter Brave Search API Key": "Введите ключ API поиска Brave",
 	"Enter Brave Search API Key": "Введите ключ API поиска Brave",
-	"Enter certificate path": "",
+	"Enter certificate path": "Введите путь к сертификату",
 	"Enter CFG Scale (e.g. 7.0)": "Введите CFG Scale (например, 7.0)",
 	"Enter CFG Scale (e.g. 7.0)": "Введите CFG Scale (например, 7.0)",
 	"Enter Chunk Overlap": "Введите перекрытие фрагмента",
 	"Enter Chunk Overlap": "Введите перекрытие фрагмента",
 	"Enter Chunk Size": "Введите размер фрагмента",
 	"Enter Chunk Size": "Введите размер фрагмента",
-	"Enter description": "",
+	"Enter description": "Введите описание",
 	"Enter Github Raw URL": "Введите необработанный URL-адрес Github",
 	"Enter Github Raw URL": "Введите необработанный URL-адрес Github",
 	"Enter Google PSE API Key": "Введите ключ API Google PSE",
 	"Enter Google PSE API Key": "Введите ключ API Google PSE",
 	"Enter Google PSE Engine Id": "Введите Id движка Google PSE",
 	"Enter Google PSE Engine Id": "Введите Id движка Google PSE",
@@ -342,13 +342,13 @@
 	"Enter SearchApi API Key": "Введите ключ API SearchApi",
 	"Enter SearchApi API Key": "Введите ключ API SearchApi",
 	"Enter SearchApi Engine": "Введите SearchApi движок",
 	"Enter SearchApi Engine": "Введите SearchApi движок",
 	"Enter Searxng Query URL": "Введите URL-адрес запроса Searxng",
 	"Enter Searxng Query URL": "Введите URL-адрес запроса Searxng",
-	"Enter Seed": "",
+	"Enter Seed": "Введите Seed",
 	"Enter Serper API Key": "Введите ключ API Serper",
 	"Enter Serper API Key": "Введите ключ API Serper",
 	"Enter Serply API Key": "Введите ключ API Serply",
 	"Enter Serply API Key": "Введите ключ API Serply",
 	"Enter Serpstack API Key": "Введите ключ API Serpstack",
 	"Enter Serpstack API Key": "Введите ключ API Serpstack",
-	"Enter server host": "",
-	"Enter server label": "",
-	"Enter server port": "",
+	"Enter server host": "Введите хост сервера",
+	"Enter server label": "Введите метку сервера",
+	"Enter server port": "Введите порт сервера",
 	"Enter stop sequence": "Введите последовательность остановки",
 	"Enter stop sequence": "Введите последовательность остановки",
 	"Enter system prompt": "Введите системный промпт",
 	"Enter system prompt": "Введите системный промпт",
 	"Enter Tavily API Key": "Введите ключ API Tavily",
 	"Enter Tavily API Key": "Введите ключ API Tavily",
@@ -364,16 +364,16 @@
 	"Enter Your Username": "",
 	"Enter Your Username": "",
 	"Error": "Ошибка",
 	"Error": "Ошибка",
 	"ERROR": "",
 	"ERROR": "",
-	"Evaluations": "",
+	"Evaluations": "Оценки",
 	"Example: (&(objectClass=inetOrgPerson)(uid=%s))": "",
 	"Example: (&(objectClass=inetOrgPerson)(uid=%s))": "",
 	"Example: ALL": "",
 	"Example: ALL": "",
 	"Example: ou=users,dc=foo,dc=example": "",
 	"Example: ou=users,dc=foo,dc=example": "",
 	"Example: sAMAccountName or uid or userPrincipalName": "",
 	"Example: sAMAccountName or uid or userPrincipalName": "",
-	"Exclude": "",
+	"Exclude": "Исключать",
 	"Experimental": "Экспериментальное",
 	"Experimental": "Экспериментальное",
-	"Explore the cosmos": "",
+	"Explore the cosmos": "Исследуйте космос",
 	"Export": "Экспорт",
 	"Export": "Экспорт",
-	"Export All Archived Chats": "",
+	"Export All Archived Chats": "Экспортировать ВСЕ Архивированные Чаты",
 	"Export All Chats (All Users)": "Экспортировать все чаты (всех пользователей)",
 	"Export All Chats (All Users)": "Экспортировать все чаты (всех пользователей)",
 	"Export chat (.json)": "Экспортировать чат (.json)",
 	"Export chat (.json)": "Экспортировать чат (.json)",
 	"Export Chats": "Экспортировать чаты",
 	"Export Chats": "Экспортировать чаты",
@@ -390,17 +390,17 @@
 	"Failed to read clipboard contents": "Не удалось прочитать содержимое буфера обмена",
 	"Failed to read clipboard contents": "Не удалось прочитать содержимое буфера обмена",
 	"Failed to save models configuration": "",
 	"Failed to save models configuration": "",
 	"Failed to update settings": "Не удалось обновить настройки",
 	"Failed to update settings": "Не удалось обновить настройки",
-	"Failed to upload file.": "",
+	"Failed to upload file.": "Не удалось загрузить файл.",
 	"February": "Февраль",
 	"February": "Февраль",
-	"Feedback History": "",
-	"Feedbacks": "",
+	"Feedback History": "История отзывов",
+	"Feedbacks": "Отзывы",
 	"Feel free to add specific details": "Не стесняйтесь добавлять конкретные детали",
 	"Feel free to add specific details": "Не стесняйтесь добавлять конкретные детали",
 	"File": "Файл",
 	"File": "Файл",
-	"File added successfully.": "",
-	"File content updated successfully.": "",
+	"File added successfully.": "Файл успешно добавлен.",
+	"File content updated successfully.": "Содержимое файла успешно обновлено.",
 	"File Mode": "Режим файла",
 	"File Mode": "Режим файла",
 	"File not found.": "Файл не найден.",
 	"File not found.": "Файл не найден.",
-	"File removed successfully.": "",
+	"File removed successfully.": "Файл успешно удален.",
 	"File size should not exceed {{maxSize}} MB.": "Размер файла не должен превышать {{maxSize}} МБ.",
 	"File size should not exceed {{maxSize}} MB.": "Размер файла не должен превышать {{maxSize}} МБ.",
 	"Files": "Файлы",
 	"Files": "Файлы",
 	"Filter is now globally disabled": "Фильтр теперь отключен глобально",
 	"Filter is now globally disabled": "Фильтр теперь отключен глобально",
@@ -409,23 +409,23 @@
 	"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Определение подделки отпечатка: Невозможно использовать инициалы в качестве аватара. По умолчанию используется изображение профиля по умолчанию.",
 	"Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Определение подделки отпечатка: Невозможно использовать инициалы в качестве аватара. По умолчанию используется изображение профиля по умолчанию.",
 	"Fluidly stream large external response chunks": "Плавная потоковая передача больших фрагментов внешних ответов",
 	"Fluidly stream large external response chunks": "Плавная потоковая передача больших фрагментов внешних ответов",
 	"Focus chat input": "Фокус ввода чата",
 	"Focus chat input": "Фокус ввода чата",
-	"Folder deleted successfully": "",
-	"Folder name cannot be empty": "",
-	"Folder name cannot be empty.": "",
-	"Folder name updated successfully": "",
+	"Folder deleted successfully": "Папка успешно удалена",
+	"Folder name cannot be empty": "Имя папки не может быть пустым",
+	"Folder name cannot be empty.": "Имя папки не может быть пустым.",
+	"Folder name updated successfully": "Имя папки успешно обновлено",
 	"Followed instructions perfectly": "Идеально соответствует инструкциям",
 	"Followed instructions perfectly": "Идеально соответствует инструкциям",
-	"Forge new paths": "",
+	"Forge new paths": "Прокладывайте новые пути",
 	"Form": "Форма",
 	"Form": "Форма",
-	"Format your variables using brackets like this:": "",
+	"Format your variables using brackets like this:": "Отформатируйте переменные, используя такие : скобки",
 	"Frequency Penalty": "Штраф за частоту",
 	"Frequency Penalty": "Штраф за частоту",
-	"Function": "",
+	"Function": "Функция",
 	"Function created successfully": "Функция успешно создана",
 	"Function created successfully": "Функция успешно создана",
 	"Function deleted successfully": "Функция успешно удалена",
 	"Function deleted successfully": "Функция успешно удалена",
-	"Function Description": "",
-	"Function ID": "",
+	"Function Description": "Описание Функции",
+	"Function ID": "ID Функции",
 	"Function is now globally disabled": "Функция теперь глобально отключена",
 	"Function is now globally disabled": "Функция теперь глобально отключена",
 	"Function is now globally enabled": "Функция теперь глобально включена",
 	"Function is now globally enabled": "Функция теперь глобально включена",
-	"Function Name": "",
+	"Function Name": "Имя Функции",
 	"Function updated successfully": "Функция успешно обновлена",
 	"Function updated successfully": "Функция успешно обновлена",
 	"Functions": "Функции",
 	"Functions": "Функции",
 	"Functions allow arbitrary code execution": "Функции позволяют выполнять произвольный код",
 	"Functions allow arbitrary code execution": "Функции позволяют выполнять произвольный код",
@@ -463,19 +463,19 @@
 	"Hybrid Search": "Гибридная поисковая система",
 	"Hybrid Search": "Гибридная поисковая система",
 	"I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "Я подтверждаю, что прочитал и осознаю последствия своих действий. Я осознаю риски, связанные с выполнением произвольного кода, и я проверил достоверность источника.",
 	"I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "Я подтверждаю, что прочитал и осознаю последствия своих действий. Я осознаю риски, связанные с выполнением произвольного кода, и я проверил достоверность источника.",
 	"ID": "",
 	"ID": "",
-	"Ignite curiosity": "",
+	"Ignite curiosity": "Разожгите любопытство",
 	"Image Generation (Experimental)": "Генерация изображений (Экспериментально)",
 	"Image Generation (Experimental)": "Генерация изображений (Экспериментально)",
 	"Image Generation Engine": "Механизм генерации изображений",
 	"Image Generation Engine": "Механизм генерации изображений",
 	"Image Settings": "Настройки изображения",
 	"Image Settings": "Настройки изображения",
 	"Images": "Изображения",
 	"Images": "Изображения",
-	"Import Chats": "Импортировать чаты",
+	"Import Chats": "Импортировать Чаты",
 	"Import Config from JSON File": "Импорт конфигурации из JSON-файла",
 	"Import Config from JSON File": "Импорт конфигурации из JSON-файла",
-	"Import Functions": "Импортировать функции",
-	"Import Models": "Импортировать модели",
-	"Import Presets": "",
-	"Import Prompts": "Импортировать промпты",
-	"Import Tools": "Импортировать инструменты",
-	"Include": "",
+	"Import Functions": "Импортировать Функции",
+	"Import Models": "Импортировать Модели",
+	"Import Presets": "Импортировать Пресеты",
+	"Import Prompts": "Импортировать Промпты",
+	"Import Tools": "Импортировать Инструменты",
+	"Include": "Включать",
 	"Include `--api-auth` flag when running stable-diffusion-webui": "Добавьте флаг '--api-auth' при запуске stable-diffusion-webui",
 	"Include `--api-auth` flag when running stable-diffusion-webui": "Добавьте флаг '--api-auth' при запуске stable-diffusion-webui",
 	"Include `--api` flag when running stable-diffusion-webui": "Добавьте флаг `--api` при запуске stable-diffusion-webui",
 	"Include `--api` flag when running stable-diffusion-webui": "Добавьте флаг `--api` при запуске stable-diffusion-webui",
 	"Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive. (Default: 0.1)": "",
 	"Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive. (Default: 0.1)": "",
@@ -484,7 +484,7 @@
 	"Install from Github URL": "Установка с URL-адреса Github",
 	"Install from Github URL": "Установка с URL-адреса Github",
 	"Instant Auto-Send After Voice Transcription": "Мгновенная автоматическая отправка после расшифровки голоса",
 	"Instant Auto-Send After Voice Transcription": "Мгновенная автоматическая отправка после расшифровки голоса",
 	"Interface": "Интерфейс",
 	"Interface": "Интерфейс",
-	"Invalid file format.": "",
+	"Invalid file format.": "Неверный формат файла.",
 	"Invalid Tag": "Недопустимый тег",
 	"Invalid Tag": "Недопустимый тег",
 	"January": "Январь",
 	"January": "Январь",
 	"Jina API Key": "",
 	"Jina API Key": "",
@@ -499,19 +499,19 @@
 	"Key": "",
 	"Key": "",
 	"Keyboard shortcuts": "Горячие клавиши",
 	"Keyboard shortcuts": "Горячие клавиши",
 	"Knowledge": "Знания",
 	"Knowledge": "Знания",
-	"Knowledge Access": "",
-	"Knowledge created successfully.": "",
-	"Knowledge deleted successfully.": "",
-	"Knowledge reset successfully.": "",
-	"Knowledge updated successfully": "",
+	"Knowledge Access": "Доступ к Знаниям",
+	"Knowledge created successfully.": "Знания созданы успешно.",
+	"Knowledge deleted successfully.": "Знания успешно удалены.",
+	"Knowledge reset successfully.": "Знания успешно сброшены.",
+	"Knowledge updated successfully": "Знания успешно обновлены",
 	"Label": "",
 	"Label": "",
-	"Landing Page Mode": "",
+	"Landing Page Mode": "Режим Целевой Страницы",
 	"Language": "Язык",
 	"Language": "Язык",
-	"Last Active": "Последний активный",
-	"Last Modified": "Последнее изменение",
+	"Last Active": "Последний Активный",
+	"Last Modified": "Последнее Изменение",
 	"LDAP": "",
 	"LDAP": "",
-	"LDAP server updated": "",
-	"Leaderboard": "",
+	"LDAP server updated": "LDAP сервер обновлен",
+	"Leaderboard": "Таблица Лидеров",
 	"Leave empty for unlimited": "Оставьте пустым для неограниченного",
 	"Leave empty for unlimited": "Оставьте пустым для неограниченного",
 	"Leave empty to include all models from \"{{URL}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{URL}}/api/tags\" endpoint": "",
 	"Leave empty to include all models from \"{{URL}}/models\" endpoint": "",
 	"Leave empty to include all models from \"{{URL}}/models\" endpoint": "",
@@ -528,10 +528,10 @@
 	"Make sure to enclose them with": "Убедитесь, что они заключены в",
 	"Make sure to enclose them with": "Убедитесь, что они заключены в",
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "Убедитесь, что экспортируете файл workflow.json в формате API из ComfyUI.",
 	"Make sure to export a workflow.json file as API format from ComfyUI.": "Убедитесь, что экспортируете файл workflow.json в формате API из ComfyUI.",
 	"Manage": "Управлять",
 	"Manage": "Управлять",
-	"Manage Arena Models": "",
-	"Manage Ollama": "",
-	"Manage Ollama API Connections": "",
-	"Manage OpenAI API Connections": "",
+	"Manage Arena Models": "Управление Ареной Моделей",
+	"Manage Ollama": "Управление Ollama",
+	"Manage Ollama API Connections": "Управление соединениями API Ollama",
+	"Manage OpenAI API Connections": "Управление соединениями API OpenAI",
 	"Manage Pipelines": "Управление конвейерами",
 	"Manage Pipelines": "Управление конвейерами",
 	"March": "Март",
 	"March": "Март",
 	"Max Tokens (num_predict)": "Максимальное количество токенов (num_predict)",
 	"Max Tokens (num_predict)": "Максимальное количество токенов (num_predict)",
@@ -546,7 +546,7 @@
 	"Memory deleted successfully": "Воспоминание успешно удалено",
 	"Memory deleted successfully": "Воспоминание успешно удалено",
 	"Memory updated successfully": "Воспоминание успешно обновлено",
 	"Memory updated successfully": "Воспоминание успешно обновлено",
 	"Merge Responses": "Объединить ответы",
 	"Merge Responses": "Объединить ответы",
-	"Message rating should be enabled to use this feature": "",
+	"Message rating should be enabled to use this feature": "Чтобы использовать эту функцию, необходимо включить оценку сообщения.",
 	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Сообщения, отправленные вами после создания ссылки, не будут передаваться другим. Пользователи, у которых есть URL, смогут просматривать общий чат.",
 	"Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "Сообщения, отправленные вами после создания ссылки, не будут передаваться другим. Пользователи, у которых есть URL, смогут просматривать общий чат.",
 	"Min P": "Min P",
 	"Min P": "Min P",
 	"Minimum Score": "Минимальный балл",
 	"Minimum Score": "Минимальный балл",
@@ -556,7 +556,7 @@
 	"MMMM DD, YYYY": "DD MMMM YYYY",
 	"MMMM DD, YYYY": "DD MMMM YYYY",
 	"MMMM DD, YYYY HH:mm": "DD MMMM YYYY HH:mm",
 	"MMMM DD, YYYY HH:mm": "DD MMMM YYYY HH:mm",
 	"MMMM DD, YYYY hh:mm:ss A": "MMMM DD, YYYY hh:mm:ss A",
 	"MMMM DD, YYYY hh:mm:ss A": "MMMM DD, YYYY hh:mm:ss A",
-	"Model": "",
+	"Model": "Модель",
 	"Model '{{modelName}}' has been successfully downloaded.": "Модель '{{modelName}}' успешно загружена.",
 	"Model '{{modelName}}' has been successfully downloaded.": "Модель '{{modelName}}' успешно загружена.",
 	"Model '{{modelTag}}' is already in queue for downloading.": "Модель '{{modelTag}}' уже находится в очереди на загрузку.",
 	"Model '{{modelTag}}' is already in queue for downloading.": "Модель '{{modelTag}}' уже находится в очереди на загрузку.",
 	"Model {{modelId}} not found": "Модель {{modelId}} не найдена",
 	"Model {{modelId}} not found": "Модель {{modelId}} не найдена",
@@ -565,18 +565,18 @@
 	"Model accepts image inputs": "Модель принимает изображения как входные данные",
 	"Model accepts image inputs": "Модель принимает изображения как входные данные",
 	"Model created successfully!": "Модель успешно создана!",
 	"Model created successfully!": "Модель успешно создана!",
 	"Model filesystem path detected. Model shortname is required for update, cannot continue.": "Обнаружен путь к файловой системе модели. Для обновления требуется краткое имя модели, не удается продолжить.",
 	"Model filesystem path detected. Model shortname is required for update, cannot continue.": "Обнаружен путь к файловой системе модели. Для обновления требуется краткое имя модели, не удается продолжить.",
-	"Model Filtering": "",
-	"Model ID": "ID модели",
-	"Model IDs": "",
-	"Model Name": "",
+	"Model Filtering": "Фильтрация Моделей",
+	"Model ID": "ID Модели",
+	"Model IDs": "IDs Модели",
+	"Model Name": "Имя Модели",
 	"Model not selected": "Модель не выбрана",
 	"Model not selected": "Модель не выбрана",
 	"Model Params": "Параметры модели",
 	"Model Params": "Параметры модели",
-	"Model Permissions": "",
+	"Model Permissions": "Разрешения Модели",
 	"Model updated successfully": "Модель успешно обновлена",
 	"Model updated successfully": "Модель успешно обновлена",
 	"Modelfile Content": "Содержимое файла модели",
 	"Modelfile Content": "Содержимое файла модели",
 	"Models": "Модели",
 	"Models": "Модели",
-	"Models Access": "",
-	"Models configuration saved successfully": "",
+	"Models Access": "Доступ к Моделям",
+	"Models configuration saved successfully": "Конфигурация модели успешно сохранена.",
 	"Mojeek Search API Key": "",
 	"Mojeek Search API Key": "",
 	"more": "",
 	"more": "",
 	"More": "Больше",
 	"More": "Больше",
@@ -585,26 +585,26 @@
 	"New Chat": "Новый чат",
 	"New Chat": "Новый чат",
 	"New folder": "",
 	"New folder": "",
 	"New Password": "Новый пароль",
 	"New Password": "Новый пароль",
-	"No content found": "",
+	"No content found": "Контент не найден",
 	"No content to speak": "Нечего говорить",
 	"No content to speak": "Нечего говорить",
 	"No distance available": "",
 	"No distance available": "",
 	"No feedbacks found": "",
 	"No feedbacks found": "",
 	"No file selected": "Файлы не выбраны",
 	"No file selected": "Файлы не выбраны",
-	"No files found.": "",
+	"No files found.": "Файлы не найдены.",
 	"No groups with access, add a group to grant access": "",
 	"No groups with access, add a group to grant access": "",
 	"No HTML, CSS, or JavaScript content found.": "",
 	"No HTML, CSS, or JavaScript content found.": "",
-	"No knowledge found": "",
+	"No knowledge found": "Знания не найдены",
 	"No model IDs": "",
 	"No model IDs": "",
-	"No models found": "",
-	"No models selected": "",
+	"No models found": "Модели не найдены",
+	"No models selected": "Модели не выбраны",
 	"No results found": "Результатов не найдено",
 	"No results found": "Результатов не найдено",
 	"No search query generated": "Поисковый запрос не сгенерирован",
 	"No search query generated": "Поисковый запрос не сгенерирован",
 	"No source available": "Нет доступных источников",
 	"No source available": "Нет доступных источников",
-	"No users were found.": "",
+	"No users were found.": "Пользователи не найдены.",
 	"No valves to update": "Нет вентилей для обновления",
 	"No valves to update": "Нет вентилей для обновления",
 	"None": "Нет",
 	"None": "Нет",
 	"Not factually correct": "Не соответствует действительности",
 	"Not factually correct": "Не соответствует действительности",
-	"Not helpful": "",
+	"Not helpful": "Бесполезно",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Обратите внимание: Если вы установите минимальный балл, поиск будет возвращать только документы с баллом больше или равным минимальному баллу.",
 	"Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "Обратите внимание: Если вы установите минимальный балл, поиск будет возвращать только документы с баллом больше или равным минимальному баллу.",
 	"Notes": "",
 	"Notes": "",
 	"Notifications": "Уведомления",
 	"Notifications": "Уведомления",
@@ -622,16 +622,16 @@
 	"Ollama API settings updated": "",
 	"Ollama API settings updated": "",
 	"Ollama Version": "Версия Ollama",
 	"Ollama Version": "Версия Ollama",
 	"On": "Включено",
 	"On": "Включено",
-	"Only alphanumeric characters and hyphens are allowed": "",
+	"Only alphanumeric characters and hyphens are allowed": "Разрешены только буквенно-цифровые символы и дефисы.",
 	"Only alphanumeric characters and hyphens are allowed in the command string.": "В строке команды разрешено использовать только буквенно-цифровые символы и дефисы.",
 	"Only alphanumeric characters and hyphens are allowed in the command string.": "В строке команды разрешено использовать только буквенно-цифровые символы и дефисы.",
 	"Only collections can be edited, create a new knowledge base to edit/add documents.": "",
 	"Only collections can be edited, create a new knowledge base to edit/add documents.": "",
-	"Only select users and groups with permission can access": "",
+	"Only select users and groups with permission can access": "Доступ имеют только избранные пользователи и группы, имеющие разрешение.",
 	"Oops! Looks like the URL is invalid. Please double-check and try again.": "Упс! Похоже, что URL-адрес недействителен. Пожалуйста, перепроверьте и попробуйте еще раз.",
 	"Oops! Looks like the URL is invalid. Please double-check and try again.": "Упс! Похоже, что URL-адрес недействителен. Пожалуйста, перепроверьте и попробуйте еще раз.",
-	"Oops! There are files still uploading. Please wait for the upload to complete.": "",
+	"Oops! There are files still uploading. Please wait for the upload to complete.": "Упс! Есть файлы, которые все еще загружаются. Пожалуйста, дождитесь завершения загрузки.",
 	"Oops! There was an error in the previous response.": "",
 	"Oops! There was an error in the previous response.": "",
 	"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Упс! Вы используете неподдерживаемый метод (только фронтенд). Пожалуйста, обслуживайте веб-интерфейс из бэкенда.",
 	"Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "Упс! Вы используете неподдерживаемый метод (только фронтенд). Пожалуйста, обслуживайте веб-интерфейс из бэкенда.",
 	"Open file": "Открыть файл",
 	"Open file": "Открыть файл",
-	"Open in full screen": "",
+	"Open in full screen": "Открыть на весь экран",
 	"Open new chat": "Открыть новый чат",
 	"Open new chat": "Открыть новый чат",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses faster-whisper internally.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
 	"Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "",
@@ -643,25 +643,25 @@
 	"OpenAI API settings updated": "",
 	"OpenAI API settings updated": "",
 	"OpenAI URL/Key required.": "Требуется URL-адрес API OpenAI или ключ API.",
 	"OpenAI URL/Key required.": "Требуется URL-адрес API OpenAI или ключ API.",
 	"or": "или",
 	"or": "или",
-	"Organize your users": "",
+	"Organize your users": "Организуйте своих пользователей",
 	"Other": "Прочее",
 	"Other": "Прочее",
 	"OUTPUT": "",
 	"OUTPUT": "",
 	"Output format": "Формат вывода",
 	"Output format": "Формат вывода",
 	"Overview": "Обзор",
 	"Overview": "Обзор",
 	"page": "страница",
 	"page": "страница",
 	"Password": "Пароль",
 	"Password": "Пароль",
-	"Paste Large Text as File": "",
+	"Paste Large Text as File": "Вставить большой текст как файл",
 	"PDF document (.pdf)": "PDF-документ (.pdf)",
 	"PDF document (.pdf)": "PDF-документ (.pdf)",
 	"PDF Extract Images (OCR)": "Извлечение изображений из PDF (OCR)",
 	"PDF Extract Images (OCR)": "Извлечение изображений из PDF (OCR)",
 	"pending": "ожидающий",
 	"pending": "ожидающий",
 	"Permission denied when accessing media devices": "Отказано в разрешении на доступ к мультимедийным устройствам",
 	"Permission denied when accessing media devices": "Отказано в разрешении на доступ к мультимедийным устройствам",
 	"Permission denied when accessing microphone": "Отказано в разрешении на доступ к микрофону",
 	"Permission denied when accessing microphone": "Отказано в разрешении на доступ к микрофону",
 	"Permission denied when accessing microphone: {{error}}": "Отказано в разрешении на доступ к микрофону: {{error}}",
 	"Permission denied when accessing microphone: {{error}}": "Отказано в разрешении на доступ к микрофону: {{error}}",
-	"Permissions": "",
+	"Permissions": "Разрешения",
 	"Personalization": "Персонализация",
 	"Personalization": "Персонализация",
 	"Pin": "Закрепить",
 	"Pin": "Закрепить",
 	"Pinned": "Закреплено",
 	"Pinned": "Закреплено",
-	"Pioneer insights": "",
+	"Pioneer insights": "Новаторские идеи",
 	"Pipeline deleted successfully": "Конвейер успешно удален",
 	"Pipeline deleted successfully": "Конвейер успешно удален",
 	"Pipeline downloaded successfully": "Конвейер успешно загружен",
 	"Pipeline downloaded successfully": "Конвейер успешно загружен",
 	"Pipelines": "Конвейеры",
 	"Pipelines": "Конвейеры",
@@ -670,9 +670,9 @@
 	"Plain text (.txt)": "Текст в формате .txt",
 	"Plain text (.txt)": "Текст в формате .txt",
 	"Playground": "Песочница",
 	"Playground": "Песочница",
 	"Please carefully review the following warnings:": "Пожалуйста, внимательно ознакомьтесь со следующими предупреждениями:",
 	"Please carefully review the following warnings:": "Пожалуйста, внимательно ознакомьтесь со следующими предупреждениями:",
-	"Please enter a prompt": "",
-	"Please fill in all fields.": "",
-	"Please select a model first.": "",
+	"Please enter a prompt": "Пожалуйста, введите подсказку",
+	"Please fill in all fields.": "Пожалуйста, заполните все поля.",
+	"Please select a model first.": "Пожалуйста, сначала выберите модель.",
 	"Please select a reason": "Пожалуйста, выберите причину",
 	"Please select a reason": "Пожалуйста, выберите причину",
 	"Port": "",
 	"Port": "",
 	"Positive attitude": "Позитивный настрой",
 	"Positive attitude": "Позитивный настрой",
@@ -723,7 +723,7 @@
 	"Response splitting": "Разделение ответов",
 	"Response splitting": "Разделение ответов",
 	"Result": "",
 	"Result": "",
 	"Retrieval Query Generation": "",
 	"Retrieval Query Generation": "",
-	"Rich Text Input for Chat": "",
+	"Rich Text Input for Chat": "Ввод форматированного текста для чата",
 	"RK": "",
 	"RK": "",
 	"Role": "Роль",
 	"Role": "Роль",
 	"Rosé Pine": "Rosé Pine",
 	"Rosé Pine": "Rosé Pine",
@@ -815,7 +815,7 @@
 	"Share Chat": "Поделиться чатом",
 	"Share Chat": "Поделиться чатом",
 	"Share to OpenWebUI Community": "Поделиться с сообществом OpenWebUI",
 	"Share to OpenWebUI Community": "Поделиться с сообществом OpenWebUI",
 	"Show": "Показать",
 	"Show": "Показать",
-	"Show \"What's New\" modal on login": "",
+	"Show \"What's New\" modal on login": "Показывать окно «Что нового» при входе в систему",
 	"Show Admin Details in Account Pending Overlay": "Показывать данные администратора в оверлее ожидающей учетной записи",
 	"Show Admin Details in Account Pending Overlay": "Показывать данные администратора в оверлее ожидающей учетной записи",
 	"Show shortcuts": "Показать горячие клавиши",
 	"Show shortcuts": "Показать горячие клавиши",
 	"Show your support!": "Поддержите нас!",
 	"Show your support!": "Поддержите нас!",
@@ -869,21 +869,21 @@
 	"The maximum file size in MB. If the file size exceeds this limit, the file will not be uploaded.": "Максимальный размер файла в МБ. Если размер файла превысит это ограничение, файл не будет загружен.",
 	"The maximum file size in MB. If the file size exceeds this limit, the file will not be uploaded.": "Максимальный размер файла в МБ. Если размер файла превысит это ограничение, файл не будет загружен.",
 	"The maximum number of files that can be used at once in chat. If the number of files exceeds this limit, the files will not be uploaded.": "Максимальное количество файлов, которые могут быть использованы одновременно в чате. Если количество файлов превысит это ограничение, файлы не будут загружены.",
 	"The maximum number of files that can be used at once in chat. If the number of files exceeds this limit, the files will not be uploaded.": "Максимальное количество файлов, которые могут быть использованы одновременно в чате. Если количество файлов превысит это ограничение, файлы не будут загружены.",
 	"The score should be a value between 0.0 (0%) and 1.0 (100%).": "Оценка должна быть значением между 0,0 (0%) и 1,0 (100%).",
 	"The score should be a value between 0.0 (0%) and 1.0 (100%).": "Оценка должна быть значением между 0,0 (0%) и 1,0 (100%).",
-	"The temperature of the model. Increasing the temperature will make the model answer more creatively. (Default: 0.8)": "",
+	"The temperature of the model. Increasing the temperature will make the model answer more creatively. (Default: 0.8)": "Температура модели. Повышение температуры заставит модель отвечать более творчески. (По умолчанию: 0,8)",
 	"Theme": "Тема",
 	"Theme": "Тема",
 	"Thinking...": "Думаю...",
 	"Thinking...": "Думаю...",
 	"This action cannot be undone. Do you wish to continue?": "Это действие нельзя отменить. Вы хотите продолжить?",
 	"This action cannot be undone. Do you wish to continue?": "Это действие нельзя отменить. Вы хотите продолжить?",
 	"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Это обеспечивает сохранение ваших ценных разговоров в безопасной базе данных на вашем сервере. Спасибо!",
 	"This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "Это обеспечивает сохранение ваших ценных разговоров в безопасной базе данных на вашем сервере. Спасибо!",
 	"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Это экспериментальная функция, она может работать не так, как ожидалось, и может быть изменена в любое время.",
 	"This is an experimental feature, it may not function as expected and is subject to change at any time.": "Это экспериментальная функция, она может работать не так, как ожидалось, и может быть изменена в любое время.",
-	"This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics. (Default: 24)": "",
-	"This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.  (Default: 128)": "",
-	"This option will delete all existing files in the collection and replace them with newly uploaded files.": "",
+	"This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics. (Default: 24)": "Этот параметр определяет, сколько токенов сохраняется при обновлении контекста. Например, если установлено значение 2, будут сохранены два последних токена контекста разговора. Сохранение контекста может помочь сохранить непрерывность разговора, но может снизить способность реагировать на новые темы. (По умолчанию: 24)",
+	"This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.  (Default: 128)": "Этот параметр устанавливает максимальное количество токенов, которые модель может сгенерировать в своем ответе. Увеличение этого предела позволяет модели предоставлять более длинные ответы, но также может увеличить вероятность создания бесполезного или нерелевантного контента. (По умолчанию: 128)",
+	"This option will delete all existing files in the collection and replace them with newly uploaded files.": "Эта опция удалит все существующие файлы в коллекции и заменит их вновь загруженными файлами.",
 	"This response was generated by \"{{model}}\"": "",
 	"This response was generated by \"{{model}}\"": "",
 	"This will delete": "Это приведет к удалению",
 	"This will delete": "Это приведет к удалению",
-	"This will delete <strong>{{NAME}}</strong> and <strong>all its contents</strong>.": "",
-	"This will delete all models including custom models": "",
-	"This will delete all models including custom models and cannot be undone.": "",
-	"This will reset the knowledge base and sync all files. Do you wish to continue?": "",
+	"This will delete <strong>{{NAME}}</strong> and <strong>all its contents</strong>.": "При этом будет удален <strong>{{NAME}}</strong> и <strong>все его содержимое</strong>.",
+	"This will delete all models including custom models": "Это приведет к удалению всех моделей, включая пользовательские модели.",
+	"This will delete all models including custom models and cannot be undone.": "При этом будут удалены все модели, включая пользовательские, и это действие нельзя будет отменить.",
+	"This will reset the knowledge base and sync all files. Do you wish to continue?": "Это сбросит базу знаний и синхронизирует все файлы. Хотите продолжить?",
 	"Thorough explanation": "Подробное объяснение",
 	"Thorough explanation": "Подробное объяснение",
 	"Tika": "Tika",
 	"Tika": "Tika",
 	"Tika Server URL required.": "Требуется URL-адрес сервера Tika.",
 	"Tika Server URL required.": "Требуется URL-адрес сервера Tika.",
@@ -898,12 +898,12 @@
 	"To access the available model names for downloading,": "Чтобы получить доступ к доступным для загрузки именам моделей,",
 	"To access the available model names for downloading,": "Чтобы получить доступ к доступным для загрузки именам моделей,",
 	"To access the GGUF models available for downloading,": "Чтобы получить доступ к моделям GGUF, доступным для загрузки,",
 	"To access the GGUF models available for downloading,": "Чтобы получить доступ к моделям GGUF, доступным для загрузки,",
 	"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Чтобы получить доступ к WebUI, пожалуйста, обратитесь к администратору. Администраторы могут управлять статусами пользователей из панели администратора.",
 	"To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "Чтобы получить доступ к WebUI, пожалуйста, обратитесь к администратору. Администраторы могут управлять статусами пользователей из панели администратора.",
-	"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "",
+	"To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "Чтобы прикрепить сюда базу знаний, сначала добавьте её в \"Знания\" рабочего пространства.",
 	"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
 	"To protect your privacy, only ratings, model IDs, tags, and metadata are shared from your feedback—your chat logs remain private and are not included.": "",
 	"To select actions here, add them to the \"Functions\" workspace first.": "Чтобы выбрать действия, сначала добавьте их в \"Функции\" рабочего пространства.",
 	"To select actions here, add them to the \"Functions\" workspace first.": "Чтобы выбрать действия, сначала добавьте их в \"Функции\" рабочего пространства.",
 	"To select filters here, add them to the \"Functions\" workspace first.": "Чтобы выбрать фильтры, сначала добавьте их в \"Функции\" рабочего пространства.",
 	"To select filters here, add them to the \"Functions\" workspace first.": "Чтобы выбрать фильтры, сначала добавьте их в \"Функции\" рабочего пространства.",
 	"To select toolkits here, add them to the \"Tools\" workspace first.": "Чтобы выбрать инструменты, сначала добавьте их в \"Инструменты\" рабочего пространства.",
 	"To select toolkits here, add them to the \"Tools\" workspace first.": "Чтобы выбрать инструменты, сначала добавьте их в \"Инструменты\" рабочего пространства.",
-	"Toast notifications for new updates": "",
+	"Toast notifications for new updates": "Уведомления о обновлениях",
 	"Today": "Сегодня",
 	"Today": "Сегодня",
 	"Toggle settings": "Переключить настройки",
 	"Toggle settings": "Переключить настройки",
 	"Toggle sidebar": "Переключить боковую панель",
 	"Toggle sidebar": "Переключить боковую панель",
@@ -912,13 +912,13 @@
 	"Too verbose": "",
 	"Too verbose": "",
 	"Tool created successfully": "Инструмент успешно создан",
 	"Tool created successfully": "Инструмент успешно создан",
 	"Tool deleted successfully": "Инструмент успешно удален",
 	"Tool deleted successfully": "Инструмент успешно удален",
-	"Tool Description": "",
-	"Tool ID": "",
+	"Tool Description": "Описание Инструмента",
+	"Tool ID": "ID Инструмента",
 	"Tool imported successfully": "Инструмент успешно импортирован",
 	"Tool imported successfully": "Инструмент успешно импортирован",
-	"Tool Name": "",
+	"Tool Name": "Имя Инструмента",
 	"Tool updated successfully": "Инструмент успешно обновлен",
 	"Tool updated successfully": "Инструмент успешно обновлен",
 	"Tools": "Инструменты",
 	"Tools": "Инструменты",
-	"Tools Access": "",
+	"Tools Access": "Доступ к инструментам",
 	"Tools are a function calling system with arbitrary code execution": "Инструменты - это система вызова функций с выполнением произвольного кода",
 	"Tools are a function calling system with arbitrary code execution": "Инструменты - это система вызова функций с выполнением произвольного кода",
 	"Tools have a function calling system that allows arbitrary code execution": "Инструменты имеют систему вызова функций, которая позволяет выполнять произвольный код",
 	"Tools have a function calling system that allows arbitrary code execution": "Инструменты имеют систему вызова функций, которая позволяет выполнять произвольный код",
 	"Tools have a function calling system that allows arbitrary code execution.": "Инструменты имеют систему вызова функций, которая позволяет выполнять произвольный код.",
 	"Tools have a function calling system that allows arbitrary code execution.": "Инструменты имеют систему вызова функций, которая позволяет выполнять произвольный код.",
@@ -933,41 +933,41 @@
 	"Type Hugging Face Resolve (Download) URL": "Введите URL-адрес Hugging Face Resolve (загрузки)",
 	"Type Hugging Face Resolve (Download) URL": "Введите URL-адрес Hugging Face Resolve (загрузки)",
 	"Uh-oh! There was an issue connecting to {{provider}}.": "Упс! Возникла проблема подключения к {{provider}}.",
 	"Uh-oh! There was an issue connecting to {{provider}}.": "Упс! Возникла проблема подключения к {{provider}}.",
 	"UI": "Пользовательский интерфейс",
 	"UI": "Пользовательский интерфейс",
-	"Unarchive All": "",
-	"Unarchive All Archived Chats": "",
-	"Unarchive Chat": "",
-	"Unlock mysteries": "",
+	"Unarchive All": "Разархивировать ВСЁ",
+	"Unarchive All Archived Chats": "Разархивировать ВСЕ Заархивированные Чаты",
+	"Unarchive Chat": "Разархивировать чат",
+	"Unlock mysteries": "Разблокируйте тайны",
 	"Unpin": "Открепить",
 	"Unpin": "Открепить",
-	"Unravel secrets": "",
-	"Untagged": "",
+	"Unravel secrets": "Разгадать секреты",
+	"Untagged": "Без тегов",
 	"Update": "Обновить",
 	"Update": "Обновить",
 	"Update and Copy Link": "Обновить и скопировать ссылку",
 	"Update and Copy Link": "Обновить и скопировать ссылку",
 	"Update for the latest features and improvements.": "Обновитесь для получения последних функций и улучшений.",
 	"Update for the latest features and improvements.": "Обновитесь для получения последних функций и улучшений.",
 	"Update password": "Обновить пароль",
 	"Update password": "Обновить пароль",
-	"Updated": "",
+	"Updated": "Обновлено",
 	"Updated at": "Обновлено",
 	"Updated at": "Обновлено",
 	"Updated At": "",
 	"Updated At": "",
 	"Upload": "Загрузить",
 	"Upload": "Загрузить",
 	"Upload a GGUF model": "Загрузить модель GGUF",
 	"Upload a GGUF model": "Загрузить модель GGUF",
-	"Upload directory": "",
-	"Upload files": "",
+	"Upload directory": "Загрузить каталог",
+	"Upload files": "Загрузить файлы",
 	"Upload Files": "Загрузить файлы",
 	"Upload Files": "Загрузить файлы",
 	"Upload Pipeline": "Загрузить конвейер",
 	"Upload Pipeline": "Загрузить конвейер",
 	"Upload Progress": "Прогресс загрузки",
 	"Upload Progress": "Прогресс загрузки",
 	"URL": "",
 	"URL": "",
 	"URL Mode": "Режим URL",
 	"URL Mode": "Режим URL",
-	"Use '#' in the prompt input to load and include your knowledge.": "",
+	"Use '#' in the prompt input to load and include your knowledge.": "Используйте «#» в строке ввода, чтобы загрузить и включить свои знания.",
 	"Use Gravatar": "Использовать Gravatar",
 	"Use Gravatar": "Использовать Gravatar",
-	"Use groups to group your users and assign permissions.": "",
+	"Use groups to group your users and assign permissions.": "Используйте группы, чтобы группировать пользователей и назначать разрешения.",
 	"Use Initials": "Использовать инициалы",
 	"Use Initials": "Использовать инициалы",
 	"use_mlock (Ollama)": "use_mlock (Ollama)",
 	"use_mlock (Ollama)": "use_mlock (Ollama)",
 	"use_mmap (Ollama)": "use_mmap (Ollama)",
 	"use_mmap (Ollama)": "use_mmap (Ollama)",
 	"user": "пользователь",
 	"user": "пользователь",
-	"User": "",
+	"User": "Пользователь",
 	"User location successfully retrieved.": "Местоположение пользователя успешно получено.",
 	"User location successfully retrieved.": "Местоположение пользователя успешно получено.",
-	"Username": "",
+	"Username": "Имя пользователя",
 	"Users": "Пользователи",
 	"Users": "Пользователи",
-	"Using the default arena model with all models. Click the plus button to add custom models.": "",
+	"Using the default arena model with all models. Click the plus button to add custom models.": "Использование модели арены по умолчанию со всеми моделями. Нажмите кнопку «плюс», чтобы добавить пользовательские модели.",
 	"Utilize": "Используйте",
 	"Utilize": "Используйте",
 	"Valid time units:": "Допустимые единицы времени:",
 	"Valid time units:": "Допустимые единицы времени:",
 	"Valves": "Вентили",
 	"Valves": "Вентили",
@@ -977,45 +977,45 @@
 	"variable to have them replaced with clipboard content.": "переменную, чтобы заменить их содержимым буфера обмена.",
 	"variable to have them replaced with clipboard content.": "переменную, чтобы заменить их содержимым буфера обмена.",
 	"Version": "Версия",
 	"Version": "Версия",
 	"Version {{selectedVersion}} of {{totalVersions}}": "",
 	"Version {{selectedVersion}} of {{totalVersions}}": "",
-	"Visibility": "",
+	"Visibility": "Видимость",
 	"Voice": "Голос",
 	"Voice": "Голос",
 	"Voice Input": "",
 	"Voice Input": "",
 	"Warning": "Предупреждение",
 	"Warning": "Предупреждение",
 	"Warning:": "Предупреждение:",
 	"Warning:": "Предупреждение:",
-	"Warning: Enabling this will allow users to upload arbitrary code on the server.": "",
+	"Warning: Enabling this will allow users to upload arbitrary code on the server.": "Предупреждение. Включение этого параметра позволит пользователям загружать произвольный код на сервер.",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "Предупреждение: Если вы обновите или измените модель эмбеддинга, вам нужно будет повторно импортировать все документы.",
 	"Warning: If you update or change your embedding model, you will need to re-import all documents.": "Предупреждение: Если вы обновите или измените модель эмбеддинга, вам нужно будет повторно импортировать все документы.",
 	"Web": "Веб",
 	"Web": "Веб",
 	"Web API": "Веб API",
 	"Web API": "Веб API",
 	"Web Loader Settings": "Настройки веб-загрузчика",
 	"Web Loader Settings": "Настройки веб-загрузчика",
 	"Web Search": "Веб-поиск",
 	"Web Search": "Веб-поиск",
 	"Web Search Engine": "Поисковая система",
 	"Web Search Engine": "Поисковая система",
-	"Web Search Query Generation": "",
+	"Web Search Query Generation": "Генерация запросов веб-поиска",
 	"Webhook URL": "URL-адрес веб-хука",
 	"Webhook URL": "URL-адрес веб-хука",
 	"WebUI Settings": "Настройки WebUI",
 	"WebUI Settings": "Настройки WebUI",
-	"WebUI will make requests to \"{{url}}/api/chat\"": "",
-	"WebUI will make requests to \"{{url}}/chat/completions\"": "",
-	"What are you trying to achieve?": "",
-	"What are you working on?": "",
+	"WebUI will make requests to \"{{url}}/api/chat\"": "WebUI будет отправлять запросы к \"{{url}}/api/chat\"",
+	"WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI будет отправлять запросы к \"{{url}}/chat/completions\"",
+	"What are you trying to achieve?": "Чего вы пытаетесь достичь?",
+	"What are you working on?": "Над чем вы работаете?",
 	"What’s New in": "Что нового в",
 	"What’s New in": "Что нового в",
-	"When enabled, the model will respond to each chat message in real-time, generating a response as soon as the user sends a message. This mode is useful for live chat applications, but may impact performance on slower hardware.": "",
-	"wherever you are": "",
+	"When enabled, the model will respond to each chat message in real-time, generating a response as soon as the user sends a message. This mode is useful for live chat applications, but may impact performance on slower hardware.": "Если эта функция включена, модель будет отвечать на каждое сообщение чата в режиме реального времени, генерируя ответ, как только пользователь отправит сообщение. Этот режим полезен для приложений живого чата, но может повлиять на производительность на более медленном оборудовании.",
+	"wherever you are": "где бы ты ни был",
 	"Whisper (Local)": "Whisper (Локально)",
 	"Whisper (Local)": "Whisper (Локально)",
-	"Why?": "",
+	"Why?": "Почему?",
 	"Widescreen Mode": "Широкоэкранный режим",
 	"Widescreen Mode": "Широкоэкранный режим",
 	"Won": "",
 	"Won": "",
-	"Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text. (Default: 0.9)": "",
+	"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)": "Работает совместно с top-k. Более высокое значение (например, 0,95) приведет к созданию более разнообразного текста, а более низкое значение (например, 0,5) приведет к созданию более сфокусированного и консервативного текста. (По умолчанию: 0,9)",
 	"Workspace": "Рабочее пространство",
 	"Workspace": "Рабочее пространство",
-	"Workspace Permissions": "",
+	"Workspace Permissions": "Разрешения для Рабочего пространства",
 	"Write a prompt suggestion (e.g. Who are you?)": "Напишите предложение промпта (например, Кто вы?)",
 	"Write a prompt suggestion (e.g. Who are you?)": "Напишите предложение промпта (например, Кто вы?)",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "Напишите резюме в 50 словах, которое кратко описывает [тему или ключевое слово].",
 	"Write a summary in 50 words that summarizes [topic or keyword].": "Напишите резюме в 50 словах, которое кратко описывает [тему или ключевое слово].",
-	"Write something...": "",
-	"Write your model template content here": "",
+	"Write something...": "Напишите что-нибудь...",
+	"Write your model template content here": "Напишите здесь содержимое шаблона вашей модели.",
 	"Yesterday": "Вчера",
 	"Yesterday": "Вчера",
 	"You": "Вы",
 	"You": "Вы",
 	"You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Одновременно вы можете общаться только с максимальным количеством файлов {{maxCount}}.",
 	"You can only chat with a maximum of {{maxCount}} file(s) at a time.": "Одновременно вы можете общаться только с максимальным количеством файлов {{maxCount}}.",
 	"You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Вы можете персонализировать свое взаимодействие с LLMs, добавив воспоминания с помощью кнопки \"Управлять\" ниже, что сделает их более полезными и адаптированными для вас.",
 	"You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "Вы можете персонализировать свое взаимодействие с LLMs, добавив воспоминания с помощью кнопки \"Управлять\" ниже, что сделает их более полезными и адаптированными для вас.",
-	"You cannot upload an empty file.": "",
-	"You do not have permission to upload files.": "",
+	"You cannot upload an empty file.": "Вы не можете загрузить пустой файл.",
+	"You do not have permission to upload files.": "У вас нет разрешения на загрузку файлов.",
 	"You have no archived conversations.": "У вас нет архивированных бесед.",
 	"You have no archived conversations.": "У вас нет архивированных бесед.",
 	"You have shared this chat": "Вы поделились этим чатом",
 	"You have shared this chat": "Вы поделились этим чатом",
 	"You're a helpful assistant.": "Вы полезный ассистент.",
 	"You're a helpful assistant.": "Вы полезный ассистент.",

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

@@ -1,5 +1,5 @@
 {
 {
-	"-1 for no limit, or a positive integer for a specific limit": "",
+	"-1 for no limit, or a positive integer for a specific limit": "-1 表示无限制,正整数表示具体限制”",
 	"'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' 或 '-1' 表示无过期时间。",
 	"'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s', 'm', 'h', 'd', 'w' 或 '-1' 表示无过期时间。",
 	"(e.g. `sh webui.sh --api --api-auth username_password`)": "(例如 `sh webui.sh --api --api-auth username_password`)",
 	"(e.g. `sh webui.sh --api --api-auth username_password`)": "(例如 `sh webui.sh --api --api-auth username_password`)",
 	"(e.g. `sh webui.sh --api`)": "(例如 `sh webui.sh --api`)",
 	"(e.g. `sh webui.sh --api`)": "(例如 `sh webui.sh --api`)",
@@ -60,7 +60,7 @@
 	"Allow Voice Interruption in Call": "允许通话中的打断语音",
 	"Allow Voice Interruption in Call": "允许通话中的打断语音",
 	"Already have an account?": "已经拥有账号了?",
 	"Already have an account?": "已经拥有账号了?",
 	"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "top_p的替代方法,目标是在质量和多样性之间取得平衡。参数p表示一个token相对于最有可能的token所需的最低概率。比如,当p=0.05且最有可能的token概率为0.9时,概率低于0.045的logits会被排除。(默认值:0.0)",
 	"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)": "top_p的替代方法,目标是在质量和多样性之间取得平衡。参数p表示一个token相对于最有可能的token所需的最低概率。比如,当p=0.05且最有可能的token概率为0.9时,概率低于0.045的logits会被排除。(默认值:0.0)",
-	"Amazing": "",
+	"Amazing": "很棒",
 	"an assistant": "AI模型",
 	"an assistant": "AI模型",
 	"and": "和",
 	"and": "和",
 	"and {{COUNT}} more": "还有 {{COUNT}} 个",
 	"and {{COUNT}} more": "还有 {{COUNT}} 个",
@@ -91,15 +91,15 @@
 	"Authenticate": "认证",
 	"Authenticate": "认证",
 	"Auto-Copy Response to Clipboard": "自动复制回复到剪贴板",
 	"Auto-Copy Response to Clipboard": "自动复制回复到剪贴板",
 	"Auto-playback response": "自动念出回复内容",
 	"Auto-playback response": "自动念出回复内容",
-	"Autocomplete Generation": "",
-	"Autocomplete Generation Input Max Length": "",
+	"Autocomplete Generation": "自动完成生成",
+	"Autocomplete Generation Input Max Length": "自动完成生成输入最大长度",
 	"Automatic1111": "Automatic1111",
 	"Automatic1111": "Automatic1111",
 	"AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 Api 鉴权字符串",
 	"AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 Api 鉴权字符串",
 	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 基础地址",
 	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 基础地址",
 	"AUTOMATIC1111 Base URL is required.": "需要 AUTOMATIC1111 基础地址。",
 	"AUTOMATIC1111 Base URL is required.": "需要 AUTOMATIC1111 基础地址。",
 	"Available list": "可用列表",
 	"Available list": "可用列表",
 	"available!": "版本可用!",
 	"available!": "版本可用!",
-	"Awful": "",
+	"Awful": "糟糕",
 	"Azure AI Speech": "Azure AI 语音",
 	"Azure AI Speech": "Azure AI 语音",
 	"Azure Region": "Azure 区域",
 	"Azure Region": "Azure 区域",
 	"Back": "返回",
 	"Back": "返回",
@@ -122,7 +122,7 @@
 	"Certificate Path": "证书路径",
 	"Certificate Path": "证书路径",
 	"Change Password": "更改密码",
 	"Change Password": "更改密码",
 	"Character": "字符",
 	"Character": "字符",
-	"Character limit for autocomplete generation input": "",
+	"Character limit for autocomplete generation input": "自动完成生成输入的字符限制",
 	"Chart new frontiers": "开拓新领域",
 	"Chart new frontiers": "开拓新领域",
 	"Chat": "对话",
 	"Chat": "对话",
 	"Chat Background Image": "对话背景图片",
 	"Chat Background Image": "对话背景图片",
@@ -166,7 +166,7 @@
 	"ComfyUI Base URL": "ComfyUI 基础地址",
 	"ComfyUI Base URL": "ComfyUI 基础地址",
 	"ComfyUI Base URL is required.": "ComfyUI 基础地址为必需填写。",
 	"ComfyUI Base URL is required.": "ComfyUI 基础地址为必需填写。",
 	"ComfyUI Workflow": "ComfyUI Workflow",
 	"ComfyUI Workflow": "ComfyUI Workflow",
-	"ComfyUI Workflow Nodes": "ComfyUI Workflow Nodes",
+	"ComfyUI Workflow Nodes": "ComfyUI Workflow 节点",
 	"Command": "命令",
 	"Command": "命令",
 	"Completions": "续写",
 	"Completions": "续写",
 	"Concurrent Requests": "并发请求",
 	"Concurrent Requests": "并发请求",
@@ -279,7 +279,7 @@
 	"Drag and drop a file to upload or select a file to view": "拖动文件上传或选择文件查看",
 	"Drag and drop a file to upload or select a file to view": "拖动文件上传或选择文件查看",
 	"Draw": "平局",
 	"Draw": "平局",
 	"Drop any files here to add to the conversation": "拖动文件到此处以添加到对话中",
 	"Drop any files here to add to the conversation": "拖动文件到此处以添加到对话中",
-	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "例如 '30s','10m'。有效的时间单位是秒:'s',分:'m',时:'h'。",
+	"e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "例如 '30s''10m'。有效的时间单位是秒:'s',分:'m',时:'h'。",
 	"e.g. A filter to remove profanity from text": "例如:一个用于过滤文本中不当内容的过滤器",
 	"e.g. A filter to remove profanity from text": "例如:一个用于过滤文本中不当内容的过滤器",
 	"e.g. My Filter": "例如:我的过滤器",
 	"e.g. My Filter": "例如:我的过滤器",
 	"e.g. My Tools": "例如:我的工具",
 	"e.g. My Tools": "例如:我的工具",
@@ -301,7 +301,7 @@
 	"Embedding Model Engine": "语义向量模型引擎",
 	"Embedding Model Engine": "语义向量模型引擎",
 	"Embedding model set to \"{{embedding_model}}\"": "语义向量模型设置为 \"{{embedding_model}}\"",
 	"Embedding model set to \"{{embedding_model}}\"": "语义向量模型设置为 \"{{embedding_model}}\"",
 	"Enable API Key Auth": "启用 API 密钥鉴权",
 	"Enable API Key Auth": "启用 API 密钥鉴权",
-	"Enable autocomplete generation for chat messages": "",
+	"Enable autocomplete generation for chat messages": "启用聊天消息的自动完成生成",
 	"Enable Community Sharing": "启用分享至社区",
 	"Enable Community Sharing": "启用分享至社区",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "启用内存锁定(mlock)以防止模型数据被交换出RAM。此选项将模型的工作集页面锁定在RAM中,确保它们不会被交换到磁盘。这可以通过避免页面错误和确保快速数据访问来帮助维持性能。",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "启用内存锁定(mlock)以防止模型数据被交换出RAM。此选项将模型的工作集页面锁定在RAM中,确保它们不会被交换到磁盘。这可以通过避免页面错误和确保快速数据访问来帮助维持性能。",
 	"Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "启用内存映射(mmap)以加载模型数据。此选项允许系统通过将磁盘文件视为在RAM中来使用磁盘存储作为RAM的扩展。这可以通过更快的数据访问来提高模型性能。然而,它可能无法在所有系统上正常工作,并且可能会消耗大量磁盘空间。",
 	"Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "启用内存映射(mmap)以加载模型数据。此选项允许系统通过将磁盘文件视为在RAM中来使用磁盘存储作为RAM的扩展。这可以通过更快的数据访问来提高模型性能。然而,它可能无法在所有系统上正常工作,并且可能会消耗大量磁盘空间。",
@@ -314,11 +314,11 @@
 	"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "确保您的 CSV 文件按以下顺序包含 4 列: 姓名、电子邮箱、密码、角色。",
 	"Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "确保您的 CSV 文件按以下顺序包含 4 列: 姓名、电子邮箱、密码、角色。",
 	"Enter {{role}} message here": "在此处输入 {{role}} 的对话内容",
 	"Enter {{role}} message here": "在此处输入 {{role}} 的对话内容",
 	"Enter a detail about yourself for your LLMs to recall": "输入一个关于你自己的详细信息,方便你的大语言模型记住这些内容",
 	"Enter a detail about yourself for your LLMs to recall": "输入一个关于你自己的详细信息,方便你的大语言模型记住这些内容",
-	"Enter api auth string (e.g. username:password)": "输入 api 鉴权路径 (例如:username:password)",
+	"Enter api auth string (e.g. username:password)": "输入 api 鉴权路径 (例如:用户名:密码)",
 	"Enter Application DN": "输入 Application DN",
 	"Enter Application DN": "输入 Application DN",
-	"Enter Application DN Password": "输入 Application DN Password",
-	"Enter Bing Search V7 Endpoint": "输入 Enter Bing Search V7 Endpoint",
-	"Enter Bing Search V7 Subscription Key": "输入 Bing Search V7 Subscription Key",
+	"Enter Application DN Password": "输入 Application DN 密码",
+	"Enter Bing Search V7 Endpoint": "输入 Bing Search V7 端点",
+	"Enter Bing Search V7 Subscription Key": "输入 Bing Search V7 订阅密钥",
 	"Enter Brave Search API Key": "输入 Brave Search API 密钥",
 	"Enter Brave Search API Key": "输入 Brave Search API 密钥",
 	"Enter certificate path": "输入证书路径",
 	"Enter certificate path": "输入证书路径",
 	"Enter CFG Scale (e.g. 7.0)": "输入 CFG Scale (例如:7.0)",
 	"Enter CFG Scale (e.g. 7.0)": "输入 CFG Scale (例如:7.0)",
@@ -335,7 +335,7 @@
 	"Enter model tag (e.g. {{modelTag}})": "输入模型标签 (例如:{{modelTag}})",
 	"Enter model tag (e.g. {{modelTag}})": "输入模型标签 (例如:{{modelTag}})",
 	"Enter Mojeek Search API Key": "输入 Mojeek Search API 密钥",
 	"Enter Mojeek Search API Key": "输入 Mojeek Search API 密钥",
 	"Enter Number of Steps (e.g. 50)": "输入步骤数 (Steps) (例如:50)",
 	"Enter Number of Steps (e.g. 50)": "输入步骤数 (Steps) (例如:50)",
-	"Enter proxy URL (e.g. https://user:password@host:port)": "",
+	"Enter proxy URL (e.g. https://user:password@host:port)": "输入代理 URL (例如:https://用户名:密码@主机名:端口)",
 	"Enter Sampler (e.g. Euler a)": "输入 Sampler (例如:Euler a)",
 	"Enter Sampler (e.g. Euler a)": "输入 Sampler (例如:Euler a)",
 	"Enter Scheduler (e.g. Karras)": "输入 Scheduler (例如:Karras)",
 	"Enter Scheduler (e.g. Karras)": "输入 Scheduler (例如:Karras)",
 	"Enter Score": "输入评分",
 	"Enter Score": "输入评分",
@@ -346,9 +346,9 @@
 	"Enter Serper API Key": "输入 Serper API 密钥",
 	"Enter Serper API Key": "输入 Serper API 密钥",
 	"Enter Serply API Key": "输入 Serply API 密钥",
 	"Enter Serply API Key": "输入 Serply API 密钥",
 	"Enter Serpstack API Key": "输入 Serpstack API 密钥",
 	"Enter Serpstack API Key": "输入 Serpstack API 密钥",
-	"Enter server host": "输入 server host",
-	"Enter server label": "输入 server label",
-	"Enter server port": "输入 server port",
+	"Enter server host": "输入服务器主机名 ",
+	"Enter server label": "输入服务器标签",
+	"Enter server port": "输入服务器端口",
 	"Enter stop sequence": "输入停止序列 (Stop Sequence)",
 	"Enter stop sequence": "输入停止序列 (Stop Sequence)",
 	"Enter system prompt": "输入系统提示词 (Prompt)",
 	"Enter system prompt": "输入系统提示词 (Prompt)",
 	"Enter Tavily API Key": "输入 Tavily API 密钥",
 	"Enter Tavily API Key": "输入 Tavily API 密钥",
@@ -457,7 +457,7 @@
 	"Hex Color": "十六进制颜色代码",
 	"Hex Color": "十六进制颜色代码",
 	"Hex Color - Leave empty for default color": "十六进制颜色代码 - 留空使用默认颜色",
 	"Hex Color - Leave empty for default color": "十六进制颜色代码 - 留空使用默认颜色",
 	"Hide": "隐藏",
 	"Hide": "隐藏",
-	"Host": "Host",
+	"Host": "主机",
 	"How can I help you today?": "有什么我能帮您的吗?",
 	"How can I help you today?": "有什么我能帮您的吗?",
 	"How would you rate this response?": "您如何评价这个回应?",
 	"How would you rate this response?": "您如何评价这个回应?",
 	"Hybrid Search": "混合搜索",
 	"Hybrid Search": "混合搜索",
@@ -672,7 +672,7 @@
 	"Please carefully review the following warnings:": "请仔细阅读以下警告信息:",
 	"Please carefully review the following warnings:": "请仔细阅读以下警告信息:",
 	"Please enter a prompt": "请输出一个 prompt",
 	"Please enter a prompt": "请输出一个 prompt",
 	"Please fill in all fields.": "请填写所有字段。",
 	"Please fill in all fields.": "请填写所有字段。",
-	"Please select a model first.": "",
+	"Please select a model first.": "请先选择一个模型。",
 	"Please select a reason": "请选择原因",
 	"Please select a reason": "请选择原因",
 	"Port": "端口",
 	"Port": "端口",
 	"Positive attitude": "积极的态度",
 	"Positive attitude": "积极的态度",
@@ -688,7 +688,7 @@
 	"Prompt updated successfully": "提示词更新成功",
 	"Prompt updated successfully": "提示词更新成功",
 	"Prompts": "提示词",
 	"Prompts": "提示词",
 	"Prompts Access": "访问提示词",
 	"Prompts Access": "访问提示词",
-	"Proxy URL": "",
+	"Proxy URL": "代理 URL",
 	"Pull \"{{searchValue}}\" from Ollama.com": "从 Ollama.com 拉取 \"{{searchValue}}\"",
 	"Pull \"{{searchValue}}\" from Ollama.com": "从 Ollama.com 拉取 \"{{searchValue}}\"",
 	"Pull a model from Ollama.com": "从 Ollama.com 拉取一个模型",
 	"Pull a model from Ollama.com": "从 Ollama.com 拉取一个模型",
 	"Query Generation Prompt": "查询生成提示词",
 	"Query Generation Prompt": "查询生成提示词",
@@ -722,7 +722,7 @@
 	"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "无法激活回复时发送通知。请检查浏览器设置,并授予必要的访问权限。",
 	"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "无法激活回复时发送通知。请检查浏览器设置,并授予必要的访问权限。",
 	"Response splitting": "拆分回复",
 	"Response splitting": "拆分回复",
 	"Result": "结果",
 	"Result": "结果",
-	"Retrieval Query Generation": "",
+	"Retrieval Query Generation": "检索查询生成",
 	"Rich Text Input for Chat": "对话富文本输入",
 	"Rich Text Input for Chat": "对话富文本输入",
 	"RK": "排名",
 	"RK": "排名",
 	"Role": "权限组",
 	"Role": "权限组",
@@ -843,7 +843,7 @@
 	"System": "系统",
 	"System": "系统",
 	"System Instructions": "系统指令",
 	"System Instructions": "系统指令",
 	"System Prompt": "系统提示词 (System Prompt)",
 	"System Prompt": "系统提示词 (System Prompt)",
-	"Tags Generation": "",
+	"Tags Generation": "标签生成",
 	"Tags Generation Prompt": "标签生成提示词",
 	"Tags Generation Prompt": "标签生成提示词",
 	"Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting. (default: 1)": "Tail free sampling 用于减少输出中可能性较低的标记的影响。数值越大(如 2.0),影响就越小,而数值为 1.0 则会禁用此设置。(默认值:1)",
 	"Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting. (default: 1)": "Tail free sampling 用于减少输出中可能性较低的标记的影响。数值越大(如 2.0),影响就越小,而数值为 1.0 则会禁用此设置。(默认值:1)",
 	"Tap to interrupt": "点击以中断",
 	"Tap to interrupt": "点击以中断",
@@ -986,7 +986,7 @@
 	"Web Loader Settings": "网页爬取设置",
 	"Web Loader Settings": "网页爬取设置",
 	"Web Search": "联网搜索",
 	"Web Search": "联网搜索",
 	"Web Search Engine": "联网搜索引擎",
 	"Web Search Engine": "联网搜索引擎",
-	"Web Search Query Generation": "",
+	"Web Search Query Generation": "网页搜索查询生成",
 	"Webhook URL": "Webhook URL",
 	"Webhook URL": "Webhook URL",
 	"WebUI Settings": "WebUI 设置",
 	"WebUI Settings": "WebUI 设置",
 	"WebUI will make requests to \"{{url}}/api/chat\"": "WebUI 将向 \"{{url}}/api/chat\" 发出请求",
 	"WebUI will make requests to \"{{url}}/api/chat\"": "WebUI 将向 \"{{url}}/api/chat\" 发出请求",

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

@@ -1,5 +1,5 @@
 {
 {
-	"-1 for no limit, or a positive integer for a specific limit": "",
+	"-1 for no limit, or a positive integer for a specific limit": "-1 表示無限制,或正整數表示特定限制",
 	"'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s'、'm'、'h'、'd'、'w' 或 '-1' 表示無到期時間。",
 	"'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s'、'm'、'h'、'd'、'w' 或 '-1' 表示無到期時間。",
 	"(e.g. `sh webui.sh --api --api-auth username_password`)": "(例如 `sh webui.sh --api --api-auth username_password`)",
 	"(e.g. `sh webui.sh --api --api-auth username_password`)": "(例如 `sh webui.sh --api --api-auth username_password`)",
 	"(e.g. `sh webui.sh --api`)": "(例如 `sh webui.sh --api`)",
 	"(e.g. `sh webui.sh --api`)": "(例如 `sh webui.sh --api`)",
@@ -60,7 +60,7 @@
 	"Allow Voice Interruption in Call": "允許在通話中打斷語音",
 	"Allow Voice Interruption in Call": "允許在通話中打斷語音",
 	"Already have an account?": "已經有帳號了嗎?",
 	"Already have an account?": "已經有帳號了嗎?",
 	"Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out. (Default: 0.0)": "作為 top_p 的替代方案,旨在確保質量和多樣性的平衡。相對於最可能的 token 機率而言,參數 p 代表一個 token 被考慮在内的最低機率。例如,當 p=0.05 且最可能的 token 機率為 0.9 時,數值低於 0.045 的對數機率會被過濾掉。(預設值:0.0)",
 	"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)": "作為 top_p 的替代方案,旨在確保質量和多樣性的平衡。相對於最可能的 token 機率而言,參數 p 代表一個 token 被考慮在内的最低機率。例如,當 p=0.05 且最可能的 token 機率為 0.9 時,數值低於 0.045 的對數機率會被過濾掉。(預設值:0.0)",
-	"Amazing": "驚人",
+	"Amazing": "很棒",
 	"an assistant": "一位助手",
 	"an assistant": "一位助手",
 	"and": "和",
 	"and": "和",
 	"and {{COUNT}} more": "和另外 {{COUNT}} 個",
 	"and {{COUNT}} more": "和另外 {{COUNT}} 個",
@@ -91,8 +91,8 @@
 	"Authenticate": "驗證",
 	"Authenticate": "驗證",
 	"Auto-Copy Response to Clipboard": "自動將回應複製到剪貼簿",
 	"Auto-Copy Response to Clipboard": "自動將回應複製到剪貼簿",
 	"Auto-playback response": "自動播放回應",
 	"Auto-playback response": "自動播放回應",
-	"Autocomplete Generation": "",
-	"Autocomplete Generation Input Max Length": "",
+	"Autocomplete Generation": "自動完成生成",
+	"Autocomplete Generation Input Max Length": "自動完成產生輸入最大長度",
 	"Automatic1111": "Automatic1111",
 	"Automatic1111": "Automatic1111",
 	"AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 API 驗證字串",
 	"AUTOMATIC1111 Api Auth String": "AUTOMATIC1111 API 驗證字串",
 	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 基礎 URL",
 	"AUTOMATIC1111 Base URL": "AUTOMATIC1111 基礎 URL",
@@ -122,7 +122,7 @@
 	"Certificate Path": "憑證路徑",
 	"Certificate Path": "憑證路徑",
 	"Change Password": "修改密碼",
 	"Change Password": "修改密碼",
 	"Character": "角色",
 	"Character": "角色",
-	"Character limit for autocomplete generation input": "",
+	"Character limit for autocomplete generation input": "自動完成產生輸入的字元限制",
 	"Chart new frontiers": "探索新領域",
 	"Chart new frontiers": "探索新領域",
 	"Chat": "對話",
 	"Chat": "對話",
 	"Chat Background Image": "對話背景圖片",
 	"Chat Background Image": "對話背景圖片",
@@ -220,7 +220,7 @@
 	"Default (SentenceTransformers)": "預設 (SentenceTransformers)",
 	"Default (SentenceTransformers)": "預設 (SentenceTransformers)",
 	"Default Model": "預設模型",
 	"Default Model": "預設模型",
 	"Default model updated": "預設模型已更新",
 	"Default model updated": "預設模型已更新",
-	"Default Models": "預設的多個模型",
+	"Default Models": "預設模型",
 	"Default permissions": "預設權限",
 	"Default permissions": "預設權限",
 	"Default permissions updated successfully": "預設權限更新成功",
 	"Default permissions updated successfully": "預設權限更新成功",
 	"Default Prompt Suggestions": "預設提示詞建議",
 	"Default Prompt Suggestions": "預設提示詞建議",
@@ -301,7 +301,7 @@
 	"Embedding Model Engine": "嵌入模型引擎",
 	"Embedding Model Engine": "嵌入模型引擎",
 	"Embedding model set to \"{{embedding_model}}\"": "嵌入模型已設定為 \"{{embedding_model}}\"",
 	"Embedding model set to \"{{embedding_model}}\"": "嵌入模型已設定為 \"{{embedding_model}}\"",
 	"Enable API Key Auth": "啟用 API 金鑰驗證",
 	"Enable API Key Auth": "啟用 API 金鑰驗證",
-	"Enable autocomplete generation for chat messages": "",
+	"Enable autocomplete generation for chat messages": "啟用聊天訊息的自動完成生成",
 	"Enable Community Sharing": "啟用社群分享",
 	"Enable Community Sharing": "啟用社群分享",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "啟用記憶體鎖定(mlock)以防止模型資料被換出 RAM。此選項會將模型的工作頁面集鎖定在 RAM 中,確保它們不會被換出到磁碟。這可以透過避免頁面錯誤和確保快速資料存取來維持效能。",
 	"Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "啟用記憶體鎖定(mlock)以防止模型資料被換出 RAM。此選項會將模型的工作頁面集鎖定在 RAM 中,確保它們不會被換出到磁碟。這可以透過避免頁面錯誤和確保快速資料存取來維持效能。",
 	"Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "啟用記憶體映射(mmap)以載入模型資料。此選項允許系統使用磁碟儲存作為 RAM 的延伸,透過將磁碟檔案視為在 RAM 中來處理。這可以透過允許更快的資料存取來改善模型效能。然而,它可能無法在所有系統上正常運作,並且可能會消耗大量磁碟空間。",
 	"Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "啟用記憶體映射(mmap)以載入模型資料。此選項允許系統使用磁碟儲存作為 RAM 的延伸,透過將磁碟檔案視為在 RAM 中來處理。這可以透過允許更快的資料存取來改善模型效能。然而,它可能無法在所有系統上正常運作,並且可能會消耗大量磁碟空間。",
@@ -335,7 +335,7 @@
 	"Enter model tag (e.g. {{modelTag}})": "輸入模型標籤(例如:{{modelTag}})",
 	"Enter model tag (e.g. {{modelTag}})": "輸入模型標籤(例如:{{modelTag}})",
 	"Enter Mojeek Search API Key": "輸入 Mojeek 搜尋 API 金鑰",
 	"Enter Mojeek Search API Key": "輸入 Mojeek 搜尋 API 金鑰",
 	"Enter Number of Steps (e.g. 50)": "輸入步驟數(例如:50)",
 	"Enter Number of Steps (e.g. 50)": "輸入步驟數(例如:50)",
-	"Enter proxy URL (e.g. https://user:password@host:port)": "",
+	"Enter proxy URL (e.g. https://user:password@host:port)": "輸入代理程式 URL(例如:https://user:password@host:port)",
 	"Enter Sampler (e.g. Euler a)": "輸入取樣器(例如:Euler a)",
 	"Enter Sampler (e.g. Euler a)": "輸入取樣器(例如:Euler a)",
 	"Enter Scheduler (e.g. Karras)": "輸入排程器(例如:Karras)",
 	"Enter Scheduler (e.g. Karras)": "輸入排程器(例如:Karras)",
 	"Enter Score": "輸入分數",
 	"Enter Score": "輸入分數",
@@ -672,7 +672,7 @@
 	"Please carefully review the following warnings:": "請仔細閱讀以下警告:",
 	"Please carefully review the following warnings:": "請仔細閱讀以下警告:",
 	"Please enter a prompt": "請輸入提示詞",
 	"Please enter a prompt": "請輸入提示詞",
 	"Please fill in all fields.": "請填寫所有欄位。",
 	"Please fill in all fields.": "請填寫所有欄位。",
-	"Please select a model first.": "",
+	"Please select a model first.": "請先選擇型號。",
 	"Please select a reason": "請選擇原因",
 	"Please select a reason": "請選擇原因",
 	"Port": "連接埠",
 	"Port": "連接埠",
 	"Positive attitude": "積極的態度",
 	"Positive attitude": "積極的態度",
@@ -688,7 +688,7 @@
 	"Prompt updated successfully": "提示詞更新成功",
 	"Prompt updated successfully": "提示詞更新成功",
 	"Prompts": "提示詞",
 	"Prompts": "提示詞",
 	"Prompts Access": "提示詞存取",
 	"Prompts Access": "提示詞存取",
-	"Proxy URL": "",
+	"Proxy URL": "代理網址",
 	"Pull \"{{searchValue}}\" from Ollama.com": "從 Ollama.com 下載「{{searchValue}}」",
 	"Pull \"{{searchValue}}\" from Ollama.com": "從 Ollama.com 下載「{{searchValue}}」",
 	"Pull a model from Ollama.com": "從 Ollama.com 下載模型",
 	"Pull a model from Ollama.com": "從 Ollama.com 下載模型",
 	"Query Generation Prompt": "查詢生成提示詞",
 	"Query Generation Prompt": "查詢生成提示詞",
@@ -722,7 +722,7 @@
 	"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "無法啟用回應通知,因為網站權限已遭拒。請前往瀏覽器設定以授予必要存取權限。",
 	"Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "無法啟用回應通知,因為網站權限已遭拒。請前往瀏覽器設定以授予必要存取權限。",
 	"Response splitting": "回應分割",
 	"Response splitting": "回應分割",
 	"Result": "結果",
 	"Result": "結果",
-	"Retrieval Query Generation": "",
+	"Retrieval Query Generation": "檢索查詢生成",
 	"Rich Text Input for Chat": "使用富文本輸入對話",
 	"Rich Text Input for Chat": "使用富文本輸入對話",
 	"RK": "RK",
 	"RK": "RK",
 	"Role": "角色",
 	"Role": "角色",
@@ -844,7 +844,7 @@
 	"System": "系統",
 	"System": "系統",
 	"System Instructions": "系統指令",
 	"System Instructions": "系統指令",
 	"System Prompt": "系統提示詞",
 	"System Prompt": "系統提示詞",
-	"Tags Generation": "",
+	"Tags Generation": "標籤生成",
 	"Tags Generation Prompt": "標籤生成提示詞",
 	"Tags Generation Prompt": "標籤生成提示詞",
 	"Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting. (default: 1)": "使用無尾採樣來減少較不可能的 token 對輸出的影響。較高的值(例如 2.0)會減少更多影響,而值為 1.0 則停用此設定。(預設:1)",
 	"Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting. (default: 1)": "使用無尾採樣來減少較不可能的 token 對輸出的影響。較高的值(例如 2.0)會減少更多影響,而值為 1.0 則停用此設定。(預設:1)",
 	"Tap to interrupt": "點選以中斷",
 	"Tap to interrupt": "點選以中斷",
@@ -987,7 +987,7 @@
 	"Web Loader Settings": "網頁載入器設定",
 	"Web Loader Settings": "網頁載入器設定",
 	"Web Search": "網頁搜尋",
 	"Web Search": "網頁搜尋",
 	"Web Search Engine": "網頁搜尋引擎",
 	"Web Search Engine": "網頁搜尋引擎",
-	"Web Search Query Generation": "",
+	"Web Search Query Generation": "網頁搜尋查詢生成",
 	"Webhook URL": "Webhook URL",
 	"Webhook URL": "Webhook URL",
 	"WebUI Settings": "WebUI 設定",
 	"WebUI Settings": "WebUI 設定",
 	"WebUI will make requests to \"{{url}}/api/chat\"": "WebUI 將向 \"{{url}}/api/chat\" 發送請求",
 	"WebUI will make requests to \"{{url}}/api/chat\"": "WebUI 將向 \"{{url}}/api/chat\" 發送請求",

BIN
static/favicon/apple-touch-icon.png


BIN
static/favicon/favicon-96x96.png


BIN
static/favicon/favicon.ico


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
static/favicon/favicon.svg


+ 21 - 0
static/favicon/site.webmanifest

@@ -0,0 +1,21 @@
+{
+  "name": "Open WebUI",
+  "short_name": "WebUI",
+  "icons": [
+    {
+      "src": "/favicon/web-app-manifest-192x192.png",
+      "sizes": "192x192",
+      "type": "image/png",
+      "purpose": "maskable"
+    },
+    {
+      "src": "/favicon/web-app-manifest-512x512.png",
+      "sizes": "512x512",
+      "type": "image/png",
+      "purpose": "maskable"
+    }
+  ],
+  "theme_color": "#ffffff",
+  "background_color": "#ffffff",
+  "display": "standalone"
+}

BIN
static/favicon/web-app-manifest-192x192.png


BIN
static/favicon/web-app-manifest-512x512.png


+ 3 - 1
tailwind.config.js

@@ -1,3 +1,5 @@
+import typography from '@tailwindcss/typography';
+
 /** @type {import('tailwindcss').Config} */
 /** @type {import('tailwindcss').Config} */
 export default {
 export default {
 	darkMode: 'class',
 	darkMode: 'class',
@@ -36,5 +38,5 @@ export default {
 			}
 			}
 		}
 		}
 	},
 	},
-	plugins: [require('@tailwindcss/typography')]
+	plugins: [typography]
 };
 };

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.